В данной статье рассмотрим опыт разработчиков, которые предоставили обществу информацию о способе создания блока с темами, отображающими список тем, в зависимости от форума, к котором он расположен.
Данная возможность 'из коробки' отсутствует, т.к. если разместить блок, например популярных тем, на странице форума, то на страницах всех форумов блок будет отображать одни и те же темы.
Однако, Invision Community не настолько однообразен, чтобы не справиться с такой задачей, в данном случае - с помощью HTML логики.
Создание условных блоков
Реализовать данную функцию мы можем с помощью условного блока, который будет некоторой оболочкой других блоков. Этот блок-оболочка будет получать служебную информацию со страницы и отображать на её основе нужный нам блок.
Первым делом нужно создать стандартные блоки лент тем из форумов, для каждого форум свой блок с темами. Вы можете создать список самых комментируемых или просматриваемых тем, зависит от желания, суть от этого не меняет. В поле "Ключ шаблона" у каждого блока необходимо указать forum_x, где х - идентификатор форума, в котором будет отображаться блок.
После этого создаём наш блок-обёртку, Тип которого должен быть Блок, а редактор - HTML. В содержимое блока вставим код:
{{if request.app == 'forums' && request.module == 'forums'}}
{{$id = \IPS\Request::i()->id;}}
{block="forum_{$id}"}
{{endif}}
Здесь мы с помощью условия проверяем приложение и модуль 'forums' на странице, которые указывают на то, что пользователь находится на страницах форума. Затем мы используем тег {block="forum_{$id}"}, который подставит блок тем с ID, взятым со страницы.
Осталось сохранить блок и перенести его на страницу просмотра тем форума с помощью менеджера блоков. Если у вас есть интересные идеи создания нестандартных блоков, поделитесь ими в комментариях!
Комментариев нет
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.