Игорь
С нами с 12 сентября 2018; Место в рейтинге пользователей: #355Количество товаров на странице оформления заказа minishop
Здравствуйте!
Как вывести количество заказанных товаров на странице оформления заказа?
Код, который это дело выводит в корзине ( {$total.count} ) тут не работает, а других вариантов в гугле не нашел.
Как вывести количество заказанных товаров на странице оформления заказа?
Код, который это дело выводит в корзине ( {$total.count} ) тут не работает, а других вариантов в гугле не нашел.
Адрес в профиле пользователя Office
Здравствуйте.
Нужно на странице профиля добавить основной адрес для доставки с возможностью редактирования.
Вставил поля:
Нужно какой-то плагин написать на событие OnUserProfileBeforeSave, наверное? У меня пока ничего не получается. Помогите пожалуйста.
Нужно на странице профиля добавить основной адрес для доставки с возможностью редактирования.
Вставил поля:
<div class="form-group row">
<label class="col-md-2 col-form-label">улица</label>
<div class="col-md-10">
<input type="text" name="address" value="{$address}" placeholder="город" class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-md-2 col-form-label">дом</label>
<div class="col-md-10">
<input type="text" id="building" name="building" value="{$extended['building']}" placeholder="Дом" class="form-control">
</div>
</div>
<div class="form-group row">
<label class="col-md-2 col-form-label">квартира</label>
<div class="col-md-10">
<input type="text" id="room" name="room" value="{$extended['room']}" placeholder="Квартира"
class="form-control">
</div>
</div>
C полем «Улица» все хорошо, а вот поля «Дом» и «Квартира» никак не хотят сохранятся.Нужно какой-то плагин написать на событие OnUserProfileBeforeSave, наверное? У меня пока ничего не получается. Помогите пожалуйста.
Не получается получить данные через json_decode
Здравствуйте.
Хотел вставить в mFilter2 фильтр по MIGX полю, вот по этой статье modx.pro/solutions/14715.
Как обычно, сразу ничего не получилось и стал смотреть код кастомного класса. Споткнулся вот на этом:
Хотел вставить в mFilter2 фильтр по MIGX полю, вот по этой статье modx.pro/solutions/14715.
Как обычно, сразу ничего не получилось и стал смотреть код кастомного класса. Споткнулся вот на этом:
foreach ($values as $value => $ids) {
if ($value !== '') {
//print_r($value);
//print_r('
');
//$value='[{"MIGX_id":"2","title":"test","price":"100","weight":"","key":"test","value":"test2"}]';
$migxs = json_decode(str_replace('"', '"', $value));
//var_dump(json_decode($value));
foreach ($migxs as $migx) {
$title = trim($migx->title);
if (!is_array($results[$title]['resources'])) {
$results[$title]['resources'] = array();
}
$results[$title] = array(
'title' => $title,
'value' => $migx->value,
'type' => 'tv',
'resources' => array_merge($results[$title]['resources'], $ids)
);
}
}
}
Minishop2 не любит таблицы?
Здравствуйте.
Натягиваю верстку на MODX. Есть таблица Wishlist — таблица это конечно плохо, но мне какая разница, если сказали сделать так как в верстке.
Сделал все по аналогии с предыдущими проектами, но только с таблицей, примерно так:
Натягиваю верстку на MODX. Есть таблица Wishlist — таблица это конечно плохо, но мне какая разница, если сказали сделать так как в верстке.
Сделал все по аналогии с предыдущими проектами, но только с таблицей, примерно так:
Minishop2 минимальная сумма для способа доставки
Здравствуйте.
Нужно что бы один из способов доставки был доступен только при достижении в корзине определенной суммы.
Прочитал, что подобное можно сделать с помощью подключения собственного класса доставки docs.modx.pro/komponentyi/minishop2/razrabotka/sluzhbyi/podklyuchenie#Пример-подключения-собственного-класса-доставки.
Класс подключил, но не знаю как переделать саму функцию под мою потребность (что бы способ доставки отображался только когда сумма в корзине больше минимальной).
Нужно что бы один из способов доставки был доступен только при достижении в корзине определенной суммы.
Прочитал, что подобное можно сделать с помощью подключения собственного класса доставки docs.modx.pro/komponentyi/minishop2/razrabotka/sluzhbyi/podklyuchenie#Пример-подключения-собственного-класса-доставки.
Класс подключил, но не знаю как переделать саму функцию под мою потребность (что бы способ доставки отображался только когда сумма в корзине больше минимальной).
<?php
if(!class_exists('msDeliveryInterface')) {
require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/msdeliveryhandler.class.php';
}
class msDeliveryHandlerMsk extends msDeliveryHandler implements msDeliveryInterface{
public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) {
$freedeliverysumm = $this->modx->getOption('deliverys');
//print_r ($freedeliverysumm);
$cart = $order->ms2->cart->status();
$cart_cost = $cart['total_cost'];
if($cart_cost > $freedeliverysumm){
return $cost;
}else{
$delivery_cost = parent::getCost($order, $delivery, $cost);
return $delivery_cost;
}
}
}
TVTable как получать значения из ячеек таблицы
Здравствуйте.
Первый раз столкнулся с компонентом TVTable и не могу ничего понять пока. (
В общем ситуация такая:
1. Есть дополительное поле с таблицей TVTable, называется «Prices» — в нем некая таблица (первая колонка — размеры, остальные — различные параметры).
2. Есть еще одно дополнительное поле Авто-метка «Sizes» — в нем просто список размеров.
3. На странице шаблона выводится список из поля «Sizes»:
Как это можно реализовать?
Первый раз столкнулся с компонентом TVTable и не могу ничего понять пока. (
В общем ситуация такая:
1. Есть дополительное поле с таблицей TVTable, называется «Prices» — в нем некая таблица (первая колонка — размеры, остальные — различные параметры).
2. Есть еще одно дополнительное поле Авто-метка «Sizes» — в нем просто список размеров.
3. На странице шаблона выводится список из поля «Sizes»:
{if $_modx->resource.Sizes?}
<div class="form_size">
<p class="h4">Выберите размер</p>
<div class="d-flex flex-wrap ">
{set $sizes = $_modx->resource.Sizes | split}
{foreach $sizes as $size first=$first}
<div class="form___size_item">
<span>{$size}</span>
<p>ВОТ СЮДА НУЖНО ВСТАВИТЬ ЗНАЧЕНИЕ ИЗ ЯЧЕЙКИ ТАБЛИЦЫ</p>
</div>
{/foreach}
</div>
</div>
{/if}
Мне нужно в этот цикл подставить соответствующие значения из таблицы, т.е. сравнивать размеры по названию и, при совпадении, подставлять параметр из определенной колонки таблицы.Как это можно реализовать?
Не получается сделать запрос с условием OR для pdoResources
Здравствуйте/
Пытаюсь сделать фильтр из нескольких блоков, в одном из которых есть группа чекбоксов с возможностью множественного выбора. Код сниппета:
Что делать? (
Пытаюсь сделать фильтр из нескольких блоков, в одном из которых есть группа чекбоксов с возможностью множественного выбора. Код сниппета:
<?php
//Filter Fields Settings
$filter = array();
$tags = $_GET['tags'];
if($tags){
$idx = 0;
foreach ($tags as $tag){
if($idx == 0){$idx= 1;$comma='';}else{$comma=' OR ';}
$filter_tags .= $comma."sposob_filtr LIKE '%".$tag."%'";
}
$filter[] = $filter_tags;
}
if($_GET['mysum']) {
$filter[] = 'min_sum_filtr<='.$_GET['mysum'];
$filter[] = 'max_sum_filtr>='.$_GET['mysum'];
}
//End Settings
print_r($filter);
//Sort
if($_GET['sortby']) {
$sortby = $_GET['sortby'];
} else {
$sortby = 'pagetitle';
}
if($_GET['sortdir']) {
$sortdir = $_GET['sortdir'];
} else {
$sortdir = 'asc';
}
//End Sort
//Offset
$offset = 0;
if($_GET['offset']){
$offset = $_GET['offset'];
}
if($filter) {
$where = $modx->toJSON(array($filter));
} else {
$where = '';
}
$params_count = array(
'parents' => $parents,
'limit' => 0,
'tpl' => '@INLINE ,',
'select' => 'id',
'includeTVs' => $fields,
'showHidden' => '1',
'where' => $where
);
$count = $modx->runSnippet('pdoResources',$params_count);
$count = count(explode(',',$count))-1;
$modx->setPlaceholder('count',$count);
$params = array(
'parents' => $parents,
'limit' => $limit,
'offset' => $offset,
'tpl' => $tpl,
'select' => 'id,pagetitle,introtext,content',
'includeTVs' => $fields,
'showHidden' => '1',
'sortby' => $sortby,
'sortdir' => $sortdir,
'where' => $where
);
$more = $count - $offset - $limit;
$lim = $more > $limit ? $limit : $more;
$button = '';
if($more > 0){
$button = '<div class="ajax-filter-count" data-count="'.$count.'"><a href="#" class="ajax-more">Загрузить еще '.$lim.' из '.$more.'</a></div>';
}
return $modx->runSnippet('pdoResources',$params).$button;
Проблема в том, что если выбрать несколько чекбоксов и еще другое условие, то это второе условие не срабатывает (насколько я понял, это происходит из-за того, что OR в чекбоксах «перекрывает» новое условие). Переменная $filter, которая потом должна преобразовываться в json строку для where выглядит так:Array ( [0] => sposob_filtr LIKE '%cash%' OR sposob_filtr LIKE '%visa%' [1] => min_sum_filtr<=100 [2] => max_sum_filtr>=100 )
Логично предположить, что группу условий с OR нужно взять в скобочки, но у меня не получается…Что делать? (
Непонятные письма
Здравствуйте!
Ситуация такая: Есть форма на Formit + AjaxForm «Обратный звонок», установлена в футере сайта как всплывающее окно. В этой форме всего 2 поля: Имя и Телефон (с использованием маски) + стоит поле антиспама (раньше и каптча стояла)…
Проблема в следующем: примерно раз в сутки приходят сразу несколько писем (5-10 с одним и тем же временем отправки): Имя — admin, Телефон — admin, Страница отправления — 404.html…
На спам не особо похоже (да и когда каптча стояла тоже такое было)… Но что тогда? И как это убрать?
Мне почему-то кажется что это какой-то плагин или снипет «чудит» (не уверен конечно) — накапливает, а потом отправляет письма при заходе на несуществующие страницы… но, опять же, откуда он мог взяться и почему использует чанк письма об обратном звонке Formit?.. блин, уже всю голову сломал ((
P.S. На событие OnPageNotFound подвешены 2 стандартных плагина: StercSeo и Tickets
Ситуация такая: Есть форма на Formit + AjaxForm «Обратный звонок», установлена в футере сайта как всплывающее окно. В этой форме всего 2 поля: Имя и Телефон (с использованием маски) + стоит поле антиспама (раньше и каптча стояла)…
Проблема в следующем: примерно раз в сутки приходят сразу несколько писем (5-10 с одним и тем же временем отправки): Имя — admin, Телефон — admin, Страница отправления — 404.html…
На спам не особо похоже (да и когда каптча стояла тоже такое было)… Но что тогда? И как это убрать?
Мне почему-то кажется что это какой-то плагин или снипет «чудит» (не уверен конечно) — накапливает, а потом отправляет письма при заходе на несуществующие страницы… но, опять же, откуда он мог взяться и почему использует чанк письма об обратном звонке Formit?.. блин, уже всю голову сломал ((
P.S. На событие OnPageNotFound подвешены 2 стандартных плагина: StercSeo и Tickets
Как подключить reCaptchaV3 к Tickets ?
Здравствуйте!
Сделал форму отзывов на компоненте Tickets (с костылем, чтобы без авторизации можно было тикеты создавать), теперь опасаюсь что будет спам приходить. На Modstore есть компонент reCaptchaV3 modstore.pro/packages/utilities/recaptchav3, но там объясняется только как его к Formit привязать.
Можно ли что-нибудь подобное сделать и для Tickets?
Сделал форму отзывов на компоненте Tickets (с костылем, чтобы без авторизации можно было тикеты создавать), теперь опасаюсь что будет спам приходить. На Modstore есть компонент reCaptchaV3 modstore.pro/packages/utilities/recaptchav3, но там объясняется только как его к Formit привязать.
Можно ли что-нибудь подобное сделать и для Tickets?
Formit добавить класс при ошибки при валидации для радиокнопок
Здравствуйте!
Есть некая форма с группами радиокнопок. Каждая группа кнопок обязательна для заполнения.
Есть некая форма с группами радиокнопок. Каждая группа кнопок обязательна для заполнения.
<form action="" method="post" id="anketa4" class="ajax_form">
<div class="form-group">
<fieldset>
<legend>Вопрос-1 [[!+fi.error.question1]]</legend>
<label for="q4-1-0"><input id="q4-1-0" type="hidden" name="question1[]" value="" class="form-control" /></li>
<label for="q4-1-1"><input type="radio" id="q4-1-1" name="question1[]" value="Ответ1" [[!+fi.question1:FormItIsChecked=`Ответ1`]] class="form-control"><span>Ответ1</span></label>
<label for="q4-1-2"><input type="radio" id="q4-1-2" name="question1[]" value="Ответ2" [[!+fi.question1:FormItIsChecked=`Ответ2`]] class="form-control"><span>Ответ2</span></label>
<label for="q4-1-3"><input type="radio" id="q4-1-3" name="question1[]" value="Ответ3" [[!+fi.question1:FormItIsChecked=`Ответ3`]] class="form-control"><span>Ответ3</span></label>
</fieldset>
</div>
<div class="form-group">
<fieldset>
<legend>Вопрос-2 [[!+fi.error.question2]]</legend>
<label for="q4-2-0"><input id="q4-2-0" type="hidden" name="question2[]" value="" class="form-control" /></li>
<label for="q4-2-1"><input type="radio" id="q4-2-1" name="question2[]" value="Ответ1" [[!+fi.question1:FormItIsChecked=`Ответ1`]] class="form-control"><span>Ответ1</span></label>
<label for="q4-2-2"><input type="radio" id="q4-2-2" name="question2[]" value="Ответ2" [[!+fi.question1:FormItIsChecked=`Ответ2`]] class="form-control"><span>Ответ2</span></label>
</fieldset>
</div>
<div class="form-group">
<div class="controls">
<button type="submit" class="submit-btn" value="Submit">Отправить</button>
</div>
</div>
</form>
Вызов формы:[[!AjaxForm?
&form=`AjaxForm.anketa4`
&snippet=`FormIt`
&hooks=`FormItSaveForm,email`
&emailTo=`[[++myemail]]`
&emailFrom=`noreply@[[!getDomainName?&url=`[[++site_url]]`]]`
&emailFromName=`[[++site_name]]`
&emailSubject=`Анкета с сайта [[++site_name]]`
&emailTpl=`tpl.email-anketa4`
&validate=`tel:required,question1:required,question2:required`
&validationErrorMessage=`Вы должны ответить на все вопросы в анкете!`
&successMessage=`Анкета успешно отправлена`
]]
Formit позволяет делать валидацию радиокнопок, но почему-то не добавляет никаких классов к незаполненым группам, что бы можно было их как-то «подсветить» через css… Что делать?!