10 сентября 2019, 11:06 Ну а если &tpl через чанк прописать: [[getImageList? &tvname=`resourcealbum` &tpl=`image-tpl` &limit=`1` &docid=`[[+id]]` ]] И в нем (image-tpl) [[+image]] Вопросы / Неправильный путь к изображению 14 0
09 сентября 2019, 16:08 Направить поле Изготовитель на vendor. В документации есть пример (второй параметр). Вопросы / создание migx параметров при импорте из 1c 13 0
09 сентября 2019, 15:54 Тогда нужно либо в 1С их прописывать в одном поле, как-нибудь типа Желтый#F3F425•Розовый#BE07C5•Красный#FF0000и тогда: <?php if ($modx->event->name != 'mSyncOnProductImport') return; $analogTitle = $properties["Аналог"]; $analog = $modx->getObject('modResource', array('pagetitle' => $analogTitle)); $analogId = $analog ? $analog->id : 0; $colors = explode('•', $properties["Цвет маркера"]); foreach($colors as $key => $color){ $colorTV[$key]['MIGX_id'] = $key; $colorTV[$key]['colorname'] = explode('#',$color)[0]; $colorTV[$key]['direct'] = $analogId; $colorTV[$key]['color'] = explode('#',$color)[1]; } $colorTV = json_encode($colorTV); $resource->setTVValue('scolor', $colorTV); Либо обратиться в поддержку компонента по поводу множественных значений свойств. Вопросы / создание migx параметров при импорте из 1c 13 +1
09 сентября 2019, 15:33 Это в XML, а я про переменную $properties[«Цвет маркера»] в плагине. Там, если цветов несколько, что содержится? Только одно значение: Желтый•#F3F425Или как-то все перечисляются: Желтый•#F3F425,розовый•#BE07C5 Вопросы / создание migx параметров при импорте из 1c 13 0
09 сентября 2019, 15:16 Я об этом и написал. Что у Вас в $properties[«Цвет маркера»]? Как выглядит строка? Вопросы / создание migx параметров при импорте из 1c 13 0
09 сентября 2019, 15:00 Как-то так: <?php if ($modx->event->name != 'mSyncOnProductImport') return; $analogTitle = $properties["Аналог"]; $analog = $modx->getObject('modResource', array('pagetitle' => $analogTitle)); $analogId = $analog ? $analog->id : 0; $colors = explode('•#', $properties["Цвет маркера"]); foreach($colors as $key => $color){ $colorTV[$key]['MIGX_id'] = $key; $colorTV[$key]['colorname'] = '***'; // данные из $color $colorTV[$key]['direct'] = $analogId; $colorTV[$key]['color'] = '***'; // данные из $color } $colorTV = json_encode($colorTV); $resource->setTVValue('scolor', $colorTV); «Данные из $color» зависят от того, что у Вас в поле «Цвет маркера». Вопросы / создание migx параметров при импорте из 1c 13 +1
06 сентября 2019, 17:41 Попробуйте так: <?php $out = ''; if($input != ''){ $arr = explode(',', $input); foreach($arr as $item){ $items .= '<div class="product">'.$item.'</div>'; } $out = '<div class="product-list">'.$items.'</div>'; } return $out; Вопросы / Как вывести TV через свою обёртку? 10 +1
06 сентября 2019, 17:17 Запятую поставьте: $arr = explode(',', $input); Вопросы / Как вывести TV через свою обёртку? 10 +1
06 сентября 2019, 17:09 Ну тогда выберите «Разделитель» и поставьте в кач-ве него запятую. Сделайте сниппет: <?php $out = ''; $arr = explode(',', $input); if(count($arr) > 0){ foreach($arr as $item){ $items .= '<div class="product">'.$item.'</div>'; } $out = '<div class="product-list">'.$items.'</div>'; } return $out; Используйте этот сниппет как модификатор: [[*checkboxTv:snippet]] Вопросы / Как вывести TV через свою обёртку? 10 +1
06 сентября 2019, 16:37 Настройте параметры вывода: Вопросы / Как вывести TV через свою обёртку? 10 0
05 сентября 2019, 13:57 Вот например: modzone.ru/blog/2015/12/18/methods-of-working-with-placeholders/ Вопросы / Как лучше оформить замены в тексте? 16 0
05 сентября 2019, 13:27 Можно передавать сниппету поля: [[Snippet? &fields=`content,description,tv.tvname`]] В сниппете: <?php $inarr = explode(',', $fields); foreach($inarr as $field){ if(strpos($field, 'tv.') === false){ $content = $modx->resource->get($field); }else{ $content = $modx->resource->getTVValue(str_replace('tv.', '', $field)); } $text[] = $content; } $str = implode('--separator--', $text); $result = '.......'; // заменяем что надо $resarr = explode('--separator--', $result); foreach($resarr as $key => $val){ $modx->setPlaceholder('new.'.$inarr[$key], $val); } return; Выводите на страницу: [[+new.content]] [[+new.description]] [[+new.tv.tvname]] Вопросы / Как лучше оформить замены в тексте? 16 0
05 сентября 2019, 12:54 Т. е. должна быть только одна замена из списка замен по всем полям, если их объединить.Из Ваших предыдущих сообщений не очевидно, что замена должна срабатывать только один раз ))). А так да — объединяйте все в один текст, делите, меняйте, потом пишите результат в плейсхолдеры и выводите на страницу. Вопросы / Как лучше оформить замены в тексте? 16 0
05 сентября 2019, 12:25 Да, честно говоря, непонятно )). Этот вариант не подходит, так как в нем должно было бы замениться только два первых совпадения, а они встречаются в первом полеВ этом варианте заменятся все совпадения во всех полях. Модификатор вызывается по отдельности для каждого поля. То есть если у Вас в поле description такой текст: Lorem ipsum dolor слово1 sit amet, consectetur adipiscing слово2 elit. А в поле content такой: Lorem слово1 ipsum dolor sit amet, consectetur adipiscing слово2 elit слово3. То в результате работы сниппета: <?php $arr1 = array( 'слово1', 'слово2', 'слово3' ); $arr2 = array( 'замена1', 'замена2', 'замена3' ); return str_replace($arr1, $arr1, $input); У Вас [[*description:snippet]] выведет: Lorem ipsum dolor замена1 sit amet, consectetur adipiscing замена2 elit. А [[*content:snippet]] выведет: Lorem замена1 ipsum dolor sit amet, consectetur adipiscing замена2 elit замена3. Вопросы / Как лучше оформить замены в тексте? 16 0
05 сентября 2019, 11:36 Я предложил второй вариант в ответ на Ваш комментарий про разные поля и он имеет смысл, если для content один набор замен, а для description другой. Если Вам все равно, в каком поле встретится слово, то это как раз первый вариант. Прописываете в нем замену 100 слов и при парсинге шаблона система их заменит там, где они встречаются. Можно вообще не привязываться к полям, а сделать плагин замены на событие OnWebPagePrerender и тогда будет обрабатываться вообще весь код страницы перед выводом в браузер. Вопросы / Как лучше оформить замены в тексте? 16 0
05 сентября 2019, 11:12 Сделайте свой сниппет для каждого поля или используйте опции: <?php switch ($options){ case 1: // логика замены для поля 1 $out = '...'; break; case 2: // логика замены для поля 2 $out = '...'; break; } return $out; Вывод: [[*content:snippet=`1`]] [[*description:snippet=`2`]] Вопросы / Как лучше оформить замены в тексте? 16 0
05 сентября 2019, 10:57 Сделайте сниппет с логикой замены и используйте его в качестве модификатора. Например, сниппет link: <?php // что меняем $arr1 = array( '_ссылка1_', '_ссылка2_', '_ссылка3_' ); // на что меняем $arr2 = array( '<a href="[[~1]]">ссылка1</a>', '<a href="[[~2]]">ссылка2</a>', '<a href="[[~3]]">ссылка3</a>' ); return str_replace($arr1, $arr1, $input); В шаблоне выводите: [[*content:link]] [[*description:link]] Вопросы / Как лучше оформить замены в тексте? 16 0
30 августа 2019, 14:35 Должно работать, вот к примеру: test.rpa-design.ru/formit.html Все почти из документации: [[!FormIt? &hooks=`email` &emailTpl=`MyEmailChunk` &emailTo=`*****` &clearFieldsOnSuccess=`0` &successMessage=`<p style="color:red">Форма отправлена!!!</p>` &validate=`nospam:blank, name:required, email:email:required, text:required` ]] <h2>Contact Form</h2> [[!+fi.validation_error_message:notempty=`<p>[[!+fi.validation_error_message]]</p>`]] <form action="[[~[[*id]]]]" method="post" class="form"> <input type="hidden" name="nospam" value="" /> <label for="name"> Name: <span class="error">[[!+fi.error.name]]</span> </label> <input type="text" name="name" id="name" value="[[!+fi.name]]" /> <label for="email"> Email: <span class="error">[[!+fi.error.email]]</span> </label> <input type="text" name="email" id="email" value="[[!+fi.email]]" /> <label for="text"> Message: <span class="error">[[!+fi.error.text]]</span> </label> <textarea name="text" id="text" cols="55" rows="7" value="[[!+fi.text]]">[[!+fi.text]]</textarea> <div class="form-buttons"> <input type="submit" value="Send Contact Inquiry" /> </div> </form> [[!+fi.successMessage]] Вопросы / Очистка formit после успешной отправки 6 0
30 августа 2019, 14:17 А в value у полей есть плейсхолдеры [[!+fi.fieldname]]? Вопросы / Очистка formit после успешной отправки 6 0
mxBackup — обезличенные копии MODX в пару кликов Ещё нет, я там разом почти полтора десятка пакетов выложил модератор, вероятно, а шоке.
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Исправим в б...
И в нем (image-tpl)
и тогда:
Либо обратиться в поддержку компонента по поводу множественных значений свойств.
Там, если цветов несколько, что содержится? Только одно значение:
Или как-то все перечисляются:
«Данные из $color» зависят от того, что у Вас в поле «Цвет маркера».
Сделайте сниппет:
Используйте этот сниппет как модификатор:
В сниппете:
Выводите на страницу:
А так да — объединяйте все в один текст, делите, меняйте, потом пишите результат в плейсхолдеры и выводите на страницу.
В этом варианте заменятся все совпадения во всех полях. Модификатор вызывается по отдельности для каждого поля.
То есть если у Вас в поле description такой текст:
Lorem ipsum dolor слово1 sit amet, consectetur adipiscing слово2 elit.
А в поле content такой:
Lorem слово1 ipsum dolor sit amet, consectetur adipiscing слово2 elit слово3.
То в результате работы сниппета:
У Вас [[*description:snippet]] выведет:
Lorem ipsum dolor замена1 sit amet, consectetur adipiscing замена2 elit.
А [[*content:snippet]] выведет:
Lorem замена1 ipsum dolor sit amet, consectetur adipiscing замена2 elit замена3.
Если Вам все равно, в каком поле встретится слово, то это как раз первый вариант. Прописываете в нем замену 100 слов и при парсинге шаблона система их заменит там, где они встречаются.
Можно вообще не привязываться к полям, а сделать плагин замены на событие OnWebPagePrerender и тогда будет обрабатываться вообще весь код страницы перед выводом в браузер.
Вывод:
Например, сниппет link:
В шаблоне выводите:
Все почти из документации:
?