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

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

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

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
454
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
542
0

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

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

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

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

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

Если же parent Каталога то с фильтром все ок, но фильтрации при загрузке страницы по этому разделу не будет проведена.
Евгений Лазарев
12 апреля 2020, 19:42
modx.pro
548
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
470
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
475
0

AjaxForm и reCaptcha V3

Доброе время суток. Сталкивался ли кто-нибудь с использованием reCaptcha V3 через плагин?

Каким образом происходит проверка на робота? Обычных пользователей не пропускает, а проверку не дает.

Сама каптча на сайте подключена, но нет возможности ее проверить. Смотрел в документации, написано «Параметр rcv3Action предназначен для изменения идентификатора action.», но так и не понял для чего он и что выполняет. Если зайти через приватное окно, то никаких проверок не происходит и форма надежно отправляет, а другие пользователи отправляют форму и у них не выскакивает никакой проверки а сразу выдается сообщение «Вы не прошли проверку reCaptcha.» Смотрел видео на ютубе, парень делал не через плагин и говорит что существуют 3 спосоа проверки и по умолчанию стоит на кнопке, при нажатии на нее если есть подозрения то всплывающим окном выходит проверка на картинках — но ничего. PS на странице несколько форм.
Евгений Лазарев
30 января 2020, 15:10
modx.pro
1
2 990
0

Нужна помощь по msync

Доброе время суток. Тут столкнулся с такой проблемой. Может подскажете решение или куда копать. Ситуация такая: если создаю продукт через админку и добавляю теги к товару в стандартное поле то в БД в эту таблицу они записываются в разные строки (к примеру 2 тега — новый год и новинка, то будет 2 записи в этой таблице). Если я загружаю через msync то в Import выглядит это следущим образом
<ХарактеристикиТовара>
					<ХарактеристикаТовара>
						<Наименование>Вставки</Наименование>
						<Значение>Бриллиант</Значение>
					</ХарактеристикаТовара>
					<ХарактеристикаТовара>
						<Наименование>Теги</Наименование>
						<Значение>Новый Год,Новинка,</Значение>
					</ХарактеристикаТовара>
				</ХарактеристикиТовара>
и тогда эти 2 значения записывают в одну строку но тогда отфильтровать данные товары без бубна практически не возможно. Если зайти в админку на страницу товара и сохранить, то в БД перезаписывается по нормальному. Подскажите пожалуйста решение.
Евгений Лазарев
30 декабря 2019, 16:59
modx.pro
520
0

Подсобите пожалуйста с запросом

Есть запрос выдачи товаров по тегам. Хочется сделать запрос чтобы в результате было WHERE… AND ( tag = 'тэг' OR tag LIKE '%, тэг' OR tag LIKE 'тэг,%' )… В голову не идет как эти скобки ставятся при формировании запроса в виде массива а чтобы потом он парсился.
{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'] = $get.tag}
                {set $filter['tags:LIKE'] = '%,'$get.tag}
            {/if}
            
            {var $where = ''}
            {var $search = ''}
            {if $get.search?}
                {set $search = '!catalogSearch' | snippet : ['search' => $get.search]}
            {/if}
            {set $where = '["(Data.price>='~($get.price_from ? : 0)~' AND Data.price<='~($get.price_to ? : 999999999)~' AND Data.price!=0) '~$search~'"]'}
            <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,
                	'sortby' => $sort | toJSON,
                	'tplPagePrev' => '@INLINE <li class="control"><a href="[[+href]]">←</a></li>',
                	'tplPageNext' => '@INLINE <li class="control"><a href="[[+href]]">→</a></li>',
                	'tplPagePrevEmpty' => '@INLINE',
                	'tplPageNextEmpty' => '@INLINE',
                	'tplPageFirst' => '@INLINE',
                	'tplPageLast' => '@INLINE',
                	'tplPageFirstEmpty' => '@INLINE`',
                	'tplPageLastEmpty' => '@INLINE',
                	'showLog' => 1,
                ]}
Евгений Лазарев
29 декабря 2019, 12:27
modx.pro
356
0

Может кто может помочь с запросом?

{var $conf = [
	'groups' => 'buyer',
	'tpl' => 'tplChatName'
	'leftJoin' => '{
	    "View": {
            "class": "TicketView",
            "on": "modUserProfile.internalKey = View.uid"
        },
        "Thread": {
            "class": "TicketThread",
            "on": "View.thread = Thread.id AND Thread.name = \'chat-23\'"
        },
        "Comment": {
            "class": "TicketComment",
            "on": "Thread.id = Comment.thread AND Comment.createdon > View.timestamp AND Comment.email != modUserProfile.email"
        }
    }',
    'select' => '{
        "modUser":"modUser.id",
        "modUserProfile":"modUserProfile.fullname",
        "Comment": "COUNT(Comment.id) as count"
    }'
]}
{$_modx->runSnippet('!pdoUsers', $conf)}
Поскажите как в данном запросе вместо chat-23 использовать что то на подобие chat-modUserProfile.internalKey
То есть мне вместо цифры нужно подставлять текущий id пользователя запроса.
Евгений Лазарев
01 декабря 2018, 15:00
modx.pro
512
0

TicketComments. Сделать подписанными на ленту комментариев определенных людей

Есть вопрос такой. Сразу говорю это не блог. На modx реализован портал управления заявками. Есть пользователи 2х групп: создатели заявок и исполнители. Создатель создает заявку и назначает из группы исполнителей определенного пользователя. Использую TicketComments. То есть внутри заявки это 2 пользователя могут переписываться. Само собой понятно когда создается заявка то галка «Уведомлять о новых комментариях» стоит у того, кто создал заявку. А как принудительно поставить эту же галку исполнителю. Если захочет он потом ее снимет — но изначально чтобы она у него стояла. А то будут писать — а он не увидит.
Евгений Лазарев
25 ноября 2018, 14:11
modx.pro
508
0