Как мне создать разделенный запятыми список для нескольких ссылок на узлы в Drupal 6? - PullRequest
0 голосов
/ 17 февраля 2010

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

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]),
  ));
}

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

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

Ответы [ 2 ]

3 голосов
/ 22 февраля 2010

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

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

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

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

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

Редактировать:
Пропустил тот факт, что вы хотели список естественного языка.Это займет немного больше, но вот функция 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 голосов
/ 22 февраля 2010

А как насчет использования Автор таксономии плагин?

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

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

Отметьте Учебник для нескольких авторов , если вам нужен другой подход.

...