Перейти к содержимому
Русский язык для Invision Community 5

Однократный вывод рекламного кода

Добрый день!

 

Возникла такая потребность: нужно вывести код (рекламный) на каждой странице один раз. Есть два варианта размещения - внизу страницы (в точке hasFooterAd ) или в правой колонке (она у меня есть на многих страницах, не только на главной, в точке side_blocks, например). Размещение в колонке предпочтительнее, но колонка появляется не везде. Проблема в том, что хуки skin_global обрабатываются раньше хуков skin_boards или skin_forum, поэтому в момент генерации точки hasFooterAd колонки и всего центрального контента еще нет, и соответственно, неизвестно, будет ли колонка или нет. Как решить эту проблему изящно, без километров кода?

(версия 3.3)

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

или в правой колонке (она у меня есть на многих страницах, не только на главной, в точке side_blocks, например)

Если страницы известны (а судя по тексту, нет), то можно составить условие, при котором не выводить нижний код.

 

Можно скрыть нижний блок (display: none;), после загрузки страницы проверять сайдбар. Если его нет, то показывать блок.

  • Автор

Если страницы известны (а судя по тексту, нет), то можно составить условие, при котором не выводить нижний код.

 

Можно скрыть нижний блок (display: none;), после загрузки страницы проверять сайдбар. Если его нет, то показывать блок.

 

Я уже думаю, как бы составить условие, но пока не получается. Проблема еще в том, что в нижней точки, как я понимаю, вообще неизвестно, что будет внутри контента: будет ли там выведен список тем (сообщений) или, например, вывалится ошибка, если такой темы нет.

 

display: none, как и другие css ухищрения, однозначно не годится - это будет нарушением условий размещения.

Сложно что-то говорить, не зная, как у Вас все реализовано. По дефолту сайдбар отображается только на главной странице, и в нижний блок рекламы не добавить темы.

 

На примере стандартной системы рекламы.

Добавил коды в "This code will be inserted into the footer of every page" и "This code will be displayed in the board index sidebar"

Учитывая, что сайдбар отображается только на главной, в шаблоне globalTemplate

				<if test="hasFooterAd:|:$items['adFooterCode']">

заменил на

				<if test="hasFooterAd:|:$items['adFooterCode'] and !(isset($this->request['f']) and $this->request['f'] == 0 and $this->settings['ad_code_board_sidebar'])">

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

display: none, как и другие css ухищрения, однозначно не годится - это будет нарушением условий размещения.

Тогда довольно сложно будет это сделать не зная что и когда будет в ваших блоках. Чтобы составить условие на php нужно знать будет ли там то, что вы хотите или нет. Без этого условие на телепатии не сделать.

  • Автор

Спасибо за помощь! Помыкался я и начал записывать условия sad.gif . Как раз искал способ проверить внутри хука, что мы на главной странице. newbie, Ваш код как раз в тему rolleyes.gif:

 

isset($this->request['f']) and $this->request['f'] == 0

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

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.