Рейтинг:0

Как напечатать отображаемое имя?

флаг us

У меня есть представление с несколькими страницами. В интерфейсе представлений я могу установить отображаемое имя для каждого дисплея.

Скриншот

Могу ли я в любом случае напечатать это имя в самом представлении, например, добавив Глобальный текст поле в заголовок просмотров?

Рейтинг:0
флаг de

В Drupal 7 поле «Global: Result summary» в заголовке Views дает вам несколько токенов для доступа к некоторой информации о представлении (например, у него есть токен с именем @name -- удобочитаемое имя представления для печати имени представления).

Однако для получения отображаемого имени представления вам необходимо создать собственный обработчик представлений для определения ваших собственных токенов:

  • Создайте новый модуль. В вашей my_module_name.info файл, добавьте строки:
    зависимости[] = просмотры

    файлы [] = обработчики/views_handler_my_custom_handler.inc
  • В вашей мой_модуль.модуль файл, добавьте hook_views_data():
    функция my_module_views_data() {
        // Определение вашего пользовательского обработчика
        $data['views']['my_module_custom_handler'] = массив(
            'title' => t('Мой пользовательский обработчик'),
            'help' => t('Пользовательские токены для доступа к просмотру информации'),
            'площадь' => массив(
                'обработчик' => 'views_handler_my_custom_handler',
            ),
        );
        вернуть $данные;
    }
  • Наконец, создайте обработчики/views_handler_my_custom_handler.inc файл. Самый простой контент, основанный на ваших потребностях, будет выглядеть примерно так:

/**
 * @файл
 * Определение views_handler_area.
 */

/**
 * Обработчик области просмотра для отображения некоторой настраиваемой сводки результатов.
 *
 * @ingroup views_area_handlers
 */
класс views_handler_my_custom_handler расширяет views_handler_area {

    функция option_definition() {
        $options = parent::option_definition();
        $options['content'] = массив(
            'default' => 'Отображение токенов просмотра',
            'переводимый' => ИСТИНА,
        );
        вернуть $options;
    }

    функция options_form(&$form, &$form_state) {
        родитель::options_form($form, $form_state);

        $ переменные = массив (
            'элементы' => массив (
                '@display_name -- имя дисплея просмотра'
            ),
        );
        $list = тема('item_list', $переменные);
        $ форма ['контент'] = массив (
            '#title' => t('Экран'),
            '#тип' => 'текстовое поле',
            '#строки' => 3,
            '#default_value' => $this->options['content'],
            '#description' => t('Вы можете использовать HTML-код в этом поле. Поддерживаются следующие токены:') . $ список,
        );
    }

    /**
     * Узнайте информацию для рендеринга.
     */
    функция рендеринга ($ пусто = ЛОЖЬ) {
        $format = $this->options['content'];
        // Заменить "@display_name" текущим отображаемым значением просмотра
        $output = filter_xss_admin(str_replace("@display_name", $this->view->current_display, $format));
        вернуть $ вывод;
    }

Вот и все. Ваш пользовательский обработчик представлений теперь должен быть доступен в любом представлении.

Я рекомендую вам взглянуть на файл view_handler_area_result.inc (код для поля «Global: Result summary») в модуле Views, если вы хотите расширить его, чтобы его токены были доступны в вашем пользовательском обработчике.

big_smile avatar
флаг us
Спасибо! Кажется, это печатает имя представления, а не отображаемое имя страницы. Например. Представление называется «Индексы». И в этом представлении вы создаете несколько страниц, каждая из которых имеет свое отображаемое имя. `@name` печатает `Indexes`, а не отображаемое имя страницы.
misterdidi avatar
флаг de
Мой плохой, ты абсолютно прав! Токенов Basic Views недостаточно для того, что вам нужно. Пожалуйста, смотрите мой отредактированный ответ.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.