Drupal 7: sopprime l'output dei nodi nelle pagine di tassonomia


10

C'è un modo per sopprimere l'output dei nodi nelle pagine di tassonomia, senza dover installare un modulo (cioè solo in template.php)?

I nodi contrassegnati con un termine tassonomia compaiono nella "Pagina Indice tassonomia" (ad es. Yoursite.com/taxonomy/term/[id]).

Novità di Drupal 7, alle pagine dell'indice tassonomia possono essere associati dei campi. Tuttavia, se si tenta di superare la pagina della tassonomia con una vista (ad esempio, per controllare la modalità di visualizzazione dei nodi), i campi nelle pagine dell'indice tassonomia non verranno visualizzati.

Pertanto, ho posizionato la mia Visualizzazione tassonomia come blocco nella pagina Indice tassonomia. In questo modo, posso controllare come vengono visualizzati i nodi e avere ancora i campi della pagina Indice tassonomia.

Per questo motivo, la pagina della tassonomia sta ancora emettendo i suoi nodi. Posso nasconderli impostando il teaser dei nodi su nascosto, ma carica comunque i nodi (e quindi qualsiasi CSS / Jquery collegato ai nodi anche se i nodi non vengono visualizzati). Come posso eliminare la visualizzazione dei nodi, idealmente dall'interno di template.php?


Perché non vuoi installare un modulo? Alcune cose sono più facili da realizzare con i moduli.
Martin Schlagnitweit,

Risposte:



8

La soluzione di http://www.wardontheweb.com/remove-node-lists-from-taxonomy-pages-in-drupal-7/ funziona bene per me:

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: è necessario ripristinare la cache del sito.


NOTA: questo disabiliterà l'elenco dei nodi per qualsiasi pagina di termini di tassonomia sul sito.
Duncanmoo,

@Peter Lozovitskiy Faccio questo e ho riscontrato l'errore "Avviso: utilizzo di una tassonomia costante non definita"!
Shekoufeh,

@shekoufeh, ho corretto il codice (sostituito da virgole) prova questo codice ora.
Peter Lozovitskiy,

2

Devi rimuovere i nodi dalla variabile $ page.

In template.php puoi farlo in questo modo:

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

Nel tuo page.tpl.php usa questo codice:

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

Ciò rimuove i nodi da tutti i vocabolari e i termini . Se si desidera rimuoverli solo a determinati termini o tutti i termini da un vocabolario, utilizzare il arg(2)contenuto che contiene il tidper caricare il termine e quindi aggiornare l'istruzione if.


Funziona ma lascia ancora attivo il cercapersone. Ciò significa che i nodi vengono caricati e sprecano le risorse del server. Comunque, grazie per il suggerimento, sto già usando il tuo metodo :) Ma teoricamente ne esiste ancora uno migliore.
int_ua,

0

Puoi fare praticamente qualsiasi cosa in template.php, ma questo non è raccomandato. Il punto di usare un CMS è separare dati, comportamento e aspetto. Il file template.php fa parte del livello tematico e dovresti usarlo per regolare lo stile visivo del tuo sito.

Se si desidera regolare il comportamento di un sito (in questo caso: controllare quali elementi vengono visualizzati in un determinato elenco) è necessario modificare il comportamento, quindi installare e configurare i moduli. Se desideri creare elenchi personalizzati di contenuti, il modulo Views è esattamente ciò di cui hai bisogno.

Nel tuo caso (se ho capito bene) vuoi che i campi del termine tassonomia vengano visualizzati sopra l'elenco dei nodi taggati con quel termine. Puoi ricrearlo nella tua vista creando un blocco di viste che prende il termine ID dall'URL e visualizza le informazioni necessarie.


Grazie per la risposta! Sto già utilizzando Views per ignorare la pagina della tassonomia. Tuttavia, sto usando l'override delle visualizzazioni come blocco anziché come pagina, poiché devo mantenere visibili i campi nella pagina della tassonomia. L'unico problema è che la pagina della tassonomia carica ancora i nodi, il che sembra non necessario.
big_smile,

Non capisco cosa intendi con "i campi nella pagina della tassonomia", ma nascondere il contenuto della pagina e sostituirlo con un blocco non sembra la soluzione corretta. Se esegui l'override della pagina della tassonomia con una normale visualizzazione della pagina, quale funzionalità ti manca? (Forse puoi aggiornare la tua domanda originale e migliorerò di conseguenza la mia risposta.)
marcvangend,

Risposta aggiornata anche.
marcvangend,

Sfortunatamente, la tua risposta non sembra funzionare. Se si tenta di portare in vista i campi della tassonomia, verranno visualizzati i contenuti di ogni singolo campo (e non quelli che appartengono solo alla pagina specifica visualizzata).
big_smile,

0

Stavo usando CSS per nascondere le cose della tassonomia, ma impostando la loro visualizzazione su custom e blanking che sembra un'opzione migliore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.