02 августа 2023, 16:07 Вам нужно проверять стоит ли в определенных TV у родительского ресурса «1» и если стоит, то выводить их название? Для чего получать все TV родителя? Зачем прописывать текущему ресурсу родительские TV? Сделайте как я написал выше — это универсальное решение. Если требуется выводить не название TV а какой-то произвольный текст, то можете так: <?php $docid = $modx->getOption('docid', $scriptProperties, $resource->get('id')); $tvs = json_decode($tvs,1); $out = array(); foreach($tvs as $tv => $name){ if(!$tvo = $modx->getObject('modTemplateVar', array('name' => trim($tv)))) continue; if(!$tvres = $modx->getObject('modTemplateVarResource', array('tmplvarid' => $tvo->get('id'),'contentid' => $docid, 'value' => 1))) continue; $out[] = $name; } return implode(', ', $out); А в вызове указывайте для какой TV какой текст выводить: [[checkTV? &tvs = `{ "tovar_forel_chekbox":"форель","tovar_shuka_chekbox":"щука","tovar_kit_chekbox":"кит" }` &docid=`[[*parent]]` ]] Вопросы / Получение tv из дочерних ресурсов 7 0
02 августа 2023, 11:50 Если сами TV-шки называются «есть щука», «есть форель» и «есть кит», то так: <?php $docid = $modx->getOption('docid', $scriptProperties, $resource->get('id')); $tvs = explode(',', $tvs); $out = array(); foreach($tvs as $tv){ if(!$tvo = $modx->getObject('modTemplateVar', array('name' => trim($tv)))) continue; if(!$tvres = $modx->getObject('modTemplateVarResource', array('tmplvarid' => $tvo->get('id'),'contentid' => $docid, 'value' => 1))) continue; $out[] = $tvo->get('caption'); } return implode(', ', $out); Вызов один: [[checkTV? &docid=`[[*parent]]` //если на дочерних &tvs = `tovar_forel_chekbox,tovar_shuka_chekbox,tovar_kit_chekbox` ]] Вопросы / Получение tv из дочерних ресурсов 7 0
03 июля 2023, 10:15 Чтобы убрать атрибуты и заодно удалить слеши у одиночных тегов можно сделать плагин на событие onWebPagePrerender )): <?php if($modx->resource->get('content_type') == 1){ $arr1 = array('type="text/css"', 'type="text/javascript"',' />','/>'); $arr2 = array('','','>','>'); $output = &$modx->resource->_output; $output = str_replace($arr1,$arr2,$output); } Вопросы / Валидность javascript для компонентов MODx 12 +4 2
17 июня 2023, 10:53 Потому что в коде нет элементов с id, которые указаны в ссылках. Вопросы / Почему не срабатывают 4 первые ссылки в верхнем меню 1 0
26 мая 2023, 14:54 Поспешили, я поправил ) Вопросы / Вывод MIGX галерей из разных ресурсов с пагинацией 6 0
26 мая 2023, 14:46 Добавьте на 20 строке: <?php //....... foreach($tvs as $tv){ $a = json_decode($tv['value'], 1); foreach($a as $i){ $i['resource_id'] = $tv['contentid']; // вот это $array[] = $i; } } //.......В чанке используйте [[+resource_id]] Вопросы / Вывод MIGX галерей из разных ресурсов с пагинацией 6 0
26 мая 2023, 14:19 Попробуйте сделать такой сниппет: <?php $totalVar = $modx->getOption('totalVar', $scriptProperties, 'total'); $limit = $modx->getOption('limit', $scriptProperties, 10); $offset = $modx->getOption('offset', $scriptProperties, 0); $sortby = $modx->getOption('sortby', $scriptProperties, 'MIGX_id'); $sortdir = $modx->getOption('sortdir', $scriptProperties, 'DESC'); $docid = $modx->getOption('docid', $scriptProperties, $modx->resource->get('id')); $docid = str_replace(' ', '', $docid); $table = $modx->getOption('table_prefix').'site_tmplvar_contentvalues'; $sql = "SELECT * FROM {$table} WHERE `contentid` IN ({$docid}) AND `tmplvarid` = '{$tvId}'"; $q = $modx->prepare($sql); $q->execute(); $tvs = $q->fetchAll(PDO::FETCH_ASSOC); $array = array(); foreach($tvs as $tv){ $a = json_decode($tv['value'], 1); foreach($a as $i){ $array[] = $i; } } $modx->setPlaceholder($totalVar, count($array)); function sorter($key) { return function ($a, $b) use ($key) { return strnatcmp($a[$key], $b[$key]); }; } usort($array, sorter($sortby)); $sortdir == 'DESC' ? krsort($array) : ksort($array); $array = array_slice($array, $offset, $limit); foreach($array as $item){ $out .= $modx->getChunk($tpl, $item); } return $out; И используйте его в pdoPage: [[!pdoPage? &element=`SnippetName` &tvId=`43` // ID TV "gallery" &docid=`18,38,59,46` // ID ресурсов &limit=`12` &tpl=`tpl-gallery` ]] [[!+page.nav]] Вопросы / Вывод MIGX галерей из разных ресурсов с пагинацией 6 +2
25 мая 2023, 19:04 Используйте вставку кода, а то теги съедает: Вывод ссылки в чанке должен быть таким: <a href="[[+uri]]">Подробнее</a>или таким: <a href="[[~[[+id]]]]">Подробнее</a> Вопросы / Не могу понять почему не открывается страница с детальной новостью. 7 0
21 мая 2023, 12:22 Сделайте копию сниппета msProducts и перед этой строкой: $output[] = $pdoFetch->getChunk($tpl, $row);добавьте: $row['parents'] = $scriptProperties['parents']; Поменяйте вызовы msProducts на новый сниппет и теперь сможете в чанках использовать плейсхолдер [[+parents]], который будет выводить то, что указано в параметре &parents в вызове. Для вывода в чанках именно pagetitle делайте так: [[#[[+parents]].pagetitle]] //или на Fenom {$parents | resource : 'pagetitle'} Вопросы / Вывод полей второстепенной категории 36 +1
21 мая 2023, 11:10 Имеется та, что указана в вызове в &parents? То есть тут нужно в чанке programs.row вывести pagetitle категории с ID = 180? [[!msProducts? &parents=`180` &limit=`0` &sortby=`{ "menuindex":"ASC" }` &tpl=`programs.row` ]] Вопросы / Вывод полей второстепенной категории 36 0
19 мая 2023, 12:27 Если Вам нужно вывести второстепенные категории товара, сделайте сниппет myCategories: <?php $id = $modx->getOption('id', $scriptProperties, $modx->resource->get('id')); $table_cont = $modx->getOption('table_prefix').'site_content'; $table_cat = $modx->getOption('table_prefix').'ms2_product_categories'; $sql = "SELECT * FROM {$table_cat} WHERE `product_id` = {$id}"; $q = $modx->prepare($sql); $q->execute(); $resources = $q->fetchAll(PDO::FETCH_ASSOC); foreach ($resources as $category){ $cid = $category['category_id']; if($result = $modx->query("SELECT * FROM {$table_cont} WHERE id = {$cid}")){ $row = $result->fetch(PDO::FETCH_ASSOC); $out .= $modx->getChunk($tpl, $row); } } return $out; В чанке msProducts (programs.row) вызывайте его так: [[myCategories? &id=`[[+id]]`&tpl=`subcat_tpl`]]Или на Fenom {'myCategories' | snippet: ['id' => $id, 'tpl' => 'subcat_tpl']}В карточке товара &id можно не указывать. В чанке subcat_tpl доступны любые поля категории: [[+pagetitle]], [[+content]] и т. д. Вопросы / Вывод полей второстепенной категории 36 +1
16 мая 2023, 13:05 Создайте в настройках каждого контекста параметр id_category и укажите там соответствующий ID. В возможных значениях у TV пропишите: @EVAL if(!$res = $modx->getObject('modResource', $_GET['id'])) return; if(!$setting = $modx->getObject('modContextSetting', array('context_key' => $res->get('context_key'), 'key' => 'id_category'))) return; $docid = $setting->get('value'); return $modx->runSnippet('pdoResources',array( 'parents' => $docid , 'limit' => 0, 'tpl' => '@INLINE [[+pagetitle]] ([[+id]])==[[+id]]', 'outputSeparator' => '||' )); Вопросы / SELECT привязка в разных контекстах 2 +1
09 мая 2023, 17:27 На одном проекте (хостинг Reg.Ru) 35 810 записей, по 10 на страницу. Первоначальная загрузка 7 сек., далее быстро, даже если по 100 строк выводить. Экспорт встроенными средствами (CSV, 60МБ) секунд пять. Вопросы / Свое поле в админке 8 0
28 апреля 2023, 17:36 Прошу прощения, но есть же BackupMODX )) Готовые решения / Скрипт для создания бэкапа файлов сайта и базы данных MODX Revolution 10 +2
25 апреля 2023, 08:48 Сделайте сниппет getFileDate: <?php return date("Y-m-d H:i:s",filectime(MODX_BASE_PATH . $file)); Вызывайте в соответствующей колонке: [[!getFileDate? &file=`assets/template/raport/files/raport/raport_2023.xlsx`]] Вопросы / Вывести дату загруженного файла 2 +1 2
16 марта 2023, 09:42 Сделайте сниппет и вызывайте в нужном месте некешированным: <?php if(date("G") >= 8 && date("G") <= 23){ $out = $modx->getChunk('telnumber2', array()); }else{ $out = $modx->getChunk('telnumber1', array()); } return $out; Вопросы / Вывод чанка по расписанию 1 0
28 февраля 2023, 14:17 Если вкладка есть, но комментарии не выводятся, а в консоли ошибка по поводу отсутствия функции strftime, добавить подключение файла strftime-min-1.3.js: $templates = array(4, 6, 7); if (in_array($resource->get('template'), $templates)) { if($Tickets = $modx->getService('Tickets')){ $modx->controller->addLexiconTopic('tickets:default'); $modx->controller->addLastJavascript(MODX_ASSETS_URL.'components/tickets/js/mgr/misc/strftime-min-1.3.js'); $Tickets->loadManagerFiles($modx->controller, array( 'config' => true, 'utils' => true, 'css' => true, 'comments' => true, )); $insert = ' tabs.add({ title: _("comments"), items: [{ xtype: "tickets-panel-comments", hidden: false, record: ' . $modx->toJSON($resource->toArray()) . ', parents: ' . $resource->id . ', }] }); '; $modx->controller->addHtml(' <script> Ext.ComponentMgr.onAvailable("modx-resource-tabs", function() { var tabs = this; tabs.on("beforerender", function() { ' . $insert . ' }); }); </script>', true); } } Вопросы / Подключить вкладку с комментариями Tickets 18 0
24 февраля 2023, 11:53 msoptionprice тоже висит на msOnBeforeChangeInCart и может конфликтовать в Вашим плагином. Попробуйте поменять приоритет. Вопросы / miniShop2, событие msOnBeforeChangeInCart возвращает неверный результат 2 0
Gallery3x 3.4.0 - вставка галерей прямо из визуального редактора (CKEditor и TinyMCE RTE) Здравствуйте. Есть консольный скрипт Вот почитайте: docs.ivan345.com/books/gallery3x/page/import-ms2galleryphp
[mSync] Новая версия синхронизации с 1С Всем привет. В какой то момент начали сыпаться ошибки: Error 23000 executing statement: INSERT INTO `modx_msync_products` (`product_id`, `uuid_1c`) VALUES ...
Checkbox для модального окна Они не отключены, они платные, чтобы писали только те, кому действительно очень надо. Когда бесплатно люди начинают думать, что я им должен.
[SendIt 2.6.0] Анализ поведения пользователя для защиты от спама (невидимая капча)... Здравствуйте. Делаю личный кабинет на Sendit и со сбросом пароля возникли проблемы. Можете подсказать, в чем ошибка? Список вопросов в одноименном разделе на modx.pro пока пуст, и,...
Minishop + честный знак (продажа маркированной продукции) В нашем случае мы решили убрать всю логику по маркировке сайта.
MiniShop3 - Не выводятся товары дополнительных категорий @SYAN ваша указанная проблема исправлена еще до версии 1.2.3 @Павлик Мышкин завел: github.com/modx-pro/MiniShop3/issues/480 github.com/modx-pro/MiniShop3/issues/481Исправим в б...
MobileDetect 2.0.0-pl функция "планшеты как стандартные браузеры не работает" в 2.1.0-pl баг исправлен
Сделайте как я написал выше — это универсальное решение.
Если требуется выводить не название TV а какой-то произвольный текст, то можете так:
А в вызове указывайте для какой TV какой текст выводить:
Вызов один:
И используйте его в pdoPage:
Вывод ссылки в чанке должен быть таким:
или таким:
добавьте:
Поменяйте вызовы msProducts на новый сниппет и теперь сможете в чанках использовать плейсхолдер [[+parents]], который будет выводить то, что указано в параметре &parents в вызове.
Для вывода в чанках именно pagetitle делайте так:
То есть тут нужно в чанке programs.row вывести pagetitle категории с ID = 180?
В чанке msProducts (programs.row) вызывайте его так:
Или на Fenom
В карточке товара &id можно не указывать.
В чанке subcat_tpl доступны любые поля категории: [[+pagetitle]], [[+content]] и т. д.
В возможных значениях у TV пропишите:
Первоначальная загрузка 7 сек., далее быстро, даже если по 100 строк выводить.
Экспорт встроенными средствами (CSV, 60МБ) секунд пять.
Вызывайте в соответствующей колонке:
Попробуйте поменять приоритет.