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

lost83

  • Захожу иногда
  • 91
  • 2 / 0
В каждом материале стоит ссылка на скачивание с letitbit
<div align="center">  <a href="Ссылка" target="blank">Скачать </a> </div>
Закрываю тегом <noindex>
<div align="center"> <noindex> <a href="Ссылка" target="blank">Скачать </a></noindex> </div>
Cохраняю материал , проверяю а ссылка не закрыта. Как по другому закрыть?
Через материал пробовал по всякому...
Все счётчики и внешние ссылки закрыл через Index.php или ещё где то а эти ни как.((( :o
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
совсем редактор выключать не пробовали?
*

NightGuard

  • Живу я здесь
  • 2927
  • 378 / 7
  • вжжж-вжжж
Можно переписать любой плагин контента на обработку, для примера возьмите SpoilerText. На все про все уйдет минут 10-20.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма
*

lost83

  • Захожу иногда
  • 91
  • 2 / 0
совсем редактор выключать не пробовали?
Стоит Editor-noeditor


Можно переписать любой плагин контента на обработку, для примера возьмите SpoilerText. На все про все уйдет минут 10-20.
Меня посещала эта идея, только давно, я думал что просто можно код прописать типо <spoiler></spoiler> как на некоторых форумах и все но ни чего не получилось, надо попробовать. Спасибо

а спойлера роботы не видят?
« Последнее редактирование: 05.11.2011, 13:00:50 от skai »
*

NightGuard

  • Живу я здесь
  • 2927
  • 378 / 7
  • вжжж-вжжж
Потребуются знания php на уровне основ.

Распотрошите плагин и кнопку от него, там конструкция используется примерно такая:
{spoiler title=Заголовок}Текст{/spoiler}
Перепишите кнопку чтобы ставилось например {link title=Заголовок}Ссылка{/link}
В обработчике переписываете чтобы вместо спойлера ставилось <noindex><a href="Ссылка" target="blank">Скачать</a></noindex>
Все, профит!

P.S. Если используете еще и спойлер, то просто допишите еще дополнительную обработку маркеров {link}.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма
*

NightGuard

  • Живу я здесь
  • 2927
  • 378 / 7
  • вжжж-вжжж
Хы) Вам подфартило неимоверно)) Как раз открыт плагин этот. Вот что нужно вам дописать (в районе 68 строки файл - pbspoiler.php):

Код: php
$regex1 = "#{link title=([_0-9A-Za-zА-яа-яЁё](.*?))}#s";
$regex2 = "#{/link}#s";
$link = preg_replace($regex2, '', (preg_replace($regex1, '', $matches[0])));
$html .= '<noindex><a href="'.$link.'" target="blank">'.$matches[1].'</a></noindex>';

Вроде правильно.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма
*

lost83

  • Захожу иногда
  • 91
  • 2 / 0
Потребуются знания php на уровне основ.

Распотрошите плагин и кнопку от него, там конструкция используется примерно такая:
{spoiler title=Заголовок}Текст{/spoiler}
Перепишите кнопку чтобы ставилось например {link title=Заголовок}Ссылка{/link}
В обработчике переписываете чтобы вместо спойлера ставилось <noindex><a href="Ссылка" target="blank">Скачать</a></noindex>
Все, профит!

P.S. Если используете еще и спойлер, то просто допишите еще дополнительную обработку маркеров {link}.
Скачал пытался уствновить пишет Ошибка! Не найден XML-файл установки Joomla! закинул плагин в папку плагинов, тоже не катит. а в Php я слабоват и то что ты написал ни чего не понял(((
А пошагово можешь написать как сделать?
Я скачать по той ссылке сам плагин в архиве и что куда?
*

NightGuard

  • Живу я здесь
  • 2927
  • 378 / 7
  • вжжж-вжжж
Хы) Вам ведь не только letitbit нужен, но и Vip-file? ;)
-------------------
Какая версия движка? Там есть плагин кнопки для редактора - pb_spoiler_btn.zip и собственно сам плагин - pb_spoiler_plg_1.1.2.zip. Версия 1.3 нам не интересна - слишком много придется вырезать.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма
*

lost83

  • Захожу иногда
  • 91
  • 2 / 0
У меня вот такой файл pbspoiler.php

Код
{
62 строка  if (!$this->pbspoiler_count)
63 строка     $this->add2header();
64 строка  $this->pbspoiler_count++;
*

NightGuard

  • Живу я здесь
  • 2927
  • 378 / 7
  • вжжж-вжжж
Могу сказать сразу - на 1.6 и на 1.7 плагин ставится нормально, 20 минут назад ставил, там только кнопку подредактировать нужно было.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма
*

lost83

  • Захожу иногда
  • 91
  • 2 / 0
Re: Как закрыть ссылку в материале? Noindex
« Ответ #10 : 29.10.2011, 22:44:50 »
Vip file тоже есть но он не особо мне нужен
версия Joomla 1.5.7
pb_spoiler_plg в менеджере плагинов нету
*

NightGuard

  • Живу я здесь
  • 2927
  • 378 / 7
  • вжжж-вжжж
Re: Как закрыть ссылку в материале? Noindex
« Ответ #11 : 29.10.2011, 22:49:44 »
Joomla 1.5.7  
О_о откуда откопали?

Качайте еще раз, там должна быть версия под 1.5.
http://joomlaforum.ru/index.php?action=dlattach;topic=64949.0;attach=452989889 - вот прямая ссылка на сам плагин.
http://joomlaforum.ru/index.php?action=dlattach;topic=64949.0;attach=452986194 - вот кнопка.


Удалось? Если не сложно, то давайте чуть быстрее, ночь уже, поспать иногда хочется ;)
« Последнее редактирование: 05.11.2011, 13:02:41 от skai »
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма
*

lost83

  • Захожу иногда
  • 91
  • 2 / 0
Re: Как закрыть ссылку в материале? Noindex
« Ответ #12 : 29.10.2011, 23:04:49 »
Удалось? Если не сложно, то давайте чуть быстрее, ночь уже, поспать иногда хочется ;)
За помощь огромное спасибо, мне не так прям срочно, завтра отпишусь попробую....



Потребуются знания php на уровне основ.

Распотрошите плагин и кнопку от него, там конструкция используется примерно такая:
{spoiler title=Заголовок}Текст{/spoiler}
Перепишите кнопку чтобы ставилось например {link title=Заголовок}Ссылка{/link}
В обработчике переписываете чтобы вместо спойлера ставилось <noindex><a href="Ссылка" target="blank">Скачать</a></noindex>
Все, профит!

P.S. Если используете еще и спойлер, то просто допишите еще дополнительную обработку маркеров {link}.


Распотрошите плагин и кнопку от него, В обработчике переписываете чтобы вместо спойлера ставилось <noindex><a href="Ссылка" target="blank">Скачать</a></noindex>
С этого места можно поподробнее, это в самом плагине в главном PhP?
Я поставил кнопку, кнопка работает только ссылка как текст получается.
И при нажатии на кнопку спойлера спойлер разворачивается но страница убегает вверх((
« Последнее редактирование: 05.11.2011, 13:03:25 от skai »
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
*

lost83

  • Захожу иногда
  • 91
  • 2 / 0
Re: Как закрыть ссылку в материале? Noindex
« Ответ #14 : 30.10.2011, 15:11:25 »
смотрите ответ #7
Спасибо, и как ты успеваешь и тут и там отвечать..
А не подскажешь мне все эти строчки в шаблон вписывать?
Код
$regex1 = "#{link title=([_0-9A-Za-zА-яа-яЁё](.*?))}#s";
$regex2 = "#{/link}#s";
$link = preg_replace($regex2, '', (preg_replace($regex1, '', $matches[0])));
$html .= '<noindex><a href="'.$link.'" target="blank">'.$matches[1].'</a></noindex>';
И почему то у меня в главном файле 4 строчки всего  но очень длинные. Я через блокнот открываю
*

ELLE

  • Глобальный модератор
  • 4506
  • 893 / 0
Re: Как закрыть ссылку в материале? Noindex
« Ответ #15 : 30.10.2011, 15:14:50 »
NightGuard написал же куда надо вставлять
Цитировать
в районе 68 строки файл - pbspoiler.php
*

lost83

  • Захожу иногда
  • 91
  • 2 / 0
Re: Как закрыть ссылку в материале? Noindex
« Ответ #16 : 30.10.2011, 15:21:33 »
NightGuard написал же куда надо вставлять

Да я понял куда прописывать только не понял все 4 строчки которые он написал вставлять или он уже в этот код что то дописал?
Код
$regex1 = "#{link title=([_0-9A-Za-zА-яа-яЁё](.*?))}#s";
$regex2 = "#{/link}#s";
$link = preg_replace($regex2, '', (preg_replace($regex1, '', $matches[0])));
$html .= '<noindex><a href="'.$link.'" target="blank">'.$matches[1].'</a></noindex>';



Подскажите куда именно? вот район 68 строки
Код
58 }
60
61
62   function pb_spoiler_replacer ( &$matches )
63 {
64  if (!$this->pbspoiler_count)
65     $this->add2header();
66  $this->pbspoiler_count++;
67 $jstype = $this->params->get( 'jstype', 1 );
68 $html = '';
69 $regex1 = "#{spoiler title=([_0-9A-Za-zРђ-СЏР°-СЏРЃС‘](.*?))}#s";
70 $regex2 = "#{/spoiler}#s";
71 $spoilertext = preg_replace($regex2, '', (preg_replace($regex1, '', $matches[0])));
72    $html .= '<div class="pbspoiler"><div><div class="pbspoiler_title">'
73           .$matches[1].'</div><div class="pbspoiler_body">'
74            .$spoilertext.'</div></div></div>';
75       return $html;
76 }
« Последнее редактирование: 05.11.2011, 13:05:39 от skai »
*

NightGuard

  • Живу я здесь
  • 2927
  • 378 / 7
  • вжжж-вжжж
Re: Как закрыть ссылку в материале? Noindex
« Ответ #17 : 30.10.2011, 15:53:55 »
Весь смысл именно в том, чтобы в админке была не ссылка, а конструкция {link title=Заголовок}Ссылка{/link}, на фронте мы эту конструкцию обрабатываем плагином и на выходе получаем нужную нам ссылку.

Вот этим:
Код: php
$regex1 = "#{link title=([_0-9A-Za-zА-яа-яЁё](.*?))}#s";
$regex2 = "#{/link}#s";
$link = preg_replace($regex2, '', (preg_replace($regex1, '', $matches[0])));
$html .= '<noindex><a href="'.$link.'" target="blank">'.$matches[1].'</a></noindex>';

Заменить нужно то, что у вас находится в 69-74 строках.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма
*

lost83

  • Захожу иногда
  • 91
  • 2 / 0
Re: Как закрыть ссылку в материале? Noindex
« Ответ #18 : 30.10.2011, 15:56:15 »
Что то все запуталось
Скажу что я сделал а вы посмотрите правильно или нет
Вот так я прописал код


Код
}


    function pb_spoiler_replacer ( &$matches )

    {
  if (!$this->pbspoiler_count)
     $this->add2header();
  $this->pbspoiler_count++;
     
$jstype = $this->params->get( 'jstype', 1 );
$html = '';
$regex1 = "#{link title=([_0-9A-Za-zА-яа-яЁё](.*?))}#s";
$regex2 = "#{/link}#s";
$link = preg_replace($regex2, '', (preg_replace($regex1, '', $matches[0])));
$html .= '<noindex><a href="'.$link.'" target="blank">'.$matches[1].'</a></noindex>';
            .$matches[1].'</div><div class="pbspoiler_body">'
            .$spoilertext.'</div></div></div>';
        return $html;
}

В плагине кнопки я вставил вот так



Вот что получается на сайте

« Последнее редактирование: 30.10.2011, 15:59:25 от lost83 »
*

NightGuard

  • Живу я здесь
  • 2927
  • 378 / 7
  • вжжж-вжжж
Re: Как закрыть ссылку в материале? Noindex
« Ответ #19 : 30.10.2011, 16:04:04 »
А плагины то включили?


1. Какую версию плагина скачали.
2. Какая версия движка?
3. Включили плагин или нет?


Так я и не понял, включилось или нет...
« Последнее редактирование: 05.11.2011, 13:04:37 от skai »
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма
*

lost83

  • Захожу иногда
  • 91
  • 2 / 0
Re: Как закрыть ссылку в материале? Noindex
« Ответ #20 : 30.10.2011, 16:33:06 »
Скачивал по твоим прямым ссылкам которые ты давал
pb_spoiler_plg_1.1.2.zip
pb_spoiler_btn.zip
Включил
версия 1.5.7
а что ставить вместо Spoiler? ставил link всё осталось так же.
« Последнее редактирование: 30.10.2011, 16:37:30 от lost83 »
*

NightGuard

  • Живу я здесь
  • 2927
  • 378 / 7
  • вжжж-вжжж
Re: Как закрыть ссылку в материале? Noindex
« Ответ #21 : 30.10.2011, 16:48:47 »
Сейчас кое-что закончу - перепишу весь кусок.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма
*

reasons

  • Захожу иногда
  • 382
  • 6 / 0
  • http://dehost.biz
Re: Как закрыть ссылку в материале? Noindex
« Ответ #22 : 30.10.2011, 17:03:36 »
я думаю проще в редакторе делать без плагинов, если редактор сохраняет съедая код, то надо переходить в редакторе в режим HTML и сохранять материал в этом же режиме не переходя в режим форматирования. у меня тоже код ест, но я вот так делаю
*

lost83

  • Захожу иногда
  • 91
  • 2 / 0
Re: Как закрыть ссылку в материале? Noindex
« Ответ #23 : 30.10.2011, 17:29:39 »
я думаю проще в редакторе делать без плагинов, если редактор сохраняет съедая код, то надо переходить в редакторе в режим HTML и сохранять материал в этом же режиме не переходя в режим форматирования. у меня тоже код ест, но я вот так делаю
Ну мне все равно как главное , чтобы роботы ссылки не видели, опиши подробнее свое предложение пожалуйста.



Цитировать
:) поддерживаю))
Но NightGuard легких путей не ищет))
NightGuard он единственный который говорил , что делать...
« Последнее редактирование: 05.11.2011, 13:06:24 от skai »
*

reasons

  • Захожу иногда
  • 382
  • 6 / 0
  • http://dehost.biz
Re: Как закрыть ссылку в материале? Noindex
« Ответ #24 : 30.10.2011, 17:46:16 »
Цитировать
В каждом материале стоит ссылка на скачивание с letitbit
<div align="center">  <a href="Ссылка" target="blank">Скачать </a> </div>

открой редактор в режиме HTML и напиши
<noindex><div align="center">  <a href="Ссылка" target="blank" rel="nofollow">Скачать </a> </div></noindex>


после того как напишеш сохраняй материал не переходя в обычный режим в редакторе

p.s. как режим HTML включать в редакторе знаешь?
« Последнее редактирование: 30.10.2011, 17:50:04 от reasons »
*

lost83

  • Захожу иногда
  • 91
  • 2 / 0
Re: Как закрыть ссылку в материале? Noindex
« Ответ #25 : 30.10.2011, 18:06:33 »
открой редактор в режиме HTML и напиши
<noindex><div align="center">  <a href="Ссылка" target="blank" rel="nofollow">Скачать </a> </div></noindex>


после того как напишеш сохраняй материал не переходя в обычный режим в редакторе

p.s. как режим HTML включать в редакторе знаешь?

Видимо нет я ссылки вставляю вот так:
Спойлер
[свернуть]

Так не получается ссылка все равно видна
Объясни пожалуйста
« Последнее редактирование: 05.11.2011, 13:07:49 от skai »
*

lost83

  • Захожу иногда
  • 91
  • 2 / 0
Re: Как закрыть ссылку в материале? Noindex
« Ответ #26 : 30.10.2011, 18:25:27 »
Это окошко открывается после нажатия этой кнопочки




Но ссылка видна проверяю через сайт optimizatorsaita
Спойлер
[свернуть]
*

NightGuard

  • Живу я здесь
  • 2927
  • 378 / 7
  • вжжж-вжжж
Re: Как закрыть ссылку в материале? Noindex
« Ответ #27 : 30.10.2011, 18:35:02 »
reasons, в голову не только едят! Да-да! Как мне клиенту объяснять что вот он напечатает сейчас в исходнике ссылку, а перед этим отключит редактор? Вот честно - головой думайте. Я предложил вариант одной кнопки, с ним разберется даже блондинка-секретутка.

Так, почти закончил, сейчас гляну что к чему.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма
*

era

  • Администратор
  • 1588
  • 392 / 5
  • В туалете лучше быть пользователем, чем админом.
Re: Как закрыть ссылку в материале? Noindex
« Ответ #28 : 30.10.2011, 18:40:45 »
господа, я-бы мог сейчас сматеритсья, но воздержусь.
качаете мой плагин и публикуете его. всё. лишнего геммороя любители ))
*

NightGuard

  • Живу я здесь
  • 2927
  • 378 / 7
  • вжжж-вжжж
Re: Как закрыть ссылку в материале? Noindex
« Ответ #29 : 30.10.2011, 18:48:48 »
Вот (в теории должно работать, у меня движка 1.5 нет под рукой):
Код: php
<?php
/**
* @version 1.1.2 from Beliyadm
* @copyright Copyright (C) 2008 - 2009 Open Source Matters. All rights reserved.
*/
// no direct access
defined( '_JEXEC' ) or die( 'Ïðÿìîé äîñòóï çàïðåùåí' );
//register events
$mainframe->registerEvent('onPrepareContent', 'pb_spoiler');
//$plugin =& JPluginHelper::getPlugin('content', 'pb_spoiler');

function pb_spoiler_css()
{
global $mainframe;
$config = & JFactory::getConfig();
$plugin =& JPluginHelper::getPlugin('content', 'pb_spoiler');
$pluginParams = new JParameter( $plugin->params );
$jsjquery = $pluginParams->get('jsjquery', 1);
$jsshow = $pluginParams->get('jsshow', 1);
$jstype = $pluginParams->get('jstype', 1);
$header = '';

switch ($jstype) {
case '1'; //mootools
break;
case '2'; //jquery
if ($jsjquery == '1') {
  } else {}
break;

}
$mainframe->addCustomHeadTag($header);
}

function pb_spoiler(&$row, &$params)
{
$regex = "#{link(?: title=(([_0-9A-Za-zÀ-ÿà-ÿ¨¸](.*?)))?)?}(.*?){/link}#s";
$row->text = preg_replace_callback( $regex, 'pb_spoiler_replacer', $row->text );
return true;
}

function pb_spoiler_replacer ( &$matches )
{
//$jstype = pb_spoiler_params();
pb_spoiler_css();
$plugin =& JPluginHelper::getPlugin('content', 'pb_spoiler');
$pluginParams = new JParameter( $plugin->params );
$jstype = $pluginParams->get('jstype', 1);
$html = '';
$regex1 = "#{link title=([_0-9A-Za-zÀ-ÿà-ÿ¨¸](.*?))}#s";
$regex2 = "#{/link}#s";
$link = preg_replace($regex2, '', (preg_replace($regex1, '', $matches[0])));

switch ($jstype) {
case '1'; //mootools
$html .= '<noindex><a href="'.$link.'" target="blank">'.$matches[1].'</a></noindex>';
break;
case '2'; //jquery
$html .= '<noindex><a href="'.$link.'" target="blank">'.$matches[1].'</a></noindex>';
break;
}
        return $html;
}

?>

Это файл pb_spoiler.php.

Можно еще половину порезать.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод изображения в материале - как лучше для seo?

Автор yalo

Ответов: 1
Просмотров: 2603
Последний ответ 28.03.2025, 06:29:35
от azm1n
Каким плагином можно закрыть внешние ссылки?

Автор gorbi_U

Ответов: 4
Просмотров: 2682
Последний ответ 25.02.2023, 02:29:35
от olegon
Закрыть страницу со знаком? от индексации

Автор Андрей Нестеров

Ответов: 2
Просмотров: 1306
Последний ответ 28.02.2022, 22:38:44
от Андрей Нестеров
noindex для ссылок на документы?

Автор Игарь

Ответов: 14
Просмотров: 1665
Последний ответ 15.09.2020, 16:57:17
от rsn
Убрать ссылку в Переключателе языков при отсутствии связи

Автор Gerostrat

Ответов: 2
Просмотров: 1680
Последний ответ 25.06.2019, 14:41:30
от Gerostrat