
R2m0x94 (Vasily)
С нами с 07 мая 2018; Место в рейтинге пользователей: #313mFilter2 и кастомные таблицы
Вчера начал делать фильтрацию таблицы с фирмами на mFilter2. Сначало я создал файл кастомного класса:
core/components/msearch2/custom/filters/custom.class.php со следующим содержимым:
core/components/msearch2/custom/filters/custom.class.php со следующим содержимым:
<?php
class CustomFilter extends mse2FiltersHandler {
function __construct(mSearch2 &$mse2,array $config = array()) {
parent::__construct($mse2, $config);
$this->modx->addPackage('spromo' ,MODX_CORE_PATH.'components/spromo/model/');
$this->modx->addPackage('gl' ,MODX_CORE_PATH.'components/gl/model/');
$this->modx->addPackage('voteforms' ,MODX_CORE_PATH.'components/voteforms/model/');
}
public function getSpromoCompaniesValues(array $fields, array $ids) {
$filters = array();
$no_id = false;
if (!in_array('id', $fields)) {
$fields[] = 'id';
$no_id = true;
}
$q = $this->modx->newQuery('SpromoCompanies');
$q->select(implode(',', $fields));
$q->where(array('SpromoCompanies.id:IN' => $ids));
$tstart = microtime(true);
if ($q->prepare() && $q->stmt->execute()) {
$this->modx->queryTime += microtime(true) - $tstart;
$this->modx->executedQueries++;
while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
foreach ($row as $k => $v) {
$v = trim($v);
if ($k == 'category_id') {
if ($row['parent'] == $v) {continue;}
else {$k = 'parent';}
}
if ($v == '' || ($k == 'id' && $no_id)) {
continue;
}
elseif (isset($filters[$k][$v])) {
$filters[$k][$v][] = $row['id'];
}
else {
$filters[$k][$v] = array($row['id']);
}
}
}
}
else {
$this->modx->log(modX::LOG_LEVEL_ERROR, "[mSearch2] Error on get filter params.\nQuery: ".$q->toSql()."\nResponse: ".print_r($q->stmt->errorInfo(),1));
}
return $filters;
}
}
Дополнительные поля профиля юзера (не extended)

Разрабатываю проект, в котором необходимо было реализовать более простое редактирование дополнительных полей профиля, чем есть из коробки. К слову, неудобное редактирование — это не единственный минус нативного способа расширения профиля полями. Ни для кого не секрет, что фильтрацию по JSON полям нормально не осуществить, только костылями. Фактически, мне надо было получить решение, которое бы расширяло стандартный код MODX, не трогая исходники, дабы сохранить
Пришёл к выводу, что буду расширять стандартную вкладку профиля «Общая информация». При желании можно чуть переписать код в событии OnUserFormPrerender и создать свою вкладку со своими полями.
Расширение pdoTools
Представляю законченное решение для работы с файловыми элементами, собранное в пакет. Оно добавляет в pdoTools модификаторы chunk, snippet, template и code. Синтаксис точно такой же, как и в pdoTools — в названии элементов можно вставлять префиксы @FILE, @INLINE, @CODE и т.д. Поэтому вызовы элементов, описанные в прошлой статье, теперь немного изменились.
Cron и работа с modx
Приветствую!
Задача сама простая, есть параметр 'counterQuote'. Нужно получать его значение и увеличивать на 1 каждый день. Крон работает норм, отчеты о работе приходят, в них весь «index.php», но нужного результата нет.
Что еще надо сделать, чтобы заработало?
Задача сама простая, есть параметр 'counterQuote'. Нужно получать его значение и увеличивать на 1 каждый день. Крон работает норм, отчеты о работе приходят, в них весь «index.php», но нужного результата нет.
//Подключение
require '---- /public_html/index.php';
//Получение параметра и увеличение на 1
$counterQuote = $modx->getObject('modSystemSetting',array('key' => 'counterQuote'));
$counterQuote->set('value',$counterQuote->get('value')+1);
$counterQuote->save();
//Обновление кеша
$cacheRefreshOptions = array( 'system_settings' => array() );
$modx->cacheManager->refresh($cacheRefreshOptions);
Ошибок не выдает, но и не увеличивается. Как сниппет в модх запускать, то все здорово.Что еще надо сделать, чтобы заработало?
Закрываем служебные директории MODX в Apache
В одной статье, касающейся безопасности, Василий дал очень хорошую рекомендацию по защите служебных папок. Реализовав это на своём хостинге, решил написать инструкцию, так как начинающие изучать MODX могут столкнуться с ошибкой 404, как Я например.
Настройка fileAttach
Всем привет. Прошу помочь мне с настройкой fileAttach.
Контекст использования: Хотел сделать папку downloads, куда сливать документы, картинки, схемы, а потом давать ссылки для скачивания на нужные документы в своих постах.
Что сделал:
1. Поставил fileAttach.
2. Создал источник фалов назвал Downloads, выставил ему тип «Присоединенные файлы». Параметры не трогал.
3. Создал папку в файловой системе assets/downloads/
4. В системных настройках fileattach изменил:
-download — нет
-files_path — assets/downloads/
-mediasource — 4 (id источника, который я создал)
-private — нет
-templates — 3 (нужный мне)
При попытке загрузки файла ошибка Internal Server Error.
В логе:
[2016-02-20 06:03:12] (ERROR @ /connectors/index.php) msResourceFile::load() is not a valid static method.
[2016-02-20 06:03:12] (ERROR @ /connectors/index.php) Could not load class: msResourceFile from mysql.msresourcefile.
Контекст использования: Хотел сделать папку downloads, куда сливать документы, картинки, схемы, а потом давать ссылки для скачивания на нужные документы в своих постах.
Что сделал:
1. Поставил fileAttach.
2. Создал источник фалов назвал Downloads, выставил ему тип «Присоединенные файлы». Параметры не трогал.
3. Создал папку в файловой системе assets/downloads/
4. В системных настройках fileattach изменил:
-download — нет
-files_path — assets/downloads/
-mediasource — 4 (id источника, который я создал)
-private — нет
-templates — 3 (нужный мне)
При попытке загрузки файла ошибка Internal Server Error.
В логе:
[2016-02-20 06:03:12] (ERROR @ /connectors/index.php) msResourceFile::load() is not a valid static method.
[2016-02-20 06:03:12] (ERROR @ /connectors/index.php) Could not load class: msResourceFile from mysql.msresourcefile.
Облако тегов для miniShop2
UPDATE 20.03.2018: Сниппет обновлён на корректный и добавлен pdoTools для обработки чанка.
Появилась задача реализовать облако тегов для удобства поиска товаров в интернет-магазине. Для этого сделал простенький сниппет, где теги собираются со всех товаров на сайте.

Сниппет умеет принимать параметры базового размера(font), шага в пикселях(step), количества размеров(levels) и чанка для вывода(tpl).
Алгоритм работы прост:
1. Собираются теги со всех товаров сайта.
2. Подсчитывается количество товаров для каждого тега.
3. Рассчитываются размеры для каждого уровня и границы по количеству использования тега.
4. Если не указан шаблон вывода, то на экране также будет облако тегов, но без ссылок.
Появилась задача реализовать облако тегов для удобства поиска товаров в интернет-магазине. Для этого сделал простенький сниппет, где теги собираются со всех товаров на сайте.

Сниппет умеет принимать параметры базового размера(font), шага в пикселях(step), количества размеров(levels) и чанка для вывода(tpl).
Алгоритм работы прост:
1. Собираются теги со всех товаров сайта.
2. Подсчитывается количество товаров для каждого тега.
3. Рассчитываются размеры для каждого уровня и границы по количеству использования тега.
4. Если не указан шаблон вывода, то на экране также будет облако тегов, но без ссылок.
Минимальный заказ
Дорогие вы мои, подскажите пожалуйста, есть ли какое готовое решение чтобы запрещать отправку формы оформления заказа или ее вывод, если сформированный заказ не дотягивает до минимальной цены?
CMPGenerator Pro ускоряем разработку своих пакетов
Hi, сделал новое дополнение CMPGenerator Pro на основе UiCMPGenerator.
Что может CMPGenerator Pro:
Что может CMPGenerator Pro: