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

ibrogim

  • Осваиваюсь на форуме
  • 16
  • 3 / 0
Никак не могу убрать сабж, подскажите кто встречался пожалуйста.
Хочу чтобы после того как Авторизованный пользователь нажимал "Оформить заказ" сразу выходило checkout.thankyou.php

Есть подозрения что нужно чтото написать в get_final_confirmation.tpl.php
*

Ragivort

  • Завсегдатай
  • 1154
  • 58 / 2
  • Такая Life
а в стандартных настройках шаги покупки не пробовали отключать? И подробнее тогда опишите как происходить заказ должен. А то подозреваю, что вам сюда-http://joomlaforum.ru/index.php/topic,70269.new.html#new
Дозволь мне свершить то добро, которое я способен свершить, теперь, ибо я могу более не вернуться сюда.
*

ibrogim

  • Осваиваюсь на форуме
  • 16
  • 3 / 0
Joomla Версия 1.5.9
VirtueMart 1.1.3 stable
а в стандартных настройках шаг
"Пожалуйста, проверьте введенные данные и подтвердите заказ!"     
Неотключается т.к. чекбокс недоступен

Мне нужно чтобы просто не появлялась страничка подтверждения заказа

*

ibrogim

  • Осваиваюсь на форуме
  • 16
  • 3 / 0
Немогу допереть как сделать... может в файле get_final_confirmation.tpl.php сделать чтобы кнопка сама нажалась?
нехватает мне к сожалению знаний php ((
*

CyDb6a

  • Захожу иногда
  • 124
  • 0 / 0
  • От меня не уйдешь =)
А можно со страницы оформления заказа просто убрать эти надписи?

 
Пожалуйста, проверьте введенные данные и подтвердите заказ!
Адрес доставки:
 ,
Тариф доставки:   
Способ оплаты:

Как это сделать?
*

tigra-uki

  • Давно я тут
  • 565
  • 11 / 0
  • Joom'лiстка
А можно со страницы оформления заказа просто убрать эти надписи?
Пожалуйста, проверьте введенные данные и подтвердите заказ!
Адрес доставки:
 ,
Тариф доставки:   
Способ оплаты:

Как это сделать?
Насколько я смогла понять в get_final_confirmation.tpl.php

1.Адрес доставки:
удаляем
Код
if(!ps_checkout::noShipToNecessary()) {

$db->query("SELECT * FROM #__{vm}_user_info WHERE user_info_id='".strip_tags($_REQUEST['ship_to_info_id'])."'");
$db->next_record();

echo '<tr><td valign="top"><strong>'.$VM_LANG->_('PHPSHOP_ADD_SHIPTO_2'). ":</strong></td>";
echo '<td>';
$dbs = new ps_DB();
$q = "SELECT * FROM #__{vm}_country WHERE country_3_code='".$db->f("country")."'";
$dbs->query($q);
$country_id = $dbs->f("country_id");
$q = "SELECT * FROM #__{vm}_state WHERE country_id=".(int)$country_id." AND state_2_code='".$db->f("state")."'";
$dbs->query($q);
$state_name = $dbs->f("state_name");
echo vmFormatAddress( array('name' => $db->f("first_name")." ".$db->f("last_name"),
        'address_1' => $db->f("address_1"),
        'address_2' => $db->f("address_2"),
        'state' => $db->f("state"),
        'state_name' => $state_name,
        'zip' => $db->f("zip"),
        'city' => $db->f("city"),
        'country' => $db->f('country')
        ), true );

echo "</td></tr>";
}

2.Тариф доставки
удаляем:

Код
if(!ps_checkout::noShippingMethodNecessary()) {

echo '<tr><td valign="top"><strong>'.$VM_LANG->_('PHPSHOP_INFO_MSG_SHIPPING_METHOD'). ":</strong></td>";
$rate_details = explode( "|", $shipping_rate_id );
echo '<td>';
foreach( $rate_details as $k => $v ) {
// thepisu: old sample data cointaned "&gt;" instead of ">"...
// so we don't have to make safe if "&gt;" is found
if (strpos($v,"&gt;")===false) {
$v = shopMakeHtmlSafe($v);
}
if( $k == 3 ) {
//echo $CURRENCY_DISPLAY->getFullValue( $v )."; ";
} elseif( $k > 0 && $k < 4) {
echo $v.'; ';
}
}
echo "</td></tr>";
}

3. Способ оплаты
удаляем
Код
unset( $row );
if( !isset($order_total) || $order_total > 0.00 ) {
$payment_method_id = vmRequest::getInt( 'payment_method_id' );
if ($payment_method_id) { // added by JK to disable showing of payment method when there is no payment method.

$db->query("SELECT payment_method_id, payment_method_name FROM #__{vm}_payment_method WHERE payment_method_id='$payment_method_id'");
$db->next_record();
echo '<tr><td valign="top"><strong>'.$VM_LANG->_('PHPSHOP_ORDER_PRINT_PAYMENT_LBL'). ":</strong></td>";
echo '<td>';
echo $db->f("payment_method_name");
echo "</td></tr>";
} // closing payment method check by JK
}

4.Чтобы убрать фразу "Пожалуйста, проверьте введенные данные и подтвердите заказ!"
удаляем:
Код
$varname = 'PHPSHOP_CHECKOUT_MSG_' . CHECK_OUT_GET_FINAL_CONFIRMATION;
echo '<h4>'. $VM_LANG->_($varname). '</h4>'; //h5 tag changed to h4 tag by JK
$db = new ps_DB();

Возможно где-то ошиблась - проверяйте  ::)
« Последнее редактирование: 02.03.2012, 19:43:50 от tigra-uki »
Слишком сконцентрированное внимание необходимо разбавлять действием.
*

fobos-net

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
А как сделать покупку сразу после регистрации. Т.Е без подтверждения заказа, ввел данные, нажал регистрация и все?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка: Please select a Payment Method - при оформлении заказа

Автор Nessy74

Ответов: 0
Просмотров: 1428
Последний ответ 31.12.2015, 01:43:03
от Nessy74
как убрать из ссылки component/virtuemart/

Автор kpk17

Ответов: 11
Просмотров: 12733
Последний ответ 10.03.2015, 14:29:19
от Kiparus
Не могу убрать форму "Задайте вопрос..." на странице товара

Автор abrodski

Ответов: 1
Просмотров: 1781
Последний ответ 20.05.2014, 14:30:44
от abrodski
Убрать слово "Просмотр" на главной странице

Автор bakyt

Ответов: 2
Просмотров: 1342
Последний ответ 10.06.2013, 10:57:58
от draff
Минимальная сумма заказа в зависимости от группы покупателя

Автор Flomik

Ответов: 2
Просмотров: 2898
Последний ответ 07.05.2013, 13:43:46
от tishkovav