Новости 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 Гость просматривают эту тему.
  • 11 Ответов
  • 3386 Просмотров
*

TAlexeyFT

  • Новичок
  • 4
  • 0 / 0
Добрый день, Всем!
Опишу проблему. Есть старый уже раскрученный сайт со статьями, статьи все проиндексировались, сайт относительно раскручен, движка фактически нет, т.е. самописный. сылки на статьи в виде /kak_eto_sdelat.php - лежат в корне.
Я сделал аналогичный сайт на Joomla, с новым пучковым дизайном. Возникла задача накатить на старый сайт, так что бы были работоспособны старые сслаки, для этого
1. я копирую все статьи из старого движка в нормальные стандартные статьи Joomla,
2. далее надо что бы при выводе /kak_eto_sdelat.php выводился непосредственно joomlовский движек с отображением аналогичной статьи.

Пробовал через modrewrite - Нихрена не получается.
для эксперимента,
RewriteCond %{REQUEST_URI} ^/2.php [NC]
RewriteRule (.*) /index.php/uslugi/obuch-vozhden.html  

при запросе  ни хрена, ошибка Joomla 404. хотя линк /index.php/uslugi/obuch-vozhden.html вроде как есть. пробуещь для теста любую другую ссылку на левый php  в том же каталоге - все пашет, т.е. пишешь 2.php а отображается, то что указал в RewriteRule, но как ссылаешься на joomlовский index.php - так всё раком становиться.

еще пробовал внутри имястатьи.php написать
<? require( 'index.php' ); ?>

не фига - та же 404 ошибка - причем сгенеированная joomla-вским движком, как и в первом случае, подставляешь любой другой php отличный от index - самописный - все ок, зеркалит нормально...

Кто подскажет оптимальный путь решения данной проблемы, что за косяки, уже 3 недели бьюсь, .. да и в том ли направлении копаю?


« Последнее редактирование: 26.05.2010, 20:16:49 от TAlexeyFT »
*

zikkuratvk

  • Глобальный модератор
  • 4820
  • 345 / 2
  • Обслуживаем проекты - дорого.
имхо сдается мне что вам нужен сторонний SEF... допустим sef404 )
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

TAlexeyFT

  • Новичок
  • 4
  • 0 / 0
sef404 - это что за овощ?? и как он мне поможет...?
*

zikkuratvk

  • Глобальный модератор
  • 4820
  • 345 / 2
  • Обслуживаем проекты - дорого.
sef404 - это что за овощ?? и как он мне поможет...?

это компонент SEF который можно настроить так как вам нужно... во всяком случае я думаю можно попробовать... раздел форума ему посвященный http://joomlaforum.ru/index.php/board,225.0.html
Хочется уникальное расширение? ===>>>> JoomLine - Разрабатываем расширения под заказ.
Использую хостинг TimeWeb и Reg
*

TAlexeyFT

  • Новичок
  • 4
  • 0 / 0
ага, спасибо, уже поставил, разбираюсь...
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
ага, спасибо, уже поставил, разбираюсь...

Ну что, получилось?
Я вот тоже надавно один сайт на КМС перевел (токо там пока ваще без изменений дизайна - это все теперь в перспективе). До этого он был просто ввиде страниц .htm
Пробовал в sef404 прописать алиасы для ссылок (со старыми адресами) наиболее значимых страниц - не заработало. Не стал вникать, сделал по другому. Тем не менее интересно..
« Последнее редактирование: 09.12.2011, 22:34:40 от rsn »
Возможно, будет интересно: Интеграция с Ozon
*

temka-k

  • Осваиваюсь на форуме
  • 21
  • 2 / 0
Я воспользовался рекомендациями ПС, чтобы "вес" старых страниц передался новым, перенаправил их 301-м редиректом. Для этого пришлось немного попотеть, зато ПС не выдали ни одной ошибки о неисправности старых ссылок. Делается все ручками в файле .htaccess, создаем в нем директивы вида:
Redirect 301 /about.htm http://site.ru/o-kompanii.html
Redirect 301 /koord.htm http://site.ru/kontakty.html
*

TAlexeyFT

  • Новичок
  • 4
  • 0 / 0
Ну что, получилось?
Я вот тоже надавно один сайт на КМС перевел (http://selen-chel.ru - токо там пока ваще без изменений дизайна - это все теперь в перспективе). До этого он был просто ввиде страниц .htm
Пробовал в sef404 прописать алиасы для ссылок (со старыми адресами) наиболее значимых страниц - не заработало. Не стал вникать, сделал по другому. Тем не менее интересно..


не, не получилось, еще с денвер на вин 7 работать что-то перестал, - экспериментирую на живую. там полюбасу нужен через .htaccess делать, все ссылки лежат в корне... попробовал один алиас создать  - вроде сработало, но .. перестали открываться ссылки меню на главной странице - если меню идет на статью - то все ок, а если меню идет на другое меню, то всё абзац, почему-то ссылается в корень. Сейчас вот уже думаю, да ну всё это в болото, будет повод верстку освоить и заново с 0 всё сделать.. а с другой думаю что надо всё равно и в этом направлении рвать когти, а вось и еще пригодиться.
А как ты по другому сделал?

Я воспользовался рекомендациями ПС, чтобы "вес" старых страниц передался новым, перенаправил их 301-м редиректом. Для этого пришлось немного попотеть, зато ПС не выдали ни одной ошибки о неисправности старых ссылок. Делается все ручками в файле .htaccess, создаем в нем директивы вида:
Redirect 301 /about.htm http://site.ru/o-kompanii.html
Redirect 301 /koord.htm http://site.ru/kontakty.html

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


*

temka-k

  • Осваиваюсь на форуме
  • 21
  • 2 / 0
слышал вроде как о редиректах,.. но что-то страшновато, сайт не мой и владелец уже много денег в раскрутку вбухал,  .. ка бы чего не вышло.. Вообще бы был идеальный и самый простой вариант в реализации..
ПС - это что? Поисковая Система?
да, пс - поискова система. (http://help.yandex.ru/webmaster/?id=1079306, http://www.google.com/support/webmasters/bin/answer.py?hl=ru&answer=93633)

главное тут правильно указать ссылки - Redirect 301 "старая ссылка формата /*.html" "новая ссылка полного формата http://*.html"
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
А как ты по другому сделал?

Да, так и сделал. Если есть опасения, можешь ведь попробовать..
После того как там пропишешь в файле, на хостинг перенесешь, пропиши в браузере просто старый адрес - увидишь. Если редирект происходит и отображается то, что надо - все нормально.
Возможно, будет интересно: Интеграция с Ozon
*

Irsn

  • Захожу иногда
  • 83
  • 0 / 0
Уважаемые, а никто не подскажет, как средствами htaccess сделать редирект 301 страниц с пробелами? Старая ссылка http://www.мой_сайт.ru/izm/Disposer_what is it.htm новая http://www.мой_сайт.ru/izmelchitel-chto-eto-takoe.html
*

Irsn

  • Захожу иногда
  • 83
  • 0 / 0
Разобралась я со ссылками с пробелом. Редирект в .htaccess ставится вот так:
Redirect 301 "/izm/Disposer_what is it.htm" http://www.мой_сайт.ru/izmelchitel-chto-eto-takoe.html То есть старая ссылка заключается в ковычки.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT SEO Meta templates плагин сео-шаблонов для Joomla

Автор sergeytolkachyov

Ответов: 25
Просмотров: 5112
Последний ответ 24.11.2023, 10:24:11
от sergeytolkachyov
Как продвигать сайт! (интернет-магазин)?

Автор Kooll5

Ответов: 31
Просмотров: 7434
Последний ответ 07.02.2023, 13:59:57
от Ратник
Нет позиций в Google Joomla 3

Автор Benderalfa

Ответов: 1
Просмотров: 2928
Последний ответ 20.09.2022, 20:53:56
от darkghost
Расширение от индексации поисковиками внешних ссылок

Автор THE KILLERS

Ответов: 6
Просмотров: 1478
Последний ответ 11.03.2022, 16:02:10
от NewUsers
Расширенные описания страниц в Joomla (микроданные, микроформаты, RDFa, schema.org)

Автор ELLE

Ответов: 151
Просмотров: 112662
Последний ответ 20.11.2021, 18:15:42
от Byzi