Como posso criar uma lista separada por vírgula para várias referências de nós no Drupal 6?

StackOverflow https://stackoverflow.com/questions/2276794

Pergunta

Eu tenho um autor content_type que estou mudando para o nome de usuário em artigos. O problema é que uma história pode ter vários autores, e o código a seguir no modelo.php só gerará o primeiro autor. Como posso fazer com que isso seja legível como "por John Smith, Jane Doe e Mary Poppins | 19 de fevereiro de 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]),
  ));
}

Lembre -se de que também estou querendo usar isso para visualizações também, para que uma referência de nós também será lançada corretamente lá.

Obrigado, Steve

Foi útil?

Solução

Supondo que o exemplo que você deu obras para produzir o primeiro autor, a solução mais direta para obter todos os autores em uma lista de vírgula seria a seguinte:

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

Então você saiu $author_list no lugar de $node->field_author[0][view]

Uma maneira mais "drupal" de fazê-lo seria copiar módulos/cck/tema/contentfield.tpl.php para o seu diretório de temas e depois fazer uma cópia dele nomeada Content-Field-Field_author.tpl.php também. Você pode fazer alterações no novo arquivo, o que substituiria como os valores são exibidos para o campo "Autor" especificamente. Em seguida, você pode gerar um valor temático de campo com tema onde quiser em um nó personalizado- [node_type] .tpl.php File. (Pode ser necessário limpar os dados em cache através do botão Administrar> Configuração do site> Desempenho Para que os modelos personalizados sejam carregados da primeira vez.)

Se o "estilo de linha" da sua visão estiver definido como "nó", ele usará os modelos de nó e campo também. Se você o tiver definido como "campos", precisará tema o campo na exibição separadamente. Veja o "Tema: Informações" da sua visão para modelos de visualizações que você pode substituir no seu tema.

Editar:
Perdi o fato de que você queria uma lista de idiomas natural. Isso leva um pouco mais, mas aqui está uma função drupalizada que fará exatamente isso:

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;
}

Então, é claro, use o seguinte no lugar da última linha meu primeiro bloco de código acima:
$author_list = implode_language($authors);

Outras dicas

Que tal usar Taxonomia do autor plugar?

A Taxonomia do Autor permite atribuir um ou mais autores a um nó usando termos de uma taxonomia dos nomes dos autores. Este módulo também fornece uma substituição totalmente tema para o seu texto de sinalização (o texto "Submetido pelo nome de usuário na data").

Exibe os nomes dos autores de maneira serializada: "Jane e Jack" ou "Jane, Jack e Joe".

Verificar Tutorial de múltiplos autores Se você precisar de uma abordagem diferente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top