Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Конструкции <if> и <foreach>

Опубликовано:

Примеры:

<if test="comment:|:$condition && $other_condition">
   Только если истинны оба условия
</if>

 

<foreach loop="comment:$variable as $key => $value">
   Здесь должен быть код для вывода каждого элемента
</foreach>

 

Пишут, что comment:|: - это "название условия, оно не обязательно, но используется хуками для определения мест в которых могут быть выведены данные".Более подробных сведений об этих условиях я не нашел и я хоть убей не понимаю, откуда берутся эти "условия", в данном случае comment. Я их сам придумываю какие хочу и пишу только в тех <if> и <foreach> в которых мне хочется?

 

Откуда они (comment:|: и ему подобные "условия") берутся, что они означают и когда их нужно писать, а когда нет?

Рекомендованные сообщения

Опубликовано:

Попробуйте создать новый template хук. Вам будет предложен список мест, куда вы можете добавить своим хуком контент. Эти места и будут определены с помощью данных якорей.

 

Т.е. если в шаблоне есть

Опубликовано:
  • Автор

ААаа точно, там, (в <if test="blahblah) можно писать все что угодно, и этим blahblah потом можно будет воспользоваться для создания новых хуков. Я думал, они еще для чего-то служат.

А эту статью http://community.invisionpower.com/resources/documentation/index.html/_/developer-resources/hooks/template-hooks-r400 я читал, но там говорилось, что это просто якори, для создания хуков, и я как-то не вьехал сразу, что я могу вообше сам напихать сколько угодно таких якорей в любой шаблон.

 

А такой, более глобальный вопрос: если по многим скинам я делаю небольшие вставки, где-то ссылку добавлю на паблик моего приложения, где-то еще одну переменную из массива, передаваемого в данный шаблон выведу, еще что-то...все это лучше (правильнее) сделать в виде хуков, или просто непосредственно редактировать руками нужные шаблоны. Все изменения, которые я делаю, достаточно специфические и вероятность того, что мне понадобиться их установить на какой-то другой IPB - крайне мала! Ну и + ко всему, мне, почему-то, кажется, что хуки замедляют работу скрипта в целом. Ведь движок ипб каждый раз сканирует папку hooks на наличие новых хуков, инклюдит найденные там классы в индексный файл, я так думаю, я не знаю как у них там собирается функционал одной страницы перед тем, как отдать HTML клиенту.

А так, он (ипб) сразу бы отдавал шаблон с небольшими измениями в самом шаблоне, без всей этой рутины. Так ведь быстрее должно быть?

Опубликовано:

Если сделаете хуками - то потом будет проще обновляться и добавлять новые темы оформления.

 

Если вы что-то отредактируете в шаблоне одного скина, то вам придется:

- повторять все и в других, буде вы захотите предложить пользователям несколько дизайнов,

- в случае выхода новой версии форума и скина, переносить все свои правки из старой версии.

 

Чем больше доработок - тем больше переносов, и довольно быстро вы упретесь в то, что обновление с сохранением правок станет невыносимо сложным. Например, по этой причине мой desu.ru застрял на 3.2. Мне нужна минимум неделя, чтобы перенести все модификации в 3.3, и руки просто не поднимаются это делать. Проще с нуля пересоздать все в хуках и кастомных приложениях, чем я сейчас и занимаюсь, а потом спокойно ставить любые скины и обновления.

Опубликовано:
  • Автор

Тогда такой вопрос: допустим, я хуком шаблона вывожу виджет на страницу. Как лучше будет сформировать XTML для этого виджета?

1) Создать в админке шаблон и в методе хука getOutput() вернуть что-то типа

return $this->registry->output->getTemplate('ololoshaContent')->ololo();

И все.

 

2) Не создавать в админке никакого шаблона для моего виджета, а прямо в хуке, в методе getOutput() формировать его как-то так:

return <<<HTML
       <p>На главную</p>
       <input type="checkbox" name="on_main" value = "не добавлена"/>
       <p>Фильтры по материалу</p>
И прочий ХТМЛ...
HTML;

 

Вроде как, второй способ менее удобный, потому, что в нем невозможно использовать никаких тегов шаблона (иф, парсе, форич и прочие удобные теги). Но с другой стороны, первый способ вызовет проблемы при переходе на новую версию или, может еще что-то. Или нет?

Опубликовано:

Первый способ правильнее второго только по одной причине - он будет более удобным для будущих пользователей хука - они легко смогут подправить что-то в шаблоне под себя. То же самое и с использованием системы локализаций (и вынесением всех строк в языковой набор), и с вынесением параметров хука в настройки.

 

С технической точки зрения вынесение кода в шаблоны чуть замедляет скорость работы хука, но отличия минимальны, и кодить "говнокод", где вывод замешан с представлением, безусловно проще :)

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.