Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Alien2001

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

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

Добрый день!

 

Возникла такая потребность: нужно вывести код (рекламный) на каждой странице один раз. Есть два варианта размещения - внизу страницы (в точке 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'])">

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

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

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

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

Поделиться сообщением


Ссылка на сообщение

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

 

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

Поделиться сообщением


Ссылка на сообщение

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

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

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

×
×
  • Создать...