Como posso criar uma lista separada por vírgula para várias referências de nós no Drupal 6?
-
21-09-2019 - |
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
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.