Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 1 Ответов
  • 1244 Просмотров
*

BobSunday

  • Осваиваюсь на форуме
  • 43
  • 4 / 0
Модуль JoomTABS http://moduledemo.templateplazza.com/content/view/16/30/ позволяет выводить позиции модулей в одном окне с закладкам.

В целом модуль удобен, но у него есть один существенный минус - нельзя публиковать два джумтабса на одной странице, возникает конфликт.
Единственное решение на мой взгляд - это сделать клон.

Я пошёл лёгким путём и просто заменил все слова в которых встречается "tab" на "bat" и переименовал по такому же принципу файлы модуля.
Получился почти рабочий клон, но осталась одна проблемка:
 
 При загрузке страницы грузятся два модуля- JoomTABS и JoomBATS.
 Первый после загрузки автоматически переключается на вкладку под номером 8 (задано в настройках);
 Второй после загрузке не переключается на свою вкладку, а "остаётся в загружаемом состоянии".
 -Если отключить первый модуль, то второй работает правильно.

 Проблема очевидна - конфликт в javascript !
 
Выкладываю скрипты:
 
JoomTABS
Код
<script type="text/javascript">
/*
EASY TABS 1.2 Produced and Copyright by Koller Juergen
www.kollermedia.at | www.austria-media.at
*/

var tablink_idname = new Array("<?php echo $nameidlinks; ?>")
var tabcontent_idname = new Array("<?php echo $nameidarea; ?>")
var tabcount = new Array("<?php echo $numbertab; ?>")
var loadtabs = new Array("<?php echo $firsttabopen; ?>")
var autochangemenu = <?php echo $autochange; ?>;
var changespeed = <?php echo $changedelay; ?>;
var stoponhover = <?php echo $changestop; ?>;

function easytabs(menunr, active) {if (menunr == autochangemenu){currenttab=active;}if ((menunr == autochangemenu)&&(stoponhover==1)) {stop_autochange()} else if ((menunr == autochangemenu)&&(stoponhover==0))  {counter=0;}menunr = menunr-1;for (i=1; i <= tabcount[menunr]; i++){document.getElementById(tablink_idname[menunr]+i).className='tab'+i;document.getElementById(tabcontent_idname[menunr]+i).style.display = 'none';}document.getElementById(tablink_idname[menunr]+active).className='tab'+active+' tabactive';document.getElementById(tabcontent_idname[menunr]+active).style.display = 'block';}var timer; counter=0; var totaltabs=tabcount[autochangemenu-1];var currenttab=loadtabs[autochangemenu-1];function start_autochange(){counter=counter+1;timer=setTimeout("start_autochange()",1000);if (counter == changespeed+1) {currenttab++;if (currenttab>totaltabs) {currenttab=1}easytabs(autochangemenu,currenttab);restart_autochange();}}function restart_autochange(){clearTimeout(timer);counter=0;start_autochange();}function stop_autochange(){clearTimeout(timer);counter=0;}

window.onload=function(){
var menucount=loadtabs.length; var a = 0; var b = 1; do {easytabs(b, loadtabs[a]);  a++; b++;}while (b<=menucount);
if (autochangemenu!=0){start_autochange();}
}
</script>

JoomBATS -в скрипте некоторым переменным был добавлен префикс "bat"
Код
<script type="text/javascript">
/*
EASY batS 1.2 Produced and Copyright by Koller Juergen
www.kollermedia.at | www.austria-media.at
*/

var batlink_idname = new Array("<?php echo $nameidlinks; ?>")
var batcontent_idname = new Array("<?php echo $nameidarea; ?>")
var batcount = new Array("<?php echo $numberbat; ?>")
var loadbats = new Array("<?php echo $firstbatopen; ?>")
var autochangemenubat = <?php echo $autochangebat; ?>;
var changespeedbat = <?php echo $changedelaybat; ?>;
var stoponhoverbat = <?php echo $changestopbat; ?>;

function easybats(menunr, active) {if (menunr == autochangemenubat){currentbat=active;}if ((menunr == autochangemenubat)&&(stoponhoverbat==1)) {stop_autochange()} else if ((menunr == autochangemenubat)&&(stoponhoverbat==0))  {counter=0;}menunr = menunr-1;for (i=1; i <= batcount[menunr]; i++){document.getElementById(batlink_idname[menunr]+i).className='bat'+i;document.getElementById(batcontent_idname[menunr]+i).style.display = 'none';}document.getElementById(batlink_idname[menunr]+active).className='bat'+active+' batactive';document.getElementById(batcontent_idname[menunr]+active).style.display = 'block';}var timer; counter=0; var totalbats=batcount[autochangemenubat-1];var currentbat=loadbats[autochangemenubat-1];function start_autochange(){counter=counter+1;timer=setTimeout("start_autochange()",1000);if (counter == changespeedbat+1) {currentbat++;if (currentbat>totalbats) {currentbat=1}easybats(autochangemenubat,currentbat);restart_autochange();}}function restart_autochange(){clearTimeout(timer);counter=0;start_autochange();}function stop_autochange(){clearTimeout(timer);counter=0;}

window.onload=function(){
var menucountbat=loadbats.length; var a = 0; var b = 1; do {easybats(b, loadbats[a]);  a++; b++;}while (b<=menucountbat);
if (autochangemenubat!=0){start_autochange();}
}
</script>

- Переменная отвечающая за открытие той или иной вкладки -  loadbats , при выполнении скрипта значение этой переменной передаётся правильное:
Код
var loadbats = new Array("3")

Помогите решить проблему!
« Последнее редактирование: 23.06.2011, 09:55:29 от BobSunday »
*

BobSunday

  • Осваиваюсь на форуме
  • 43
  • 4 / 0
Re: JoomTABS делаем клон, проблема с java
« Ответ #1 : 23.06.2011, 09:54:28 »
Нашёл проблему!
Оба java-скрипта используют
Код
window.onload = function() { ... }
  - а эта конструкция не может быть вызвана два раза на странице, и вызывается она только в последнем использующем её скрипте (это особенность javascript).

Решение - заменить window.onload

В файле оригинального модуля mod_jootabs/tmpl/default.php  меняем:
 
Код
window.onload = function()
на
Код
var script2 = function()

В файле клона mod_joobats/tmpl/default.php аналогично меняем:

Код
window.onload = function()
на
Код
var script1 = function()

и перед закрытием скрипта (</script>) вставляем в клон:
Код
window.onload=function() {
         script1();
         script2();
}

Теперь всё работает!
P.S. Пришлось вносить изменения в оригинальный файл модуля, так что данный процесс нельзя назвать полноценным клонированием.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перенаправление пользователя на свою стр

Автор Роман0517

Ответов: 5
Просмотров: 1758
Последний ответ 08.05.2017, 02:37:13
от Septdir
Хочу создать модуль (калькулятор)

Автор worldmen

Ответов: 2
Просмотров: 1378
Последний ответ 26.02.2017, 17:43:37
от fbr
Raxo - проблема с url (непонятная подкатегория)

Автор Alex GOOD

Ответов: 1
Просмотров: 1160
Последний ответ 19.12.2016, 18:49:06
от Forgiving
Модификация JL Comments 2.6 free Joomla 3.x

Автор leo78

Ответов: 10
Просмотров: 1840
Последний ответ 14.09.2016, 19:38:44
от leo78
Модуль VTEM News Boxs - вывод?

Автор warlocksp

Ответов: 0
Просмотров: 1513
Последний ответ 24.05.2016, 07:36:29
от warlocksp