Скрыть Или Показать Блок


#1

Подскажите, Как можно в зависимости от определенного условия (в php и в смарти) скрыть или показать определенный блок (видимо по его id)


#2

может лучше условие прописать в содержимом этого блока?


#3

может лучше условие прописать в содержимом этого блока?

Это к примеру блоки баннеры, где там условия писать?


#4

Создаете новую оболочку для блоков

design/themes/responsive/templates/blocks/wrappers/

Примерно с таким контентом:

{$content|default:" " nofilter}

В нее уже условия свои добавляете. Например,

{if $category_data && $category_data.catagory_id == 37}
{$content|default:" " nofilter}
{/if}

Могут всплыть проблемы с кешем, надо протестировать


#5

ОК, спасибо. Сейчас буду пробовать.

Не подскажет как заменить баннер? т.е. при условии показывать разные баннеры?


#6

Можно добавить новый вид заполнения в блок "Баннеры", который будет учитывать определенные условия. Приведите, пожалуйста, примеры условий.


#7

Задача в общем-то простая.

При заходе пользователя на сайт определяется его город по IP. Город сохраняется в сессии. Далее, в зависимости от этого города, нужно показать разные баннеры.


#8

Задача в общем-то простая.

При заходе пользователя на сайт определяется его город по IP. Город сохраняется в сессии. Далее, в зависимости от этого города, нужно показать разные баннеры.

А сколько примерно наборов баннеров планируется? Под все регионы?


#9

В общем-то да, как минимум с десяток


#10

В общем-то да, как минимум с десяток

Тогда лучше модификацию сделать - привязку баннера к городу в админке


#11

Тогда лучше модификацию сделать - привязку баннера к городу в админке

а можно ли подробнее...

если просто указать в админке у баннера, что данный баннер показывается в таком-то городе, это не проблема сделать, но как показывать или не показывать этот самый баннер? Все равно ведь условие получается. Куда это условие писать?


#12

По мне так, по id баннера было наверное проще устанавливать его видимость или нет. В базе же навреняка хранится его видимость. В админке же можно вкл или выкл его. Неужели нельзя так же его и в php или смарти вкл и выкл ?


#13

Если для вас не проблема сделать привязку, то останется только использовать хук get_banners (app/addons/banners/func.php) для того, чтобы добавить новое условие для выборки из базы баннеров по значению из сессии


#14

Все прекрасно сделал. В настройках баннера сделал поле для указания города. А в хуке get_banners_post убираю лишние баннеры.

Но вот проблема - ни как не могу обновить блок баннеров после выбора города.

Почему то не понимается подстановка переменной в id div для аякса. Ставлю просто число - все работает, ставлю переменную - аякс не обновляет. Мистика


#15

Почему то не понимается подстановка переменной в id div для аякса. Ставлю просто число - все работает, ставлю переменную - аякс не обновляет. Мистика

У вас точно не получается ситуации, когда при первоначальной загрузке значение переменной одно, а аяксовый запрос возвращает код с другим значением? В этом случае обновление происходить не будет


#16

У аяск-запроса есть поле result_ids. В нем перечисляются id элементов, которые должны быть обновлены в результате выполнения аякс-запроса. Добавьте в это поле id div-а, в котором отображаются баннеры. Например banner_slider*

div с такими id обязательно должны иметь закрывающий комментарий типа

Например

[какое-то содержимое]

#17

Еще была проблема доп. атрибутами у дива. Постарайтесь, чтобы див с id не содержал других атрибутов, типа class и тд


#18

С атрибутами обычно проблем нет, а вот никаких символов между тегом --> и быть точно не должно


#19

С атрибутами обычно проблем нет, а вот никаких символов между тегом --> и

быть точно не должно

Я же не сам придумал, это все из практики


#20

Еще была проблема доп. атрибутами у дива. Постарайтесь, чтобы див с id не содержал других атрибутов, типа class и тд

Подтверждаю, такая же ситуация, пока не удалил класс у div не обновлялся по ajax.