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

Bazilio

  • Осваиваюсь на форуме
  • 47
  • 2 / 0
Ну так уменя сейчас есть компонент полностью функциональный. Я и без тех поддержки обойдусь. ;D
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Ну так уменя сейчас есть компонент полностью функциональный. Я и без тех поддержки обойдусь. ;D
))))))))))

Ты не ответил о какой лицензии на PHP шла речь?
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

Bazilio

  • Осваиваюсь на форуме
  • 47
  • 2 / 0

P.S. Не понял о какой лицензии на PHP идет речь?

Обычно во всех шаблонах Joomla внутри идёт лицензия GNU GPL в виде файла LICENSE.txt , а в этом компоненте есть только лицензия в виде файла LICENSE.php. Это лицензия на компонент, так я понял? Почему она в таком формате? Если она на компонент, а она GPL , то идут они лесом.
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Обычно во всех шаблонах Joomla внутри идёт лицензия GNU GPL в виде файла LICENSE.txt , а в этом компоненте есть только лицензия в виде файла LICENSE.php. Это лицензия на компонент, так я понял? Почему она в таком формате? Если она на компонент, а она GPL , то идут они лесом.

А что там внутри?
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

Bazilio

  • Осваиваюсь на форуме
  • 47
  • 2 / 0
GNU GPL 2
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
GNU GPL 2
Это просто текст выводимый средствами PHP.
С чего ты взял что он должен только в формате TXT?
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

Bazilio

  • Осваиваюсь на форуме
  • 47
  • 2 / 0
Это просто текст выводимый средствами PHP.
С чего ты взял что он должен только в формате TXT?

Ну, много чего устанавливал, везде текст. Вот воткнул компонент на шаблон IT Property2 :

По идее должно больше чего вывести. Нет никаких полей, ни страны ни цены ни фига.
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Ну м, много чего устанавливал, везде текст. Вот воткнул компонент на шаблон IT Property2 :

По идее должно больше чего вывести.

Без настройки может и так быть.
Ты ставил QuickStart или чистый шаблон, а потом компонент?
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

Bazilio

  • Осваиваюсь на форуме
  • 47
  • 2 / 0
Я всегда ставлю полный комплект кикстарта, а потом удаляю материалы, меню, модули и т.д. , и сверху устанавливаю компонент.  Так советует один товарищ, якобы у него были проблемы если он ставил чистый шаблон.  Он рекомендует ставить полный функционал, а потом всё чистить.
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Я всегда ставлю полный комплект кикстарта, а потом удаляю материалы, меню, модули и т.д. , и сверху устанавливаю компонент.  Так советует один товарищ, якобы у него были проблемы если он ставил чистый шаблон.  Он рекомендует ставить полный функционал, а потом всё чистить.
Согласен с ним. И дело не в том, что могут быть проблемы, а в том, что для того, чтобы привести шаблон с нуля к похожему на демке, нужно много перелопатить.

Т.е. твой сайт из кикстарта выглядит не так как демо у производителя?
« Последнее редактирование: 31.10.2013, 12:49:30 от alex_a_k »
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

Bazilio

  • Осваиваюсь на форуме
  • 47
  • 2 / 0
Выглядел как надо, я просто всё удалил, и потом установил компонент. А он встал не так как на других шаблонах.

Короче, не встал он нормально. Ничего не показывает толком - только фотки, нет ни цены, ни года постройки ни количества комнат и т.д. При входе в сам объект недвижимости шаблон перестаёт быть адаптивным. Не годится этот компонент для этого шаблона. Кстати на сайте компонента Iproperty (не шаблона) они пишут что их демки сделаны на шаблоне от Рокетов. Я слышал что шаблоны от ICE Тeme кривоваты немного
« Последнее редактирование: 31.10.2013, 06:20:56 от Bazilio »
*

Bazilio

  • Осваиваюсь на форуме
  • 47
  • 2 / 0
Не понимаю как установить модуль, вот что написано:
"mod_prop_list_modded.zip - список недвижимости. Добавлен выбор по типу, русификация и применено несколько фиксов в шаблонах вывода, сделанных уважаемым Huga и описанных в этом посте (ставится просто поверх штатного)."
То есть устанавливаешь сначала стандартный, а потом ещё раз доработаннй?  Это правильно?
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Не понимаю как установить модуль, вот что написано:
"mod_prop_list_modded.zip - список недвижимости. Добавлен выбор по типу, русификация и применено несколько фиксов в шаблонах вывода, сделанных уважаемым Huga и описанных в этом посте (ставится просто поверх штатного)."
То есть устанавливаешь сначала стандартный, а потом ещё раз доработаннй?  Это правильно?
Стандартный ставить не обязательно.
Можно сразу ставить модифицированный. Это просто доработанная копия.
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Изменения в сарых фиксах...
Рекомендую всем проверить соответствие новых рекомендаций в этом посте.
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

dpvms

  • Осваиваюсь на форуме
  • 37
  • 1 / 0

  • Чтобы получить ссылку (либо меню) с фильтром по определенным характеристикам, создаём адрес вида:
    index.php?option=com_properties&view=properties&cid=A&tid=B&lid=C&bedrooms=D
    где в:
    &cid=A, A=id категории
    &tid=B, B=id типа
    &lid=C, C=id города
    &bedrooms=D, D=количество комнат
    (ненужные опции можно убрать)
    &lid можно заменить на &cyid - страна или &sid - район с соответствующими ID.
    Таким образом можно создавать ссылки (или меню) с фильтром по любым указанным характеристикам в любой комбинации.
Создал пункт меню описанным образом с учетом bedrooms (index.php?option=com_properties&view=properties&cid=1&tid=1&bedrooms=1). В результате при переходе по ссылке генерируется заголовок страницы не как в заголовке меню, а название сайта. Не пойму что делать. На сайте автора все заголовки страниц в левом меню генерируются в соответствии с названиями меню... Что делать кто подскажет?
*

Bazilio

  • Осваиваюсь на форуме
  • 47
  • 2 / 0
Стандартный ставить не обязательно.
Можно сразу ставить модифицированный. Это просто доработанная копия.
А если я уже воткнул стандартный, его удалять или как? Или просто поставить модифицированный отдельно?
*

dpvms

  • Осваиваюсь на форуме
  • 37
  • 1 / 0
А если я уже воткнул стандартный, его удалять или как? Или просто поставить модифицированный отдельно?

Так и  так можно. На твой выбор.
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Создал пункт меню описанным образом с учетом bedrooms (index.php?option=com_properties&view=properties&cid=1&tid=1&bedrooms=1). В результате при переходе по ссылке генерируется заголовок страницы не как в заголовке меню, а название сайта. Не пойму что делать. На сайте автора все заголовки страниц в левом меню генерируются в соответствии с названиями меню... Что делать кто подскажет?
Настройте заголовки меню штатными следствами Joomla: Ваш пункт меню-> Параметры отображения страницы -> Заголовок страницы
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Так и  так можно. На твой выбор.
Абсолютно верно. Можно ставить по верху. Он просто перезапишет файлы.
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
В шапку добавлены инструкции по настройке размера картинок (полных и превьюшек).
А так же решение для тех, кому нужно обрабатывать контент сторонними плагинами.
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

dpvms

  • Осваиваюсь на форуме
  • 37
  • 1 / 0
Настройте заголовки меню штатными следствами Joomla: Ваш пункт меню-> Параметры отображения страницы -> Заголовок страницы

 Так не получится. Тип меню - внешняя ссылка. Там нет заголовка страницы.
« Последнее редактирование: 04.11.2013, 01:29:40 от dpvms »
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Так не получится. Тип меню - внешняя ссылка. Там нет заголовка страницы.
Вспомнил, действительно есть такой глюк.
Мне пришлось применять такой костыль - в конце прямых ссылок добавлять &Itemid=NNN, где NNN id пункта меню для отображения.
Т.е. у себя я подставляю просто id продажи или аренды квартир.
Можно предварительно создать скрытое меню со всеми нужными пунктами, а потом обращаться к ним через псевдоним пункта меню или через прямую ссылку c &Itemid=NNN (что по сути монопенисуально), дабы сымитировать активность нужного пункта меню.
Т.е. при таком вызове контент будет выведен тот, который нужен, а активное меню, заголовки и т.д. будут от &Itemid=NNN.
Идея понятна?

P.S. Добавил в шапку.
« Последнее редактирование: 04.11.2013, 05:59:39 от alex_a_k »
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

xucc

  • Новичок
  • 9
  • 0 / 0
Здравствуйте.
Использую этот замечательный компонент.
А так же использую модуль "mod_prop_search" для поиска по базе недвижимости. Пытаюсь сделать кнопку, которая бы скрывала часть полей. Использую код, который представлен ниже (этот код содержится в файле \modules\mod_prop_search\tmpl\vertical.php.) :

Код: javascript
function openbox(id){                                     // kod dobavlen
    display = document.getElementByValue(id).style.display;         
    if(display=='none'){                                             
       document.getElementByValue(id).style.display='';
    }else{
       document.getElementByValue(id).style.display='none';
    }
}

Код: php
<div id="AjaxSearchForm">
<input type="hidden" name="cyid" id="cyid" value="<?php echo JRequest::getInt('cyid');?>" />
<input type="hidden" name="sid" id="sid" value="<?php echo JRequest::getInt('sid');?>" />
<input type="hidden" name="lid" id="lid" value="<?php echo JRequest::getInt('lid');?>" />
<input type="hidden" name="cid" id="cid" value="<?php echo JRequest::getInt('cid');?>" />
<input type="hidden" name="tid" id="tid" value="<?php echo JRequest::getInt('tid');?>" />
<input type="hidden" name="bedrooms" id="bedrooms" value="<?php echo JRequest::getInt('bedrooms');?>" />
<input type="hidden" name="bathrooms" id="bathrooms" value="<?php echo JRequest::getInt('bathrooms');?>" />
<input type="hidden" name="garage" id="garage" value="<?php echo JRequest::getInt('garage');?>" />
<input type="hidden" name="minprice" id="minprice" value="<?php echo JRequest::getInt('minprice');?>" />
<input type="hidden" name="maxprice" id="maxprice" value="<?php echo JRequest::getInt('maxprice');?>" />
<input type="hidden" name="minarea" id="minarea" value="<?php echo JRequest::getInt('minarea');?>" />
<input type="hidden" name="maxarea" id="maxarea" value="<?php echo JRequest::getInt('maxarea');?>" />
<input type="hidden" name="minareacov" id="minareacov" value="<?php echo JRequest::getInt('minareacov');?>" />
<input type="hidden" name="maxareacov" id="maxareacov" value="<?php echo JRequest::getInt('maxareacov');?>" />
<input type="hidden" name="e1" id="e1" value="<?php echo JRequest::getInt('e1');?>" />
<input type="hidden" name="e2" id="e2" value="<?php echo JRequest::getInt('e2');?>" />
<input type="hidden" name="e3" id="e3" value="<?php echo JRequest::getInt('e3');?>" />
<input type="hidden" name="e4" id="e4" value="<?php echo JRequest::getInt('e4');?>" />
<input type="hidden" name="e5" id="e5" value="<?php echo JRequest::getInt('e5');?>" />
<input type="hidden" name="e6" id="e6" value="<?php echo JRequest::getInt('e6');?>" />
<input type="hidden" name="e7" id="e7" value="<?php echo JRequest::getInt('e7');?>" />
<input type="hidden" name="e8" id="e8" value="<?php echo JRequest::getInt('e8');?>" />
<input type="hidden" name="e9" id="e9" value="<?php echo JRequest::getInt('e9');?>" />
<input type="hidden" name="e10" id="e10" value="<?php echo JRequest::getInt('e10');?>" />

<input type="submit" value="send" />
<?php
$badchars = array('#','>','<','\\');
$textsearch = trim(str_replace($badchars, '', JRequest::getString('textsearch', null)));
$currency = trim(str_replace($badchars, '', JRequest::getString('currency', null)));
?>
<input type="hidden" name="currency" id="currency" value="<?php echo $currency;?>" />
<input type="text" id="textsearch" name="textsearch" value="<?php echo $textsearch;?>" class="textsearch" />
<?php  ?>
</div><!--AjaxSearchForm-->

<button type="button" class="button buttonsearch" id="buttonSearch" onclick="goSearchAjax();"><?php echo JText::_('Search'); ?></button>

<a onclick="openbox('cyid'); return false">Show</a>  // kod dobavlen
<a onclick="openbox('sid'); return false">Show</a> // kod dobavlen

Этим кодом я хотел скрывать два первых пункта. Но работает лишь для первого пункта. Как скрыть кнопкой (а затем развернуть) второй пункт поиска? Или не только второй, а, скажем, разом второй, третий, четвертый и пятый, к примеру.

P.S. Надеюсь доступно изъяснил :) очень надеюсь на вашу помощь.
« Последнее редактирование: 04.11.2013, 19:59:38 от xucc »
*

dpvms

  • Осваиваюсь на форуме
  • 37
  • 1 / 0
Нас интересует первый вариант. Обзываем этот пункт меню как-то типа "Подробности", "Детали" и т.п. и сохраняем.
Теперь это и будет раздел подробностей объекта. Теперь вы можете выводить в нем любые модули. ))

Можно тут немного подробней, что значит выводить любые модули и каким образом?
*

Bazilio

  • Осваиваюсь на форуме
  • 47
  • 2 / 0
В файле /administrator/components/com_properties/models/forms/product.xml ищем в строкуи меняем в ней type="hidden" на type="text".
Теперь Ref можно вводить самому, а если оставить пустым, то при сохранении он сгенерируется автоматически.

У меня стоит вот так, я ничего не менял:<field name="ref" type="text" label="COM_PROPERTIES_FIELD_REFERENCE_LABEL" description="COM_PROPERTIES_FIELD_REFERENCE_DESC" class="inputbox" size="30" disabled="true"/>

И свою референцию ввести нельзя, поле не активно.
« Последнее редактирование: 07.11.2013, 02:23:13 от Bazilio »
*

desasha

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Привет! Реально сделать внешний вид объекта и изменить шаблон вывода информации не в большую страницу, а по блокам, по вкладкам как здесь? http://iproperty.thethinkery.net/property/sample-property-title-1.html
Подскажите пожалуйста, как это сделать. Заранее спасибо!))
*

dpvms

  • Осваиваюсь на форуме
  • 37
  • 1 / 0
Привет! Реально сделать внешний вид объекта и изменить шаблон вывода информации не в большую страницу, а по блокам, по вкладкам как здесь? http://iproperty.thethinkery.net/property/sample-property-title-1.html
Подскажите пожалуйста, как это сделать. Заранее спасибо!))
В принципе, легко. Сделать сайт на Iproperty. У меня реализовано: http://restate.kiev.ua
*

vadimiopc

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Помогите пожалуйста с картой. в админке она не отображается когда нажимаешь добавить координаты. также готов заплатить за Яндекс карты, только не получается личное сообщение отправить
*

karasj

  • Новичок
  • 4
  • 0 / 0
Кириллица в модуле поиска
« Ответ #688 : 10.11.2013, 17:02:34 »
Не отображается.
Файл ru-RU.mod_prop_search.ini в кодировке UTF-8 (без BOM).
Все что латинскими буквами - нормально, кириллица - как на скриншоте.
Подскажите, пожалуйста, как это исправить.

*

dpvms

  • Осваиваюсь на форуме
  • 37
  • 1 / 0
Не отображается.
Файл ru-RU.mod_prop_search.ini в кодировке UTF-8 (без BOM).
Все что латинскими буквами - нормально, кириллица - как на скриншоте.
Подскажите, пожалуйста, как это исправить.

Попробуй кодировку на сервере поменять на UTF-8
« Последнее редактирование: 11.11.2013, 12:31:22 от dpvms »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Анплюс Недвижимость: Готовый сайт для агентства недвижимости

Автор howks

Ответов: 40
Просмотров: 16425
Последний ответ 27.08.2025, 14:05:29
от howks
PPF 3 – компонент для продажи электронных товаров

Автор varX

Ответов: 0
Просмотров: 3039
Последний ответ 20.08.2022, 20:22:19
от varX
Импорт YML в Joomla 4

Автор Вадим НН

Ответов: 6
Просмотров: 3532
Последний ответ 11.07.2022, 11:35:15
от Вадим НН
Компонент недвижимости OS Property

Автор Ingener

Ответов: 110
Просмотров: 42178
Последний ответ 01.08.2021, 02:02:37
от cepseu
Систему биллинга для Joomla

Автор timofe

Ответов: 0
Просмотров: 3386
Последний ответ 23.03.2021, 14:00:52
от timofe