[Решено] Видимость блока для страниц всех терминов таксономии одного словаря таксономии

Главные вкладки

Аватар пользователя urikor urikor 30 июля 2012 в 23:16

Здравствуйте ув. разработчики.

Имеется словарь таксономии и в нем произвольное число терминов, которое будет меняться.
Есть ли возможность задать видимость блока для страниц всех терминов словаря, т.е. чтобы какой-либо блок отображался на страницах всех терминов словаря?
Задание адресов страниц терминов для видимости блока не подходит, т.к. количество терминов и их иерархия будет меняться динамически.

Комментарии

Аватар пользователя urikor urikor 31 июля 2012 в 0:45

Ответ здесь:
href="http://drupal.org/node/1481256"

<?php
// This snippet returns TRUE if the node we are
// currently viewing is tagged with a term which belongs
// to the 'desired_vocab' and we are not in edit mode (arg(2)).

// put here the vocabulary ID you're interested in
$desired_vocab = 9;

if arg(0) == 'node' and is_numeric(arg(1)) {
// Yes, we're viewing a node in view mode.

$node = node_load(arg(1)); // cached
// If the term does not exist we're done
if (is_array($node->taxonomy)) {
foreach ($node->taxonomy as $term) {
if ($term->vid == $desired_vocab) {
return TRUE;
}
}
}
}
return FALSE;
?>

Аватар пользователя Айдар Айдар 31 июля 2012 в 1:01

"urikor" wrote:
Есть ли возможность задать видимость блока для страниц всех терминов словаря, т.е. чтобы какой-либо блок отображался на страницах всех терминов словаря?

"urikor" wrote:
// This snippet returns TRUE if the node we are
  // currently viewing is tagged with a term which belongs
  // to the 'desired_vocab'

Однако, Вы что-то недоговариваете в сабже! Wink

Аватар пользователя urikor urikor 31 июля 2012 в 2:03

Да не, просто словарь-то будет редактироваться, термины добавляться и меняться, а блок-то должен быть виден на всех страницах терминов словаря.
В данном случае термины словаря используются для систематизации материалов по рубрикам.

Аватар пользователя urikor urikor 31 июля 2012 в 12:40

Проверил много снипетов, все работают, но сводятся к проверке принадлежности ноды термину таксономии.

Нашел для себя решение в виде модуля
http://drupal.org/project/context

Очень богатый выбор настроек видимости для разных объектов, не только блоков, по множеству критериев, страницы и ноды термина таксономии, тип материала, язык и др.
Фактически управление видимостью всех объектов сайта собрано в одном месте, что может показаться неудобным. Но это дело привычки.

Аватар пользователя Айдар Айдар 31 июля 2012 в 12:53

"urikor" wrote:
сводятся к проверке принадлежности ноды термину таксономии.

Вот об этом мой пост выше. Гуглопереводчиком бы хотя бы комментарии в коде перевели. Smile

"urikor" wrote:
http://drupal.org/project/context[/quote]
Довольно увесист, если будет использоваться только для настройки одного единственного блока. А так да, замечательный модуль... для решения более сложных задач.

Аватар пользователя urikor urikor 31 июля 2012 в 18:59

Блоков на странице как минимум три, словарей как минимум пять, в каждом тьма терминов, замахаешься каждому термину для блоков пути или tid'ы прописывать.

Аватар пользователя Orion76 Orion76 31 июля 2012 в 23:20

"urikor" wrote:
как прописать словарь (vid)

модуль pathauto - назначает автоматом алиасы для системных путей по шаблону..
в шаблоне пути первая часть - машинное имя словаря, вторая транслитирированный заголовок термина.
что-то типа slovar1/termin1-name
в настройках блока ставим - показывать только на страницах slovar1/*

как-то так..

Аватар пользователя urikor urikor 1 августа 2012 в 10:20

Решено с помощью:
Pathauto+Transliteration+Token и все-таки плюс Context

Context нужен был для задания видимости по типу материала и одновременно по адресу, т.к. одновременное задание видимости по адресу (термина таксономии, словаря или любого др.) и по типу ноды на странице редактирования блока не работает.

Теперь блоки отображаются и по адресу словаря slovar/* и по типу ноды,да еще мультиязычно.

РЕШЕНО.

Аватар пользователя Айдар Айдар 1 августа 2012 в 12:53

Так в сабже надо было указывать, что еще и в нодах надо блок отображать.

Поставьте "Решено" в заголовке темы.

Аватар пользователя Artu Artu 12 августа 2012 в 5:24

urikor,спасибо. Открыл для себя модуль Context.
Какую версию модуля используете?

А как задать условие видимости блока на странице ноды, если заполнен определенный словарь?
Если задано условие "Таксономия", то там можно выбрать только термин(ы), а не словарь.
Таким образом при добавлении термина в словарь каждый раз нужно ментяь условие...

Аватар пользователя urikor urikor 12 августа 2012 в 17:12

Заметьте, Artu , что я использовал связку Pathauto+Transliteration+Token а у термина таксономии указано автосоздание псевдонима адреса.
Тогда у термина, принадлежащего определенному словарю в адресе появляется последовательно
имя-словаря/имя-термина, для всех терминов этого словаря имя словаря в адресе будет одно и то же.
Если не нужно дополнительных специфических условий, то достаточно прописать условие видимости в виде имя-словаря/*
на странице редактирования блока и модуль context не использовать.
В моем случае необходимо было одновременное указание видимости для типа материала, для чего я не нашел решения в виде PHP-сниппетов, а

"urikor" wrote:
одновременное задание видимости по адресу (термина таксономии, словаря или любого др.) и по типу ноды на странице редактирования блока не работает.

Context отсюда: http://drupal.org/project/context, версия 3 бета3

"Artu" wrote:
А как задать условие видимости блока на странице ноды, если заполнен определенный словарь?
Если задано условие "Таксономия", то там можно выбрать только термин(ы), а не словарь.

Просто добавляете условие видимости по адресу: имя-словаря/*

Аватар пользователя Artu Artu 12 августа 2012 в 17:22

urikor, про Pathauto+Transliteration+Token и видимость по пути я в курсе, использую изначально.))

Если задать видимость по адресу: имя-словаря/*, то блок будет показан на странице термина этого словаря, а мне нужно на и на ноде так же.

Повторю вопрос:
«А как задать условие видимости блока на странице ноды, если заполнен определенный словарь?»

Аватар пользователя urikor urikor 12 августа 2012 в 17:48

В том и сложность вопроса. Поскольку решения другого не нашлось, просто создал разные типы материалов, соответствующие разным словарям.