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

semo777

  • Захожу иногда
  • 76
  • 0 / 0
Все ок! Большое спс! еще +
*

asdf27

  • Захожу иногда
  • 120
  • 7 / 0
Спасибо! Красавчик :)

Народ, дайте ссылку как пофиксить двойную подачу объявления (несколько раз "Отправить")
*

alexey664655

  • Осваиваюсь на форуме
  • 32
  • 0 / 1
Установил, в админки все работает, а на сайте появилась надпись (Введите текст с картинки ) и пол, куда этот текст вводить, а сомой картинки нету.
КТО МНЕ ОБЪЯСНИТ почему нет отображается на сайте картинка.
У меня AdsManager 2.6.5 Joomla 2.5
« Последнее редактирование: 08.03.2012, 19:03:04 от alexey664655 »
*

Shelby

  • Захожу иногда
  • 84
  • 1 / 0
Установил, в админки все работает, а на сайте появилась надпись (Введите текст с картинки ) и пол, куда этот текст вводить, а сомой картинки нету.
КТО МНЕ ОБЪЯСНИТ почему нет отображается на сайте картинка.
У меня AdsManager 2.6.5 Joomla 2.5

Вы пропустили:
2. распаковываем архив, файл kcaptcha.php и папки fonts, util кладём по следующему пути \components\com_adsmanager\helpers\
*

alexey664655

  • Осваиваюсь на форуме
  • 32
  • 0 / 1
Вы пропустили:
2. распаковываем архив, файл kcaptcha.php и папки fonts, util кладём по следующему пути \components\com_adsmanager\helpers\
Нет, причина не в этом была. Может, кому и поможет. Сайт у меня на локале лежал  и с этим бывают, как я понял,  иногда проблемы с выводом картинок . Залил на хост все заработало.
*

ag777

  • Захожу иногда
  • 81
  • 0 / 1
Подскажите в чем может быть проблема, не отображается картинка CAPTCHA не в админке, не на сайте.

Капчу прописал в компоненте правильно, дважды перепроверил. На хосте стоит библиотека FreeType, другие CAPTCHA работают. Единственное при импорте файла конфигурации в БД выводит сообщение #1060 - Duplicate column name 'use_captcha', но при этом в БД таблицы конфигурации CAPTCHA прописываются.

Еще одна проблема, не сохраняются настройки в админке связаные с капчей. :'(
« Последнее редактирование: 28.04.2012, 00:08:04 от ag777 »
*

wolf34

  • Захожу иногда
  • 127
  • 0 / 0
Аналогичная проблема. все правильно поставил, а не работает..
*

SCAUSER

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Если CAPTCHA не отображается, то скорее всего из-за SEF компонента, попробуйте отключить для AdsManager и проверить
*

perperik

  • Осваиваюсь на форуме
  • 19
  • 3 / 0
на версии 2.7  алгоритм работает, только если неправильные символы вводишь - ошибку не выдает. что делать??

наверно в пункте 5
так! картинку мы вывели... осталось написать функцию проверки при сохранении...
в этом же файле ищем такие строки (примерно 114-124)

var url = "<?php echo $this->baseurl; ?>/index.php?option=com_adsmanager&task=getresultcaptchacheck&no_html=1&captcha_keystring="+mfrm.keystring.value;
« Последнее редактирование: 04.06.2012, 20:20:51 от perperik »
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
получилось к сообщению прилепить
Подскажите как?
*

Lirik

  • Захожу иногда
  • 134
  • 1 / 1
А кто знает, что это за ошибка, и где ее искать: Ошибка
AdsmanagerTableContents::store failed - Unknown column 'expiration_date' in 'field list' SQL=INSERT INTO `jos_adsmanager_ads` ( `id`,`userid`,`ad_headline`,`ad_text`,`email`,`date_created`,`expiration_date`,`published` ) VALUES ( '','63','проверка','проверка проверка','dr.Rassokhin@yandex.ru','2012-06-26 08:52:53','2013-06-26','1' )
Подскажите пожалуйста, уже вторую неделю мучаюсь.
*

Lirik

  • Захожу иногда
  • 134
  • 1 / 1
Забыл сказать, она возникает, когда пытаюсь добавить объявление.
*

alexdolg1967

  • Осваиваюсь на форуме
  • 23
  • 0 / 0
Огромнейшее спасибо за проделанную работу - всё отлично полукчилось
*

meiram077

  • Захожу иногда
  • 225
  • 0 / 0
Всем Привет! Я непойму эту фразу никак:
"в phpmyadmin выполняем скрипт импортом файла"!
Как это делается? Пожалуста просьба именно этот пункт поподробнее кто нибудь пропишите наконец..
Так я все сделал как в инструкции но именно это не пойму.
Как это импортом файла? И где именно этот  phpmyadmin?
Спасибо если взяли во внимание!
« Последнее редактирование: 19.10.2012, 11:30:52 от meiram077 »
*

meiram077

  • Захожу иногда
  • 225
  • 0 / 0
Хорошо я оплачу за услугу wmr/wmz не важно! только откликнитесь кто нибудь..... :D
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
Всем Привет! Я непойму эту фразу никак:
"в phpmyadmin выполняем скрипт импортом файла"!
Как это делается? Пожалуста просьба именно этот пункт поподробнее кто нибудь пропишите наконец..
Так я все сделал как в инструкции но именно это не пойму.
Как это импортом файла? И где именно этот  phpmyadmin?
Спасибо если взяли во внимание!
Делаете на локалке или на хостинге?
*

meiram077

  • Захожу иногда
  • 225
  • 0 / 0
 С импортом я разобрался Благодаря Alexu89! Спасибо ему Большое за время, внимаине и ценную информацию!
 Потом проблемка была... В админке все отменно работает, но на сайте ни текста (т.е. вместо текста квадратики) ни картинки!...
  Я решил ее частично!
  Как указал semo777 вместо этого:
<td><?php echo '<img src="'.$this->baseurl.'index.php?option=com_adsmanager&task=getcaptcha" onClick="this.src=this.src+\'&\'+Math.random();" title="Нажмите для обновления" style="cursor:pointer">'; ?></td>

  я вставил это:
<td><?php echo '<img src="'.$this->baseurl.'/index.php?option=com_adsmanager&task=getcaptcha" onClick="this.src=this.src+\'&\'+Math.random();" title="Нажмите для обновления" style="cursor:pointer">'; ?></td>

 Т.е. вставил слэш (/) во втором случае перед ..........baseurl.'
 После этого картинка появилась на сайте! )
 Но с квадратиками вопрос.... Где править-то?
« Последнее редактирование: 19.10.2012, 17:47:19 от meiram077 »
*

meiram077

  • Захожу иногда
  • 225
  • 0 / 0
  Где править Квадратики (������� ����� � ��������) перед капчей?
  Должно быть написано (Введите текст с картинки) - Это единственное что я понял!
  При наведении курсора на картинку выдает такой же ляп!
« Последнее редактирование: 19.10.2012, 19:01:22 от meiram077 »
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
 Где править Квадратики (������� ����� � ��������) перед капчей?
  Должно быть написано (Введите текст с картинки) - Это единственное что я понял!
  При наведении курсора на картинку выдает такой же ляп!

В \components\com_adsmanager\views\edit\tmpl\default.php
Найтите <td>Введите текст с картинки</td>
и замените на <td>Введите текст СЃ картинки</td>
*

meiram077

  • Захожу иногда
  • 225
  • 0 / 0
  Тоже интересно!





« Последнее редактирование: 20.10.2012, 13:12:12 от meiram077 »
*

meiram077

  • Захожу иногда
  • 225
  • 0 / 0
Спасибо за вариант! Не проверял, так как решено другим способом!...
  - В Notepad++ открываем файл ...components\com_adsmanager\views\edit\tmpl\default.php
  - Во вкладке "Кодировки" выбираем Преобразовать в UTF-8 (без BOM) (Не кодировать, а преобразовать)
 Весьма странно, но до этого я перед тем как закрывать файл после его правки выполнял Кодировать в UTF-8 (без BOM)
 Так то все нормально было, сама картинка показывала в обоих режимах. Влияло именно на текст.
  - Сохраняем, закрываем. Победа! (Не без помощи Alexa89)
*

Grendy

  • Захожу иногда
  • 247
  • 26 / 0
Спасибо за вариант! Не проверял, так как решено другим способом!...
  - В Notepad++ открываем файл ...components\com_adsmanager\views\edit\tmpl\default.php
  - Во вкладке "Кодировки" выбираем Преобразовать в UTF-8 (без BOM) (Не кодировать, а преобразовать)
 Весьма странно, но до этого я перед тем как закрывать файл после его правки выполнял Кодировать в UTF-8 (без BOM)
 Так то все нормально было, сама картинка показывала в обоих режимах. Влияло именно на текст.
  - Сохраняем, закрываем. Победа! (Не без помощи Alexa89)

Вы бы даже удостоились нобелевской премии, наверное, если бы кодировка ещё и на картинки влияла... Заглядывайте в Википедию хотя бы время от времени, если такие элементарные вопросы не ясны.

Впредь лучше пользоваться хорошим редактором, который обрабатывает файл в той кодировке, в которой он создан, а не блокнотом. Тем более в windows... "Квадратиков" в таком случае точно не появится :)
Плюс в репутацию больше говорит о благодарности, чем слово "Спасибо" в теме, которую повторно, возможно, никогда уже не посетишь.
*

maxor

  • Осваиваюсь на форуме
  • 27
  • 5 / 0
Никто не сталкивался?
100% всё сделал, как написано. SEF отключил даже. Нет картинки, хоть убей.

Сам решил случайно... Сходил в БД, открыл таблицу для редактирования, выключил отображение подписи.
« Последнее редактирование: 24.10.2012, 01:43:02 от maxor »
*

meiram077

  • Захожу иногда
  • 225
  • 0 / 0
Я бы точно не догадался!
*

fortrain

  • Новичок
  • 9
  • 0 / 0
Спамеры   одалели      CAPTCHA не помогает


Возможно добавить к капчу русские буквы      ?
*

max_1985

  • Давно я тут
  • 611
  • 56 / 0
Спамеры   одалели      CAPTCHA не помогает


Возможно добавить к капчу русские буквы      ?
не в том дело, просто у спамера отключены javaskipt в браузере и он может подавать объявы хоть не заполняя обязательные поля
*

fortrain

  • Новичок
  • 9
  • 0 / 0
Вставил  в конце  \components\com_adsmanager\views\edit\tmpl\default.php


<noscript>
<style>
HTML, BODY {position: fixed; background: #000 url('')!important;}
.bigproblem {position: absolute; left:0; top:0; botom:0; right:0; z-index: 15; height:100%;width:100%; background: #000;}
#scriptmsg {position: fixed; top:47%; left:40%; right: 40%; bottom:47%; z-index: 16; width:20%; height:6%; background: #fff; color:red; padding:1%; text-align:center; border: 3px solid #ccc;}
#title-logo-tdr, .chatAds {position: fixed; top:3px; right:3px; z-index:17;}
</style>



<div class="bigproblem"><div id="scriptmsg">У вас отключён javascript. Вы не сможете добавлять объявления с отключённым javascript</div></div>
</noscript>


Должно  отключать отображение для тех у кого выключен javascript       Может кто сможет подсказать более правильное решение
« Последнее редактирование: 25.10.2012, 22:44:33 от fortrain »
*

LS_D

  • Захожу иногда
  • 155
  • 16 / 0
Для 2.7 все тоже самое, кроме функции проверки.

Замените на:

var url = "<?php echo $this->baseurl; ?>/index.php?option=com_adsmanager&task=getresultcaptchacheck&no_html=1&captcha_keystring="+mfrm.keystring.value;
   var req = new XMLHttpRequest;
   req.open("GET", url, true);
   req.send(null);
   req.onreadystatechange = function(){
      if (req.readyState == 4) {
         if (req.status == 200) {
            if(req.responseText=="1") {
               errorMSG += 'Проверочный код : Неверно введены символы с картинки! \n';
               mfrm.keystring.style.background = "#c0fafc";
               iserror=1;
            }
            if(iserror==1) {
               alert(errorMSG);
            } else {
       var uploader = jQ('#uploader').pluploadQueue();
         
        // Files in queue upload them first
        if (uploader.files.length > 0) {
            // When all files are uploaded submit form
            uploader.bind('StateChanged', function() {
                if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {
                   //Little hack to be able to return the selected_cats
                  <?php if ($this->nbcats > 1) { ?>
                  var srcList = eval( 'form.selected_cats' );
                  srcList.name = "selected_cats[]";
                  <?php } ?>
                  jQ('#adminForm')[0].submit();
                }
            });
                
            uploader.start();
            return false;
        }  
           
      //Little hack to be able to return the selected_cats
      <?php if ($this->nbcats > 1) { ?>
            srcList.name = "selected_cats[]";
            <?php } ?>
               document.adminForm.submit();
               return true;
            }
         }
      }
   }      
return false;
   }
*

RUSEA

  • Осваиваюсь на форуме
  • 45
  • 2 / 0
Всё сделал как написано. открыл форму добавления объявления, показал код. После того как отключил ADSMANAGER_CAPTCHA_SHOW_CREDITS CAPTCHA не показывает картинку. Плюс к этому объявления я могу добавить и без CAPTCHA, то есть даже если я её (капчу, так как не фидно картинки) не введу объявление добавляется...
Alex89 ваша сборка AdsManager 2.6.1 update прекрасная, лёгкая, удобная, но почему у меня при добавлении объявления категория не выпадающий список и вдруг перестала отображаться картинка?
*

dopping

  • Новичок
  • 5
  • 0 / 0
Спасибо! Всё заработало!
Есть ли вариант встроить эту же капчу в форму регистрации?
Заранее спасибо!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено]Дублирования ссылки "объвления" в breadcrumb, в компоненте AdsManager

Автор nicklas

Ответов: 4
Просмотров: 3688
Последний ответ 25.04.2024, 23:13:18
от Rinat abzyi
AdsManager вывод нужных полей по отдельности

Автор klekovkinandrey

Ответов: 2
Просмотров: 14190
Последний ответ 06.04.2024, 09:54:15
от Rinat abzyi
AdsManager загрузка файлов

Автор FlexNL

Ответов: 1
Просмотров: 2940
Последний ответ 21.10.2021, 17:20:09
от khan-alex
AdsManager 2.9.13 Есть ли возможность добавить функцию снять с публикации по мимо редактировать и уд

Автор murovoz

Ответов: 11
Просмотров: 13255
Последний ответ 27.03.2020, 22:39:23
от Pavel
Два компонента AdsManager в одном движке

Автор kaman62

Ответов: 12
Просмотров: 28457
Последний ответ 27.03.2020, 22:32:04
от Pavel