Drupal: присвоете блок на конкретен тип съдържание

Направих персонализиран шаблон, наречен node-mynode.tpl.php Всеки път, когато се поиска възел от тип mynode, автоматично се използва node-mynode.tpl.php.

Сега обаче потребителят иска да види конкретен блок от менюто в този случай.

Въпрос: Как мога да присвоя блок на определен тип съдържание?

Подсказка: Започнах да разглеждам URL псевдоними с Pathauto. Подозирам, че едно решение може да е в тази посока.


person bert    schedule 20.04.2010    source източник


Отговори (3)


Дайте на всички ваши възли от тип mynode автоматичен псевдоним, който започва с /mynode, и използвайте специфичните за страницата настройки за видимост за блока, като се показват само на страниците, които започват с /mynode/*.

person Finbarr    schedule 20.04.2010
comment
... но не е практично.. Имам над 500 възли от този тип сега и още стотици предстоят. Има ли друг подход? - person bert; 21.04.2010
comment
Защо не е практично? Можете да изтриете всички url псевдоними, които сте задали за възлите, след което групово да генерирате псевдоними за всички тях наведнъж, като използвате вашите модели за заместване на пътя. Обикновено нещо като mynode/[title-raw]. - person Finbarr; 21.04.2010
comment
Моя грешка. Това решение работи. Модулът Url Alias ​​успя да промени псевдонимите на стари възли, а новите са правилно псевдоними. Имам автоматизирано партидно захранване и това също работи! - person bert; 21.04.2010
comment
Не бих препоръчал този метод. Псевдонимите на пътищата са предназначени за използваемост и SEO, а не за изграждане на сайт. Възел с псевдоним „mynode/node-title“ все още ще бъде наличен в „node/123“, но блокът няма да бъде изобразен на тази страница. След като тръгнете по този път, вече не можете безопасно да давате на потребителите правото да дефинират персонализирани псевдоними, защото те могат да нарушат подхода ви за видимост на блока. - person marcvangend; 13.06.2010
comment
Има модул за това - глобално пренасочване. Той ще провери за други псевдоними на всеки възел и ще пренасочи към дефинирания от потребителя псевдоним на пътя. И да, не можете да дадете на потребителите си възможността да задават персонализирани псевдоними, когато тръгнете по този път. Но защо все пак бихте искали? Искате ли вашите потребители да създават луди URL адреси като example.com/this/site/really/sucks/so/much/i-hate-it? - person Finbarr; 13.06.2010

В Drupal 6 можете да конфигурирате настройките за видимост на блоковете. Щракнете върху връзката „конфигуриране“ до вашия блок в бекенда на администратора и следвайте тези стъпки –

1) Изберете опцията „Покажи, ако следният PHP код връща TRUE (PHP режим, само за експерти)“ в раздела „Настройки за специфична за страницата видимост“.

2) Въведете следния PHP код, който проверява типа възел на текущия възел и съответно връща TRUE -

<?php 
   if( arg(0) != 'node' || !is_numeric(arg(1)) )
   { return FALSE;
   }

   //load a fully-populated Drupal node object
   $temp_node = node_load(arg(1));

   if( $temp_node->type == 'mynode' )       //check the node type
   {   return TRUE;    //display block
   }
?>

Това трябва да работи....

person nhylated    schedule 12.06.2010
comment
Странична бележка: това е възможно от Drupal 4.7. За повече информация относно използването на PHP за видимост на блокове и много примери за код вижте drupal.org/node/60317. - person marcvangend; 13.06.2010

можете да използвате контекстния модул

person wapnik    schedule 16.09.2010