Новости Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

👩‍💻 SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla.Компонент - менеджер цифровых проектов для Joomla! CMS. Компонент обеспечивает создание каталога цифровых проектов и предоставляет возможность скачивания, в том числе с использованием лицензионных ключей.👩‍💻 v.2.5.0. Что нового?Схемы структур данных для серверов обновлений. Теперь с SW JProjects вы может создавать сервер обновлений не только для расширений Joomla, но и свои собственные. Например, вам нужно, чтобы структура данных сервера обновлений была другая и формат должен быть, например, не XML, а JSON. Формирование структуры данных для сервера обновлений расширений Joomla вынесено в отдельный плагин. Вы можете создать свой собственный плагин и реализовать в нём нужную вам структуру данных, добавив или наоборот исключив отображаемые данные. Сервер обновлений в компоненте по-прежнему отображает информацию о списке проектов и их версиях, о конкретном проекте и его changelog.Можно выбрать схему данных сервера обновлений глобально для всего компонента, выбрать другую схему данных для категории проектов, а так же выбрать схему в каждом проекте.

Разработчикам в качестве образца можно посмотреть плагин схемы данных для Joomla в составе компонента или же плагин-образец JSON-схемы на GitHub.
Группа плагинов swjprojects. Для нужд компонента создана группа плагинов swjprojects. В частности, в этой группе находится плагин структуры данных Joomla расширений для сервера обновлений.Изменение языковых констант. Изменены некоторые языковые константы в панели администратора. Если вы делали переопределение констант - переопределите их снова.👩‍💻 Joomla 6. Внесены изменения для корректной установки и работы компонента на Joomla 6. Компонент успешно протестирован на Joomla 6-beta2.Минимальная версия Joomla - 5. Подняты минимальные системные требования: Joomla 5.0.0 и PHP 8.1.
- Страница расширения👉 Плагин-образец кастомной JSON-схемы данных для сервера обновлений на GitHub.- GitHub расширения- Документация на GitHub- Joomla Extensions Directory#joomla #расширения

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

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

pautina

  • Захожу иногда
  • 160
  • 1 / 1
Сдравствуйте Уважаемое сообщество, как можно сделать смену картинки при наведении указателя на пункт меню.
Для того чтоб картинки менялись при переходе на пункт меню использую такой код
Код

<div id="box_img"> <!-- Блок в шапке где выводятся изображения-->
           
           <?php $Itemid = JRequest::getInt('Itemid'); ?>    <!-- инициализация $Itemid (пунктов меню) -->
           <?php if ($Itemid == '1' )
            {
               echo "<img src='templates/template_tut/images/img-1.jpg' width='339' height='255' border='0' />";
            }
            elseif ($Itemid == '2' )
            {
               echo "<img src='templates/template_tut/images/img-2.jpg' width='339' height='255' border='0' />";
            }
            elseif ($Itemid == '3' )
            {
               echo "<img src='templates/template_tut/images/img-3.jpg' width='339' height='255' border='0' />";
            }
elseif ($Itemid == '4' )
            {
               echo "<img src='templates/template_tut/images/img-4.jpg' width='339' height='255' border='0' />";
            }
elseif ($Itemid == '5' )
            {
               echo "<img src='templates/template_tut/images/img-5.jpg' width='339' height='255' border='0' />";
            }
elseif ($Itemid == '6' )
            {
               echo "<img src='templates/template_tut/images/img-6.jpg' width='339' height='255' border='0' />";
            }
            else
            {
            }
?>
       
        </div>
...
А как сделать чтоб картинка менялась при наведении указателя мыши.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
А не проще вставлять картинки из админчасти?
Ну или хотябы elseif замени на switch.
По идее надо картинку пункта выводить не в тег img а в css-свойство background ссылки. Тогда можно будет использовать картинку как спрайт.
.menu a:hover{ background-position: bottom }
Вот только как превратить <img src="src" /> в style="background-image: url(src);" я хз. надо копаться в mod_mainmenu/tmpl
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
В общем нужно скопировать файл modules/mod_mainmenu/tmpl/default.php в папку templates/твой_шаблон/html/mod_mainmenu/default.php и добавить в него вот такой код:
Код
	if (($node->name() == 'a') && isset($node->img)) {
$node->addAttribute('style','background-image: url('.$node->getElementByPath(img)->attributes('src').')');
$node->removeChild($node->getElementByPath(img));
}
В итоге мы превращаем картинку в фоновое изображение, и делаем с ним через CSS что хотим. например .menu a:hover{ background-position: bottom }
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

pautina

  • Захожу иногда
  • 160
  • 1 / 1
Вот адрес сайта http://my-page41.xmldesign.ru/
Что нужно сделать чтоб при наведении на пункт левого меню (где ссылки ОБУЧЕНИЕ, РЕШЕНИЯ, АРМ, БИБЛИОТЕКА (ИНФ-ЦИЯ), ОФОРМЛЕНИЕ) менялась картинка справа, делал как вы говорили не пошло,
сейчас работает так при нажатии на кнопку, рисунок картинки справа меняется.
Как сделать чтоб картинка справа менялась при наведении указателя на этот пункт.
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
pautina
ответ вам уже написали. В таких случаях делать проще всего через background и hover.
Она и так меняется
Код: css
#ver_menu ul li a:hover { display:block; font-family:Tahoma; font-size:11pt; color:#FFFFFF; padding:5px 0px 5px 12px; text-decoration:none; background:url(../images/ver_menu_hover.jpg) center right no-repeat; }
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
*

pautina

  • Захожу иногда
  • 160
  • 1 / 1
Я это и сам знаю,
http://my-page41.xmldesign.ru/
Это смена картинки для пункта меню идёт, при наведении там стрелка появляется.
Я бы хотел менять картинку при наведении не в пункте меню а справа от пункта меню, сейчас сделано так, картинка справа пеняется при переходе на новый пункт меню посредством участка кода
Код

<div id="box_img"> <!-- Блок в шапке где выводятся изображения-->
            
           <?php $Itemid = JRequest::getInt('Itemid'); ?>    <!-- инициализация $Itemid (пунктов меню) -->
           <?php if ($Itemid == '1' )
            {
               echo "<img src='templates/template_tut/images/img-1.jpg' width='339' height='255' border='0' />";
            }
            elseif ($Itemid == '2' )
            {
               echo "<img src='templates/template_tut/images/img-2.jpg' width='339' height='255' border='0' />";
            }
            elseif ($Itemid == '3' )
            {
               echo "<img src='templates/template_tut/images/img-3.jpg' width='339' height='255' border='0' />";
            }
elseif ($Itemid == '4' )
            {
               echo "<img src='templates/template_tut/images/img-4.jpg' width='339' height='255' border='0' />";
            }
elseif ($Itemid == '5' )
            {
               echo "<img src='templates/template_tut/images/img-5.jpg' width='339' height='255' border='0' />";
            }
elseif ($Itemid == '6' )
            {
               echo "<img src='templates/template_tut/images/img-6.jpg' width='339' height='255' border='0' />";
            }
            else
            {
            }
?>
        
        </div>
...
Как сделать чтоб картинка справа менялась не при переходе на новый пункт меню, а при наведении.
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
Как сделать чтоб картинка справа менялась не при переходе на новый пункт меню, а при наведении.
на PHP никак. Только через JS. Вешать событие на пункты меню и в скрипте обрабатывать события и менять соответственно элемент.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Я тут накатал целое решение.
Правим файл default.php :
меняем те строки что я писал на ето:
   if (($node->name() == 'a') && isset($node->img)) {
      $node->addAttribute('onmouseover', "changeBanner('".$node->getElementByPath(img)->attributes('src')."')");
      $node->removeChild($node->getElementByPath(img));
   }


перед modMainMenuHelper::render($params, 'modMainMenuXMLCallback');
добавляем
<script>
   function changeBanner(img){
      var banner = document.getElementById('banner');
      banner.style.background = 'url('+img+')';
   }
</script>

Так, ну теперь при наведении на пункт, #banner будет менять фон.
Терь осталось при перезагрузке страницы выводить нужное изображение. в свой шаблон добавляем следующее:
      $menu = & JSite::getMenu();
      $item = $menu->getActive();
      $iParams = new JParameter($item->params);
      $image = $iParams->get('menu_image');
      if ($iParams->get('menu_image') && $iParams->get('menu_image')!= -1){
         $image = JURI::base(true).'/images/stories/'.$iParams->get('menu_image');
      }else
      {
         $image = $this->baseurl.'/templates/'.$this->template.'/images/header.jpg';
      }
      $style = ' style="background: url('.$image.')"';
<div id="banner"<?php echo $style ?>></div>

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

pydix

  • Осваиваюсь на форуме
  • 34
  • 0 / 0
А не проще вставлять картинки из админчасти?
Ну или хотябы elseif замени на switch.
По идее надо картинку пункта выводить не в тег img а в css-свойство background ссылки. Тогда можно будет использовать картинку как спрайт.
.menu a:hover{ background-position: bottom }
Вот только как превратить <img src="src" /> в style="background-image: url(src);" я хз. надо копаться в mod_mainmenu/tmpl

Действительно, проще вставлять картинки через админчасть. Тогда и изменение картинки при наведении указателя на пункт меню можно сделать просто через css:
1)... a img {display: none} /*отключаем показ картинки добавленной через админчасть*/
2)... a {background: url(путь к картинке); /* вместо неё выводим как нам надо другую картинку фоном*/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

убрать из меню заголовки h3

Автор nexter

Ответов: 19
Просмотров: 8284
Последний ответ 03.02.2020, 18:49:47
от durte
При добавлении нового пункта меню не отображается содержимое

Автор Denko

Ответов: 2
Просмотров: 3574
Последний ответ 16.01.2020, 18:40:55
от Denko
Не нажимается пункт меню на мобильной версии

Автор Sensession

Ответов: 7
Просмотров: 5161
Последний ответ 04.01.2020, 16:45:27
от xpank
Не отображаются пункты в меню

Автор physic

Ответов: 20
Просмотров: 23475
Последний ответ 20.09.2019, 16:54:01
от beliyadm
Как в ARI Ext Menu добиться работы параметра "Показать в меню"?

Автор vasmed

Ответов: 1
Просмотров: 3859
Последний ответ 01.03.2019, 11:12:18
от vasmed