Drupal 7 - Suprimir a saída de nós nas páginas de taxonomia

10

Existe uma maneira de suprimir a saída de nós nas páginas de taxonomia, sem a necessidade de instalar um módulo (ou seja, apenas no template.php)?

Os nós marcados com um termo de taxonomia são exibidos na "Página Índice de taxonomia" (por exemplo, yoursite.com/taxonomy/term/[id]).

Novidade no Drupal 7, as páginas do Índice de Taxonomia podem ter campos anexados a elas. No entanto, se você tentar ultrapassar a página de taxonomia com uma Visualização (por exemplo, para controlar como os nós são exibidos), os campos nas páginas do Índice de Taxonomia não aparecerão.

Portanto, coloquei minha Visualização de taxonomia como bloco na página Índice de taxonomia. Dessa forma, eu posso controlar como os nós aparecem e ainda temos os campos da página Índice de Taxonomia.

Por esse motivo, a página de taxonomia ainda está exibindo seus nós. Eu posso ocultá-los definindo o teaser dos nós como oculto, mas ele ainda carrega os nós (e, portanto, qualquer CSS / Jquery anexado aos nós, mesmo que os nós não estejam sendo exibidos). Como posso impedir que os nós apareçam, de preferência dentro do template.php?

grande sorriso
fonte
Por que você não deseja instalar um módulo? Algumas coisas são mais fáceis de conseguir com os módulos.
Martin Schlagnitweit

Respostas:

8

A solução http://www.wardontheweb.com/remove-node-lists-from-taxonomy-pages-in-drupal-7/ funciona bem para mim:

function THEMENAME_preprocess_page(&$vars){
   if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2))){
     unset($vars['page']['content']['system_main']['nodes']);
     unset($vars['page']['content']['system_main']['pager']);
     unset($vars['page']['content']['system_main']['no_content']);
   }
}

Nota: você deve redefinir o cache do seu site.

Peter Lozovitskiy
fonte
NOTA: isso desativará a lista de nós para qualquer página de termos de taxonomia no site.
Duncanmoo
@ Peter Lozovitskiy Eu faço isso e confrontado com o erro "Aviso: Uso de 'taxonomia' indefinida e constante"!
shekoufeh
@ shekoufeh, eu corrigi o código (vírgulas substituídas) tente este código agora.
Peter Lozovitskiy
2

Você precisa remover os nós da variável $ page.

No template.php você pode fazer assim:

function MY_THEME_preprocess_page(&$variables) {
  if(arg(0) == "taxonomy" && arg(1) == "term") {
    $variables['page']['content']['system_main']['nodes'] = null;
  }
}

Em seu page.tpl.php, use este código:

if(arg(0) == "taxonomy" && arg(1) == "term"){
  $page['content']['system_main']['nodes'] = null;
}

Isso remove os nós de todos os vocabulários e termos . Se você deseja removê-los apenas em determinados termos ou em todos os termos de um vocabulário, use arg(2)o tidpara carregar o termo e atualize a instrução if.

Martin Schlagnitweit
fonte
Funciona, mas ainda deixa o pager ativado. Isso significa que os nós estão sendo carregados e desperdiçam os recursos do servidor. Enfim, obrigado pela dica, eu já estou usando o seu método :) Mas, teoricamente, ainda existe um melhor.
int_ua
0

Você pode fazer praticamente qualquer coisa no template.php, mas isso não é recomendado. O objetivo de usar um CMS é que você separe dados, comportamento e aparência. O arquivo template.php faz parte da camada de temas e você deve usá-lo para ajustar o estilo visual do seu site.

Se você deseja ajustar o comportamento de um site (neste caso: controle quais itens são mostrados em uma determinada lista), é necessário alterar o comportamento, para instalar e configurar os módulos. Se você deseja criar listas personalizadas de conteúdo, o módulo Views é exatamente o que você precisa.

No seu caso (se bem entendi), você deseja que os campos do termo de taxonomia sejam exibidos acima da lista de nós marcados com esse termo. Você pode recriar isso na sua visualização criando um bloco de visualizações que retira o termo ID do URL e exibe as informações necessárias.

Marcvangend
fonte
Obrigado pela resposta! Já estou usando o Views para substituir a página de taxonomia. No entanto, estou usando a Substituição de visualizações como bloco em vez de uma página, pois preciso manter os campos na página de taxonomia visíveis. O único problema é que a página de taxonomia ainda carrega os nós, o que parece desnecessário.
big_smile 18/06/11
Não entendo o que você quer dizer com "os campos na página de taxonomia", mas ocultar o conteúdo da página e substituí-lo por um bloco não parece a solução correta. Se você acabou de substituir a página de taxonomia por uma visualização de página regular, exatamente qual funcionalidade está faltando? (Talvez você possa atualizar a sua pergunta original, e eu vou melhorar a minha resposta em conformidade.)
marcvangend
Resposta atualizada também.
marcvangend
Infelizmente, sua resposta parece não funcionar. Se você tentar exibir campos de taxonomia, ele exibirá o conteúdo de cada campo (e não aqueles que pertencem apenas à página específica que está sendo visualizada).
big_smile 25/06
0

Eu estava usando CSS para ocultar as coisas de taxonomia, mas definindo sua exibição como personalizada e em branco que parece ser uma opção melhor.

Joseph Coco
fonte