Alien2001 Posted September 14, 2015 Share Posted September 14, 2015 Добрый день! Возникла такая потребность: нужно вывести код (рекламный) на каждой странице один раз. Есть два варианта размещения - внизу страницы (в точке hasFooterAd ) или в правой колонке (она у меня есть на многих страницах, не только на главной, в точке side_blocks, например). Размещение в колонке предпочтительнее, но колонка появляется не везде. Проблема в том, что хуки skin_global обрабатываются раньше хуков skin_boards или skin_forum, поэтому в момент генерации точки hasFooterAd колонки и всего центрального контента еще нет, и соответственно, неизвестно, будет ли колонка или нет. Как решить эту проблему изящно, без километров кода?(версия 3.3) Link to comment Share on other sites More sharing options...
newbie Posted September 15, 2015 Share Posted September 15, 2015 или в правой колонке (она у меня есть на многих страницах, не только на главной, в точке side_blocks, например)Если страницы известны (а судя по тексту, нет), то можно составить условие, при котором не выводить нижний код. Можно скрыть нижний блок (display: none;), после загрузки страницы проверять сайдбар. Если его нет, то показывать блок. Link to comment Share on other sites More sharing options...
Alien2001 Posted September 15, 2015 Author Share Posted September 15, 2015 Если страницы известны (а судя по тексту, нет), то можно составить условие, при котором не выводить нижний код. Можно скрыть нижний блок (display: none;), после загрузки страницы проверять сайдбар. Если его нет, то показывать блок. Я уже думаю, как бы составить условие, но пока не получается. Проблема еще в том, что в нижней точки, как я понимаю, вообще неизвестно, что будет внутри контента: будет ли там выведен список тем (сообщений) или, например, вывалится ошибка, если такой темы нет. display: none, как и другие css ухищрения, однозначно не годится - это будет нарушением условий размещения. Link to comment Share on other sites More sharing options...
newbie Posted September 15, 2015 Share Posted September 15, 2015 Сложно что-то говорить, не зная, как у Вас все реализовано. По дефолту сайдбар отображается только на главной странице, и в нижний блок рекламы не добавить темы. На примере стандартной системы рекламы.Добавил коды в "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'])">В итоге добавленный код на шавной отображается только в сайдбаре, на остальных страницах - внизу. 1 Link to comment Share on other sites More sharing options...
siv1987 Posted September 15, 2015 Share Posted September 15, 2015 display: none, как и другие css ухищрения, однозначно не годится - это будет нарушением условий размещения.Тогда довольно сложно будет это сделать не зная что и когда будет в ваших блоках. Чтобы составить условие на php нужно знать будет ли там то, что вы хотите или нет. Без этого условие на телепатии не сделать. Link to comment Share on other sites More sharing options...
Alien2001 Posted September 15, 2015 Author Share Posted September 15, 2015 Спасибо за помощь! Помыкался я и начал записывать условия . Как раз искал способ проверить внутри хука, что мы на главной странице. newbie, Ваш код как раз в тему : isset($this->request['f']) and $this->request['f'] == 0 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now