Хотелось бы, по-правильному, хранить не только сниппет блока в файле, но и сниппет видимости блока в файле.
Но не получается:
return "false" или return "true" не работает.
Блок всегда показан.
Посмотрите модуль context, он позволяет очень гибко управлять видимостью блоков.
А если очень хочется именно в сниппете хранить (при том, что сниппет генерирует содержимое блока), тогда вам нужно просто возвращать пустую строку (return "";) - но это не есть управление видимостью блока, это если можно так назвать - управление видимостью контента блока.
А вообще, использовать сниппеты, которые генерируют контент в блоках - плохая практика.
Как минимум такой код нельзя отлаживать.
Если вам очень нужно именно в коде реализовать что-то, то лучше создайте модуль, и в нём реализуйте два хука hook_block_info() и hook_block_view()
Context юзал. Может быть он даже подошел в моим целям.. Но вопрос не в этом.
Контент блока у меня не генерится сниппетом. Это views block. Ну если бы даже генерился. Вопрос тоже не в этом. Блоки создавал программно, но в данном случае речь о существующем блоке.
Вопрос:
Как хранить условия видимости блока (PHP) в сниппете?
Зачем возвращать в сниппете пустую строку (return "";), где же тогда возврат true или false?
Если да, то там если я не ошибаюсь, нужно было возвращать TRUE или FALSE.
Возможно у вас TRUE и FALSE не работают потому, что всегда возвращается TRUE. Или возможно кэшируется страница и/или блок.
Попробуйте не выполнять никакого кода а просто напишите return TRUE; потом return FALSE; может это поможет разобраться в чём дело.
Но опять же, в этом случае всё таки лучше прописать ваше хитрое условие в собственном модуле например реализовав hook_block_view_alter().
Повторюсь - хранить код в БД не очень хорошее решение. Код должен быть в файлах.
kv4, пробовал.
Вот именно и непонятно почему не срабатывает это. А вывод PHP сниппета из файла (там где содержание) срабатывает.
Может есть какая-то хитрость.
Если нет, то да alter.
Комментарии
Посмотрите модуль context, он позволяет очень гибко управлять видимостью блоков.
А если очень хочется именно в сниппете хранить (при том, что сниппет генерирует содержимое блока), тогда вам нужно просто возвращать пустую строку (return "";) - но это не есть управление видимостью блока, это если можно так назвать - управление видимостью контента блока.
А вообще, использовать сниппеты, которые генерируют контент в блоках - плохая практика.
Как минимум такой код нельзя отлаживать.
Если вам очень нужно именно в коде реализовать что-то, то лучше создайте модуль, и в нём реализуйте два хука hook_block_info() и hook_block_view()
Context юзал. Может быть он даже подошел в моим целям.. Но вопрос не в этом.
Контент блока у меня не генерится сниппетом. Это views block. Ну если бы даже генерился. Вопрос тоже не в этом. Блоки создавал программно, но в данном случае речь о существующем блоке.
Вопрос:
Как хранить условия видимости блока (PHP) в сниппете?
Зачем возвращать в сниппете пустую строку (return "";), где же тогда возврат true или false?
о, я наверное не правильно понял ваш вопрос...
Судя по всему вы спрашиваете про это
Только у меня нет возможности ограничивать в PHP
Если да, то там если я не ошибаюсь, нужно было возвращать TRUE или FALSE.
Возможно у вас TRUE и FALSE не работают потому, что всегда возвращается TRUE. Или возможно кэшируется страница и/или блок.
Попробуйте не выполнять никакого кода а просто напишите return TRUE; потом return FALSE; может это поможет разобраться в чём дело.
Но опять же, в этом случае всё таки лучше прописать ваше хитрое условие в собственном модуле например реализовав hook_block_view_alter().
Повторюсь - хранить код в БД не очень хорошее решение. Код должен быть в файлах.
kv4, пробовал.
Вот именно и непонятно почему не срабатывает это. А вывод PHP сниппета из файла (там где содержание) срабатывает.
Может есть какая-то хитрость.
Если нет, то да alter.