Volod 0 04/08/12 09:51 (изменено) Дорогие друзья, кто разбирается в JavaScript - прошу помощи! Тема ротации шапки уже поднималась на этом форуме, но тогда решение не было предложено. Собственно это нужно для того, чтобы сделать 2 шапки: дневную и вечерную, которые будут автоматически менятся в зависимости от времени. Что я предпринял В GlobalTemplate вставил следующий JavaScript + в корень поместил два файла с разными шапками (вечерней и дневной) <script language="JavaScript"> <!-- Begin var theImages = new Array() theImages[0] = '1.jpg' theImages[1] = '2.jpg' var j = 0 var p = theImages.length; var preBuffer = new Array() for (i = 0; i < p; i++){ preBuffer[i] = new Image() preBuffer[i].src = theImages[i] } var h=(new Date()).getHours(); if (h > 21 || h <6) {whichImage=(1);} else {whichImage=(0);} function showImage(){ document.write('<img src="'+theImages[whichImage]+'">'); } // End --> </script> И в defaultHeader заменил стандартный вывод шапки на фунцию из скрипта. <a href='{$this->settings['board_url']}' title='{$this->lang->words['go_home']}' rel="home" accesskey='1'> <script LANGUAGE="JavaScript"> <!-- Begin showImage(); // End --> </script> </a> Всё работает, шапка меняется по времени, как и было задумано. Но, я столкнулся с двумя проблемами: Проблема 1. Шапка отображается только на главной странице форума, а в форумах,подфорумах и темах ее не видно Изначально в defaultHeader была такая строчка<a href='{$this->settings['board_url']}' title='{$this->lang->words['go_home']}' rel="home" accesskey='1'><img src='{[b]parse replacement=[/b]"logo_img"}' alt='{$this->lang->words['logo']}' /></a>Подозреваю, что в Java скрипт нужно дописать "parse replacement=", который там отсутствует, но у меня имеются лишь поверхностные знания в программировании, суть понимаю, но синтаксисом практически не владею. Сколько не пытался дописать в скрипт это выражение - выдаёт синтаксическую ошибку. Очень прошу, специалисты по JavaScript - помогите грамотно вписать выражение. Или проблема вовсе не в этом? Проблема 2. Справа от шапка есть небольшая картинка с именем branding_bg.gif Естественно этот фон отличается у дневной и у вечерней шапки. А вот как сделать ротацию ума не приложу. Вот, что я пробовал: Добавил в ipb_styles.css #branding { background: #e4e4e4 url(http://ipbskins.ru/forum/public/style_images/ipbskins/branding_bg.jpg) repeat-x top; min-height: 80px; } #[b]branding1[/b] { background: #e4e4e4 url(http://ipbskins.ru/forum/public/style_images/ipbskins/branding_bg1.jpg) repeat-x top; min-height: 80px; Где branding1- это ночной вариант заполняющей картинки. Далее, в GlobalTemplate попытался дописать вышеуказанный скрипт следующей функцией var theBranding = new Array() brand[0] = 'branding' brand[1] = 'branding1' function showBranding(){ if whichImage="0" document.write('<div id='+brand[0]+'>'); else document.write('<div id='+brand[1]+'>'); } И в месте вывода заполняющей картинки, в том же шаблоне сделал такое изменение: <div id='branding1'> <if test="brandingBar:|:method_exists( $this->registry->output->getTemplate( $this->registry->getCurrentApplication() . '_global' ), 'overwriteHeader' )"> {parse template="overwriteHeader" group="{current_app}_global" params=""} <else /> {parse template="defaultHeader" group="global" params=""} </if> </div> Поменял на: <script LANGUAGE="JavaScript">showBranding();</script></a> <if test="brandingBar:|:method_exists( $this->registry->output->getTemplate( $this->registry->getCurrentApplication() . '_global' ), 'overwriteHeader' )"> {parse template="overwriteHeader" group="{current_app}_global" params=""} <else /> {parse template="defaultHeader" group="global" params=""} </if> </div> Но, решение не работает. Видимо по незнанию языка я что-то напутал. Пожалуйста, уделите несколько минут своего времени, помогите разобраться! Изменено 8 апреля 2012 пользователем Volod Поделиться сообщением Ссылка на сообщение
siv1987 2628 04/08/12 12:26 Восстановить оригинальный код лого, в теге img добавить id='logo' <a href='{$this->settings['board_url']}' title='{$this->lang->words['go_home']}' rel="home" accesskey='1'><img src='{parse replacement="logo_img"}' alt='{$this->lang->words['logo']}' id='logo' /></a> а ниже вставьте такой скрипт <script type="text/javascript"> var theImages = new Array(); theImages[0] = '1.jpg'; theImages[1] = '2.jpg'; var h=(new Date()).getHours(); if (h > 21 || h <6) { whichImage=1; $('branding').setStyle({ backgroundImage: 'url(http://site.ru/path_to_images/brand1.jpg)' }); } else { whichImage=0; } $('logo').src = 'http://site.ru/path_to_images/'+theImages[whichImage]; </script> Это сообщение было вынесено в статью 4 Поделиться сообщением Ссылка на сообщение
Volod 0 04/08/12 16:04 Восстановить оригинальный код лого, в теге img добавить id='logo' <a href='{$this->settings['board_url']}' title='{$this->lang->words['go_home']}' rel="home" accesskey='1'><img src='{parse replacement="logo_img"}' alt='{$this->lang->words['logo']}' id='logo' /></a> а ниже вставьте такой скрипт Спасибо огромное! Решение полностью рабочее. Поделиться сообщением Ссылка на сообщение