Вопросы

Как сделать условие выборки для article.

Создал для быстрой вставки товаров в тело любой страницы, хочу чтобы не него можно было вносить назания товара (Артикль). Раньше было сделано по id ресурса через resources
вызов такой:
{include 'file:chunks/blocks/pdo_project.tpl' $resources='212,207,197'}
Код чанка такой:
{set $params = [
'depth' => '0',
'resources' => $resources,
'element' => 'msProducts',
'tpl' => '@FILE chunks/cards/card.tpl',
'includeThumbs' => 'medium',
'limit' => 80,
'includeTVs' => 'price1,area',
'tvPrefix' => '',
'parents' =>  0 ,
]}
<div class="rows row row-cols-1 row-cols-sm-2 row-cols-md-3 catalog mt-2">
    {'!pdoPage' | snippet : $params}
</div>
Сейчас пытаюсь через where заменить
'resources' => $resources
на
'where'=> '{"article:IN":$articles}',
но ничего не работает.
Артикли на кириллице
Miša Bulic
07 апреля 2021, 18:02
modx.pro
932
0

Сортировка по опциям msProducts [решено]

Доброго.

Уже пол дня убил на попытку наладить сортировку msProducts, прошу помощи аудитории, так как документации и гугла явно не хватает :)

Дано: miniShop2, товары с опциями, всё обычное.
Задача: отсортировать по опции 'obschaya-ploschad', примеры значений опции: 211.8, 240 и т.д.

Делаю так:

$modx->runSnippet('msProducts', [
    'parents' => 2,
    'sortbyOptions' => 'obschaya-ploschad:number',
    'sortby' => '{"obschaya-ploschad":"ASC"}',
    'limit' => 24,
    'offset' => $offset,
    'tpl' => 'tpl.catalog.row',
    'setTotal' => 1
]);
Viarne
07 апреля 2021, 15:38
modx.pro
801
0

переписать путь к файлу стилей

Добрый день. только начал изучать modx. стоит задача по клике на кнопку менять подключаемые файлы стилей. просто используя php я это сделал. но как это сделать в modx не понимаю.
это нативный php

$css = 'style.css';
$css2 = 'style2.css';

$filename = 'index.php';
$file = file_get_contents($filename);
$title_pattern = $css;
$test = preg_replace("~$title_pattern~", $css2, $file);
file_put_contents($filename, $test);

header('Location: index.php');

а это уже код внутри modx

кнопка на странице, где 124 это номер сниппета



а это сам сниппет

<?php

function getStyle() {

$css = '[[$styles]]'; // чанк исходного файла css
$css2 = '[[$styles2]]'; //чанк файла на который надо поменять

$filename = [[$head]]; //чанк — место где происходит замена css файлов
$file = file_get_contents($filename);
$title_pattern = $css;
$test = preg_replace("~$title_pattern~", $css2, $file);
return file_put_contents($filename, $test);

}
Руслан
07 апреля 2021, 15:30
modx.pro
838
0

Игнорировать мультикатегории в msProducts

Добрый день! Можно ли как-то сделать вывод товаров без учета мультикатегорий, чтобы не отображались те, что связаны с этой категорией из другой категории?
Анастасия
07 апреля 2021, 12:33
modx.pro
597
0

PayPal minishop2 ошибка при оплате

/home/u212443042/domains/maisondentremets.com/public_html/core/components/minishop2/custom/payment/paypal.class.php : 84) [miniShop2] Payment error while request. Request: Array
(
    [METHOD] => SetExpressCheckout
    [PAYMENTREQUEST_0_CURRENCYCODE] => GBP
    [PAYMENTREQUEST_0_ITEMAMT] => 4.21
    [PAYMENTREQUEST_0_SHIPPINGAMT] => 10
    [PAYMENTREQUEST_0_AMT] => 14.21
    [RETURNURL] => https://maisondentremets.com/assets/components/minishop2/payment/paypal.php?action=success
    [CANCELURL] => https://maisondentremets.com/assets/components/minishop2/payment/paypal.php?action=cancel
    [PAYMENTREQUEST_0_INVNUM] => 18
    [L_PAYMENTREQUEST_0_NAME0] => Avocado Guacamole
    [L_PAYMENTREQUEST_0_AMT0] => 4.96
    [L_PAYMENTREQUEST_0_QTY0] => 1
    [L_PAYMENTREQUEST_0_NAME1] => Standard (Free)
    [L_PAYMENTREQUEST_0_AMT1] => 0
    [L_PAYMENTREQUEST_0_QTY1] => 1
)
, response: SSL certificate problem: unable to get local issuer certificate
Как можно решить проблему?
Максим
06 апреля 2021, 17:22
modx.pro
791
0

recaptcha v2 tickets

начал искать как прикрутить recaptcha v2 к TicketComments, нигде не нашел, только встроенная проверка сложение, не знаю правильно или нет но прикрутить удалось таким способом код от установленого formit и recaptchav2
в форму добавил
[ [!recaptchav2_render] ]
[ [!+fi.error.recaptchav2_error] ]


выключил встроенную проверку &enableCaptcha=`0`

добавил &customValidators=`recaptchav2` &validate=`g-recaptcha-response:required` &g-recaptcha-response.vTextRequired=`Вы не прошли проверку на спам`

получился код вызова
[ [!TicketComments? &allowGuest=`1` &autoPublishGuest=`0` &enableCaptcha=`0` &customValidators=`recaptchav2` &validate=`g-recaptcha-response:required` &g-recaptcha-response.vTextRequired=`Вы не прошли проверку на спам` ] ]

может кому поможет, у меня все работает
автору дополнения tickets надо было бы как то давно описать и прикрутить гугл капчу, думаю математическая проверка давно устарела
akella1900
06 апреля 2021, 10:36
modx.pro
2
1 046
0

Как вывести результаты pdoResources в формате json, но с моим tpl

Всем привет!
Вывод с параметром &return=`json` меня не совсем устраивает, так как он выводит все поля документа без возможности обработки вложенными сниппетами.

Например, у меня есть TV в формате MIGX для добавления множества фото к документу и их необходимо обработать с помощью phpthumbon, а также другие необходимы обработки внутри чанков.

Если я делаю свой шаблон с закосом под структуру json:
{
«id»: "{$id}",
«pagetitle»: "{$pagetitle}",
},

То это не работает. Выводит в таком виде, но не работает там, куда отправляется эта json-ссылка.

Что делать?
Anton
05 апреля 2021, 18:50
modx.pro
2 229
0

Запретить добавлять товар в некоторые "мульти-категории"

Добрый день.
В админ панели у каждого товара minishop2 есть вкладка Категории. В ней есть возможность установкой галочки поместить товар в ресурс, если он создан как категория товара.

Какие есть разумные способы ограничить выбор этих категорий? К примеру есть два каталога — каталог1 и каталог2. Необходимо не дать возможность разместить товар из каталога 1 внутри второго или любых подкатегориях второго?

Посмотрел список событий docs.modx.pro/komponentyi/minishop2/razrabotka/sobyitiya, думал можно это отработать на уровне плагина, но похожих событий не нашел.

Спасибо.
Александр Мельник
05 апреля 2021, 12:55
modx.pro
556
0

Как получить переменные через событие af_compleate и AjaxForm?

Приветствую уважаемое сообщество.

использую связку AjaxForm + formit + свой хук

в своём сниппете пытаюсь передать массив и потом отловить его через событие af_compleate
хук:
$arr = array(
'var' => 'value',
'var2' => 'value2',
)
return $AjaxForm->success('Форма обработана', $arr);
JS:
$(document).on('af_complete', function(event, response) {
    var form = response.form;
    if (form.attr('id') == 'add-contract') {
      console.log(response);
     console.log(response.data);
    }
});
приходит пустой массив.
Подскажите пожалуйста как я могу получить данные из своего сниппета через af_complete?
Глеб
05 апреля 2021, 11:01
modx.pro
977
0

minishop смена цены товара в зависимости от кол-ва налету

minishop смена цены товара в зависимости от кол-ва налету

сейчас в корзине к примеру, если поставить большое количества то ценик на товаре (за еденицу товара) не обновляется, хотя итоговый пеерасчет происходит сразу
подскажите как сделать чтобы сразу менялась сумма за единицу товара

как я понимаю за это должен отвечать msSalePrice но как его увязать?

а также на странице товара перед добавлением в корзины открывается модальное окно
и там тоже самое — ценик не меняется на лету :(

код окна

<form class="form-horizontal ms2_form" method="post">
    <input type="hidden" name="id" value="[[*id]]"/>
        <div class="cart">
        	<h2>Вы добавили товар в корзину</h2>
        	
        	<div class="cart-title py-4">
        		<div class="cart-title-img col-md-3"></div>
        		<div class="cart-title-name col-md-3">Наименование товара</div>
        		<div class="cart-title-amount text-center col-md-3">Кол-во</div>
        		<div class="cart-title-price col-md-3">Сумма</div>
        	</div>
        	
        	<!-- Start Cart Item -->
        
            	<div class="cart-item mb-3">
            		<div class="cart-item-img col-md-3">
            			<img src="[[+image]]" alt="">
            		</div>
            
            		<div class="cart-item-name col-md-3">
            			<a>[[*pagetitle]]</a>
            		</div>
            
            		<div class="cart-item-amount col-md-3">
            			<span class="minus">-</span>
            			<input type="number" name="count" id="product_price" class="number" 
            			    step="[[msProductOptions?
            			            &onlyOptions=`count_add`
            			            &tpl=`optionValTpl`
            			           ]]"
            			    value="[[!startcount]]"
            			    min="[[!startcount]]">
            			<span class="plus">+</span>
            		</div>
            
            		<div class="cart-item-price col-md-3">
            			<span id="ciPrice" class="mssaleprice-cost">[[+price]]</span>руб.
            		</div>
            
            		<!--<div class="cart-item-delete text-center">
            			<span class="fa-layers fa-fw">
            				<i class="fa-inverse fas fa-times" data-fa-transform="shrink-6"></i>
            			</span>
            		</div>-->
            	</div>
        	<!-- End Cart Item -->
        	
        	<hr>
        	
        	<!-- Start Cart Total -->
        	<div class="row">
        		<div class="ml-auto col-12 col-md-5 col-xl-3">
        			<div class="cart-total mb-3">
        				<span>Итого:</span> 
        				<span><span id="itogopotovaru"></span> руб.</span>
        			</div>
        		</div>
        	</div>
        	<!-- End Cart Total -->
        
        	<div class="cart-item-btns row d-flex flex-wrap mb-4">
        		<div class="col-12 order-1 order-md-0 col-md-5 col-xl-3">
        			<div class="cart-back">
        				<a style="cursor:pointer" onclick="return continueBuy();">Продолжить покупки</a>
        			</div>
        		</div>
        
        		<div class="col-12 col-md-5 col-xl-3 ml-auto mb-3 mb-md-0">
        			<a style="cursor:pointer" onclick="return oformit();" class="btn-submit">Перейти в корзину</a>
        		</div>
        	</div>
        
        	<hr>
        	
        
        </div>
        <!-- Спрятанная кнопка submit -->
        <div style="display:none">
            <button id="fs" type="submit" class="btn btn-default" name="ms2_action" value="cart/add">
                            <i class="glyphicon glyphicon-barcode"></i> [[%ms2_frontend_add_to_cart]]
            </button>
        </div>
        <!-- -->
</form>
а это код в корзине
Евгений
05 апреля 2021, 01:54
modx.pro
660
0