Новости Joomla

Как тестировать Joomla PHP-разработчику? Компонент Patch tester.

👩‍💻 Как тестировать Joomla PHP-разработчику? Компонент Patch tester.Joomla - open source PHP-фреймворк с готовой админкой. Его основная разработка ведётся на GitHub. Для того, чтобы международному сообществу разработчиков было удобнее тестировать Pull Requests был создан компонент Patch Tester, который позволяет "накатить" на текущую установку Joomla именно те изменения, которые необходимо протестировать. На стороне инфраструктуры Joomla для каждого PR собираются готовые пакеты, в которых находится ядро + предложенные изменения. В каждом PR обычно находятся инструкции по тестированию: куда зайти, что нажать, ожидаемый результат. Тестировщики могут предположить дополнительные сценарии, исходя из своего опыта и найти баги, о которых сообщить разработчику. Или не найти, и тогда улучшение или исправление ошибки быстрее войдёт в ядро Joomla. Напомню, что для того, чтобы PR вошёл в ядро Joomla нужны минимум 2 положительных теста от 2 участников сообщества, кроме автора. Видео на YouTubeВидео на VK ВидеоВидео на RuTubeКомпонент на GitHub https://github.com/joomla-extensions/patchtester@joomlafeed#joomla #php #webdev #community

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6

Вышел релиз Revo PageBuilder Toolkit for YOOtheme Pro 1.6.2PageBuilder Toolkit - это специализированный плагин для конструктора страниц Yootheme Pro, содержит набор различных утилит для ускорения процесса работы и отладки макета, множественные улучшения в интерфейсе, включая поддержку dark mode, подсказки, быстрая смена разрешения в окне просмотра и много чего еще.v.1.6.2 Что нового?- Индикатор статусов: теперь не просто показывает состояние запросов, но и делает автоматические попытки их отправки при кратковременных сбоях в сети, а если это не помогло, то переводит конструктор в ручной режим, что позволяет сохранит макет и настройки темы прежде чем вы потеряете все, что было сделано с момента последнего сохранения- Подсветка ошибок в макете: плагин анализирует код страницы и может автоматически подсвечивать data атрибуты с кучей мусора, которые попадают в код страницы при копипасте из Figma в TinyMCE (пригодится для старых макетов, в текущей работе плагин сам очищает код мусора). Также есть подсветка семантических ошибок сборки - дубли h1 тега на странице и вложенных друг в друга заголовков.- Улучшена поддержка будущего релиза Yootheme Pro 5 и редактора CodeMirror 6Плагин для русскоязычных пользователей доступен в каталоге расширений SovMart и распространяется за символическую плату (100р). Разработчики Joomla расширений и партнеры автора могут получить плагин бесплатно.Для работы плагина необходим конструктор страниц Yootheme Pro.Разработчик плагина - участник нашего сообщества Александр Судьбинов (@alexrevo), член официальной группы поддержки Yootheme Pro. Страница расширенияОписание на сайте автора@joomlafeed#joomla #yootheme

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

takes

  • Захожу иногда
  • 84
  • 0 / 0
mod_vm_accordion
« : 23.08.2010, 00:44:44 »
Помогите с этим модулем, дело в том что я перековырял весь phph код и всё отлично настроил в нём, дело в том что есть 1 проблема с ним  я хочу чтобы не при наведение на следующий пункт меню сворачивалось, а при удаление курсора с его области, то есть убрал мышку и оно свернулось, парамент mouseout не помогает mouseleave тоже..
Вот ссылка на сам модуль http://alex-kurteev.ru/index.php?option=com_mtree&task=att_download&link_id=420&cf_id=30
вот мой mod_vm_accordion.php
Код
<?

/*

// Author: Nick Son

// Email: nicksonpro@gmail.com

// Website: www.joomdesign.net - - www.dungson.com

*/

defined('_JEXEC') or die('Restricted access');

$LiveSite = JURI::base();

?>



<style>



.leftmenu li ul li{list-style:none;}

.leftmenu li ul li a{font-family:arial; font-size:11px; text-decoration:none; text-align:left; list-style:none; line-height:25px; padding-left:10px;}



.leftmenu li ul li a:hover{font-family:arial; font-size:11px; color:#000000;  text-decoration:underline; text-align:left; list-style:none; line-height:25px; padding-left:10px;}





.accordionButton {
padding: 2px 4px;
cursor: pointer;
position: relative;
margin:0px;
font-weight:bolder;
color:#000;
border-bottom:5px groove #999999;
}

.accordionButton a{

font-size:10pt;

color:#000000;

}

.accordionContent a{
display:block;
color:#000000;
padding-left:2px;
text-decoration:none;
font-size:10pt;
}

.accordionContent a:hover{

  color: #000000;

  text-decoration:underline;

  }

</style>



<?php





  function get_cat($catID){

       

            $database =& JFactory::getDBO();

             

            $fetchCatQuery = "SELECT * FROM `#__vm_category` WHERE category_id = ".$catID;

           

            $database->setQuery( $fetchCatQuery );

            $fetchCatRow = $database -> loadObjectList(); 

            return $fetchCatRow;

}

       

function recursiveCat($catID) {

       

            $database =& JFactory::getDBO();

             

            $fetchChildCat = "SELECT category_child_id FROM `#__vm_category_xref` WHERE category_parent_id = ".$catID;

           

            $database->setQuery( $fetchChildCat);

            $fetchChildCatRows = $database -> loadObjectList();

           

            if (count($fetchChildCatRows)>0) {

           

                unset($childCatInfo);

               

                echo "<ul class='leftmenu' style='list-style-type: none; padding-left: 5px; padding-bottom: 0px;'>";

                    foreach ($fetchChildCatRows as $rows) {

                        echo "<li>";

                            $childCatInfo = get_cat($rows->category_child_id);

                            echo "<a href='./index.php?option=com_virtuemart&page=shop.browse&category_id=".$childCatInfo[0]->category_id."'>";

                            echo $childCatInfo[0]->category_name;

                            echo "</a>";

                            recursiveCat($rows->category_child_id);

                         

                        echo "</li>";

                    }

                echo "</ul>";

               

            }

            return;

}

       

function category_tree($catType=1) {

            global $database;

            $database =& JFactory::getDBO();

           

            if ($catType == 1)

                $fetchParentCat = "SELECT category_id, category_name FROM #__vm_category WHERE `category_name`='Men'";

            else

                $fetchParentCat = "SELECT category_id, category_name FROM #__vm_category WHERE `category_name`='Women'";

            $database->setQuery( $fetchParentCat);

            $fetchParentCatRows = $database -> loadObjectList();

            foreach ($fetchParentCatRows as $fetchParentCatRowsInfo){

                //echo "<p>".$fetchParentCatRowsInfo->category_id."</p>";

                recursiveCat($fetchParentCatRowsInfo->category_id);

            }

}



function checkParCat($catID) {

            global $database;

            $database =& JFactory::getDBO();

            $fetchParentCat = "SELECT category_parent_id FROM `#__vm_category_xref` WHERE `category_child_id`=".$catID;

            $database->setQuery( $fetchParentCat);

            $fetchParentCatRows = $database -> loadObjectList();

           

            return $fetchParentCatRows[0]->category_parent_id;

}



function displayChildCat($catID){

            global $database;

            $database =& JFactory::getDBO();

           

            $fetchParentCat = "SELECT category_id, category_name FROM #__vm_category WHERE `category_id`=".$catID;

            $database->setQuery( $fetchParentCat);

            $fetchParentCatRows = $database -> loadObjectList();

            foreach ($fetchParentCatRows as $fetchParentCatRowsInfo){

                recursiveCat($fetchParentCatRowsInfo->category_id);

            }

}

function category_list() {

?>

<script type="text/javascript" src="<?php echo JURI::base(); ?>/modules/mod_vm_accordion/jquery.js"> </script>

          <script type="text/javascript">

         



$(document).ready(function()

{



$("div.accordionButton").click(function()

    {

$(this).next("div.accordionContent").slideToggle(50).siblings("div.accordionContent").slideUp("slow");

        $(this).siblings();

});

//slides the element with class "menu_body" when mouse is over the paragraph

$("div.accordionButton").mouseover(function()

    {

     $(this).next("div.accordionContent").slideDown(200).siblings("div.accordionContent").slideUp("slow");

         $(this).siblings();

});

});

</script>









<?php       

$doc =& JFactory::getDocument();

$script = 'if($===jQuery){jQuery.noConflict();}';

$doc->addScriptDeclaration($script);



global $database;

            unset($loop);

                       

            $database =& JFactory::getDBO();

            $fetchParentCat = "SELECT category_id, category_name FROM #__vm_category";

            $database->setQuery( $fetchParentCat);

            $fetchParentCatRows = $database -> loadObjectList();

           

            $loop=0;

            foreach ($fetchParentCatRows as $fetchParentCatRowsInfo){

               

                if( checkParCat($fetchParentCatRowsInfo->category_id) == 0) {

                      $loop++;

                   

                      echo "<div class='accordionButton'>";

                        echo "<a href='./index.php?option=com_virtuemart&page=shop.browse&category_id=".$fetchParentCatRowsInfo->category_id."' style='text-decoration: none;'>".$fetchParentCatRowsInfo->category_name."</a>";

                      echo"</div>";

                      echo "<div id='accCont".$loop."' class='accordionContent' style='display: none;'>";

                           echo '<div class="left_top"></div>';

                     echo '<div class="left_center" style="background:none; width:100%;">';

                              displayChildCat($fetchParentCatRowsInfo->category_id);

                           echo '</div>

                           <div class="left_bottom"></div>';

                      echo "</div>";

                   

                }       

             

            }

           

            ?>

            <script type="text/javascript">

                //alert("<?php echo $loop ?>");

                document.getElementById("accCont<?php echo $loop ?>").style.display = 'block';

            </script>

            <?php           

           

}

category_list();

?>
*

takes

  • Захожу иногда
  • 84
  • 0 / 0
Re: mod_vm_accordion
« Ответ #1 : 23.08.2010, 00:46:11 »
вот мой сайт где наглядно видно это меню(слева)
http://svarkavita.com/
*

takes

  • Захожу иногда
  • 84
  • 0 / 0
Re: mod_vm_accordion
« Ответ #2 : 23.08.2010, 10:07:48 »
я заплачу тому кто сделает это меню так как я хочу
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: mod_vm_accordion
« Ответ #3 : 23.08.2010, 12:32:32 »
Могу помочь вот с этим модулем.
Как добиться поведения, описанного вами я уже разобрался, останется поправить CSS
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

takes

  • Захожу иногда
  • 84
  • 0 / 0
Re: mod_vm_accordion
« Ответ #4 : 23.08.2010, 14:03:35 »
Цитировать
Могу помочь вот с этим модулем.
Как добиться поведения, описанного вами я уже разобрался, останется поправить CSS

Та нет, мне ваш не нужен , вы можете сделать как тут меню http://deglicht.de/
« Последнее редактирование: 23.08.2010, 14:14:20 от takes »
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: mod_vm_accordion
« Ответ #5 : 23.08.2010, 14:42:32 »
Цитировать
вы можете сделать как тут меню http://deglicht.de/
Нет проблем, ставьте модуль mod_virtuemart_categories ,  я прикреплю шаблон аккордиона под ваши нужды. Вам останется только CSS поправить.
тот что на сайте http://deglicht.de/ подглюкивает слегка.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

takes

  • Захожу иногда
  • 84
  • 0 / 0
Re: mod_vm_accordion
« Ответ #6 : 23.08.2010, 15:26:06 »
я передумал..
мне всего лишь нужно одну строку подправьте этом модули, просто скажите или поправьте сами её, больше мне нечего не нужно
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: mod_vm_accordion
« Ответ #7 : 23.08.2010, 15:38:16 »
Не знаю что править. В своем коде мне куда проще разобраться )
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

takes

  • Захожу иногда
  • 84
  • 0 / 0
Re: mod_vm_accordion
« Ответ #8 : 23.08.2010, 15:49:46 »
Нужно править сам скрипт
Код
<script type="text/javascript" src="<?php echo JURI::base(); ?>/modules/mod_vm_accordion/jquery.js"> </script>

          <script type="text/javascript">

         



$(document).ready(function()

{



$("div.accordionButton").click(function()

    {

$(this).next("div.accordionContent").slideToggle(50).siblings("div.accordionContent").slideUp("slow");

        $(this).siblings();

});

//slides the element with class "menu_body" when mouse is over the paragraph

$("div.accordionButton").mouseover(function()

    {

     $(this).next("div.accordionContent").slideDown(200).siblings("div.accordionContent").slideUp("slow");

         $(this).siblings();

});

});

</script>
Я там менял параметры но к добру непревело, поставил как было, тут и нужно ковырять
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: mod_vm_accordion
« Ответ #9 : 23.08.2010, 16:04:42 »
Попробуйте установить модуль, и перекрыть шаблон accordion прикрепленным файлом. Как это сделать описано в шапке темы.

[spoiler title="accordion.php"]<?php

// no direct access
defined('_JEXEC') or die('Restricted access');

if ( ! defined('VMCategoriesAccordionDecoratorDefined') )
{
   function VMCategoriesAccordionDecorator(&$node, &$args)
   {
      $categories = & VMCategories::getInstance();
      $active = $categories->getActive();
      $path = $active ? $active->getPath() : false;

      switch ($node->name())
      {
         case 'ul':
            break;
         case 'li':
            // set parent class
            if (isset($node->ul) && $node->ul) {
               $node->addAttribute('class', 'parent');
            }
            // set current class
            if ($path && $node->attributes('id') == $path[0]) {
               $node->addAttribute('class', $node->attributes('class').' current');
            }
            // set active class
            if ($path && in_array($node->attributes('id'), $path)) {
               $node->addAttribute('class', $node->attributes('class').' active');
            }
            break;
         case 'a':
            break;
      }

      // remove XML attributes
      $node->removeAttribute('id');
      $node->removeAttribute('level');
   }

   define('VMCategoriesAccordionDecoratorDefined', true);
}

// tag id can't be empty
$params->get('tag_id') or $params->set('tag_id', 'accordion');

// render list
$rendered = modVMCategoriesHelper::render($params, 'VMCategoriesAccordionDecorator');

// if module isn't empty
if ($rendered){

   $script = "
   window.addEvent('domready', function(){

      $$($('{$params->get('tag_id')}'), $('{$params->get('tag_id')}').getElements('ul')).each(function(el){
            accParentItems = el.getChildren().filterByClass('parent');
            accTogglers = [];
            accElements = [];
            accParentItems.each(function(element, index){
               accTogglers.push(new Element('span').inject(element));
               accElements.push(element.getChildren().filterByTag('ul')[0]);
               element.index = index;
               element.getChildren().filterByTag('a')[0].addEvent('mouseover', function(){
                  if (this.getNext().offsetHeight == 0) {
                     this.parentNode.parentNode.Accordion.options.wait = false;
                     accTimer = this.parentNode.parentNode.Accordion.display.delay(200, this.parentNode.parentNode.Accordion, $(this.parentNode).index);
                  }
               });
               element.getChildren().filterByTag('a')[0].addEvent('mouseout', function(){
                  if((accTimer != undefined)){clearTimeout(accTimer)};
               });
               element.addEvent('mouseleave', function(){
                  if (element.getChildren().filterByTag('ul')[0].offsetHeight != 0) {
                     element.parentNode.Accordion.display.delay(200, this.parentNode.Accordion, $(this).index);
                  }
               });
               
            });
            if ( accParentItems.length > 0 ){
                  el.Accordion = new Accordion(accTogglers, accElements, {
                           opacity: false,
                           alwaysHide: true,
                           show: $$(accParentItems).indexOf($$(accParentItems).filterByClass('active')[0]),
                           duration: 600,
                           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');
                           }
                        }
                  );
            }
      });

   });
   ";

   // require mootools
   JHTML::_('behavior.mootools');

   // get document
   $document =& JFactory::getDocument();
   $document->addScriptDeclaration($script);
}
[/spoiler]
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

takes

  • Захожу иногда
  • 84
  • 0 / 0
Re: mod_vm_accordion
« Ответ #10 : 23.08.2010, 16:11:07 »
Попробуйте установить модуль, и перекрыть шаблон accordion прикрепленным файлом. Как это сделать описано в шапке темы.

[spoiler title="accordion.php"]<?php



// no direct access
defined('_JEXEC') or die('Restricted access');

if ( ! defined('VMCategoriesAccordionDecoratorDefined') )
{
   function VMCategoriesAccordionDecorator(&$node, &$args)
   {
      $categories = & VMCategories::getInstance();
      $active = $categories->getActive();
      $path = $active ? $active->getPath() : false;

      switch ($node->name())
      {
         case 'ul':
            break;
         case 'li':
            // set parent class
            if (isset($node->ul) && $node->ul) {
               $node->addAttribute('class', 'parent');
            }
            // set current class
            if ($path && $node->attributes('id') == $path[0]) {
               $node->addAttribute('class', $node->attributes('class').' current');
            }
            // set active class
            if ($path && in_array($node->attributes('id'), $path)) {
               $node->addAttribute('class', $node->attributes('class').' active');
            }
            break;
         case 'a':
            break;
      }

      // remove XML attributes
      $node->removeAttribute('id');
      $node->removeAttribute('level');
   }

   define('VMCategoriesAccordionDecoratorDefined', true);
}

// tag id can't be empty
$params->get('tag_id') or $params->set('tag_id', 'accordion');

// render list
$rendered = modVMCategoriesHelper::render($params, 'VMCategoriesAccordionDecorator');

// if module isn't empty
if ($rendered){

   $script = "
   window.addEvent('domready', function(){

      $$($('{$params->get('tag_id')}'), $('{$params->get('tag_id')}').getElements('ul')).each(function(el){
            accParentItems = el.getChildren().filterByClass('parent');
            accTogglers = [];
            accElements = [];
            accParentItems.each(function(element, index){
               accTogglers.push(new Element('span').inject(element));
               accElements.push(element.getChildren().filterByTag('ul')[0]);
               element.index = index;
               element.getChildren().filterByTag('a')[0].addEvent('mouseover', function(){
                  if (this.getNext().offsetHeight == 0) {
                     this.parentNode.parentNode.Accordion.options.wait = false;
                     accTimer = this.parentNode.parentNode.Accordion.display.delay(200, this.parentNode.parentNode.Accordion, $(this.parentNode).index);
                  }
               });
               element.getChildren().filterByTag('a')[0].addEvent('mouseout', function(){
                  if((accTimer != undefined)){clearTimeout(accTimer)};
               });
               element.addEvent('mouseleave', function(){
                  if (element.getChildren().filterByTag('ul')[0].offsetHeight != 0) {
                     element.parentNode.Accordion.display.delay(200, this.parentNode.Accordion, $(this).index);
                  }
               });
               
            });
            if ( accParentItems.length > 0 ){
                  el.Accordion = new Accordion(accTogglers, accElements, {
                           opacity: false,
                           alwaysHide: true,
                           show: $$(accParentItems).indexOf($$(accParentItems).filterByClass('active')[0]),
                           duration: 600,
                           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');
                           }
                        }
                  );
            }
      });

   });
   ";

   // require mootools
   JHTML::_('behavior.mootools');

   // get document
   $document =& JFactory::getDocument();
   $document->addScriptDeclaration($script);
}
[/spoiler]

поставил я ваш модуль, зайдие на мой сайт и взгляните как он работает, он вобще некаким краем не похож на аккорд меню..
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: mod_vm_accordion
« Ответ #11 : 23.08.2010, 16:33:51 »
проставьте настройки, которые указаны в разделе Важно темы
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

takes

  • Захожу иногда
  • 84
  • 0 / 0
Re: mod_vm_accordion
« Ответ #12 : 23.08.2010, 16:39:35 »
проставьте настройки, которые указаны в разделе Важно темы
настроил как ты написал, можеш посмотреть на моём сайте
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: mod_vm_accordion
« Ответ #13 : 23.08.2010, 16:40:38 »
И кстати по вашему сайту: уберите marque, это реально бесит юзеров. Сделайте кнопки чтоб листать взад-вперед, и можно чтобы скрипт сам изредка пролистывал.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: mod_vm_accordion
« Ответ #14 : 23.08.2010, 16:42:39 »
Походу конфликт с jquery, отключи пока модуль свой
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

takes

  • Захожу иногда
  • 84
  • 0 / 0
Re: mod_vm_accordion
« Ответ #15 : 23.08.2010, 16:43:16 »
что такое marque?
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: mod_vm_accordion
« Ответ #16 : 23.08.2010, 16:45:06 »
это ваш "слайдер", который утомительно проматывает товары.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

takes

  • Захожу иногда
  • 84
  • 0 / 0
Re: mod_vm_accordion
« Ответ #17 : 23.08.2010, 16:45:14 »
заработал ваш модуль, но тот чемто лучше...
*

takes

  • Захожу иногда
  • 84
  • 0 / 0
Re: mod_vm_accordion
« Ответ #18 : 23.08.2010, 16:45:41 »
Цитировать
это ваш "слайдер", который утомительно проматывает товары.
его не уберу не в коем случае...
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: mod_vm_accordion
« Ответ #19 : 23.08.2010, 16:50:53 »
здрасьте, выж хотели чтоб категории сворачивались сами. вот они теперь и сворачиваются. а оформление можно подправить через css
плюс избавились от jquery
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

takes

  • Захожу иногда
  • 84
  • 0 / 0
Re: mod_vm_accordion
« Ответ #20 : 23.08.2010, 16:52:26 »
дело не в этом, ваше меню не сразу реагирует на наведение мышки, слишком оно тормозит
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: mod_vm_accordion
« Ответ #21 : 23.08.2010, 16:53:45 »
его не уберу не в коем случае...

дело ваше. у мня глаза от него болят, хорошо можно мышку навести и он остановится. нужно чтобы он отрывисто твигался, тогда будет нормально, да и внимание лучше концентрируется тогда. в прочем думаю вам до этого нет дела..
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: mod_vm_accordion
« Ответ #22 : 23.08.2010, 16:57:10 »
вот без задержки
[spoiler title="accordion.php"]<?php

// no direct access
defined('_JEXEC') or die('Restricted access');

if ( ! defined('VMCategoriesAccordionDecoratorDefined') )
{
   function VMCategoriesAccordionDecorator(&$node, &$args)
   {
      $categories = & VMCategories::getInstance();
      $active = $categories->getActive();
      $path = $active ? $active->getPath() : false;

      switch ($node->name())
      {
         case 'ul':
            break;
         case 'li':
            // set parent class
            if (isset($node->ul) && $node->ul) {
               $node->addAttribute('class', 'parent');
            }
            // set current class
            if ($path && $node->attributes('id') == $path[0]) {
               $node->addAttribute('class', $node->attributes('class').' current');
            }
            // set active class
            if ($path && in_array($node->attributes('id'), $path)) {
               $node->addAttribute('class', $node->attributes('class').' active');
            }
            break;
         case 'a':
            break;
      }

      // remove XML attributes
      $node->removeAttribute('id');
      $node->removeAttribute('level');
   }

   define('VMCategoriesAccordionDecoratorDefined', true);
}

// tag id can't be empty
$params->get('tag_id') or $params->set('tag_id', 'accordion');

// render list
$rendered = modVMCategoriesHelper::render($params, 'VMCategoriesAccordionDecorator');

// if module isn't empty
if ($rendered){

   $script = "
   window.addEvent('domready', function(){

      $$($('{$params->get('tag_id')}'), $('{$params->get('tag_id')}').getElements('ul')).each(function(el){
            accParentItems = el.getChildren().filterByClass('parent');
            accTogglers = [];
            accElements = [];
            accParentItems.each(function(element, index){
               accTogglers.push(new Element('span').inject(element));
               accElements.push(element.getChildren().filterByTag('ul')[0]);
               element.index = index;
               element.getChildren().filterByTag('a')[0].addEvent('mouseover', function(){
                  if (this.getNext().offsetHeight == 0) {
                     this.parentNode.parentNode.Accordion.options.wait = false;
                     this.parentNode.parentNode.Accordion.display($(this.parentNode).index);
                  }
               });
               element.addEvent('mouseleave', function(){
                  if (element.getChildren().filterByTag('ul')[0].offsetHeight != 0) {
                     element.parentNode.Accordion.display($(this).index);
                  }
               });
               
            });
            if ( accParentItems.length > 0 ){
                  el.Accordion = new Accordion(accTogglers, accElements, {
                           opacity: false,
                           alwaysHide: true,
                           show: $$(accParentItems).indexOf($$(accParentItems).filterByClass('active')[0]),
                           duration: 600,
                           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');
                           }
                        }
                  );
            }
      });

   });
   ";

   // require mootools
   JHTML::_('behavior.mootools');

   // get document
   $document =& JFactory::getDocument();
   $document->addScriptDeclaration($script);
}
[/spoiler]
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: mod_vm_accordion
« Ответ #23 : 23.08.2010, 16:59:05 »
ваше jquery.noConflict не срабатывало потому что в тот момент jquery еще не было загружено, потому как <script src="..jquery.js" /> впрыскивается не в шапку, а гдето ниже...
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

takes

  • Захожу иногда
  • 84
  • 0 / 0
Re: mod_vm_accordion
« Ответ #24 : 23.08.2010, 16:59:54 »
попробуйте немного покопаться в моём, всеголиш 1 скрипт, помогите, даже без задержки оно какоето страное и глючное, не прими в обиду, помоги с моим плз
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: mod_vm_accordion
« Ответ #25 : 23.08.2010, 17:05:50 »
ясно, просто подкатегории тоже аккордионизируются, чего не нужно делать. замените вторую строчку скрипта на эту:
      $$($('{$params->get('tag_id')}'), $('{$params->get('tag_id')}').getChildren().filterByTag('ul')).each(function(el){
будет все окей, все глюки пропадают.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

takes

  • Захожу иногда
  • 84
  • 0 / 0
Re: mod_vm_accordion
« Ответ #26 : 23.08.2010, 17:12:48 »
лучше скажи как мой настроить ане твой пожалуйста..
*

takes

  • Захожу иногда
  • 84
  • 0 / 0
Re: mod_vm_accordion
« Ответ #27 : 23.08.2010, 18:32:01 »
народ помогите
« Последнее редактирование: 23.08.2010, 21:48:19 от takes »
*

adjuster

  • Давно я тут
  • 786
  • 55 / 2
Re: mod_vm_accordion
« Ответ #28 : 23.08.2010, 21:12:02 »
народ помогите, не будьте
Код
цензура
, прошу
дважды цензура..
« Последнее редактирование: 24.08.2010, 17:32:10 от adjuster »
*

takes

  • Захожу иногда
  • 84
  • 0 / 0
Re: mod_vm_accordion
« Ответ #29 : 23.08.2010, 21:19:24 »
хамло?
тебе что поговорить не о чем? давайте отложим бессмысленные споры кто правее и разберёмся с модулем
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

mod_vm_accordion

Автор terr

Ответов: 1
Просмотров: 2378
Последний ответ 19.09.2011, 01:39:52
от chakivetal