Не срабатывают хуки.

Пытаюсь написать плагин:

<?php

return array(
    'name' => 'SentOrderLetter',
	'description' => 'Отправка письма заказчику после совершения заказа',
    'img'  => 'img/letterorder.png',
	'handlers' => array(
      'frontend_product' => 'orderActionCreate',
    ),
);
<?php

class shopSentOrderLetterPlugin extends shopPlugin
{
    public function orderActionCreate()
    {

		return "<p>something</p>";
    }
}

Всё вроде бы верно, но html почему то не выводится, если пробовать из шаблона к плагину обратиться - всё в порядке. Но на хук он не реагирует ни как. В чем может быть проблема?

2 ответа

  • 1
    Syrnik.com 12 июня 2016 03:56 #

    frontend_product для нескольких разных частей карточки товара позволяет выводить. Там надо массив возвращать, в качестве ключа указать нужное расположение, в качестве значения ваш код

    Описание. Пример в самом низу.

  • 1
    Иван Батуев 13 июня 2016 01:05 #

    Спасибо, я лучше стал понимать как всё работает, но к сожалению не срабатывает почему то. Вроде в шаблоне вызов хуков есть + другие плагины работают. Но конкретно в этом плагине хуки не срабатывают. Думаю я что то всё равно не так делаю, но пока не понимаю что.

    Исправил на это:

    <?php
    
    class shopSentOrderLetterPlugin extends shopPlugin
    {
        public function orderActionCreate()
        {		return array(
    			'menu'      => '<p>something</p>',
    			'cart'      => '<p>something</p>',
    			'block'     => '<p>something</p>',
    			'block_aux' => '<p>something</p>',
    		);
        }
    }


    Но не работает.
    Пути проверил всё вроде бы как надо. Попробовал уже почти все хуки с разными вариантами вывода, даже письмо пробовал отправлять. И если просто к методу обращаться, то всё в порядке, а с хуком - нет. Куда можно посмотреть ещё или почитать что то?

    • +1
      Syrnik.com Syrnik.com 13 июня 2016 02:05 #

      Этот массив только для frontend_product подойдет. Кэш сбрасывали?

      Как вариант --- в теме оформления нет вывода хука.

      • +1
        Иван Батуев Иван Батуев 13 июня 2016 03:04 #

        Всё проверил. Вывод хуков есть:

        		{* @event frontend_product.%plugin_id%.menu *}
        		{foreach $frontend_product as $_}{$_.menu}{/foreach}
        		
        		<!-- plugin hook: 'frontend_product.block_aux' -->
                {* @event frontend_product.%plugin_id%.block_aux *}
                {if !empty($frontend_product)}
                    <div class="aux">
                        {foreach $frontend_product as $_}{$_.block_aux}{/foreach}    
                    </div>
                {/if}
        		
        		<!-- plugin hook: 'frontend_product.cart' -->
                {* @event frontend_product.%plugin_id%.cart *}
                {foreach $frontend_product as $_}{$_.cart}{/foreach}

        Кэш сбросил, результата нет. В шаблоне выводятся комментарии, но реакции нет.

        Попробую ещё раз сделать всё с 0, если другие плагины работают значит, что то у меня не так.

        • +1
          Syrnik.com Syrnik.com 13 июня 2016 03:09 #

          И еще. Это, скорее всего не выйдет

          shopSentOrderLetterPlugin

          Вот так переименуйте:

          shopSentorderletterPlugin
          • +1
            Иван Батуев Иван Батуев 13 июня 2016 13:59 #

            Не знаю точно в чем тут дело, но переименовал плагин в sentletter, убрал все заглавные буквы и order из названия. И название класса сменил тоже. Не понимаю в чем проблема была, но после этого всё заработало. Спасибо за помощь.

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите