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

Ротация шапки по времени

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

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>

 

Но, решение не работает. Видимо по незнанию языка я что-то напутал.

 

Пожалуйста, уделите несколько минут своего времени, помогите разобраться!

Изменено пользователем Volod

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


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

Восстановить оригинальный код лого, в теге 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>

 

Это сообщение было вынесено в статью

  • Upvote 4

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


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

Восстановить оригинальный код лого, в теге 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>

 

а ниже вставьте такой скрипт

 

 

Спасибо огромное! Решение полностью рабочее.

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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