VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Использование условий вида <if condition="Условие"> в шаблонах (обзор условий)
106
Как известно многим в шаблонах vBulletin можно использовать конструкцию вида:
HTML Code:
<if condition="Условие">
Отвечает условию
<else />
Не отвечает условию
</if>
Эта статья призвана описать возможные варианты использования условий в шаблонах vBulletin 3.х (для линейки 4.х написание условий изменилось). Далее приведены примеры условий. Массивы, которые можно использовать в шаблонах:
Если вы хотите показать например рекламу не зарегистрированым пользователям и пользователям в группе ожидающих подтверждения по электронной почте, Вы можете использовать массив из id групп пользователей, например 1, 2, 3 (обязательно разделяйте запятой).
Эсли этот скрипт index (будем использовать для примера), тогда будет выполняться условие. Вы можете найти название скрипта в файле скрипта, например название скрипта для файла showthread.php будет showthread.
Обычно название скрипта объявляется подобной записью:
Если пользователь который просматривает страницу имеет тот же userid, что указан в условии, то ему будет показана информация. Например для пользователя с userid равному 667.
Спасибо огромнейшее, добавил в избранное тему, очень полезная информация.
@J. Corvin
Глумливый Специалист
Join Date: Aug 2005
Награды в конкурсах:
Posts: 774
Версия vB: 3.8.x
Reputation:
Professional 748
Репутация в разделе: 485
6
N.B.
В некоторых шаблонах конструкция вида:
HTML Code:
<if condition="$var['xxx']"></if>
Где $var - какой либо массив, а это "xxx" его ключ. Может возникать ошибка.
Точнее при сохранении шаблона возникает нотификация о некорректном коде. И далее, как правило, Этот шаблон уже не работает.
Связано это с одинарными кавычками над ключом. т.е. Конструкция вида:
HTML Code:
<if condition="$var[xxx]"></if>
работает, хотя отличается от первой только отсутствем кавычек.
С чем это связано я честно говоря не знаю, может кто из гуру подскажет. Но такая "фишка" имеет место, и ее надо иметь в виду при написании/правке шаблонов.
kerk
k0t
Join Date: May 2005
Location: localhost
Posts: 28,820
Версия vB: 3.8.x
Пол:
Reputation:
Гуру 20317
Репутация в разделе: 8468
5
к массивам: $foruminfo $prepared (шаблоны информации пользователя)
Пож-ста закрепите тему, а то сложновато ее искать.
@AlfaDogg
Эксперт
Join Date: Dec 2007
Location: C:\windows\system32\
Награды в конкурсах:
Posts: 1,827
Версия vB: 1.x.x
Пол:
Reputation:
Professional 1022
Репутация в разделе: 402
4
Вот еще пример условия для VBA. Выполнение условия на определенных страницах CMS
PHP Code:
<if condition="THIS_SCRIPT == 'adv_index' AND in_array($_REQUEST['pageid'], array('news', 'istoriya', 'clients', 'contacts'))">
Last edited by AlfaDogg : 01-23-2010 at 05:56 PM.
@snake007v
Знаток
Join Date: Aug 2007
Location: xakep land
Posts: 218
Версия vB: 4.0 Beta
Reputation:
Knowing 136
Репутация в разделе: 50
0
ХОЧУ такую же тему, только о vb4 (^_^)
@Yoskaldyr
Специалист
Join Date: Jan 2007
Posts: 543
Версия vB: 4.0.x
Reputation:
Professional 556
Репутация в разделе: 255
3
SMak044, Переменные которые используются в шаблоне (это относится и к условиям) будут зависеть только от контекста использования и области видимости переменных в месте вызова функции fetch_template.
Т.е. например во многих местах можно использовать $vbulletin и $show, но определенно не везде, например внутри классов если $vbulletin не объявлена глобально в данном методе класса, то будет используется конструкция $this->registry (стандарт vb) или для переменной $show - очень часто в различных цикличных локальных частях отображения (например отображение различных шаблонов *_bit) используется локальная переменная $show, а не глобальная или вообще не видна.
Поэтому просьба подправить первое сообщение. Или хотя бы сделать примечание в каких шаблонах работает а в каких нет (хотя думаю оооочень долго будет перепроверять все шаблоны
Т.е. все примеры просто выдернуты из контекста использования (во многих случаях конечно будут работать, но определенно не всегда). Практически для каждого примера (проверка скрипта конечно не в счет, т.к. там используются константы) я могу привести обратный пример когда это не будет работать.
Last edited by Yoskaldyr : 01-25-2010 at 08:10 PM.
@SMak044
Эксперт
Join Date: May 2008
Награды в конкурсах:
Posts: 1,764
Версия vB: 3.8.4
Пол:
Reputation:
Expert 1707
Репутация в разделе: 1192
1
Yoskaldyr, Спору нет. Ты прав. Но Целью данной темы служило показать не все варианты использования условий, а именно некоторые примеры и безусловно не все.
Держать в уме все просто глупо я и сам заглядываю в эту тему, что бы подсмотреть и припомнить.
Конечно же не во всех шаблонах будут работать все конструкции, например в шаблонах вывода списка тем, не будет работать обращение к массиву $post. Но человек, который хочет изменить шаблон наверно должен это понимать. Например я для себя на локалке сделал 5 модулей, которые я включаю когда мне надо с выводом информации из массивов, это мне дает возможность точно знать, какой массив принадлежит этой области видимости.
И я не думаю, что какая либо статья или описание ответит на все вопросы, особенно тому, кто хочет написать свое условие в шаблоне. А вот подсказать путь и возможности может. Именно для этого статья и предназначена.
Например, сообщение J. Corvin, о иногда не корректной отработке условий в шаблоне полезно, так как дает некие советы и пояснения. Да и твое сообщение тоже полезно, так как обращает внимание, на то, что не всегда можно воспользоваться массивом в шаблоне и рассказывает о причине такого поведения. А тупое дописование ограничений и вариантов, думаю ведет в никуда.
@Yoskaldyr
Специалист
Join Date: Jan 2007
Posts: 543
Версия vB: 4.0.x
Reputation:
Professional 556
Репутация в разделе: 255
1
Quote:
Originally Posted by SMak044
А тупое дописование ограничений и вариантов, думаю ведет в никуда.
Полностью согласен. Но не помешало бы примечание что в некоторых местах условия могут не работать, например часто используемые условия с $bbuserinfo будут работать не везде (что для новичка будет не понятно, т.к. $bbuserinfo описывает массив пользователя просматривающего страницу и логично предположить что он существует и отработает во всех шаблонах).
Здесь на форуме уже возникали вопросы почему не работает условие с $bbuserinfo или с $show (очень логично предположить что обе эти переменные - глобальные), как оказывалось в последствии не работало только потому что эта переменная в шаблоне просто вне зоны видимости