Василий Наумкин · 04 июля 2014, 14:34 &where=`["Любое условие на чистом SQL"]` Наверное, нужно использовать CAST(), а может и так заработает: &where=`["TVproperty_price.value >= 10000000"]` Вопросы / PdoResources: &where и приведение к числу 3 +1 1
Andrei D. · 17 апреля 2014, 02:43 Блин… в третий раз, но уже без ошибок)) Правильная версия: Предстоящие: [[!pdoPage? &element=`getTickets` &parents=`38` &includeTVs=`program-start` &tpl=`program-list-ru` &where=`["program-start > \"[[!today]]\""]` &sortby=`program-start` &sortdir=`ASC` ]]Прошедшие: [[!pdoPage? &element=`getTickets` &parents=`38` &includeTVs=`program-start` &tpl=`program-list-ru` &where=`["program-start < \"[[!today]]\""]` &sortby=`program-start` &sortdir=`DESC`]] Вопросы / Выборка pdoPage where по дате 12 0 1
Володя · 13 апреля 2014, 11:04 Приведу небольшой пример на пакете — Office, может кому пригодится… Допустим хотим ограничить доступ пользователей по email. Пускать только разрешенные email. 1. создаем свое событие для плагина <?php $Event = $modx->newObject('modEvent'); $Event->set('name', 'OnOfficeBeforeLogin'); $Event->set('service',1); $Event->set('groupname', 'office'); $Event->save();проверить создалось ли событие можно так $test = $modx->getObject('modEvent',array('name'=>'OnOfficeBeforeLogin')); echo $test->get('groupname');2. добавляем в action.php $modx->invokeEvent('OnOfficeBeforeLogin', array( '_REQUEST' => $_REQUEST ));3. пишем плагин на наше событие <?php switch ($modx->event->name) { case 'OnOfficeBeforeLogin': if ($_REQUEST['action']='auth/sendlink') { $command = $modx->getOption('office_ms2_command', null, "", true);//системная настройка с email участниками $instructor = $modx->getOption('office_ms2_instructor', null, "", true);//системная настройка с email тренерами $emails = array_merge(explode(',', $command ),explode(',', $instructor )); if (!in_array($_REQUEST['email'], $emails)) { //меняем почту на неправильную для выдачи ошибки $_REQUEST['email'] = "неправильная"; } else { //если есть доступ то ничего не делаем //или делаем чтото еще))) } } break; } Вопросы / Создание своего события в MODX 8 +1 4
Aртур Чикин · 23 марта 2014, 18:59 Тогда pdoResources полностью оправдает твои ожидания. Для глав создай шаблон к примеру у него id 10 а для разделов создай шаблон с id 11 Тогда при вызове можно сделать так: [[!pdoResources? &parents=`0` &depth=`0` &limit=`0` &hideContainers=`1` &hideUnsearchable=`1` &tplCondition=`template` &tplOperator=`==` &conditionalTpls=`{"10":"Здесь имя чанка для ГЛАВ", "11":"Здесь имя чанка для разделов"}` ]] Вопросы / Самый гибкий сниппет для вывода ресурсов. 4 0 1
Виталий Валерьевич · 10 февраля 2014, 14:49 Делается очень просто, опишу алгоритм и набросаю от руки, поднимать наработки долго. Алгоритм: Получить реферараОпределить поисковую системуПолучить поисковый запрос или ссылку переход с которой был осуществленЗаписать в cookie или в сессию результатВ нужном месте собрать Пишем сниппет: $referer = $_SERVER['HTTP_REFERER']; setcookie('referer', $referer, mktime(0, 0, 0, 1, 1, 2015)); if (stristr($referer, 'yandex.ru')) { $search = 'text='; $crawler = 'Yandex'; } else if (stristr($referer, 'rambler.ru')) { $search = 'words='; $crawler = 'Rambler'; } else if (stristr($referer, 'google.ru')) { $search = 'q='; $crawler = 'Google'; } else if (stristr($referer, 'google.com')) { $search = 'q='; $crawler = 'Google'; } else if (stristr($referer, 'mail.ru')) { $search = 'q='; $crawler = 'Mail.Ru'; } else if (stristr($referer, 'bing.com')) { $search = 'q='; $crawler = 'Bing'; } else if (stristr($referer, 'qip.ru')) { $search = 'query='; $crawler = 'QIP'; } if (isset($crawler)) { $phrase = urldecode($referer); preg_match('/'.$search.'([^&]*)/', $phrase.'&', $phrase2); $phrase = $phrase2[1]; } setcookie('phrase', $phrase, mktime(0, 0, 0, 1, 1, 2015)); Запускаем в шаблоне, перед <!DOCTYPE>, далее если используется Formit, создаем сниппет-hook и записываем в него следующую конструкцию (как пример): $output = ''; foreach ($_COOKIE as $k => $v) { if (0 === strpos($k, 'utm')) $output .= "$k: $v \n"; } $hook->setValue('referer', $output); return true; Итог: получаем плейсхолдер [[+referer]], который содержит всю необходимую информацию по рефереру. Код от руки, естественно требует доработок, но вроде нигде не ошибся. Вопросы / Откуда пришел лид 7 0 4
Василий Наумкин · 19 декабря 2013, 11:30 I think, you have an error in $searchFilter or $tvFilter. Try to debug you call using &showLog=`1`. For example: [[!pdoResources? &parents=`0` &where=`{"pagetitle:LIKE":"%", "OR:description:LIKE":"%", "OR:longtitle:LIKE":"%"}` &showLog=`1` ]] Will output: 0.0000741: pdoTools loaded 0.0000288: xPDO query object created 0.0029569: Added selection of modResource: SQL_CALC_FOUND_ROWS `id`, `type`, `contentType`, `pagetitle`, `longtitle`, `description`, `alias`, `link_attributes`, `published`, `pub_date`, `unpub_date`, `parent`, `isfolder`, `introtext`, `richtext`, `template`, `menuindex`, `searchable`, `cacheable`, `createdby`, `createdon`, `editedby`, `editedon`, `deleted`, `deletedon`, `deletedby`, `publishedon`, `publishedby`, `menutitle`, `donthit`, `privateweb`, `privatemgr`, `content_dispo`, `hidemenu`, `class_key`, `context_key`, `content_type`, `uri`, `uri_override`, `hide_children_in_tree`, `show_in_tree`, `properties` 0.0000529: Processed additional conditions 0.0005138: Added where condition: pagetitle:LIKE=%, OR:description:LIKE=%, OR:longtitle:LIKE=%, modResource.published=1, modResource.deleted=0 0.0000181: Sorted by publishedon, DESC 0.0000050: Limited to 10, offset 0 0.0005889: SQL prepared "SELECT SQL_CALC_FOUND_ROWS `modResource`.`id`, `modResource`.`type`, `modResource`.`contentType`, `modResource`.`pagetitle`, `modResource`.`longtitle`, `modResource`.`description`, `modResource`.`alias`, `modResource`.`link_attributes`, `modResource`.`published`, `modResource`.`pub_date`, `modResource`.`unpub_date`, `modResource`.`parent`, `modResource`.`isfolder`, `modResource`.`introtext`, `modResource`.`richtext`, `modResource`.`template`, `modResource`.`menuindex`, `modResource`.`searchable`, `modResource`.`cacheable`, `modResource`.`createdby`, `modResource`.`createdon`, `modResource`.`editedby`, `modResource`.`editedon`, `modResource`.`deleted`, `modResource`.`deletedon`, `modResource`.`deletedby`, `modResource`.`publishedon`, `modResource`.`publishedby`, `modResource`.`menutitle`, `modResource`.`donthit`, `modResource`.`privateweb`, `modResource`.`privatemgr`, `modResource`.`content_dispo`, `modResource`.`hidemenu`, `modResource`.`class_key`, `modResource`.`context_key`, `modResource`.`content_type`, `modResource`.`uri`, `modResource`.`uri_override`, `modResource`.`hide_children_in_tree`, `modResource`.`show_in_tree`, `modResource`.`properties` FROM `modx_site_content` AS `modResource` WHERE ( `modResource`.`pagetitle` LIKE '%' OR `modResource`.`description` LIKE '%' OR `modResource`.`longtitle` LIKE '%' AND `modResource`.`published` = 1 AND `modResource`.`deleted` = 0 ) ORDER BY publishedon DESC LIMIT 10 " 0.0001440: SQL executed 0.0001042: Total rows: 45 0.0001040: Rows fetched 0.0005629: Returning processed chunks 0.0054829: Total time 3 407 872: Memory usage As you see — there is exists published and deleted conditions by default. Added where condition: pagetitle:LIKE=%, OR:description:LIKE=%, OR:longtitle:LIKE=%, modResource.published=1, modResource.deleted=0 Вопросы / pdoResources and WHERE filter 7 0 1
Василий Наумкин · 18 сентября 2013, 17:23 <?php $tvid = 1; // id нужного ТВ параметра $res = array(); // Сюда забиваем результаты $q = $modx->newQuery('modTemplateVarResource', array('tmplvarid' => $tvid)); $q->select('contentid,value'); if ($q->prepare() && $q->stmt->execute()) { while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) { $res[$row['contentid']] = $row['value']; } } print_r($res); Получишь массив с id ресурсов и значенями ТВ c id = 1. Вопросы / Как получить все значения TV? 2 0 9
Василий Наумкин · 24 августа 2013, 17:47 Ну ты чего, не уложняй. Если писать как я показываю — это чистое SQL условие. Добавляй там скобочки, никаких массивов не нужно. Поэтому имена ТВ и не заменяются — ибо обработки нет никакой. То есть, это строка в JSON: &where=`[" Здесь чистое SQL условие, как оно будет при вызове сниппета, со скобочками и прочим. "]` Вопросы / pdoResource - проблема с NULL в &where=`` 12 0 1
Василий Наумкин · 24 августа 2013, 17:25 Попробуй так: &where=`[" show_in_main != 1 OR show_in_main IS NULL "]` Ну и еще вот тут много информации. Вопросы / pdoResource - проблема с NULL в &where=`` 12 0 1
Василий Наумкин · 13 июля 2013, 18:02 if (empty($parent)) {$parent = $modx->resource->id;} $pids = array_merge(array($parent), $modx->getChildIds($parent)); $ids = array(); $q = $modx->newQuery('msProduct'); $q->where(array('class_key' => 'msProduct','parent:IN' => $pids,'published' => 1,'deleted' => 0)); $q->select('`msProduct`.`id`'); if ($q->prepare() && $q->stmt->execute()) { $ids = $q->stmt->fetchAll(PDO::FETCH_COLUMN); } $q = $modx->newQuery('msProduct'); $q->leftJoin('msCategoryMember', 'msCategoryMember', '`msCategoryMember`.`product_id` = `msProduct`.`id`'); $q->where(array('class_key' => 'msProduct','msCategoryMember.category_id:IN' => $pids,'published' => 1,'deleted' => 0)); $q->select('`msProduct`.`id`'); if ($q->prepare() && $q->stmt->execute()) { $ids2 = $q->stmt->fetchAll(PDO::FETCH_COLUMN); if (!empty($ids2)) { $ids = array_unique(array_merge($ids, $ids2)); } } return count($ids); Вопросы / Вывод количества документов 5 0 2
[videoGallery] Видео галерея YouTube, Vimeo Невозможно установить пакет с подписью: videogallery-1.4.0-beta Ошибка установки Error в /core/packages/videogallery-1.4.0-beta/modCategory/7fc931a7772edc9752c16e9c41eb5e52.reso...
mxBoard: канбан-доска для команд, людей и ИИ-агентов в MODX 3 Привет, добавил пользователя в группу mxBoard(4), создал токен. Добавляю все в postman пишет: rest: { «success»: false, «message»: «Недействительный токен.», «data...
Релиз miniShop2 ver. 4.4.1 & 4.4.2 Подскажите пожалуйста, может я что-то не знаю или упустил. Но есть ли решение по глюку с radio? Указываешь свое radio c одинаковым name и в результате при переключении получаешь вс...
Плагин EnvBadge: визуальный индикатор окружения в админке MODX3 Расскажите пожалуйста как вы настраиваете сайт на MODX 3 чтобы был dev, prod, stage. Можете описать workflow? Допустим у меня 80% — это магазины, там клиенты, продажи, все онлай...
MaxNotify Обновление компонента 1.3.0-pl (22.07.2026) — добавлено автоматическое получение полей через msOrder->toArray(); — массивы и объекты безопасно пропускаются; — стандартные...
MyFavorites MyFavorites — 3.0.0-beta Первая версия для MODX Revolution 3.x — компонент полностью переписан с нуля (PHP >= 8.4, namespaced-ядро MODX 3, PSR-4, сервис-ориентированная архит...
Наверное, нужно использовать CAST(), а может и так заработает:
Предстоящие:
Прошедшие:
]]
Допустим хотим ограничить доступ пользователей по email. Пускать только разрешенные email.
1. создаем свое событие для плагина
проверить создалось ли событие можно так
2. добавляем в action.php
3. пишем плагин на наше событие
Для глав создай шаблон к примеру у него id 10 а для разделов создай шаблон с id 11
Тогда при вызове можно сделать так:
Алгоритм:
Пишем сниппет:
Запускаем в шаблоне, перед <!DOCTYPE>, далее если используется Formit, создаем сниппет-hook и записываем в него следующую конструкцию (как пример):
Итог: получаем плейсхолдер [[+referer]], который содержит всю необходимую информацию по рефереру. Код от руки, естественно требует доработок, но вроде нигде не ошибся.
Try to debug you call using &showLog=`1`. For example:
Will output:
As you see — there is exists published and deleted conditions by default.
Получишь массив с id ресурсов и значенями ТВ c id = 1.
Если писать как я показываю — это чистое SQL условие. Добавляй там скобочки, никаких массивов не нужно.
Поэтому имена ТВ и не заменяются — ибо обработки нет никакой.
То есть, это строка в JSON:
Ну и еще вот тут много информации.