2012-05-02 1 views
1

Впервые плакат здесь, я дизайнер, не имеющий опыта работы с php, и у меня есть небольшая проблема, которую я, похоже, не могу решить. Я делаю сайт в drupal 7, используя тему sub на zen. Btw это отличная CMS, хотя люди говорят, что это действительно больше разработчики CMS. Мне не нужно делать то, что мне нужно, с помощью представлений, правил, экрана отображения и т. Д. Так что большое спасибо всем разработчикам, создающим такую ​​хорошую CMS. Но для этой, по-видимому, простой проблемы ... ни один модуль не поможет мне (я думаю), и я немного застрял.Как добавить настраиваемое поле в template.php с помощью подзаголовка Zen

Итак, вот оно: Я хотел бы добавить субтитры рядом с заголовком на всех моих страницах.

Так что я сделал, чтобы добавить пользовательское поле в базовую страницу типа содержимого (имя машины: field_sub_title), которая является простым текстовым полем.

Я раскомментировал следующую строку в моей template.php

function mytheme_preprocess_page(&$variables, $hook) { $variables['sub_title'] = t('field_sub_title'); }

Теперь мой вопрос, как я могу загрузить содержимое моего пользовательского поля в этой переменной? Я знаю, что мне нужно изменить вторую часть, но у меня нет подсказки, как в том, что мне нужно изменить.

Отображение переменной в файле page.tpl.php - это то, о чем я знаю, поэтому мне нужна только помощь с первой частью.

{EDIT} Ok я нашел, как это сделать :)

Я искал решение в неправильном месте. Мне не нужно ничего менять в файле template.php.

Просто нужно добавить немного кода в моем page.tpl.php:

<?php 
print $node->field_sub_title['und'][0]['value']; 
?> 

Так что я отправляю это здесь для других новичков Drupal борется с этим ....

ответ

0

Ваш решение может работать пока, но может быть более Drupal-y способ справиться с такой проблемой. Если вы не заметили каких-либо проблем, тем не менее, вы можете найти один или несколько из следующих вопросов вниз по дороге:

  • Кто-то, кто не знает, PHP или Drupal тематизации, возможно, придется изменить способ это работает.
  • Если вы похожи на меня, вы можете забыть, где именно в коде это было реализовано.
  • Вы можете видеть избыточные разметки и/или ошибки в узлах (контенте), которые не имеют этого поля подзаголовка (то есть содержимое события, не имеющее поля подзаголовка, в то время как основные страницы и статьи новостей).

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

Manage display of a content type

Вы можете «управлять» дисплей с типом контента, чтобы перетащить заказ на поля, чтобы появиться. Вы можете сделать еще один шаг, используя модуль, например Display Suite, для добавления формата форматирования или макета для каждого содержимого.


Если вы чувствуете, что это не достаточно хорошо, и для разметки субтитров должен быть на том же уровне, что и заголовок страницы (что бывает крайне редко), по крайней мере, добавить, если заявление, чтобы сделать чек-код чтобы увидеть, присутствует ли переменная, прежде чем пытаться ее распечатать. Я бы также добавил новую переменную и комментарии для чтения кода.

<?php 
    $subtitle = $node->field_sub_title['und'][0]['value']; 
    if($subtitle){ 
    print $subtitle; 
    } 
?> 
0

Рассмотрите возможность использования field_get_items или field_view_value, или по крайней мере использовать LANGUAGE_NONE постоянного вместо «унда» См https://api.drupal.org/api/drupal/modules%21field%21field.module/function/field_get_items/7 и https://api.drupal.org/api/drupal/modules!field!field.module/function/field_view_value/7

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