Drupal 7 - Powstrzymuje produkcję węzłów na stronach taksonomii


10

Czy istnieje sposób na ukrycie danych wyjściowych węzłów na stronach taksonomii, bez konieczności instalowania modułu (tj. Tylko w template.php)?

Węzły oznaczone terminem taksonomicznym pojawiają się na „stronie indeksu taksonomii” (np. Twoja strona.com/taxonomy/term/[id]).

Nowość w Drupal 7, strony indeksu taksonomii mogą mieć dołączone pola. Jeśli jednak spróbujesz przesłonić stronę taksonomii za pomocą widoku (na przykład, aby kontrolować sposób wyświetlania węzłów), pola na stronach indeksu taksonomii nie pojawią się.

Dlatego umieściłem mój widok taksonomii jako blok na stronie indeksu taksonomii. W ten sposób mogę kontrolować wygląd węzłów i nadal mieć pola strony Indeks taksonomii.

Z tego powodu strona systematyki nadal wyświetla swoje węzły. Mogę je ukryć, ustawiając zwiastun węzłów jako ukryty, ale nadal ładuje węzły (a zatem wszelkie CSS / Jquery dołączone do węzłów, nawet jeśli węzły nie są wyświetlane). Jak mogę ukryć pojawianie się węzłów, najlepiej z wnętrza template.php?


Dlaczego nie chcesz instalować modułu? Niektóre rzeczy są łatwiejsze do osiągnięcia dzięki modułom.
Martin Schlagnitweit,

Odpowiedzi:



8

Rozwiązanie z http://www.wardontheweb.com/remove-node-lists-from-taxonomy-pages-in-drupal-7/ działa dla mnie dobrze:

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

Uwaga: należy zresetować pamięć podręczną witryny.


UWAGA: spowoduje to wyłączenie listy węzłów dla dowolnych stron terminów taksonomii w witrynie.
Duncanmoo,

@Peter Lozovitskiy Robię to i mam do czynienia z błędem „Uwaga: użycie niezdefiniowanego stałego„ taksonomii ”!
shekoufeh

@ shekoufeh, poprawiłem kod (zastąpiłem przecinkami) wypróbuj ten kod teraz.
Peter Lozovitskiy

2

Musisz usunąć węzły ze zmiennej $ page.

W template.php możesz to zrobić w następujący sposób:

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

W swoim page.tpl.php użyj tego kodu:

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

To usuwa węzły ze wszystkich słowników i terminów . Jeśli chcesz je usunąć tylko pod pewnymi warunkami lub wszystkimi terminami ze słownika arg(2)zawierającego tidładunek, a następnie zaktualizuj instrukcję if.


Działa, ale nadal pozostawia włączony pager. Oznacza to, że węzły są ładowane i marnują zasoby serwera. W każdym razie, dziękuję za podpowiedź, już używam twojej metody :) Ale teoretycznie istnieje jeszcze jedna lepsza.
int_ua

0

Możesz zrobić praktycznie wszystko w template.php, ale nie jest to zalecane. Celem korzystania z CMS jest oddzielenie danych, zachowania i wyglądu. Plik template.php jest częścią warstwy tematycznej i należy go użyć do dostosowania stylu wizualnego witryny.

Jeśli chcesz dostosować zachowanie witryny (w tym przypadku: kontrolować, które elementy są wyświetlane na określonej liście), musisz zmienić to zachowanie, aby zainstalować i skonfigurować moduły. Jeśli chcesz budować niestandardowe listy treści, moduł Widoki jest dokładnie tym, czego potrzebujesz.

W twoim przypadku (jeśli dobrze rozumiem) chcesz, aby pola terminu taksonomii były wyświetlane nad listą węzłów oznaczonych tym terminem. Możesz odtworzyć to w swoim widoku, tworząc blok widoków, który pobiera termin ID z adresu URL i wyświetla potrzebne informacje.


Dziękuję za odpowiedź! Już korzystam z widoków, aby zastąpić stronę taksonomii. Używam jednak opcji Zastąpienie widoków jako bloku zamiast strony, ponieważ muszę zachować widoczność pól na stronie taksonomii. Jedynym problemem jest to, że strona systematyki nadal ładuje węzły, co wydaje się niepotrzebne.
big_smile,

Nie rozumiem, co masz na myśli przez „pola na stronie taksonomii”, ale ukrywanie zawartości strony i zastępowanie jej blokiem nie wydaje się poprawnym rozwiązaniem. Jeśli po prostu zastąpisz stronę systematyki zwykłym widokiem strony, jakiej dokładnie funkcji brakuje? (Może możesz zaktualizować swoje pierwotne pytanie, a odpowiednio poprawię moją odpowiedź).
marcvangend,

Odpowiedź również zaktualizowana.
marcvangend

Niestety twoja odpowiedź nie działa. Jeśli spróbujesz wyświetlić pola taksonomii w widoku, wyświetli się zawartość każdego pojedynczego pola (a nie tych, które tylko należą do konkretnej oglądanej strony).
big_smile

0

Użyłem CSS, aby ukryć taksonomię, ale ustawiłem ich wyświetlanie na niestandardowe i wygaszanie, co wydaje się lepszą opcją.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.