Как $wa->shop->products("id/23,1,8") вызвать в бэкэнде? Есть решение

Если нужно получить список товаров по айди, в шаблоне можно воспользоваться функцией:

{$products=$wa->shop->products("id/23,1,8")}

Как-то подобно можно получить товары, в функциях файла /wa-apps/blog/lib/classes/blogCustom.class.php  ?

Или только есть вариант изобретать sql запросы с помощью $model = new blogBlogModel(); $model->query("SELECT ....  

1 ответ

  • 2
    Eugen Nichikov Партнер-разработчик 16 января 2020 10:34 # Решение

    Если в PHP в Блоге (/wa-apps/blog/lib/classes/blogCustom.class.php), то

    $wa = wa('shop');
    $collection = new shopProductsCollection("id/23,1,8");
    $products = $collection->getProducts('*', 0, 100);

    Если очень хочется использовать те же методы, что и в {$wa->shop}, то так

    $wa = wa('shop');
    $helper = new shopViewHelper($wa);
    $products = $helper->products("id/23,1,8");

    Порядок оба метода, вроде, не сохраняют, поэтому "id/23,1,8" или "id/1,8,23" - без разницы.

    • +1
      Апельсин Апельсин 16 января 2020 12:20 #

      Спасибо!! еще пара вопросов.

      1. 

      $collection->getProducts('*', 0, 100)

      Что означают параметры функции? 


      2. Возможно ли как-то подключить файл шаблона? Который например лежит в папке темы блога, и называется 'products.html'

      Т.е. в функциях файла blogCustom.class.php я получаю массив с товарами, затем подключается файл 'products.html', и в итоге return готовую html строку.

      • +3

        1. По порядку: поля товара, offset, limit.

        2. При большом желании можно, но оставлю вам на самостоятельное изучение ;) Нужно подключить 

        $view = wa('shop')->getView();

        А дальше уже найти и отрендерить ваш шаблон.

        Но меня терзают смутные сомнения, что задача составлена некорректно. И, если вы хотите вывести товары в посте блога, есть готовые плагины. Ну или можно сделать подобный блок в "Сайт" - "Блоки"

        А в пост уже вставлять блок.

        • +1
          Апельсин Апельсин 16 января 2020 15:22 #

          Задача сделать шорт-код(с параметрами) вывода нужных товаров в тексте поста блога. В принципе задачу решил, только хочется сделать это по красивее :)

          return $view->fetch(dirname(dirname(dirname(__FILE__))).'/themes/themename/products.html');

          Последняя проблема. Не могу понять как определить путь к текущей теме. Или путь к используемой теме приложения.


          Про то что в блоки можно передавать переменные это открытие))

          Но там еще нужно проводить манипуляции с массивом товаров, через смарти не удобно очень.

        • +2
          replicant replicant 16 января 2020 17:40 #

          У себя использую вот такой блок и похожий способ

          {$wa->block("shop.products", ['ids' => "id/1322,1339,1335"])} - это я вставляю в Блог или страницу или ещё куда-нибудь, перечисляя id нужных мне товаров
          
          {include file="`$wa->shop->themePath('id_темы')`имя_шаблона_товарного_листа.html" products=$wa->shop->products($ids)} - а это содержимое блока shop.products, который вызываю первой строкой и которому передаю список товаров

          В Блогах работает отлично.

          • +1
            Апельсин Апельсин 16 января 2020 17:47 #

            Ну да, как вариант. Только без сортировки)

            И при переключении визуальный редактор\HTML значек -> ломается - исправляется на хтмл-код символа.

            Или както можно отключить исправление подобного кода?

            • +1
              replicant replicant 16 января 2020 18:07 #

              Вот прям и без сортировки? :) Она у меня ключиком запускается специальным и работает где угодно и как угодно (в поиске, в тегах, в избранном, в просмотренных, в корзине, в личных товарных списках), а не только банально в категориях. Когда надо раз и готово. Вот скриншот из записи блога с включенной сортировкой добавленных в пост товаров. В адресную строку к записи блога добавляется что-то типа /blog/2019-12-28/?sort=price&order=desc при активации сортировки товаров в этой записи.

              • +2
                Апельсин Апельсин 16 января 2020 18:25 #

                Немного не правильно выразился) Просто у меня задача чтобы сортировалось именно в указанном порядке при перечислении айдишников товаров :)

                А настраиваемая сортировка, в моем случае, совсем ни к чему, так как там всего 4 товара.

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

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