Сниппет видимости блока в файле

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

Аватар пользователя Artu Artu 27 мая 2013 в 17:57

Хотелось бы, по-правильному, хранить не только сниппет блока в файле, но и сниппет видимости блока в файле.
Но не получается:
return "false" или return "true" не работает.
Блок всегда показан.

Комментарии

Аватар пользователя kv4 kv4 27 мая 2013 в 19:18

Посмотрите модуль context, он позволяет очень гибко управлять видимостью блоков.

А если очень хочется именно в сниппете хранить (при том, что сниппет генерирует содержимое блока), тогда вам нужно просто возвращать пустую строку (return "";) - но это не есть управление видимостью блока, это если можно так назвать - управление видимостью контента блока.

А вообще, использовать сниппеты, которые генерируют контент в блоках - плохая практика.
Как минимум такой код нельзя отлаживать.

Если вам очень нужно именно в коде реализовать что-то, то лучше создайте модуль, и в нём реализуйте два хука hook_block_info() и hook_block_view()

Аватар пользователя Artu Artu 27 мая 2013 в 21:10

Context юзал. Может быть он даже подошел в моим целям.. Но вопрос не в этом.

Контент блока у меня не генерится сниппетом. Это views block. Ну если бы даже генерился. Вопрос тоже не в этом. Блоки создавал программно, но в данном случае речь о существующем блоке.

Вопрос:
Как хранить условия видимости блока (PHP) в сниппете?

Зачем возвращать в сниппете пустую строку (return "";), где же тогда возврат true или false?

Аватар пользователя kv4 kv4 10 ноября 2015 в 11:49

о, я наверное не правильно понял ваш вопрос...

Судя по всему вы спрашиваете про это

Только у меня нет возможности ограничивать в PHP

Если да, то там если я не ошибаюсь, нужно было возвращать TRUE или FALSE.
Возможно у вас TRUE и FALSE не работают потому, что всегда возвращается TRUE. Или возможно кэшируется страница и/или блок.

Попробуйте не выполнять никакого кода а просто напишите return TRUE; потом return FALSE; может это поможет разобраться в чём дело.
Но опять же, в этом случае всё таки лучше прописать ваше хитрое условие в собственном модуле например реализовав hook_block_view_alter().

Повторюсь - хранить код в БД не очень хорошее решение. Код должен быть в файлах.

Аватар пользователя Artu Artu 28 мая 2013 в 11:21

kv4, пробовал.
Вот именно и непонятно почему не срабатывает это. А вывод PHP сниппета из файла (там где содержание) срабатывает.
Может есть какая-то хитрость.
Если нет, то да alter.