2016-05-30 4 views
0

Как извлечь определенное поле для отображения на странице таксономии?Drupal 7: Как извлечь определенное поле на странице таксономии

У меня есть пользовательский тип контента, называемый «фильм», и у каждого фильма есть поле «Ссылочное слово», называемое «литье». Как и ожидалось, я могу нажать на «casting» (tag), он приносит мне страницу, где все фильмы перечислены везде, где этот тег связан. Для примера, если я нажму на «Кейт Уинслет» из фильма «Титаник», я приземлюсь на странице http://localhost/mysite/tags/kate-winslet, где перечислены другие фильмы Кейт Уинслет. До этого момента все в порядке.

Я не хочу Drupal тянуть в и поля показывать по умолчанию, как только Заголовок и Body в своем собственном формате отображения. Скорее я хочу, чтобы я мог отображать фотографию из каждого фильма, год выпуска и, конечно же, название и обрезанную версию тела. Я хочу только настроить содержание этой страницы, чтобы у меня был контроль над Что показывать и где показывать определенное значение поля.

Это то, что я пробовал:

Я клонированы и положить page.tpl.php в папке шаблона моей темы. Переименовали его как page--vocabulary--tags.tpl.php. Затем я достал следующую строку кода (<?php print render($page['content']);?>) из моего page--vocabulary--tags.tpl.php. Намерение состояло в том, чтобы проверить, действительно ли переопределенный шаблон фактически доступен Drupal или нет. Оно делает!

Но я не смог извлечь такие поля, как field_photo или field_release_date от $page['content]. Чтобы получить представление об определенных переменных и их размещении, я использовал следующую строку кода: <pre><?php /*print var_export(get_defined_vars(), TRUE);*/ ?></pre>. Но даже оттуда я не мог извлечь определенную область, как я упоминал выше. Поля выглядят где-то внутри $page['content']['system_main']['nodes'], но я не знаю, как напрямую попасть в конкретное поле.

Я также создал template.php с помощью следующей функции предобработки крюка:

<?php 
 
function introduction_preprocess_page(&$vars) { 
 
    if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))) { 
 
    $term = taxonomy_term_load(arg(2)); 
 
    $vars['theme_hook_suggestions'][] = 'page__vocabulary__' . $term->vocabulary_machine_name; 
 
    $vars['content'] = $vars['page']['content']['system_main']['nodes']; 
 
    } 
 
} 
 
?>

Оба <?php print render($content) ?> и <?php print render($page['content']) ?> печати такого же результат, но я хочу что-то вроде <?php render($content['photo_field'])?> который я не был в состоянии ,

Прошу прощения за это слишком долго. Я только что вошел в Drupal. Поэтому я хотел убедиться, что то, что я пытаюсь объяснить, соответствует именно тому, что я хочу выполнить.

ответ

1

Возможно, вы, вероятно, проделали длинный путь к этому. Вы можете использовать модуль Views. Он позволяет создавать пользовательские списки, запрашивающие базу данных, но также переопределять существующие, например, в случае списка страниц таксономии.

После установки модуля (если он еще не установлен), в частности модуль представления Views, перейдите к /admin/structure/views и прокрутите вниз, где отключены представления (серые строки). Вы найдете один под названием Термин таксономии, описанный как 'Вид для подражания ядру Drupal для таксономии/термина.'enter image description here

Нажмите Включить справа от него, а затем перейти на том же месте, где ссылка Включить, нажмите на стрелку, чтобы развернуть и выбрать Edit. Когда вы находитесь на странице редактирования вида, вы можете манипулировать списком в удобное для вас время, добавляя/удаляя поля или все, что вы хотите сделать в своем конкретном случае. Если вы не знакомы с «Представлениями», я рекомендую вам узнать об этом, есть много связанных материалов в Интернете, и это очень важно для разработки Drupal.

Кроме того, если вы хотите добавить дополнительную настройку на страницу, вы можете использовать тот же подход с модулем Panels, который позволяет переопределять системные страницы (а не только списки, такие как Views).

+0

Отлично! Таксономический термин работал красиво :) Теперь заглянем в модуль «Панели». Надеюсь, это позволит мне настраивать страницы больше, как я хочу! Спасибо. –

+0

Модуль панелей действительно потрясающий. Но ваше предложение показало мне путь :). Я создал представление, предоставив Termonomy Term, а затем переопределит 'views-view-fields.tpl.php' с помощью' views-view-fields-taxonomy-term.tpl.php'. Затем я создал свой собственный HTML-макет с полями, которые я хочу показать (' content') и, наконец, создал классы CSS для настройки внешнего вида страницы. Большое вам спасибо за вашу чрезвычайную помощь :) –

Смежные вопросы