2010-02-16 3 views
0

У меня есть автор content_type, который я отключил для имени пользователя в статьях. Проблема в том, что история может иметь несколько авторов, и следующий код в template.php будет генерировать только первый автор. Как я могу получить это для вывода, чтобы быть читаемым, как «Джон Смит, Джейн Доу и Мэри Поппинс 19 февраля 2010 года»?Как создать список разделенных запятыми для нескольких ссылок на узлы в Drupal 6?

function mytheme_date($node) { 
    return t('By !username | !datetime', 
    array(
    '!username' => t($node->field_author[0][view]), 
    '!datetime' => t($node->field_publish_date[0][view]), 
)); 
} 

Пожалуйста, имейте в виду, что я также хочет использовать это для представлений тоже, так что опорный узел будет выводить правильно там тоже.

Спасибо, Стива

+0

Вопрос уточнения: 'field_author' - это поле кодового обозначения CCK, ограниченное вашим типом контента« Автор »и ​​допустимым для нескольких значений - это правильно? –

+0

Это верно - и field_author, и field_publish_date являются настраиваемыми типами контента. –

ответ

3

Предполагая, что пример вы дали работу, чтобы выводить первый автор, самые прямое решением, чтобы получить все автор в запятых sperated списка будет следующим:

foreach($node->field_author as $author) { 
    $authors[] = $author[view]; 
} 
$author_list = implode(', ', $authors); 

Тогда ты выход $author_list вместо $node->field_author[0][view]

более «Drupal» способ сделать это было бы скопировать модули/CCK/темы/контент-field.tpl.php в директорию темы, а затем сделать копию этого имени содержание -field-field_author.tpl.php. Затем вы можете внести изменения в новый файл, который будет переопределять способ отображения значений для поля «автор». Затем вы можете вывести указанное значение field_author везде, где вы хотите, в файл custom_ [node_type] .tpl.php. (Вы, возможно, потребуется удалить кэшированные данные с помощью кнопки на Администрирование> Конфигурация сайта> Производительность для пользовательские шаблоны для загрузки в первый раз.)

Если «стиль строки» ваш взгляд установлен на «Node », то он также будет использовать шаблоны узлов и полей. Если у вас установлено значение «Поля», вам необходимо отдельно указать поле в представлении. См. «Тема: информация» вашего представления для шаблонов заметок, которые вы можете переопределить в своей теме.

Edit:
Пропущенный тот факт, что вы хотели список естественного языка.Это займет немного больше, но вот Drupalized функция, которая будет делать только что:

function implode_language($array = array()) { 
    $language_string = ''; 
    if (count($array)) { 
    // get the last element  
    $last = array_pop($array); 
    // create a natural language list of elements if there are more than one 
    if (count($array)) { 
     $language_string = implode(', ', $array) .' '. t('and') .' '. $last; 
    } 
    else { 
     $language_string = $last; 
    } 
    } 
    return $language_string; 
} 

Тогда, конечно, использовать следующие вместо последней строки моего первого кодового блока выше:
$author_list = implode_language($authors);

+0

Спасибо ashtonium, Как я могу получить «Джон, Джейн и Мэри» или «Джон и Мэри» и т. Д.? –

+0

Я пропустил тот факт, что вам нужен список естественных языков, я добавил к своему ответу, чтобы включить это. Это полностью отвечает на ваш вопрос? – ashtonium

+0

спасибо пепельница. У меня было другое решение после попытки его самого, но это немного более элегантно. –

0

Что об использовании Author Taxonomy плагина?

Автор Таксономия позволяет назначать один или несколько авторов к узлу, используя термины из систематики имен авторов. Этот модуль также предоставляет полностью заменяемую замену для вашего byline («от пользователя по дате» текст).

Отображает имена авторов в сериализованной форме : «Джейн и Джек» или «Джейн, Джек и Джо».

Проверьте Multiple authors tutorial, если вам нужен другой подход.

+0

Я посмотрел на это, но проблема в том, что все импорт данных, структура представления и т. Д. Уже состоялись, и у меня нет роскошных атм. –

+0

Извините. Я думаю, что ответ @ ashtonium лучше подходит для вашей проблемы ... Удачи! – GmonC

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