Евгений Лазарев

Евгений Лазарев

С нами с 06 августа 2018; Место в рейтинге пользователей: #479

Добавление полей в $_modx->resource.

Подскажите может кто сталкивался. Пишу плагин почти в слепую ориентируясь на minishop2. Создал необходимы таблицы:
<object class="hdOrder" extends="modResource">
        <composite alias="Data" class="hdOrderData" local="id" foreign="id" cardinality="one" owner="local"/>
    </object>

    <object class="hdOrderData" table="hd_orders" extends="xPDOSimpleObject">
        <field key="contact" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="true"/>

        <index alias="contact" name="contact" primary="false" unique="false" type="BTREE">
            <column key="contact" length="" collation="A" null="false"/>
        </index>

        <aggregate alias="Order" class="hdOrder" local="id" foreign="id" cardinality="one" owner="foreign"/>
    </object>
Хочу вывести значения переменных из таблицы hdOrderData на странице типа $_modx->resource.article, но не выводится. Само присоединение сделано через плагин
case 'OnLoadWebDocument':
        // Set product fields as [[*resource]] tags
        if ($modx->resource->get('template') === 7) {
            if ($dataMeta = $modx->getFieldMeta('hdOrderData')) {
                unset($dataMeta['id']);
                $modx->resource->_fieldMeta = array_merge(
                    $modx->resource->_fieldMeta,
                    $dataMeta
                );
            }
        }
        break;
Нужен вывод $_modx->resource.contact
Евгений Лазарев
08 июня 2021, 18:12
modx.pro
203
-1

Выбор пользователя в select ExtJS

Добрый день. Подключил селекты стандартные, но не могу никак понять какой параметр указать чтобы пользователь с текущим id отображался в списке. Просто открываешь окно изменения и select пустой.
getFields: function (config) {
        return [{
            xtype: 'modx-combo-user',
            fieldLabel: _('hd_helper_master'),
            name: 'master',
            value: config.id + '-master',
            anchor: '100%',
            allowBlank: false,
            displayField: 'fullname',
            valueField: 'id',
            fields: ['fullname','id'],
            baseParams: {
                action: 'security/user/getlist',
                usergroup: 4
            }
        }];
    },
Евгений Лазарев
02 июня 2021, 17:45
modx.pro
55
0

Создание своих вкладок в ресурсах

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

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

Есть хорошая заметка у Ильи, которая подходит (https://ilyaut.ru/cheats/add-tabs-to-the-edit-page-of-the-resource/), но как туда вставить значения не идет в голову.
Евгений Лазарев
26 февраля 2021, 13:26
modx.pro
122
0

Как правильно внедриться в mFilter2?

Уважаемые коллеги. Может кто советом поможет. Ситуация такая — работает mFilter2: выводится 20 товаров на странице с стандартной пагинацией в виде кнопок. Нужно чтобы через каждые к примеру 5 товаров выводился баннер (если товаров 20 на странице, то их к примеру 3, если 40 то 6 и т.д.). При чем баннеры разные и зависят от фильтра.
Вывод баннеров понятно можно сделать в tpl написав условие
{if $banners[$idx]}{$banners[$idx]['image']}{/if}
. Но как сделать чтобы поиск самих баннеров (сам сниппет) происходил 1 раз за запрос фильтра или входа на страницу?

Сейчас реализован лишь поиск баннеров типа
{var $banners = 'getBanners' | snippet}
который возвращает список с ключом номера товара после или до которого должен стоять. Но ей Богу не запускать же этот сниппет в каждой tpl.
Евгений Лазарев
19 декабря 2020, 20:11
modx.pro
140
0

Ошибки в логе

Подскажите может кто сталкивался. В лог постоянно валятся ошибки
27.10.2020 	12:55:43 	ERROR 	/var/www/site.ru/core/xpdo/cache/xpdocachemanager.class.php 	514

PHP warning: unlink(/var/www/site.ru/core/cache/db/objects/modResource/e89fa63e1c424d10b085739f66097498.cache.php): No such file or directory

	27.10.2020 	12:55:43 	ERROR 	/var/www/site.ru/core/xpdo/cache/xpdocachemanager.class.php 	522

PHP warning: closedir(): supplied resource is not a valid Directory resource
cache_alias_map отключен потому что очень большое количество страниц
Евгений Лазарев
27 октября 2020, 13:22
modx.pro
132
0

msProducts выбор по нескольким значениям одной опции

Всем привет. Может кто сталкивался с таким. Пытаюсь на феном создать конструкцию фильтра
{var $where["id:!="] = $_modx->resource.id}
{var $filter = ["fabric:IN" => $_modx->resource.fabric]}
{if $_modx->resource.model?}
{set $filter["model:IN"] = $_modx->resource.model}
{/if}
{if $_modx->resource.consist?}
{foreach $_modx->resource.consist as $idx=>$consist}
{if $idx === 0}
{set $filter["consist"] = $consist}
{else}
{set $filter["AND:consist:="] = $consist}
{/if}
{/foreach}
{/if}
{var $similar = '!msProducts' | snippet : [
'parents' => 19,
'limit' => 10,
'depth' => 0,
'includeThumbs' => 'thumb',
'sortby' => 'RAND()',
'tpl' => 'tplProductAdd',
'where' => $where | toJSON,
'optionFilters' => $filter | toJSON,
'showLog' => 1
]}
Никак не могу правильно составить конструкцию чтобы было в sql:… AND `consist`.`value` = 'Значение1' AND `consist`.`value` = 'Значение2' AND `consist`.`value` = 'Значение3'… (У данной опции можно задавать несколько значений)
Евгений Лазарев
12 августа 2020, 19:46
modx.pro
187
0

Валится постоянно ошибка Could not cache context settings for web.

Подскажите кто-нибудь сталкивался с ошибкой:
[2020-07-31 09:49:14] (ERROR @ /var/www/www-root/data/www/site.ru/core/model/modx/modcachemanager.class.php : 172) Could not cache context settings for web.
Постоянно валится в логи. Стоит компонент msync который импортирует товары из 1С. При импорте через какое то время начинается валиться эта ошибка с каждой итерацией.
Евгений Лазарев
31 июля 2020, 12:17
modx.pro
212
0

Как выполнить фильтр при загрузке странице

Ситуация такая — есть mFilter2 (mSearch2).

Структура сайта:
— Каталог
— — Категория 1
— — — Товар 1
— — — Товар 2
— — — Товар 3
— — Категория 2
— — — Товар 4
— — — Товар 5
— — — Товар 6

Фильтр настроен на странице Каталога и все делает исправно. Но есть физические страницы Категорий для SEO и по просьбе клиента для структуризации.
Каким образом можно зайдя на страницу Категории 1 вывести товары из Категории 1, но при этом фильтр чтобы был по всему каталогу с отмеченной уже Категорией 1?

Просто если parent будет текущей страницы, то и фильтр с опциями будет на основании только текущего раздела а не всего каталога.

Если же parent Каталога то с фильтром все ок, но фильтрации при загрузке страницы по этому разделу не будет проведена.
Евгений Лазарев
12 апреля 2020, 19:42
modx.pro
251
0

Could not cache context settings for web

Всем привет. Подскажите может кто сталкивался. Есть компонент mSync, он производит загрузку товаров из 1с или в ручную с сервера. При загрузке появляется постоянно ошибка:
[2020-03-15 14:43:22] (ERROR @ /var/www/www-root/data/www/site.ru/core/model/modx/modcachemanager.class.php : 172) Could not cache context settings for web.
При этом я увидел, что товары которые загружаются — у них некоторые поля не записываются в таблицу — ms2_product_options, хотя если зайти в товар то это поле добавлено (как я понял, значение этого поля еще хранится в таблице ms2_products в виде json). Соответсвенно при фильтрации эти товары не выходят в результатах — итак с 80% продукции.

Ну и второй вопрос. Зачем дублировать значения полей в ms2_products и в ms2_product_options? Я понимаю, что в ms2_product_options содержатся значения в их оригинальном исполнении (русские, англ буквы), а в ms2_products хранится их json вид, но на кой тогда json?
Евгений Лазарев
15 марта 2020, 14:55
modx.pro
227
0

Как написать условие OR c помощью fenom?

Все привет, делаю фильтрацию товаров, и столкнулся с проблемой и недостатком знаний как организовать условие в скобках и с OR между ними. Подскажите, кто разбирается. P.S. Код весь не влазит, но нужное я разместил.

{var $filter = []}
{if $get.gem?}{set $filter['consist'] = $get.gem}{/if}
{if $get.metal?}{set $filter['metal'] = $get.metal}{/if}
{if $get.size?}{set $filter['size'] = $get.size}{/if}
{if $get.type?}{set $filter['fabric:IN'] = $get.type}{/if}
{if $get.tag?}{set $filter['tags:IN'] = $get.tag}{/if}
{if $get.label?}
    {foreach $get.label as $label}
        {set $filter[$label] = 1} // Вооот здесь
    {/foreach}
{/if}

<div class="products flx">
{var $products = '!pdoPage' | snippet : [
    'element' => 'msProducts',
	'parents' => 19,
	'depth' => 0,
	'limit' => $get.pagesize ? : 12,
	'tpl' => 'tplProducts',
	'includeThumbs' => 'thumb',
	'optionFilters' => $filter | toJSON,
	'where' => $where,
]}
Евгений Лазарев
10 февраля 2020, 14:45
modx.pro
219
0