Sergey
С нами с 12 января 2017; Место в рейтинге пользователей: #781mFilter2 - из метода boolean убрать значение "нет"
Здравствуйте!
Помогите, пожалуйста, доработать метод фильтрации. У товара есть поле ms|favorite. У некоторых товаров это поле отмечено (чекбокс). Нужно в фильтре вывести только одну галочку, по клику на которую бы фильтровались товары. Можно выводить методом boolean, но тогда будет выбор «да» и «нет».
Нашел направление, куда копать.
Создал новый метод Positive, присвоил:
Грубо говоря, из метода boolean, который я взял за основу, нужно убрать те варианты, где поле не отмечено (нулевое?). Далее чистый boolean с исправленными названиями на positive.
Помогите, пожалуйста, доработать метод фильтрации. У товара есть поле ms|favorite. У некоторых товаров это поле отмечено (чекбокс). Нужно в фильтре вывести только одну галочку, по клику на которую бы фильтровались товары. Можно выводить методом boolean, но тогда будет выбор «да» и «нет».
Нашел направление, куда копать.
Создал новый метод Positive, присвоил:
&filters=`ms|favorite:positive`
Но дальше эксперименты-правки не увенчались успехом. Грубо говоря, из метода boolean, который я взял за основу, нужно убрать те варианты, где поле не отмечено (нулевое?). Далее чистый boolean с исправленными названиями на positive.
<?php
class myCustomFilter extends mse2FiltersHandler {
public function buildPositiveFilter(array $values, $name = '') {
if (count($values) < 2 && empty($this->config['showEmptyFilters'])) {
return array();
}
$results = array();
foreach ($values as $value => $ids) {
$empty = empty($value) || (is_numeric($value) && (int)$value === 0);
$title = $empty
? $this->modx->lexicon('mse2_filter_positive_no')
: $this->modx->lexicon('mse2_filter_positive_yes');
if (!isset($results[$title])) {
$results[$title] = array(
'title' => $title,
'value' => (int)!$empty,
'type' => '<b>positive</b>',
'resources' => $ids,
);
}
else {
$results[$title]['resources'] = array_merge($results[$title]['resources'], $ids);
}
}
ksort($results);
return $results;
}
public function filterPositive(array $requested, array $values, array $ids) {
$matched = array();
$tmp = array_flip($ids);
foreach ($requested as $value) {
foreach ($values as $k => $resources) {
$empty = empty($k) || (is_numeric($k) && (int)$k === 0);
if ((empty($value) && !$empty) || (!empty($value) && $empty)) {
continue;
}
foreach ($resources as $id) {
if (isset($tmp[$id])) {
$matched[] = $id;
}
}
}
}
return $matched;
}
}
Подготавливаем ЛК для "ГдеПосылка"
Это продолжение статей по работе с заказами MS2, в последней статье я обещал, что расскажу как интегрировать сервис «ГдеПосылка» в Minishop2, а пока я жду пока очухается администрация «ГдеПосылка» чтобы дать мне доступ к API подготовим почву для интеграции, что мы будем делать:
- Добавим новое поле в заказы minishop2
- Сделаем вывод для пользователей их историю заказов без extJS и каких либо дополнений, на чистом pdoTools
- Научимся делать leftJoin и select на pdoTools и pdoFetch
- Бонусом идут сразу готовые стили для всего этого добра и написанный JS
За объяснением кода — под кат, за кодом на GitHub
Sendex и AjaxForm - подписка на рассылку ч/з ajax
Sendex, как учебный компонент, особо не развивается, но он довольно удобен и приятен в обращении изнутри сайта. В связи с чем регулярно его использую. Но вот «снаружи», на фронте, он не очень удобен. Очередная просьба от клиента «чтобы окошко появлялось, а страничка не перезагружалась», побудила переписать для себя сниппет так, чтобы потом пользовать его через ajaxform. Получилось три чанка, один сниппет и немного джаваскрипта.
Мультидоменность контекстами
В сообществе часто проскакивают вопросы про мультидоменность на одной копии MODX. А у меня, как раз, сайты демо версий компонентов реализованы таким образом. Думаю, информация будет полезной!
Extjs: добавление поля в таблице заказов
Добрый день!
Подскажите, пожалуйста, как добавить с помощью MODX-плагина элемент в контекстное меню в таблице заказов Минишопа? По-умолчанию, там Изменить и Удалить. joxi.ru/52azjXgu4dzBZA
1. Я создал плагин msOrderAddPrint, повесил его на событие msOnManagerCustomCssJs
Написал в нем код:
Подскажите, пожалуйста, как добавить с помощью MODX-плагина элемент в контекстное меню в таблице заказов Минишопа? По-умолчанию, там Изменить и Удалить. joxi.ru/52azjXgu4dzBZA
1. Я создал плагин msOrderAddPrint, повесил его на событие msOnManagerCustomCssJs
Написал в нем код:
Добавление нового поля в профили пользователей
Требуется добавить во все профили пользователей новое поле (ИНН), как это лучше сделать? Нужно чтобы и из админки было удобно редактировать и через фронтенд. Может уже ктото сталкивался с подобным. Думал добавлять в какие нибудь уже стандартные поля типа «факс», но это по моему колхоз)))
AjaxForm не срабатывает валидация Checbox
Добрый день!
Чекбокс выглядит так:
<input type=«checkbox» name=«iagree[]» id=«iagree» value=«I agree that:»
[[!+fi.iagree:FormItIsChecked=`I agree that:`]]>
Я соглашаюсь с тем что:
В вызове снипета есть необходимый параметр:
&validate=`
iagree:required`
делал и так:
&validate=`
iagree[]:required`
Есть и другие поля для валидации. Они валидируются, а чекбокс нет.
И класс не присваивается, и форма улетает без поставленной галки.
Гуглил, яндексил, да всё бестолку((
Заодно, если знатоки AjaxForm подскажут как слать два письма с разными tpl (одно мне, другое тому, кто форму заполнил, о том, что его заявка успешно ушла) — буду крайне признателен
И еще как добавить в случае ошибки валидации чекбокса рядом с ним сообщение.
У меня там рядом с ним вот такая конструкция есть:
[[+fi.error.iagree]]
и в параметрах снипета такая:
&iagree.vTextRequired=`Тык!`
только я хз сработает ли и как вобще надо
И еще мне надо что бы файлы можно было прикреплять только doc, docx и pdf — как это сделать?
Чекбокс выглядит так:
<input type=«checkbox» name=«iagree[]» id=«iagree» value=«I agree that:»
[[!+fi.iagree:FormItIsChecked=`I agree that:`]]>
Я соглашаюсь с тем что:
В вызове снипета есть необходимый параметр:
&validate=`
iagree:required`
делал и так:
&validate=`
iagree[]:required`
Есть и другие поля для валидации. Они валидируются, а чекбокс нет.
И класс не присваивается, и форма улетает без поставленной галки.
Гуглил, яндексил, да всё бестолку((
Заодно, если знатоки AjaxForm подскажут как слать два письма с разными tpl (одно мне, другое тому, кто форму заполнил, о том, что его заявка успешно ушла) — буду крайне признателен
И еще как добавить в случае ошибки валидации чекбокса рядом с ним сообщение.
У меня там рядом с ним вот такая конструкция есть:
[[+fi.error.iagree]]
и в параметрах снипета такая:
&iagree.vTextRequired=`Тык!`
только я хз сработает ли и как вобще надо
И еще мне надо что бы файлы можно было прикреплять только doc, docx и pdf — как это сделать?
Collections. Коллекции внутри коллекций
Привет, помогите разобраться с Collections
Я создал тип коллекции для категории компаний и для самих компаний тоже.
Т.е. Сами категория компаний — тип коллекции, а внутри него компании(которые тоже типа коллекции).
Я создал тип коллекции для категории компаний и для самих компаний тоже.
Т.е. Сами категория компаний — тип коллекции, а внутри него компании(которые тоже типа коллекции).
Короткие ссылки средствами modx
Запрос на помощь вылился в готовый результат.
Пример основной задачи — реализация сайта с кириллическим именем домена, и ссылками так же на кириллице. Типа: сайт.рф/каталог/ресурс
Выглядит красиво, доступно, запоминается, и говорят — полезно для СЕО. Но появилась проблемка, связанная с тем, что при попытке поделиться урлом, порой выводится неудобноваримая ссылка из кучи непонятных символов. Что нибудь типа такого:
Пример основной задачи — реализация сайта с кириллическим именем домена, и ссылками так же на кириллице. Типа: сайт.рф/каталог/ресурс
Выглядит красиво, доступно, запоминается, и говорят — полезно для СЕО. Но появилась проблемка, связанная с тем, что при попытке поделиться урлом, порой выводится неудобноваримая ссылка из кучи непонятных символов. Что нибудь типа такого:
[Решено] Дополнительные поля в Tickets
Всем привет! Создаю форму добавления объявлений, добавил новые TV поля таким образом:
UPD: Всё оказалось намного проще. Выводим TicketForm с параметрами:
<input type="text" name="tv_price" value="0" />
где tv_price название tv параметра, но при сохранении сохраняет только значение value по умолчанию, тоесть 0. Не могу разобраться, как прописать name правильно tv.price или tvprice?UPD: Всё оказалось намного проще. Выводим TicketForm с параметрами:
[[!TicketForm?
&requiredFields=`parent,pagetitle,content,bprice,bcountry,bregion,bcity`
&allowedFields=`parent,pagetitle,content,published,bprice,bcountry,bregion,bcity`
&parents=`322,335,338,345,351,352,353,354,355,356,357,358,361,365,369,373`
]]
а в чанке который выводит форму прописываем TV-параметры в name без префиксов tv., tv_ а как есть:<input type="text" name="bprice" value="0">