Отключить все модификации товара если его нет в файле

На сайте установлен msOptionsPrice2. Есть файл domovoy.xlsx с артиклями модификаций. И есть php
if ( $xlsx = SimpleXLSX::parse(dirname(__FILE__).'/assets/bitrix/domovoy.xlsx') ) {
    $belor = SimpleXLSX::parse(dirname(__FILE__).'/assets/bitrix/domovoy.xlsx');
    
    $importBarcodeArr = $belor->rows();
	
	$importBarcodeCount = 0;

	foreach($importBarcodeArr as $k => $cellY){

		if($k == 0){
			continue;
		}

		if( $modification = $modx->getObject('msopModification', array('article'=> $cellY[0] )) ){
			echo 'FOUND barcode '.$cellY[0].'</br>';

			$modification->active = 1;
			$modification->save();

		}
	}

	echo $importBarcodeCount.' - done';

} else {
	echo SimpleXLSX::parseError();
}
который включает модификацию, если артикль есть в файле. Вопрос в том, как отключить все остальные модификации, которых нет в файле?
Буду благодарен за любую помощь и наводку
Дмитрий
02 ноября 2022, 17:11
modx.pro
660
0

Динамический input

Доброе утро, помогите решить проблему
добавляю поле в FormIt динамически
но в БД записывается просто Array (а должны все значения из полей)
подскажите куда копать
....
<input type="text" value="[[!+title]]" class="form-control" id="title" name="title[]" placeholder="79991112233">
...
сниппет
if (!$_POST['list']) {
    $processor = '_list/create';
} else {
    $_POST['id'] = $_POST['list'];
    $modx->setPlaceholder('id', $_POST['id']);
    $processor = 'list/update';
   
}
$processorProps = array('processors_path' => $modx->getOption('core_path')
               . 'components/list/processors/');
$response = $modx->runProcessor($processor, $_POST, $processorProps);
if ($response->isError()) {
    $hook->addError('process_error', $response->getMessage());
    return false;
}
return true;
vit
vit
02 ноября 2022, 11:51
modx.pro
858
0

нужен совет, но не про modx

Господа и дамы, нужно совет по docker.
Просто идеи или может кто-то на практике решал такую проблему.
Проблема — это проброс реального IP адреса клиента в php контейнер.
Два контейнера, в одном работает nginx, в другом — php (на самом деле есть и другие контейнеры в этой сети, но они сейчас не существенны).
Александр Мельник
31 октября 2022, 21:18
modx.pro
490
0

Хлебные крошки в виде меню

Может уже кто сталкивался и делал подобное? Как реализовать хлебные крошки в виде меню, у категорий вывести родителей в основном стоит задача сделать это для категорий minishio2
Сергей
31 октября 2022, 13:53
modx.pro
511
0

Fenom - Изменение переменной в Block

Приветствую!

Реально ли такое провернуть, есть шаблон с id например 7, в нем есть вызов mFilter
<?
....
{set $filterParams = []}
{block 'filterParams' }{/block}
    
{set $conf = array_merge([
    'paginator' => 'pdoPage@pg',
    'class' => 'msProduct',
    'element' => 'msProducts',
    'setMeta' => '1',
    'includeThumbs' => 'small',
    'limit' => 21,
    'tplOuter' => '@FILE chunks/mFilter/mFilter.tpl',
    'tpl' => '@FILE chunks/product/product.tpl',
] , $filterParams)}

{$conf | print}
{'!mFilter2@pg' | snippet : $conf}
....

Есть другой шаблон с id например 8, наследующий 7ой шаблон но в нем меняется одна переменная ну или несколько в массиве $filterParams который объявлен в 7ом шаблоне
{extends 'template:7'}
{block 'filterParams'}
{set $filterParams['tplOuter'] = '@INLINE Text'} 
{set $filterParams['parents'] = '555'} 
{/block}
Данный код не обрабатывает, объединяю через array_merge, делаю print значения такие же как и в 7ом шаблоне

Пока писал придумал выход, но все же интересно

p.s. Выход
Вызов заносим в чанк и уже в чанк передаем переменные
— Основной шаблон(id 7)
{set $idr = $_modx->resource.id}
{block 'filter' }
    {include 'file:chunks/mFilter/callFilter.tpl' parents=$idr}
{/block}

— С наследованием(id 8)
{extends 'template:7'}
{block 'filter' }
    {include 'file:chunks/mFilter/callFilter.tpl' parents=0}
{/block}
Константин Ильин
31 октября 2022, 11:41
modx.pro
737
0

удалить пиратский плагин msmulticurrency

кто-то поставил на сайт плагин msmulticurrency не через modstore. в итоге произошел сбой в работе, конкретно не работает msOptionsPrice2. как вручную удалить этот пиратский плагин? удаление файлов и таблиц из БД не помогло — ошибки вылезли
alexandr.skyrda
30 октября 2022, 15:13
modx.pro
547
0

Не открываются страницы 4 уровня 502 - Bad Gateway .

Доброго дня!
На сайте перестали открываться страницы 4 уровня:
a.auto-autoservice.ru/models/audi-a3/remont-dizelnogo-dvigatelya/kapitalnyij-remont-dizelnyix-dvigatelej/
Выбивает ошибку 502, в чем может быть причина?

При этом
a.auto-autoservice.ru/models/audi-a3/remont-dizelnogo-dvigatelya/ — открывается отлично
Вячеслав Варов
30 октября 2022, 10:31
modx.pro
268
0

Условие в сниппете вывода опций - не выводить удаленные опции

Еще раз всех приветствую, у товаров была текстовая опция со значением «по запросу», но опция была удалена, а цена была прописана в стандартную опцию минишопа price. Однако в фиде yml значение этой опции сохранилось, а за вывод опций отвечает данный сниппет, возможно ли добавить в него условие, что бы он не выводил удаленную опцию?

Скриншот: disk.yandex.ru/i/5g6y_-gg9qXBMA

<?php
if(empty($tpl) || !$modx->getChunk($tpl)){
    return false;
}
$sQuery = "SELECT
po.value as value,
o.caption as name
FROM
". $modx->getOption('table_prefix') ."ms2_product_options po
LEFT JOIN
". $modx->getOption('table_prefix') ."ms2_options o ON (po.key = o.key)
WHERE
po.product_id = '".$res_id."'";
$result = $modx->query($sQuery);
$res = $result->fetchAll(PDO::FETCH_ASSOC);
$output = "";
foreach($res as $v){
    $output .= $modx->getChunk($tpl,$v);
}
echo $output;
Константин
28 октября 2022, 14:43
modx.pro
402
0

Теги taglister tolinks

Всем добрый!
Через taglister tolinks на странице выводятся теги. Ссылка с них идёт на оду страницу с GET запросом tag = выбранному тегу.
Еще есть специальный раздел, с ресурсами для некоторых тегов.
Сейчас в чанке вывода тегов сделано руками core/components/taglister/elements/chunks/link.chunk.tpl
{if $item == 'bios'}
<a href="{199|url}" class="[[+cls]]">[[+item]]</a>
{/if}
{if $item == 'amd'}
<a href="{198|url}" class="[[+cls]]">[[+item]]</a>
{/if}
{if $item == 'gpu'}
<a href="{200|url}" class="[[+cls]]">[[+item]]</a>
{/if}
{if $item != 'amd' AND $item != 'bios' AND $item != 'gpu'}
<a href="[[+url]]" class="[[+cls]]">[[+item]]</a>
{/if}
ВОПРОС:
Как сделать так, чтобы в этом чанке автоматически проверялось, если ли в ресурсе ID 197 есть дочерние ресурсы с pagetitle = тегу, то подставлять ссылку на эти страницы, если нет, то на [[+url]].
Сергей Самусев
28 октября 2022, 14:20
modx.pro
565
0

Как вывести связанные товары независимо от типа связи?

Добрый день.
Ранее в каталоге были товары, у которых была добавлена связь один к одному (id=4).
Я выводил их следующим кодом:
{var $links = '!msProducts' | snippet : [
                                'parents' => 0,
                                'link' => 4,
                                'master' => $_modx->resource.id,
                                'tpl' => '@INLINE <div class="col-6 col-md-4 col-lg-3">{include "file:new/chunks/product.tpl"}</div>'
                                ]}
                                {if $links?}
                                        <h3>Купите также:</h3>
                                        {$links}
                                {/if}
Сейчас же появилась необходимость сделать, у некоторых товаров связь один ко многим (id=5).
Перечисление айдишников в коде выше не работает. Как указать вызов сниппета, чтобы связанные товары выводились независимо от того, какая связь добавлена у товара?
mekirile
28 октября 2022, 10:09
modx.pro
557
0