ffx 16 января 2014 0 13
Установлен modx shopModx
Редактирую шаблон, там
{field name=content}
на главной он выводит текст плюс список новинок.
так вот ненайду где прикрепляются эти самые новинки
13 комментариев
Fi1osof1
Fi1osof 16 января 2014г в 17:44 #
Давайте по порядку разбираться. Вот у нас шаблон главной, и вот здесь у нас вызывается процессор, который получает товары-новинки. По сути в этом процессоре только указывается параметр, что надо получить именно новинки, а само условие выборки новинок прописано в основном процессоре выборки товаров (прошу простить нам путаницу с параметром hot, ибо hot должно бы по идее популярные выводить или типа того, ну да ладно).
То есть в принципе новинки можно получить и выборкой из основного процессора, просто передав в параметрах «hot» => true.

Так, выборка идет товаров, у которых установлено в дополнительных полях «Новинка» — Да.

f
ffx 16 января 2014г в 18:21 #
как и ожидал, все просто. Спасибо за помощь.
Немного не привычно к exclude, обычно везде implode.
Fi1osof1
Fi1osof 16 января 2014г в 18:34 #
Немного не привычно к exclude, обычно везде implode.
А можно на примере? Или вы ошиблись, или я про это ничего не знаю.
f
ffx 16 января 2014г в 18:45 #
я про другие cms, там идет основной шаблон а в него инклудятся другие блоками. например тот же вебасист.
Fi1osof1
Fi1osof 16 января 2014г в 18:53 #
Так здесь не exclude (что переводится как Исключить), а extends, что переводится как Расширить.
И это не наше ноу-хау, а стандартная технология Smarty. А те, как ветераны шаблонизации, знают что и как делать :)
f
ffx 17 января 2014г в 10:34 #
Еще вопросы лучше тут задавать или новый топик создавать?
В общем прикрепил дополнительное поле изображения к категории, естественно он в массиве TV. Но в товарах то он в image. Где это происходит?
s3.hostingkartinok.com/uploads/images/2014/01/1213a35352d3ce8a520d3f6755ec42fb.png
Второй вопрос, мне нужно вывести список подкатегорий определенной категории
пробовал и так {processor action=«web/catalog/category/getdata» ns=«modxsite» assign=result category_id=126}
и так {processor action=«web/catalog/category/getdata» ns=«modxsite» assign=result params=«category_id=126»}
выводит все подряд
f
ffx 17 января 2014г в 11:05 #
так по картинке частично нашел
switch($this->getProperty('image_url_schema')){
            case 'base':
                ....
                
            case 'full':

откуда берется этот параметр?
f
ffx 17 января 2014г в 12:28 #
с картинкой разобрался. с категориями нет =(
Fi1osof1
Fi1osof 17 января 2014г в 15:07 #
По TV-шкам уточняю:


По поводу «из последней строчки выборки»: у нас при выборке на один документ может быть сразу несколько результирующих строк (к примеру, если у документа несколько значений TV-параметров, то и строк будет *N этих строчек TV). Но когда данные процессор получает, он все эти строки в итоге набивает в уникальные элементы документов, чтобы на один $object мы имели только по одному уникальному документу с массивом ТВшек. Но в SQL-запросе-то эти колонки ведь выводятся, поэтому одну из строчек мы и видим в результате.

2. Чтобы получить картинки категорий, вам и надо получить документы именно категорий, а не документов.
Процессор web/catalog/category/getdata имеет все-таки чуть-чуть другое назначение, а именно получение всех дочерних категорий.
Если вам нужны дочерние категории только в каком-то одном разделе, то это можно сделать через базовый getdata-процессор:
{assign var=params value=[
    "where" => [
        "parent"    => $parent,
        "template"  => 2
    ]
]}
{processor action="web/getdata" params=$params assign=categories}
f
ffx 17 января 2014г в 16:55 #
[2014-01-17 18:52:11] (ERROR @ /index.php)
Processor /home/.../core/model/modx/processors/web/getdata.php does not exist; Array
(
)

{processor action="web/getdata" params=$params assign=categories}
{var_dump($categories)}

и как оказалось у меня и в правду такой папки нет
Fi1osof1
Fi1osof 17 января 2014г в 17:03 #
Сорри, моя вина. В пример забыл указать ns=«modxsite». Это указывает в папки какого неймспейса искать процессоры.
Полный пример:
{assign var=params value=[
    "where" => [
        "parent"    => $parent,
        "template"  => 2
    ]
]}
{processor action="web/getdata" ns="modxsite" params=$params assign=categories}
f
ffx 17 января 2014г в 17:13 #
СПасибо. Как я понял «template» => 2 это означает что выбираем только категории.
переменной $parent у меня не оказалось) но поставил статичную — нормально.

Теперь еще вопрос как узнать если у категории подкатегории? можно конечно перебрать каждую категорию такие же процессором, но вдруг еще как то можно?
Fi1osof1
Fi1osof 17 января 2014г в 17:38 #
Как я понял «template» => 2 это означает что выбираем только категории.
Это выборка документов с шаблоном 2 (Категория). Собственно, у нас только категории с таким шаблоном. По этому принципу можно выбирать любые документы с определенными шаблонами.

переменной $parent у меня не оказалось) но поставил статичную — нормально.
Собственно да, так и предполагалось, что вы укажите там какую-то свою переменную.

Теперь еще вопрос как узнать если у категории подкатегории? можно конечно перебрать каждую категорию такие же процессором, но вдруг еще как то можно?
У всякого документа есть переменная parent, в которой указан id родителя, и по ней можно понять в корне сайта документ находится или нет. А вот признака есть дети или нет — такого нет. Поэтому только через выборку. Самый простой способ — через $modx->getCount();

$modx->getCount('modResource', array(
    "parent"       => $resource_id,
    "deleted"      => 0,
    "hidemenu"     => 0,
    "published"    => 1
));
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.