Drupal 7 - Придушення виводу вузлів на Сторінках таксономії


10

Чи є спосіб придушити вихід вузлів на сторінках таксономії, не встановлюючи модуль (тобто просто в template.php)?

Вузли, позначені терміном таксономії, з’являються на сторінці «Індекс таксономії» (наприклад, vašite.com/taxonomy/term/ evidenceid]).

Нові на сторінках Drupal 7, Index Index, Taxonomy можуть до них додавати поля. Однак, якщо ви спробуєте перейти на сторінку таксономії з представленням (наприклад, контролювати відображення вузлів), поля на сторінках індексу таксономії не з’являться.

Тому я розмістив свій «Таксономічний погляд» як блок на сторінці «Індекс таксономії». Таким чином я можу контролювати те, як вузли з’являються і все ще містять поля сторінки Індексу таксономії.

Через це сторінка систематики все ще виводить свої вузли. Я можу їх приховати, встановивши тизер вузлів на приховані, але він все ще завантажує вузли (і тому будь-який CSS / Jquery, приєднаний до вузлів, навіть якщо вузли не відображаються). Як я можу придушити появу вузлів, в ідеалі зсередини template.php?


Чому ви не хочете встановлювати модуль? Деякі речі легше досягти за допомогою модулів.
Martin Schlagnitweit

Відповіді:


5

Я знаю, що хотів рішення без модуля, але в Drupal 7 є модуль, який виконує саме те, що вам потрібно: Вимкнути перелік термінних вузлів

Це дозволяє вибирати за словником, якщо ви хочете вимкнути вихід списку термінів.


Дивіться також: drupal.stackexchange.com/questions/3165/…
Benj

8

Для мене добре працює рішення від http://www.wardontheweb.com/remove-node-lists-from-taxonomy-pages-in-drupal-7/ :

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

Примітка. Ви повинні скинути кеш сайту.


ПРИМІТКА. Це дозволить вимкнути перелік вузлів для будь-яких сторінок термінальних таксономій на сайті.
Данканму

@ Петро Лозовицький Я це роблю і зіткнувся з помилкою "Примітка: Використання невизначеної постійної" таксономії "!
shekoufeh

@shekoufeh, я виправив код (замінив коми) спробуйте цей код зараз.
Петро Лозовицький

2

Вам потрібно видалити вузли зі змінної сторінки $.

У template.php ви можете це зробити так:

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

У своїй сторінці.tpl.php використовуйте цей код:

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

Це видаляє вузли з усіх словникових запасів і термінів . Якщо ви хочете видалити їх лише за певних термінів або всіх термінів із словника, використовуйте, arg(2)який містить tidдля завантаження терміна, а потім оновіть оператор if.


Це працює, але все ще залишає пейджер увімкненим. Це означає, що вузли завантажуються та витрачають ресурси сервера. У будь-якому випадку, дякую за пораду, я вже використовую ваш метод :) Але теоретично кращий все-таки існує.
int_ua

0

Ви можете робити що завгодно у template.php, але це не рекомендується. Сенс використання CMS полягає в тому, що ви розділяєте дані, поведінку та зовнішній вигляд. Файл template.php є частиною тематичного шару, і ви повинні використовувати його для налаштування візуального стилю вашого сайту.

Якщо ви хочете скорегувати поведінку сайту (у цьому випадку: контролюйте, які елементи відображаються у певному списку), вам потрібно змінити поведінку, тому ви встановите та налаштуєте модулі. Якщо ви хочете створити власні списки вмісту, модуль Views - це саме те, що вам потрібно.

У вашому випадку (якщо я правильно розумію) ви хочете, щоб поля терміна таксономії відображалися над списком вузлів, позначених цим терміном. Ви можете заново створити це у вашому представленні, створивши блок подання, який знімає ідентифікатор терміна з URL-адреси та відображає потрібну інформацію.


Дякую за відповідь! Я вже використовую перегляди, щоб перекрити сторінку таксономії. Однак я використовую блок Перегляд перегляду як блок замість сторінки, оскільки мені потрібно, щоб поля на сторінці таксономії були видимими. Єдина проблема полягає в тому, що сторінка таксономії все ще завантажує вузли, що видається непотрібним.
big_smile

Я не розумію, що ви маєте на увазі під "полями на сторінці таксономії", але приховування вмісту сторінки та заміна його блоком не здається правильним рішенням. Якщо ви просто перекрили сторінку таксономії звичайним переглядом сторінки, яку саме функціональність вам не вистачає? (Можливо, ви можете оновити своє оригінальне запитання, і я відповідно вдосконалю свою відповідь.)
marcvangend

Відповідь також оновлено.
marcvangend

На жаль, ваша відповідь, здається, не працює. Якщо ви спробуєте привести поля представлення таксономії, воно відображатиме вміст кожного окремого поля (а не тих, що тільки належать певній сторінці, що переглядається).
big_smile

0

Я використовував CSS, щоб приховати матеріали таксономії, але налаштувати їх відображення на замовлення та розблокувати, що здається кращим варіантом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.