it-swarm-eu.dev

Drupal 7 - Potlačí výstup uzlů na stránkách taxonomie

Existuje způsob, jak potlačit výstup uzlů na stránkách taxonomie, aniž byste museli instalovat modul (tj. Jen v template.php)?

Uzly označené taxonomickým výrazem se zobrazují na stránce „Taxonomy Index“ (např. Yoursite.com/taxonomy/term/[id]).

Novinka v Drupal 7, na stránkách indexu taxonomie mohou být připojena pole. Pokud se však pokusíte projet stránku taxonomie pomocí pohledu (například pro kontrolu, jak se budou zobrazovat uzly) , pole na stránkách indexu taxonomie se nezobrazí.

Proto jsem umístil svůj Taxonomy View jako blok na stránku Taxonomy Index. Tímto způsobem mohu ovládat, jak se uzly objevují a stále mají pole stránky Taxonomy Index.

Z tohoto důvodu stránka taxonomie stále vydává své uzly. Mohu je skrýt nastavením upoutávky uzlů na skryté, ale stále načítá uzly (a proto všechny uzly CSS/Jquery připojené k uzlům, i když se uzly nezobrazují). Jak mohu potlačit zobrazování uzlů, nejlépe z vnitřní strany template.php?

10
big_smile

Vím, že to chtělo řešení bez modulu, ale v Drupal 7 je modul, který dělá přesně to, co potřebujete: Zakázat termín Node Výpisy

To vám umožní vybrat podle slovníku, pokud chcete zakázat výstup výpisu termínu.

5

Řešení od http://www.wardontheweb.com/remove-node-lists-from-taxonomy-pages-in-drupal-7/ funguje pro mě dobře:

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

Poznámka: měli byste obnovit mezipaměť svého webu.

8

Musíte odstranit uzly z proměnné $ page.

V template.php to můžete udělat takto:

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

Ve svém page.tpl.php použijte tento kód:

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

Tím se odstraní uzly z všechny slovníky a termíny. Pokud je chcete odstranit ze slovníku pouze za určitých podmínek nebo ze všech termínů, použijte arg(2), který obsahuje tid k načtení termínu a aktualizaci příkazu if.

2

Používal jsem CSS, abych skryl taxonomické věci, ale nastavil jsem jejich zobrazení na vlastní a prázdné, což se zdá být lepší možností.

0
Joseph Coco

V template.php můžete dělat prakticky cokoli, ale to se nedoporučuje. Smyslem použití CMS je oddělit data, chování a vzhled. Soubor template.php je součástí tematické vrstvy a měli byste jej použít k úpravě vizuálního stylu webu.

Pokud chcete upravit chování webu (v tomto případě: řídit, které položky se zobrazují v určitém seznamu), musíte změnit chování, takže instalujte a konfigurujte moduly. Pokud chcete vytvořit vlastní seznamy obsahu, modul Views je přesně to, co potřebujete.

Ve vašem případě (pokud rozumím správně) chcete, aby se pole taxonomického termínu zobrazovala nad seznamem uzlů označených tímto termínem. Můžete to ve svém pohledu znovu vytvořit vytvořením bloku zobrazení, který z adresy URL odebere pojem ID a zobrazí potřebné informace.

0
marcvangend