Jump to content

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


Alien2001
 Share

Recommended Posts

Добрый день!

 

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

(версия 3.3)

Link to comment
Share on other sites

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

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

 

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

Link to comment
Share on other sites

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

 

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

 

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

 

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

Link to comment
Share on other sites

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

 

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

Добавил коды в "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
Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

 

isset($this->request['f']) and $this->request['f'] == 0
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...