Drupal 7 просматривает контекстный фильтр (таксономия: отображение итогов), отображая читаемое имя термина вместо идентификатора термина


9

На мой взгляд, я использую контекстный фильтр - с « итоговым выводом » по умолчанию - для фильтрации моих результатов по термину таксономии .

Проблема заключается в том, что итоговый результат группируется по списку идентификаторов терминов таксономии (включая количество узлов), а не по именам терминов, понятным человеку.

  • 1 (21)
  • 2 (16)
  • и т.п.

Можно ли изменить (или перехватить) вывод представления сводки, не перечисляя его идентификатор-термина, а имя-идентификатора термина?

  • Термин имя А (21)
  • Термин название Б (16)

(Меня не беспокоит, если фактический URL запроса остается прежним.)

Моя цель состоит в том, чтобы создать более читаемый формат вывода моей сводки терминов таксономии, который может понять конечный пользователь.


Ответы:


7
  1. Установите в свой вид поля и выставьте поле, которое содержит связанный термин таксономии.

  2. Установите свой контекстный фильтр для фильтрации по термину таксономии и выберите включение валидатора.

  3. Установите для валидатора термин таксономии и установите флажок для своего словаря.

  4. Выберите параметр для типа значения фильтра: «Имя термина, преобразованное в идентификатор термина».

  5. Сохраните фильтр и перейдите в окно предварительного просмотра. Если вы введете текстовое название вашего термина, вы должны увидеть желаемый контент.

Если вы передаете информацию из URl, вам, возможно, придется установить флажок «Преобразовать тире в URL в пробелы в значениях фильтра имен терминов», так как имя машины использует тире


Что-то, что я забыл, было то, что при выборе контекстного фильтра это должно быть для термина Таксономия (имя) и использовать связь с полем на узлах, которые вы отображаете, с самим термином, а не с контентом: my_term_field_name
CR47

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

5

Скопируйте файл «views_view-summary.tpl.php» в папку «modules / contrib / views / theme». (Вы можете настроить просмотр или блокировку, добавив суффикс имени файла.)

Примечание. Если вы используете это как представление администратора, убедитесь, что вы скопировали этот файл в папку с темой администратора, а не в папку с темами по умолчанию!

Вам не нужно никаких изменений в ваших настройках дисплея. Просто измените ваш tpl-override на следующие строки, и ваши Term-ID преобразуются в читаемые имена терминов:

<div class="item-list">
  <ul class="views-summary">
    <?php foreach ($rows as $id => $row): ?>
    <li>
      <a href="<?php print $row->url; ?>"<?php print !empty($row_classes[$id]) ? ' class="'. $row_classes[$id] .'"' : ''; ?>>
        <?php
        /* begin replacement */
        $term_object = taxonomy_term_load($row->link);
        print  $term_object->name; 
        /* end replacement*/
        ?>
      </a>
      <?php if (!empty($options['count'])): ?>
      &nbsp;(<?php print $row->count?>)
      <?php endif; ?>
    </li>
    <?php endforeach; ?>
  </ul>
</div>

1

С вашим примером или, например, основанным на заголовке узла в качестве контекстного фильтра, он работает правильно. Но в моем вопросе контекстный фильтр основан на термине Таксономия. В этом случае в сводке будут отображаться только идентификаторы терминов, и вы не сможете отобразить более понятные названия терминов.
Стефан Лоидж
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.