Новости Joomla

👩‍💻 Компонент "CS Афиши" для Joomla.

👩‍💻 Компонент "CS Афиши" для Joomla.

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

В состав пакета расширений входят:
- Компонент "CS Афиши"
- Модуль "Календарь событий"
- Модуль "Предстоящие события"
- Библиотека "ImgResize"

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

Модуль "Календарь событий" отображает предстоящие и прошедшие мероприятие на календаре, с отображением мероприятий на конкретную дату во всплывающем окне.

Модуль "Предстоящие события" показывает список предстоящий событий по порядку их наступления.

P.S. Расширение платное, но плата символическая, чисто для отработки приема платежей. Ключи без ограничения по времени, купившие сейчас - смогут обновляться без ограничений.

Разработчик - участник нашего сообщества Дмитрий Денисов (@codersite).

Страница расширения
Демо

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

С тех пор, как в поисковиках появились нейроответы ИИ, трафик на сайты стал гораздо меньше, так как пользователь стал получать информацию непосредственно на странице поисковика без перехода на сайт. Но при генерации ответа ИИ указывает источники - ссылки на сайты, информация которых была использована для генерации ответа.

Долгое время у всех был немой вопрос: "Как же теперь оценивать эффективность сайта?". Теперь этот на этот вопрос отчасти отвечает новый инструмент аналитики.
Процитируем справку Яндекса по инструменту:
На запросы пользователей в Поиске может отвечать Алиса AI. Ответы появляются в поисковой выдаче, в объектных ответах и на отдельной вкладке Поиска. В них чаще всего упоминаются страницы сайтов, на которые Алиса AI опиралась при подготовке ответа.

С помощью инструмента Видимость сайта в Алисе AI в Яндекс Вебмастере вы можете:
- узнать долю упоминаний сайта среди источников в ответах Алисы AI в Поиске и отследить динамику изменений;
- посмотреть примеры запросов, по которым страницы сайта показываются в ответах Алисы AI;
- посмотреть примеры сайтов той же тематики, которые часто упоминаются в генеративной выдаче.
Данные отображаются за последние 3 месяца и обновляются каждую неделю.

Статистика собирается только по тем запросам, по которым ваш сайт уже находится достаточно высоко в поисковой выдаче. Это позволяет анализировать видимость именно в той нише, где вы заинтересованы в продвижении, и избегать «размытия» по малозначимым для вас запросам.

Кроме того, такой подход обусловлен работой Алисы AI: она строит ответ с опорой на самые релевантные, информативные и качественные страницы, которые обычно занимают высокие позиции в Поиске.

Чтобы увидеть статистику вашего сайта в меню Яндекс.Вебмастера перейдите в раздел "Эффективность" и далее в "Показы сайта в Алисе AI".

В начале февраля 2026г. был вебинар с Михаилом Сливинским - амбассадором Поиска Яндекса, и в рамках вебинара была озвучена просьба сделать такой инструмент. Скорее всего разработка на тот момент уже велась, потому что от просьбы до релиза прошло около 2-х месяцев. В любом случае хорошо, что такая статистика появилась.

Показы сайта в Алисе AI в вашем Яндекс,Вебмастере.

@joomlafeed

👩‍💻 ИИ-админ для Joomla ближе, чем вы думаете: Joomla MCP.

👩‍💻 ИИ-админ для Joomla ближе, чем вы думаете: Joomla MCP.

В февральском номере Joomla Community Magazine в статье Evolving Joomla - Joomla CMS MCP Server: Opening the Door to AI-Powered Administration рассказывается о работе команды разработчиков над внедрением в ядро Joomla MCP-сервера.

Что такое MCP-сервер?
Последние годы всех захватывает бум ИИ-технологий. Появились ИИ-агенты - программы, устанавливаемые на сервер или компьютер, которые получают от вас запрос или задачу в человеческом виде и могут выполнять действия с файлами, ходить по сайтам, создавать сайты, программировать и т.д. Люди используют ИИ-агентов в самых разных ситуациях: от написания и проверки кода (даже там, где язык программирования не знаете совсем) до планирования путешествий и бронирования гостиницы.

ИИ-агенты могут использовать различные программные инструменты по протоколу Model Context Protocol (MCP). Для этого разработчик программы должен внедрить MCP в свой продукт или сервис. Так, например, ваш ИИ-агент может ходить по сайтам через браузер и собирать нужную информацию, управляя браузером через MCP-сервер. Или использовать функционал IDE PHP Storm для написания кода, сбора и отладки ошибок, использовать поиск PHP Storm по кодовой базе, а не простой текстовый поиск по файлам. MCP предоставляет набор функций для полноценного управления программным обеспечением.

В случае с Joomla, сервер MCP может предоставить администраторам следующие возможности:
- Автоматическое создание категорий, материалов и меню на основе карты сайта или PDF-файла.
- Создавайть SEO-оптимизированные заголовки и метаописания в пакетном режиме.
- Обновлять расширения на нескольких сайтах одновременно
- Создание посадочные страницы.

Важно отметить, что сервер MCP не задумывался как функция, доступная только «супер-администраторам». Цель инициативы — создать решение, которое будет простым в настройке, маломощным и доступным для широкого круга пользователей.

В процессе разработки точка входа Joomla (аналогично Site, Administrator, Api, Cli), которая будет работать с Streamable HTTP, необходимым для MCP. Аутентификация пока что предполагается на токенах, но затем планируется создание универсального OAuth-сервера для Joomla.
Фактические возможности MCP — инструменты, ресурсы и подсказки — реализованы в виде плагинов для обеспечения расширяемости. Таким образом ожидаем, что и сторонние разработчики смогут создавать MCP-плагины для внедрения поддержки своих расширений Joomla для работы с ИИ.

@joomlafeed

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

refrizherator

  • Захожу иногда
  • 60
  • 1 / 0
версия 2.1.3.680, все ссылки работают отлично. Странное ограничение выходит как для платной версии! Жду ещё ответов.
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
В настройках компонента параметр "Использование Элементов на постраничном ниспадающем списке" должен быть установлен в YES.
Проверьте этот момент.

Это находится здесь:

1. В административной панели сайта перейдите в компонент sh404SEF.
2. Откройте вкладку Configuration в sh404SEF.
3. На вкладке Configuration клик на Extensions configuration (или Plugins).
4. В открытом окне перейдите на вкладку VirtueMart.
5. В самом низу должна быть опция "Использование Элементов на постраничном ниспадающем списке" (“Using Items per page drop-down list”).
Флаг должен быть установлен в YES!
*

refrizherator

  • Захожу иногда
  • 60
  • 1 / 0
Проверил стоит "Да". Ещё есть варианты, я уже надежду теряю, а странички проиндексировались так как есть сейчас , если снесу sh404 будет очень фигово...    Жду ещё ваших вариантов!
*

refrizherator

  • Захожу иногда
  • 60
  • 1 / 0
Повторюсь, так как новая страничка:

СУТЬ:  Установил sh404SEF на сайт парфюмерии и косметики в Днепропетровске http://edp.dp.ua    Можете зайти и увидеть на странице с товарами http://edp.dp.ua/dolce-gabbana/view-all-products.html если клацнуть показать 10 или 20 и т.д.  будет ошибка на белом экране
Not Found

The requested URL /dolce-gabbana/view-all-products.html&limitstart=0&limit=25 was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Apache/2 Server at edp.dp.ua Port 80

А также при переключении страниц 1 2... или нажав кнопку слудующая...
Кроме плюсика предложить ничо не могу, если знаете, подскажите.
*

refrizherator

  • Захожу иногда
  • 60
  • 1 / 0
Я не понимаю, почему никто не отвечает, получается, что ни один тут не знает как это исправить, ведь вопрос уже задавался на форуме и там так же никто не ответил...! ?
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Данил, вопрос такой.

На странице два модуля, один - аккордион производителей, а другой стандартный модуль. Можно ли как-то сделать так, чтобы при клике на пункт меню в стандартном модуле, разворачивался определенный пункт меню в модуле аккордиона?

Пробовал твой вариант, не выходит.

Код
					$('.default').each(function(element, index){
element.parentNode.Accordion.display(element.index);
});

Или даже если установить несколько модулей аккордионов, как развернуть соответствующий пункт определенного модуля по клику пункта меню из другого модуля?
« Последнее редактирование: 24.10.2010, 22:41:20 от root-master »
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Ну ты и задачки ставишь экзотические ))
Думаю нужно чтобы у всех пунктов был уникальный Id или класс, тоесть надо подправить функцию - декоратор в файле accordion.manufactorers.php(или как он там называется), скажем формировать по $node->attributes('id'). Так мы "проименуем" пункты, и сможем к ним обращаться чтоб раскрыть нужный.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Ну вот смотри... Я добавил тем пунктам (в модуле аккордиона, файл manufacturers.accordion.php), которые нужно развернуть имя класса .default.

Код
					default:

// set parent class - check : has children
if (isset($node->ul) && $node->ul) {
$node->addAttribute('class', 'parent');
// set default menu item (мото на земле (id=1) / скутеры (id=4))
if ($node->attributes('id') == 1 or $node->attributes('id') == 4) {
$node->addAttribute('class', $node->attributes('class').' default');
}
}

Теперь надо как-то обратится к этим пунктам из другого модуля аккордиона по клику любого из пунктов его меню.
Пробовал сначала просто развернуть пункты меню, находясь в другом модуле:

Код
var menuMotoCatalog = $$('#accordion');
menuMotoCatalog.each(function(el){
alert(1);
if (menuMotoCatalog[index].hasClass('default')) {
element.parentNode.Accordion.display(element.index);
}
}

Но сюда почему-то не заходит даже :(

И так тоже не работает:

Код
var menuMotoCatalog = $$('#accordion');
//alert(menuMotoCatalog);
menuMotoCatalog.getElements('ul').each(function(el){
alert(1);
if (menuMotoCatalog[index].hasClass('default')) {
element.parentNode.Accordion.display(element.index);
}
}

В mootools я не силен, поэтому блуждаю в 3-х соснах. Может есть другие, простые подходы, чтобы раскрыть определенные пункты меню, находясь в другом модуле? Еще нужно как-то прикрутить событие клика, тоже головоломка.
« Последнее редактирование: 24.10.2010, 23:29:43 от root-master »
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Так тебе какие именно пункты меню надо раскрывать? Те что имеют класс .default, или какието по индексу/идентификатору_категории?
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Цитировать
Те что имеют класс .default, или какието по индексу/идентификатору_категории?
На самом деле не принципиально. Я добавил класс .default самостоятельно, чтобы обеспечить доступ именно к данным пунктам меню для удобства.

Определенный id категории, который необходимо раскрывать, уже стоит в условии:

Код
							if ($node->attributes('id') == 1 or $node->attributes('id') == 4) {
$node->addAttribute('class', $node->attributes('class').' default');
}
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
По идее так должно работать(два бакса впереди а не один)
Код: javascript
					$$('.default').each(function(element, index){
element.parentNode.Accordion.display(element.index);
});
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Пробовал так. Обновляю страницу и все пункты раскрыты получаются. Будто либо ошибка какая-то, либо...
Твой вариант работает, если вставить его в модуль аккордиона производителей.
А если вставить его в модуль mod_mainmenu (там тоже подключен аккордион по твоей схеме), то уже не работает.

Т.е на странице у нас два события добавлены.
Первый - это обычное меню ( из которого по клику нужно раскрыть определенные пункты в модуле меню производителей ) :
html\mod_mainmenu\default.php

Код
window.addEvent('domready', function(){
 
$$($('menu_moto_site'), $('menu_moto_site').getElements('ul')).each(function(el){
accParentItems = el.getChildren().filterByClass('parent');
accTogglers = [];
accElements = [];
accParentItems.each(function(element, index){
accTogglers.push(new Element('span').injectTop(element));
accElements.push(element.getElementsByTagName('ul')[0]);
element.index = index;
alert(1);
element.addEvent('click', function(e){
alert(1);
$$('accordion .default').each(function(element, index){
element.parentNode.Accordion.display(element.index);
});
});
element.addEvent('mouseover', function(){
if (this.getChildren().filterByTag('ul')[0].offsetHeight == 0) {
accTimer = this.parentNode.Accordion.display.delay(200, this.parentNode.Accordion, $(this).index);
}
});
element.addEvent('mouseout', function(){
if((accTimer != undefined)){clearTimeout(accTimer)};
});
 
});
if ( accParentItems.length > 0 ){
el.Accordion = new Accordion(accTogglers, accElements, {
opacity: false,
alwaysHide: true,
show: $$(accParentItems).indexOf($$(accParentItems).filterByClass('active')[0]),
duration: 200,
transition: Fx.Transitions.Quart.easeOut,
onActive: function(toggler, element){
element.parentNode.parentNode.setStyle('height', 'auto');
},
onBackground: function(toggler, element){
element.parentNode.parentNode.setStyle('height', 'auto');
element.setStyle('height', element.offsetHeight+'px');
}
}
);
}
});
$$('.default').each(function(element, index){
element.parentNode.Accordion.display(element.index);
});
});

То есть добавляя сюда - пункты получается - в развернутом виде все.

И вот второй модуль меню, аккордион производителей (в котором, собственно, содеражатся те пункты, которые необходимо раскрыть):
html\mod_virtuemart_categories\accordion_assets.php

Код
window.addEvent('domready', function(){

$$($('accordion'), $('accordion').getElements('ul')).each(function(el){
accParentItems = el.getChildren().filterByClass('parent');
accTogglers = [];
accElements = [];

accParentItems.each(function(element, index){

accTogglers.push(new Element('span').injectTop(element));
accElements.push(element.getElementsByTagName('ul')[0]);
element.index = index;
element.addEvent('mouseover', function(){
if (this.getChildren().filterByTag('ul')[0].offsetHeight == 0) {
accTimer = this.parentNode.Accordion.display.delay(250, this.parentNode.Accordion, $(this).index);
}
});
element.addEvent('mouseout', function(){
if (window.accTimer) { clearTimeout(window.accTimer) };
});

});
if ( accParentItems.length > 0 ){
el.Accordion = new Accordion(accTogglers, accElements, {
opacity: false,
alwaysHide: true,
show: $$(accParentItems).indexOf($$(accParentItems).filterByClass('active')[0]),
duration: 250,
transition: Fx.Transitions.Quart.easeOut,
onActive: function(toggler, element){
element.parentNode.parentNode.setStyle('height', 'auto');
element.parentNode.addClass('expanded');
},
onBackground: function(toggler, element){
element.parentNode.parentNode.setStyle('height', 'auto');
element.setStyle('height', element.offsetHeight+'px');
element.parentNode.removeClass('expanded');
}
}
);
}
});
});

То есть если сюда добавлять твой код, то работает нормально.
« Последнее редактирование: 25.10.2010, 00:15:32 от root-master »
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
$$('accordion .default') заменить на $$('#accordion .default')
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Не в этом проблема. Можно даже это событие клика исключить из кода (потому что он туда даже не заходит).
Проблема в том, что объект accordion не существует, когда мы перебираем элементы меню.
Ну вот например твой вариант:

Код: php
				$$('.default').each(function(element, index){
element.parentNode.Accordion.display(element.index);
});

Если вывести alert(element.parentNode.Accordion), то покажет none.
А если пробовать в этом файле (html\mod_virtuemart_categories\accordion_assets.php) пробегаться по элементам , то объект существует.

Данил, понятно показал проблему?
В чем может быть причина?
« Последнее редактирование: 25.10.2010, 01:02:40 от root-master »
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
да чет не пойму. Поставь FireBug если до сих пор еще не поставил. И вместо alert'ов юзай console.log(). Выполняй скрипт пошагово ну и все такое. Может щас дам тупой совет, но лучше переименуй element в ченить другое, хотя это получается как локальная переменная, она перекрывает ту что снаружи...
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Я думаю, что причина в том, что объект существует в рамках window.addEvent('domready', function(){});

Если решений в этом случае нету, то может быть какие-то есть другие альтернативы.
Я вот сейчас попробовал вариант:
JRequest::setVar('category_id', 4);

На момент, когда идет выбор какого-л из пунктов обычного меню (mod_mainmenu).

В этом случае работает как надо, но(!), учитывая, что я исключил возможность кольцевых ссылок на сайте, то получается, что на странице два активных пункта меню (тот, что выбран в mod_mainmenu и тот, что я установил для пункта меню с каталогом) и это не совсем правильно.
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Цитировать
Поставь FireBug
стоит и отлаживаю уже не один час..

Цитировать
но лучше переименуй element
ща попробую...
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Не, так тоже не пашет:

Код: php
$$('.default').each(function(mrElement, index){
mrElement.parentNode.Accordion.display(mrElement.index);
});
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
При всем при этом  не возникает ошибок? $$('.default') возвращает нужный нам массив, или пустой? Посмотри на mrElement.parentNode в DOM'е - у него обязано быть свойство Accordion.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Ща сек

Анализировал во вкладке DOM, вроде бы в аттрибутах существует accordion. Но тот ли это аккордион...

this.attributes
  id = "accordion"

Вот скрины:




Т.е ошибка все равно та же..
« Последнее редактирование: 25.10.2010, 01:44:27 от root-master »
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Вот собственно само свойство, которое и должно быть:



Но оно появляется, если этот код:
Код: php
$$('.default').each(function(mrElement, index){
mrElement.parentNode.Accordion.display(mrElement.index);
});
прописывать непосредственно в том window.addevent(), где и происходит создание объекта Accordion
(html\mod_virtuemart_categories\accordion_assets.php).
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Данил, вот посмотри пример, может я чего-то не допонимаю, оставил только самое необходимое на странице:

Код: php
<!DOCTYPE HTML 	PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru-ru" lang="ru-ru">

<head>
  
  <title>Site</title>

  <script type="text/javascript" src="js/mootools.js"></script>

  <script type="text/javascript">

window.addEvent('domready', function(){

$$($('menu1'), $('menu1').getElements('ul')).each(function(el){
accParentItems = el.getChildren().filterByClass('parent');
accTogglers = [];
accElements = [];
accParentItems.each(function(element, index){
accTogglers.push(new Element('span').injectTop(element));
accElements.push(element.getElementsByTagName('ul')[0]);
element.index = index;
element.addEvent('mouseover', function(){
if (this.getChildren().filterByTag('ul')[0].offsetHeight == 0) {
accTimer = this.parentNode.Accordion.display.delay(200, this.parentNode.Accordion, $(this).index);
}
});
element.addEvent('mouseout', function(){
if((accTimer != undefined)){clearTimeout(accTimer)};
});
 
});
if ( accParentItems.length > 0 ){
el.Accordion = new Accordion(accTogglers, accElements, {
opacity: false,
alwaysHide: true,
show: $$(accParentItems).indexOf($$(accParentItems).filterByClass('active')[0]),
duration: 200,
transition: Fx.Transitions.Quart.easeOut,
onActive: function(toggler, element){
element.parentNode.parentNode.setStyle('height', 'auto');
},
onBackground: function(toggler, element){
element.parentNode.parentNode.setStyle('height', 'auto');
element.setStyle('height', element.offsetHeight+'px');
}
}
);
}
});

if($('menu2')) {
         $$('.default').each(function(mrElement, index){
mrElement.parentNode.Accordion.display(mrElement.index);
});
    }


});


window.addEvent('domready', function(){

$$($('menu2'), $('menu2').getElements('ul')).each(function(el){
accParentItems = el.getChildren().filterByClass('parent');
accTogglers = [];
accElements = [];

accParentItems.each(function(element, index){

accTogglers.push(new Element('span').injectTop(element));
accElements.push(element.getElementsByTagName('ul')[0]);
element.index = index;
element.addEvent('mouseover', function(){
if (this.getChildren().filterByTag('ul')[0].offsetHeight == 0) {
accTimer = this.parentNode.Accordion.display.delay(250, this.parentNode.Accordion, $(this).index);
}
});
element.addEvent('mouseout', function(){
if (window.accTimer) { clearTimeout(window.accTimer) };
});

});
if ( accParentItems.length > 0 ){
el.Accordion = new Accordion(accTogglers, accElements, {
opacity: false,
alwaysHide: true,
show: $$(accParentItems).indexOf($$(accParentItems).filterByClass('active')[0]),
duration: 250,
transition: Fx.Transitions.Quart.easeOut,
onActive: function(toggler, element){
element.parentNode.parentNode.setStyle('height', 'auto');
element.parentNode.addClass('expanded');
},
onBackground: function(toggler, element){
element.parentNode.parentNode.setStyle('height', 'auto');
element.setStyle('height', element.offsetHeight+'px');
element.parentNode.removeClass('expanded');
}
}
);
}
});

});

  </script>

</head>

<body>
<div class="navigation">
<!--MENU1-->
<ul class="menu" id="menu1"><li id="current" class="item1"><span class="active">Main</span></li></ul>
<!--MENU2-->
<ul class="menu" id="menu2">
<li class="parent default">
<a href="/bikes-on-earth">Bykes on earth</a>

<ul>
<li class="parent default">
<a href="/bykes-on-earth/scooter">Scooter</a>
<ul>
<li class=" item6">
<a href="/bikes-on-earth/scooter/honda">Honda</a>
</li>
<li class=" item5">

<a href="/мото-на-земле/скутеры/orion">Orion</a>
</li>
<li class=" item2">
<a href="/мото-на-земле/скутеры/stels">Stels</a>
</li>
</ul>
</li>
<li class="parent">

<a href="/мото-на-земле/мотоциклы">Motobyke</a>
<ul>
<li class=" item7">
<a href="/мото-на-земле/мотоциклы/kawasaki">Kawasaki</a>
</li>
</ul>
</li>
<li>

<a href="/мото-на-земле/квадроциклы">ATVs</a>
</li>
<li>
<a href="/мото-на-земле/мотовездеходы">ATV</a>
</li>
<li>
<a href="/мото-на-земле/багги">Buggy</a>

</li>
<li>
<a href="/мото-на-земле/снегоходы">Snowmobiling</a>
</li>
</ul>
</li>
<li class="parent">
<a href="/мото-на-воде">Beauty on the water</a>

<ul>
<li>
<a href="/мото-на-воде/гидроциклы">Watercraft</a>
</li>
<li>
<a href="/мото-на-воде/катера">Boats1</a>
</li>
<li>

<a href="/мото-на-воде/лодки">Boats2</a>
</li>
<li>
<a href="/мото-на-воде/моторы">Motors</a>
</li>
</ul>
</li>
<li class="parent">

<a href="/дополнительно-к-мото">In addition to motor</a>
<ul>
<li>
<a href="/дополнительно-к-мото/экипировка">Equipment</a>
</li>
<li>
<a href="/дополнительно-к-мото/аксессуары">Accessories</a>

</li>
<li>
<a href="/дополнительно-к-мото/запчасти">Repair parts</a>
</li>
</ul>
</li>
</ul>
</div>

</body>

</html>

Версия mootools 1.12.

Опишу еще раз вкратце проблему.
На сайте есть несколько window.addEvent('domready'), т.е два меню с типом Accordion. Назовем их условно (menu1 и menu2). Задача состоит в том, чтобы по клику одного из пунктов menu1 разворачивались определенные пункты в menu2.

Конкретные пункты, которые мне необходимо раскрыть в menu2, имеют класс .default. Для разворачивания меню пробую использовать метод display у аккордиона.

Проблема заключается в том, что я не могу получить объект Accordion у пунктов (с классом default, menu2), которые необходимо раскрыть. FireBug в консоле пишет: "mrElement.parentNode.Accordion is undefined". Возможно получается так, что объекты типа Accordion в menu2 не успевают создаться.

Какие попытки я принимал:

$$('.default').each(function(mrElement, index){
    mrElement.parentNode.Accordion.display(mrElement.index);
});

mrElement.parentNode.Accordion - т.е свойства аккордион не существует.
пробовал ставить условие:

if($('menu2')) {
   mrElement.parentNode.Accordion.display(mrElement.index);
}

Тоже не выходит.
« Последнее редактирование: 25.10.2010, 17:46:00 от root-master »
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Ну тут конечно, беглым взглядом видно что ты обращаешся к Accordion, который еще не создан. Если тебе надо по клику раскрывать - так и пиши:
Код: javascript
if($('menu2')) {
$$('#menu1 span').addEvent('click', function() {
$$('.default').each(function(element, index){
element.parentNode.Accordion.display(element.index);
});
});
}
Тогда к моменту клика Accordion уже будет создан.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Блин, зашибись!)
Дак, а как сделать это раскрытие в момент, когда страница загружена?
Мы произвели клик, он раскрыл нужный пункт, страница пошла грузиться по ссылке, загрузилась и по умолчанию все пункты опять свернулись.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
оформи функцию раскрытия default пунктов как отдельная именованая функция. И вызывай ее как при кликах так и при domready(только вызов должен идти ниже кода, который зааккордионивает #menu2, что вобщемто понятно)
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Вообще, даже не знаю, как правильно сделать. Суть в том, что надо держать раскрытым определенные пункты меню (я их пометил классом default в стилях), когда у нас активен какой-л из пунктов не меню каталогов, а меню обычного (контакты, FAQ и прочие).
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Ну так надо эту логику(зависимость от текущего актвного пункта) перенести в php, и метить нужные пункты каталога если не .active , то .default, но тогда в параметр show: надо писать чета типа:
Код: javascript
$$(accParentItems).indexOf($$(accParentItems).filterByClass('active')[0]) || $$(accParentItems).indexOf($$(accParentItems).filterByClass('default')[0])
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Код
$$(accParentItems).indexOf($$(accParentItems).filterByClass('active')[0]) || $$(accParentItems).indexOf($$(accParentItems).filterByClass('default')[0])

не работает оператор || в параметре show.

В общем, оставлю пока так:

Код
					if ($$(accParentItems).indexOf($$(accParentItems).filterByClass('active')[0])!= -1) 
var paramShow = $$(accParentItems).indexOf($$(accParentItems).filterByClass('active')[0]);
else
var paramShow = $$(accParentItems).indexOf($$(accParentItems).filterByClass('default')[0]);
« Последнее редактирование: 25.10.2010, 20:01:50 от root-master »
*

root-master

  • Осваиваюсь на форуме
  • 48
  • 0 / 0
Остался еще один неразрешенный вопрос...

Сейчас аккордион работает при наведении курсором на тег UL, я так понимаю..? Можно ли как-то подправить, чтобы эффект наведения работал не на тег Ul, а тег A (ccылки)?

« Последнее редактирование: 25.10.2010, 20:37:37 от root-master »
*

Impulsee

  • Осваиваюсь на форуме
  • 22
  • 2 / 0
поставил Ваш модуль... залил товары...
Положил сервер хостера...
Сайт - 3olushka.com.ua
При включенном модуле нагрузка: 775 запросов к БД
при отключенном 55...
как побороть?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

IceVmCart - новый бесплатный модуль корзины для VirtueMart

Автор Grig2009

Ответов: 105
Просмотров: 57421
Последний ответ 05.02.2017, 11:44:02
от Super_Panda
Модуль недавно просмотренные товары для VirtueMart 1.1.X

Автор aleks_yug

Ответов: 97
Просмотров: 31899
Последний ответ 25.10.2016, 15:03:07
от Igoritaly
Модуль Cherry Picker for VirtueMart

Автор flintstone

Ответов: 42
Просмотров: 27537
Последний ответ 04.01.2016, 21:25:50
от gleb22
Добавить модуль в товар

Автор Tokyo

Ответов: 2
Просмотров: 3580
Последний ответ 11.05.2015, 20:43:32
от tierex
Усовершенствованный модуль категорий [Аккордион и прочее - the best ;) ]

Автор danik.html

Ответов: 749
Просмотров: 203435
Последний ответ 24.11.2014, 18:37:11
от slavakh