Дорогие друзья, кто разбирается в 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. Шапка отображается только на главной странице форума, а в форумах,подфорумах и темах ее не видно
Подозреваю, что в Java скрипт нужно дописать "parse replacement=", который там отсутствует, но у меня имеются лишь поверхностные знания в программировании, суть понимаю, но синтаксисом практически не владею. Сколько не пытался дописать в скрипт это выражение - выдаёт синтаксическую ошибку.
Очень прошу, специалисты по JavaScript - помогите грамотно вписать выражение. Или проблема вовсе не в этом?
Проблема 2. Справа от шапка есть небольшая картинка с именем branding_bg.gif Естественно этот фон отличается у дневной и у вечерней шапки. А вот как сделать ротацию ума не приложу.
Дорогие друзья, кто разбирается в 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>Но, решение не работает. Видимо по незнанию языка я что-то напутал.
Пожалуйста, уделите несколько минут своего времени, помогите разобраться!
Изменено пользователем Volod