Новости 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

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

somick

  • Захожу иногда
  • 105
  • 8 / 0
Есть меню:

Родительская категория -- дочерний пункт меню1
                                   -- дочерний пункт меню2
                                   -- дочерний пункт меню3
                                   -- дочерний пункт меню4--тут еще дочернее меню

Суть в том, что требуется на одной странице вывести "дочерний пункт меню1" и "дочерний пункт меню2" одним модулем, а "дочерний пункт меню3" и "дочерний пункт меню4" другим модулем.

Я использовал вот этот способ вывода связанного меню. Но он выводит ВСЕ пункты уровня меню в модуле. А надо пункты одного уровня вывести в разных местах. Возможно ли это?
« Последнее редактирование: 28.05.2010, 00:57:13 от 4webspot »
*

danik.html

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

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
Ну так создай два новых меню и выводи эти модули где надо. Этот вариант будет работать, если используеться SEO Joomla, если нет, то это дополнительное меню прописывать как обычная ссылка, вот и всё

P.S. Правда вот патвей нарушиться, но что поделать
*

somick

  • Захожу иногда
  • 105
  • 8 / 0
Ну так создай два новых меню и выводи эти модули где надо. Этот вариант будет работать, если используеться SEO Joomla, если нет, то это дополнительное меню прописывать как обычная ссылка, вот и всё

P.S. Правда вот патвей нарушиться, но что поделать
У меня включен стандартный SEF. Громоздкий компонент ставить на сайт, состоящий из текстового контента чуть более чем полностью не хотелось бы. А этот самый стандартный SEF при создании ссылки ориентируется на  структуру меню. Значит, структуру рушить нельзя.

Можно, конечно, два меню сделать, но очень не хотелось бы. Даже возможно так и придется сделать, если не найду решение. Как я только не извращался уже... Чувствую опять бардак в ссылках будет. Простейший же сайт вообще без расширений практически. Ну куда ему СЕФ...
*

danik.html

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

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
Ну правильно, я писал про стандартный SEF Joomla, ссылки остануться, единственно пострадает строка пути. но если честно, она редко приносить большую пользу.
*

somick

  • Захожу иногда
  • 105
  • 8 / 0
ну попробуй мое решение. я б так и сделал)
Это малость сложно для меня =)
Ну правильно, я писал про стандартный SEF Joomla, ссылки остануться, единственно пострадает строка пути. но если честно, она редко приносить большую пользу.
Меняются ссылки к сожалению. Если меню не разбито будет:
http://joomlaforum.ru/razdel/kategoria/material.html
Разбив, получив:
http://joomlaforum.ru/razdel.html
и в нем меню имеющие ссылки вида
http://joomlaforum.ru/kategoria1/material.html
http://joomlaforum.ru/kategoria2/material.html
...

*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
Ну да, действительно, будут меняться ссылки. Сори
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
смотри. делаешь так. копируешь modules/mod_mainmenu/tmpl/default.php в templates/твой_шаблон/html/mod_mainmenu/default.php
далее делаешь так.
копируешь код с начиная с
if ( ! defined('modMainMenuXMLCallbackDefined') )

и до    define('modMainMenuXMLCallbackDefined', true);
}

. вставляешь его чуть ниже. переименовываешь имя функции, и дифайн, например modMainMenuXMLCallbackDefined2

далее переделываешь код что внизу остался так:


if ($params->get('tag_id')  == 'menu1') {
   modMainMenuHelper::render($params, 'modMainMenuXMLCallback');
} else {
   modMainMenuHelper::render($params, 'modMainMenuXMLCallback2');
}
Затем в одной функции добавляешь
   if ($node->name() == 'ul') {
      foreach ($node->children() as $child)
      {
         if ( in_array($child->attributes('id'), array(1,2,4) )) {
            $node->removeChild($child);
         }
      }
   }

соответсвенно в в массиве указываешь айди, которые не нужно выводить. во второй функции добавляешь тоже, но только со знаком ! перед in_array()

Далее в админке указываешь у первого меню айди тега меню menu1 а у второго любой другой. не спутай с суффиксами модуля и меню!

Логика работы такая. Объявляется две функции. первая фильтрует меню, удаляя указанные пункты по айди, вторая наоборот делает
Далее проверяется введенный айди тега меню, если это первое меню - значит используем первую функцию. както так...
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!

Добрый вечер! Нужна помощь.
Вопрос вот в чем. Допустим есть пункт меню - "НОВОСТИ". В этих новостях есть подменю, ну, допустим - Спорта, Видео, и т.д. При нажатии на кнопку "НОВОСТИ" - открывается страничка на которой все новости (спорта, видео и т.д.). А при нажатии на кнопки подменю - открывается то, что нужно, а именно - в спорте новости спорта, в видео - новости видео и т.д. Как сделать, чтобы при нажатии на "НОВОСТЬ" - раскрывались только подменюшки без вывода информации. Одним словом убрать ссылку с пункта меню, а подменю оставить без изменений? Заранее благодарен.
*

palexa

  • Завсегдатай
  • 1108
  • 88 / 0
Re: Два модуля одного меню на странице.
« Ответ #10 : 27.05.2010, 23:15:55 »
Добрый вечер! Нужна помощь.
Вопрос вот в чем. Допустим есть пункт меню - "НОВОСТИ". В этих новостях есть подменю, ну, допустим - Спорта, Видео, и т.д. При нажатии на кнопку "НОВОСТИ" - открывается страничка на которой все новости (спорта, видео и т.д.). А при нажатии на кнопки подменю - открывается то, что нужно, а именно - в спорте новости спорта, в видео - новости видео и т.д. Как сделать, чтобы при нажатии на "НОВОСТЬ" - раскрывались только подменюшки без вывода информации. Одним словом убрать ссылку с пункта меню, а подменю оставить без изменений? Заранее благодарен.

Можно поставить пункт меню НОВОСТИ как separator

Но это уже зависит как сделано само меню, я попробывал, у меня работает отоюражаеться без искажений
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Два модуля одного меню на странице.
« Ответ #11 : 27.05.2010, 23:23:27 »
это делается джаваскриптом. пишется обработчик на onclick пункта меню. ссылку лучше не убирать, а то с отключенным js будет некрасиво.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

somick

  • Захожу иногда
  • 105
  • 8 / 0
Re: Два модуля одного меню на странице.
« Ответ #12 : 27.05.2010, 23:52:51 »
danik.html, получилось. спасибо.
*

novastar

  • Новичок
  • 3
  • 1 / 0
Почитал про способ danik.html, решил сделать немного поудобнее, чтобы из админки редактировать можно было. В итоге default.php принял такой вот вид (функции modMainMenuXMLCallback2 у меня нет, не пригодилась):

function modMainMenuXMLCallback(&$node, $args)
{
   $user   = &JFactory::getUser();
   $menu   = &JSite::getMenu();
   $active   = $menu->getActive();
   $path   = isset($active)? array_reverse($active->tree) : null;

   $session =& JFactory::getSession();
   $ns_flag = $session->get('ns_flag');
   $ns_ids = $session->get('ns_ids');
...

   if ($node->name() == 'ul') {
      foreach ($node->children() as $child)
      {
         if (($ns_flag)&&(!in_array($child->attributes('id'), $ns_ids ))) {
            $node->removeChild($child);
         }
         if ($child->attributes('access') > $user->get('aid', 0)) {
            $node->removeChild($child);
         }
      }
   }

...

   define('modMainMenuXMLCallbackDefined', true);
}

$ns_flag = false;
if ($params->get('tag_id')=="separated"){
   $ns_flag = true;
   $ns_ids = explode("-",trim($params->get('class_sfx')));
}
$session =& JFactory::getSession();
$session->set('ns_flag', $ns_flag);
$session->set('ns_ids', $ns_ids);

modMainMenuHelper::render($params, 'modMainMenuXMLCallback');

т.е. получается что в расширенных параметрах меню мы задаем ID = separated, а cуффикс класса меню = " Id пункта1-id пункта 2-id пункта3"

Так вот вопрос у меня - параметры эти как можно еще кроме как через сессию ловить? Глупо ведь в сессии-то их хранить...
*

novastar

  • Новичок
  • 3
  • 1 / 0
И, кстати, да, через ID была тоже идея не очень делать - валидность нарушается. Сделал все через суффикс класса меню
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Отлично. Правда если чесно - я подумывал о такой модификации))
Насчет сохранения в сессию - думаю не лучший вариант, уж лучше global использовать. Хреново что в декоратор $params не передается.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

novastar

  • Новичок
  • 3
  • 1 / 0
Да, насчет сессии я затупил конечно, забыл про $GLOBALS, быдлокодер же ))) В общем все получилось в итоге )))
Вместо верхней сессии:
   $ns_flag = $GLOBALS['ns_flag'];
   $ns_ids = $GLOBALS['ns_ids'];
Вместо нижней сессии:
   $GLOBALS['ns_flag']=$ns_flag;
   $GLOBALS['ns_ids']=$ns_ids;
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как поменять положения баннера на странице?

Автор Lzrv

Ответов: 2
Просмотров: 4621
Последний ответ 12.12.2017, 12:22:55
от Lzrv
Как убрать пункт меню «Главная»?

Автор wdesign

Ответов: 17
Просмотров: 24884
Последний ответ 20.09.2017, 21:38:35
от WiseEagle
Вопрос по настройке новостной ленты на главной странице сайта

Автор jaff

Ответов: 13
Просмотров: 7830
Последний ответ 15.09.2017, 15:49:19
от sect
Нагрузка на сервер - РЕШЕНО

Автор se_demon

Ответов: 20
Просмотров: 7608
Последний ответ 13.08.2016, 13:55:25
от Escander
Как сделать на странице ссылку на скачивание файла с хостинга?

Автор lsd77777

Ответов: 19
Просмотров: 18083
Последний ответ 27.07.2016, 01:58:03
от SokoloWWW