Текущее время: 25 сен 2021, 05:20

Русская поддержка форума phpBB

Это сайт русской поддержки phpBB

Условия показа в шаблонах phpbb3

Аватара пользователя
Сообщения: 11
Стаж: 3 года 4 месяца
Откуда: Москва
Карма: 0
Россия

Сообщение » 31 авг 2021, 18:54

Условия показа в phpbb3


В phpBB3, для показа содержимого различным группам используются условия, прописываемые в html-коде стиля. В данной теме хотелось бы рассмотреть некоторые из них, тем более это может кому-нибудь пригодиться.
Для того, чтобы работали условия показа для групп с айди, нужно открыть includes/functions.php и найти

Код: Выделить всё
'S_USER_NEW'               => $user->data['user_new'],

Вставить после
Код: Выделить всё
'S_USER_GROUP'               => $user->data['group_id'],


С этим условиям, не увидят Боты
Код: Выделить всё
<!-- IF not S_IS_BOT -->Ваш код<!-- ENDIF -->

Скрытый этим условием, будут видеть только Гости, зарегистрированным пользователям он не будет отображаться
Код: Выделить всё
<!-- IF not S_USER_LOGGED_IN -->Ваш код<!-- ENDIF -->


Скрытый этим условием, будет виден только Зарегистрированным пользователям
Код: Выделить всё
<!-- IF S_USER_LOGGED_IN -->Ваш код<!-- ENDIF -->

Скрытый этим условием будут видеть только Администраторы
Код: Выделить всё
<!-- IF U_ACP -->Ваш код<!-- ENDIF -->

Скрытый этим условием будут видеть только Модераторы
Код: Выделить всё
<!-- IF U_MCP -->Ваш код<!-- ENDIF -->

Видно для определённых групп
Код: Выделить всё
<!-- IF S_USER_GROUP == N -->Ваш код<!-- ENDIF -->


Видно на определённом форуме
Код: Выделить всё
<!-- IF FORUM_ID == 'N' -->Ваш код<!-- ENDIF -->

Код: Выделить всё
<!-- IF postrow.S_FIRST_ROW --> Ваш код<!-- ENDIF -->

Код: Выделить всё
<!-- IF S_NUM_POSTS > N --> Ваш код<!-- ENDIF -->


Код, скрытый этим условием отображается только в первом сообщении темы
Код: Выделить всё
<!-- IF postrow.S_ROW_COUNT eq 0 -->ВАШ КОД<!-- ENDIF -->

Код, скрытый этим условием отображается только во втором сообщении темы
Код: Выделить всё
<!-- IF postrow.S_ROW_COUNT eq 1 -->ВАШ КОД<!-- ENDIF -->

Код, скрытый этим условием отображается только в третьем сообщении темы
Код: Выделить всё
<!-- IF postrow.S_ROW_COUNT eq 2 -->ВАШ КОД<!-- ENDIF -->

И так далее, следуя логике
Если пользователь ваш друг, то этот код отобразится при просмотре темы в его минипрофиле
Код: Выделить всё
<!-- IF postrow.S_FRIEND --> ВАШ КОД<!-- ENDIF -->

Код, скрытый этим условием отображается только в первом сообщении первой страницы
Открыть viewtopic.php и найти
Код: Выделить всё
'PAGINATION'    => $pagination,

Вставить после найденного
Код: Выделить всё
 'PAGE_NUM'      => floor($start / $config['posts_per_page']) + 1,

В шаблоне использовать условие
Код: Выделить всё
<!-- IF postrow.S_FIRST_ROW  && PAGE_NUM eq 1 -->Ваш код<!-- ENDIF -->

Аватара пользователя
Сообщения: 11
Стаж: 3 года 4 месяца
Откуда: Москва
Карма: 0
Россия

Сообщение » 31 авг 2021, 18:56

У каждого наверняка на форуме поставлено порядочно модов и скриптов, это хорошо, но есть одно НО. Все скрипты подрублены в шапку форума и грузятся всегда и на всех страницах, независимо от того нужны ли они для этой страницы или нет. Лично я верю в то, что скрипт должен подгружаться лишь в на тех страницах, на которых нужна его работа. Остальное - пустая трата времени на загрузку страниц. Согласны ? Тогда читаем далее...

Итак, смотрим в шаблон overall_header.html, смотрим код до закрывающего тега </head>. Видим кучу скриптов, которые не ограничены условиями. Теперь я хочу представить вам замечательное условие
Код: Выделить всё
<!-- IF SCRIPT_NAME == "N" -->
содержимое
<!-- ENDIF -->

Как его использовать ? Допустим поставили вы скрипт слайдера, работает он только на главной странице. Так зачем же нам подгружать этот скрипт на прочих страницах ?? Оборачиваем подключение скрипта условием
Код: Выделить всё
<!-- IF SCRIPT_NAME == "index" -->
тут строка подключения скрипта
<!-- ENDIF -->

И вуаля, скрипт подгружается только на главной странице. Удобно, полезно ? Тогда читаем далее ...

В самом условии вы видите буквочку N, ее следует заменить на имя страницы, на которой надо подгружать скрипт. Вот список основных страниц
index - главная страница форума
mcp - все страницы модераторского раздела
memberlist - все страницы, связанные с просмотром профиля и списка пользователей
posting - страница написания нового сообщения (либо редактирования старого)
search - все страницы, связанные с поиском, активные темы, ваши сообщения и тд
ucp - все страницы, связанные с центром пользователя
viewforum - страница просмотра подфорума\раздела
viewtopic - страница просмотра тем

Все очень доступно и просто, так же можно использовать такое условие сразу для нескольких типов страниц, условие будет выглядеть так
Код: Выделить всё
<!-- IF SCRIPT_NAME == "viewtopic" or SCRIPT_NAME == "posting" or SCRIPT_NAME == "memberlist" -->
содержимое
<!-- ENDIF -->

Хотелось бы отметить то, что данное условие можно применять для любого кода, не обязательно только для строк подключения скрипта. Обычно это условие используют в шаблонах overall_header.html и overall_footer.html для показа определенной информации на определенных страницах. К примеру хотим вывести только на главной странице какой либо блок информации, пользуемся условием
Код: Выделить всё
<!-- IF SCRIPT_NAME == "index" -->
любой HTML код будет показываться только на главной странице форума
<!-- ENDIF -->


Вернуться в Разное по phpBB3



Кто сейчас на конференции

Сейчас этот форум просматривают: нет пользователей онлайн и гости: 2