выборка shopmodx

сообственно пытаюсь сделать выборку в shopmodx из каталога самого с id 85 и что то ничего не выводит

{assign var=paramss value=[
                                "limit"  => 100
                                ,"level"    => 2
                                ,"where" => [
                                    "parent" => 85
                                ]
                                  
                               
                            ]}
                            
                            
    {processor action="web/catalog/category/products/getdata"  params=$paramss ns="modxsite" assign=result}

    {* Набиваем через единый шаблон листинга *}
    {include file="shop/catalog/list/fetch.tpl"}

Comments

  1. web/catalog/category/products/getdata — это процессор, который ищет товары в текущей и во всех вложенных категориях. Там надо указывать category_id (в которой будут искаться товары), а не parent, так как при указании parent он должен бы найти товары с разделом-родителем id 85. У этого раздела просто нет дочерних документов вне дочерних категорий.

  2. Выводите ошибки, то есть просто делайте в шаблоне так:

<pre>
{print_r($result)}
</pre>

$result — это если у вас в процессоре assign=result. Если набивается в другую переменную, само собой надо указывать другую переменную. А лучше всего это делать в консоли. Там вы сразу увидите ошибки.

<?php
$modx->startTime = $modx->getMicroTime();
 
print '<pre>';
ini_set('display_errors', 1);
$modx->switchContext('web');
$modx->setLogLevel(3);
$modx->setLogTarget('HTML');
$namespace = 'modxsite';
if(!$response = $modx->runProcessor('web/catalog/category/products/getdata',
array(), array(
'processors_path' => $modx->getObject('modNamespace', $namespace)->getCorePath().'processors/',
))){
print "Не удалось выполнить процессор";
return;
}
$memory = round(memory_get_usage(true)/1024/1024, 4).' Mb';
print "<div>Memory: {$memory}</div>";
$totalTime= ($modx->getMicroTime() - $modx->startTime);
$queryTime= $modx->queryTime;
$queryTime= sprintf("%2.4f s", $queryTime);
$queries= isset ($modx->executedQueries) ? $modx->executedQueries : 0;
$totalTime= sprintf("%2.4f s", $totalTime);
$phpTime= $totalTime - $queryTime;
$phpTime= sprintf("%2.4f s", $phpTime);
print "<div>TotalTime: {$totalTime}</div>";
 
print_r($response->getResponse());

А ошибка следующая:

Array
(
    [success] =>; 
    [message] => Не была указана категория
    [total] => 0
    [errors] => Array
        (
        )

    [object] => Array
        (
        )

)
  1. «level» => 2 Такого параметра в процессоре нет.

простите но все таки не понял — как записать то верно? мне надо выбрать все товары из дочерних от 85 категории

{assign var=paramss value=[
      "limit"  => 100
      ,"category_id"   => 85
]}
{processor action="web/catalog/category/products/getdata"  params=$paramss ns="modxsite" assign=result}

Но если вам просто нужны все товары, то правильней просто получать товары, а не искать их в подкатегориях.

{assign var=paramss value=[
      "limit"  => 100
]}
{processor action="web/catalog/products/getdata"  params=$paramss ns="modxsite" assign=result}

День добрый.

Мне нужно на странице товара в блоке вывести 4 дочерних товара из 174 категории (это сопутствующие товары).

Делаю это так:

{assign var=paramss value=[
      "limit"  => 4 
      ,"category_id"   => 174 
]}
{processor action="web/catalog/category/products/getdata"  params=$paramss ns="modxsite" assign=result}
{include file="shop/products/list/packet.tpl"}

В итоге получаю один и именно тот на странице которого нахожусь.

Если делаю так:

    {assign var=params value=[
        "where"=>["174"=>$modx->resource->id]
        ,"current"  => true
    ]}
{processor action="web/catalog/products/getdata" ns="modxsite" params=$params assign=result}
    {if $result.success}
        {assign var=object value=$result.object}
        {include file="shop/products/list/packet.tpl"}
    {/if}

То получаю только первый товар в категории 174

Добрый день. Во-первых, дайте листинг шаблона shop/products/list/packet.tpl

{assign var=params value=[

"where"=>["174"=>$modx->resource->id]

,"current" => true

]}

Во-вторых, "current" => true - это влияет на то, что получить только один объект. Если у вас сопутствующие товары находятся непосредственно в категории 174, а не в каких-то вложенных категориях, то вы можете и использовать процессор web/catalog/category/products/getdata.

P.S. Не пишите {assign var=params value=[, это все пережитки прошлого. Пишите просто {$params = [.......

Спасибо за ответ Вот листинг шаблона. 4 возможных сопутствующих товара. Название, цена и checkbox для выбора-добавления и снятия с корзины (набросок, еще нужно дописать)

<td><a href="{$object.uri}" title="{$object.pagetitle}">{$object.pagetitle}</a></td> 
        {$object.sm_price|number_format:0:".":" "} руб.

Да с синтаксисом у меня точно проблемы, книжки нет и практики в PHP мало. Что почитать? А как можно реализовать checkbox для товара, чтоб 2 клика добавить и удалить из корзины?

У вас в этом шаблоне нет перебора foreach, он в принципе не рассчитан на то, чтобы вывести несколько товаров. Пробуйте так:

{$paramss = [

"limit" => 4

,"category_id" => 174

]}

{processor action="web/catalog/category/products/getdata" params=$paramss ns="modxsite" assign=result2}

{foreach $result2.object as $object}

    {include file="shop/products/list/packet.tpl"}

{/foreach}

В итоге получаю один и именно тот на странице которого нахожусь.

И сразу говорю, если для вас все это сложно, забросьте ShopModxBox. Мы не учим под него специалистов с нуля. Он рассчитан на более менее опытных программистов.

Спасибо, этот код сработал. Буду работать над ошибками и искать инфу. ShopModxBox занимаюсь меньше месяца, разбираюсь. Поставил себе конкретную задачу, чтобы полный проект, а не тезисы-вершки. Да сложно, ну и что, а вам с чем-то новым всегда легко? Не брошу, т.к. упёртый. Очень редко прошу подсказку, привык сам разбираться, но тут да сложно, связка - PHP, процессоры и Smarty. Не ответите может когда то значит так и надо. Ещё раз благодалю! Помогли!

Здравствуйте, подскажите, почему у меня выводятся только товары категории, а из подкатегорий нет?