21 апреля 2016, 20:32 На просторах инета нашел плагин /* cachingResources Кэширует ресурсы по заданным параметрам OnSiteRefresh */ $start_id = $modx->getOption('start_id',$scriptProperties,2); $depth = $modx->getOption('depth',$scriptProperties,50); $start_resource = $modx->getObject('modResource',$start_id); if(!$start_resource) return ''; $context = $start_resource->get('context_key'); $child_ids = $modx->getChildIds($start_id,$depth,array('context'=>$context)); array_push($child_ids,$start_id); foreach($child_ids as $id){ $url = $modx->makeUrl($id,$context,'','full'); $content = file_get_contents($url); } unset($content); return '';который должен отправлять в кеш из заданной категории, что-то ничего не выходит Вопросы / Принудительно отправить в кеш 5 0
15 апреля 2016, 20:01 Здравствуйте, получилось реализовать или все еще не пригодилось? Задумываюсь, очень нужная штука. Краудфандинг / Тэги к тикетам 49 0
13 апреля 2016, 21:22 Василий, спасибо!!! Очень полезное дополнение, реально помогает найти слабые места Магазин дополнений / debugParser теперь бесплатный 28 0
12 апреля 2016, 21:12 В продолжение темы. Продолжаю изучение php и попытки оптимизации кода. Теперь сниппет brp такой Вычитал что str_replace работает быстрее чем preg_replace $sContent = preg_replace_callback('|(<ul(.+)</ul>)|iU', function($sContent){ return "</p>".$sContent[0]."<p>"; }, $sContent); $sContent = preg_replace_callback('|(<ol(.+)</ol>)|iU', function($sContent){ return "</p>".$sContent[0]."<p>"; }, $sContent); $sContent = preg_replace_callback('|<h([2,3]{1}) id=".">(.+)</h[2,3]{1}>|iU', function($sContent){ return "</p>".$sContent[0]."<p>"; }, $sContent); $from=array ("</br>","\n","></p><p><","<p>\r</p>","<p>\n</p>","<p></p>"); //слеш перед br не нужен, здесь без него происходит перенос строки $to=array ("\n","</p><p>","><","","",""); $sContent=str_replace($from, $to, $sContent); return "<p>".$sContent."</p>";Будут идеи как оптимизировать, с радостью приму. Вопросы / Tickets для статей. Заменить <br> на <p> 11 0
10 апреля 2016, 07:29 Да, спасибо, думал на эту тему. На сайте уже много статей и пересохранать каждую не очень хочется, может быть есть вариант прогнать все статьи через плагин? Вопросы / Tickets для статей. Заменить <br> на <p> 11 0
09 апреля 2016, 21:44 Я сделал так. Вызов контента [[brp? &sContent=`[[*content]]`]]Сниппет brp $sContent = preg_replace_callback('|(<ul(.+)</ul>)|iU', function($sContent){ return $sContent[0]."\n"; }, $sContent); $sContent = preg_replace_callback('|<h([2,3]{1}) id=".">(.+)</h[2,3]{1}>|iU', function($sContent){ return $sContent[0]."\n"; }, $sContent); $sContent = preg_replace('|</br>|isU', '', $sContent);// слеш перед br не нужен, здесь без него происходит перенос строки $sContent = preg_replace('|\n|isU', '</p><p>', $sContent); return "<p>".$sContent."</p>";Принцип действия прост: добавляем "\n" после ul и заголовков (h2,h3). Вырезаем все br, меняем все \n на </p><p>. В начало добавляем <p>, в конец </p>, так на всякий..Решение кривое, но работает. Любые улучшения и изменения приветствуются. Вопросы / Tickets для статей. Заменить <br> на <p> 11 0
07 апреля 2016, 20:58 Создать TV, прицепить его к категориям и прописывать данному tv — id требуемой позиции BannerY, а выводить [[!BannerY? &position=`[[*наш tv]]`]]. Так должно получиться выводить для необходимой категории свой баннер. Вопросы / Есть идеи BannerY ? 6 0
03 апреля 2016, 19:42 Так пробовал делать, часть функций все равно не работает, как писал выше Для разработчиков / Основы Ajax 86 0
02 апреля 2016, 17:36 Спасибо за помощь, буду понемногу вникать в php+js Для разработчиков / Основы Ajax 86 0
02 апреля 2016, 12:52 Где то еще подключаются скрипты. Формы отличаются 1. Форма «Содержимое» через ajax <div class="form-group"> <textarea class="form-control" placeholder="Содержимое" name="content" id="ticket-editor" rows="10"></textarea> <span class="error"></span> </div>2. «Форма Содержимое» стандартное <div class="form-group"> <div><div id="markItUpTicket-editor" class="markItUp"><div class="markItUpContainer"><div class="markItUpHeader"><ul><li class="markItUpButton markItUpButton1 btn-bold"><a href="" accesskey="B" title="Выделить жирным [Ctrl+B]">Выделить жирным</a></li><li class="markItUpButton markItUpButton2 btn-italic"><a href="" accesskey="I" title="Курсив [Ctrl+I]">Курсив</a></li><li class="markItUpButton markItUpButton3 btn-underline"><a href="" accesskey="U" title="Подчеркивание [Ctrl+U]">Подчеркивание</a></li><li class="markItUpButton markItUpButton4 btn-stroke"><a href="" accesskey="H" title="Выделение подзаголовков [Ctrl+H]">Выделение подзаголовков</a></li><li class="markItUpSeparator">---------------</li><li class="markItUpButton markItUpButton5 btn-bulleted"><a href="" title="Ненумерованный список">Ненумерованный список</a></li><li class="markItUpButton markItUpButton6 btn-numeric"><a href="" title="Нумерованный список">Нумерованный список</a></li><li class="markItUpSeparator">---------------</li><li class="markItUpButton markItUpButton7 btn-quote"><a href="" title="Цитата">Цитата</a></li><li class="markItUpButton markItUpButton8 btn-link"><a href="" title="Link">Link</a></li><li class="markItUpButton markItUpButton9 btn-picture"><a href="" title="Картинка">Картинка</a></li></ul></div><textarea class="form-control markItUpEditor" placeholder="Содержимое" name="content" id="ticket-editor" rows="10"></textarea><div class="markItUpFooter"><div class="markItUpResizeHandle"></div></div></div></div></div> <span class="error"></span> </div>Но даже если все это добавить в форму выводимую через ajax, кнопки появляются, но не работают. Где-то внутри еще есть подключение скриптов. Я защел в тупик, куда копать дальше Для разработчиков / Основы Ajax 86 0
02 апреля 2016, 12:25 Все переделал еще раз и часть функций, при наличии стандартного сниппета [[!TicketForm?]] на странице, заработало, а вот добавление файлов нет и элементы форматирования текста: B,I… не появились. Для разработчиков / Основы Ajax 86 0
02 апреля 2016, 11:41 Попробовал подключить вручную, ситуация не изменилась. Подумал, что что-то пропустил и вывел на эту же страницу [[!TicketForm?]] для подключения скриптов, ситуация не изменилась. Стандартная форма работает, форма через ajax нет. Еще обратил внимание, что у формы через ajax нет (не выведены) элементов форматирования текста: B,I… Для разработчиков / Основы Ajax 86 0
02 апреля 2016, 11:07 При этом если на этой же странице вывести форму обычно [[!TicketForm? &requiredFields=`longtitle,model,introtext` &allowedFields=`longtitle,fullname,model,introtext,avtor,video,yaobzor` &redirectUnpublished=`63` &parents=`0` &tplFormCreate=`tpl.Tickets.form.create1` ]]то данная форма работает. Форма выведенная через ajax не работает Для разработчиков / Основы Ajax 86 0
02 апреля 2016, 11:00 Вызов стал таким $params = array(); $params['requiredFields'] = 'longtitle,model,introtext'; $params['parents'] = $action1; $params['allowedFields'] = 'longtitle,fullname,model,introtext,avtor,video,yaobzor'; $params['redirectUnpublished'] = '63'; $params['tplFormCreate'] = 'tpl.Tickets.form.create1'; $res = $modx->runSnippet('TicketForm', $params);Спасибо страница перестала дублироваться, но обратил внимание на другую проблему. Форма TicketForm не работает, ничего не отправляет, не добавляет фото (при клике ничего не происходит), рядом с «Выберите файл» появились «0/0 0%», при нажатии кнопки «на проверку» (даже с пустой формой) просто перезагружается страница Для разработчиков / Основы Ajax 86 0
02 апреля 2016, 09:20 Код сниgпета Ajax1 <?php // Откликаться будет ТОЛЬКО на ajax запросы if ($_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {return;} // Сниппет будет обрабатывать не один вид запросов, поэтому работать будем по запрашиваемому действию // Если в массиве POST нет действия - выход if (empty($_POST['action'])) {return;} $action1= $_POST['action']; $res = "[[!TicketForm? &requiredFields=`longtitle,model,introtext` &allowedFields=`longtitle,fullname,model,introtext,avtor,video,yaobzor` &redirectUnpublished=`63` &parents=`$action1` &tplFormCreate=`tpl.Tickets.form.create1` ]]"; // Если у нас есть, что отдать на запрос - отдаем и прерываем работу парсера MODX if (!empty($res)) { echo($res); }И скрипт с частью страницы, помещен в чанк ajaxscr, на странице выводится через чанк <div class="well create"> <form name="ticketFormcat" action="" id="ticketFormcat" method="post" > <div class="form-group"> <label for="ticket-sections">Бытовая техника <span style="color: #F00;font-size: 12px;}">(выберите в первую очередь)</span></label> <select name="parentcat" class="form-control" id="parentcat" onchange="viborid(this.value);"> <option disabled="disabled" value="" ></option> [[pdoMenu? &parents=`0` &level=`1` &firstClass=`` &lastClass=`` &hereClass=`` &outerClass=`` &tplOuter=`@INLINE [[+wrapper]]` &tpl=`@INLINE <option value="[[+id]]">[[+menutitle]]</option>` ]] </select> </div> </form> <script type="text/javascript"> function viborid(action) { // Ajax запрос к текущей страницы (а на ней наш сниппет) методом post $.post(document.location.href, {action: action}, function(data) { // Выдаем ответ alert('Запрос успешно выполнен') $('#result').html(data); }) } </script> <!-- html элемент для вставки ответа от php --> <div id="result"></div> </div>Вывод на странице [[!Ajax1]] [[$ajaxscr?]] Для разработчиков / Основы Ajax 86 0
02 апреля 2016, 08:58 Fenom, не использую. Пытаюсь вывести сниппет TicketForm с разными parent в зависимости от выбранного события Для разработчиков / Основы Ajax 86 0
02 апреля 2016, 08:36 Василий, доброе утро. Прошу подсказать. Пытаюсь вывести через ajax сниппет (т.е изначально сниппета на странице нет, он выводится по срабатыванию события). Сниппет выводится, но текстом, парсер видимо его не обрабатывает. Если меняю в коде die($res); на echo($res) то выводится целая страница в странице, вместе с обработанным сниппетом. 1. Если я правильно понял, то парсер заново обрабатывает всю страницу, поэтому и получается страница в странице? 2. Возможно ли сделать так, чтобы парсер обрабатывал только вновь вставленный сниппет? Для разработчиков / Основы Ajax 86 0
20 марта 2016, 20:51 &showLog =`1` пробовали смотреть что пишет Вопросы / не работает pdoPage с ajaxMode 12 0
20 марта 2016, 16:51 У меня тоже была проблема с выводом, решилась добавлением &ajaxTplMore=`@INLINE <button class="btn btn-success btn-more">Показать еще</button>`Вот мой код вызова целиком <div id="pdopage"> [[!+page.nav]] <div class="rows"> [[!pdoPage? &ajaxMode=`button` &cache=`1` &cacheTime=`86400` &parents=`13` &prepareTVs=`1` &element=`getTickets` &includeTVs=`avtor,model,firstImage` &limit=`7` &tpl=`tpl-1` &hideContainers=`1` &ajaxTplMore=`@INLINE <button class="btn btn-success btn-more">Показать еще</button>` ]] </div> [[!+page.nav]] </div> Вопросы / не работает pdoPage с ajaxMode 12 0
YaSmartCaptcha - защитите ваши формы от спама умной капчей от Яндекс Вообще не понял о чем речь) В системной настройке service_js сейчас указана ссылка smartcaptcha.cloud.yandex.ru/captcha.js Я предложил очистить эту настройку, тогда компонент н...
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 + честный знак (продажа маркированной продукции) В нашем случае мы решили убрать всю логику по маркировке сайта.
который должен отправлять в кеш из заданной категории, что-то ничего не выходит
Вычитал что str_replace работает быстрее чем preg_replace
Будут идеи как оптимизировать, с радостью приму.
На сайте уже много статей и пересохранать каждую не очень хочется, может быть есть вариант прогнать все статьи через плагин?
Вызов контента Сниппет brp
Принцип действия прост: Решение кривое, но работает. Любые улучшения и изменения приветствуются.
Формы отличаются
1. Форма «Содержимое» через ajax
2. «Форма Содержимое» стандартное
Но даже если все это добавить в форму выводимую через ajax, кнопки появляются, но не работают. Где-то внутри еще есть подключение скриптов.
Я защел в тупик, куда копать дальше
Подумал, что что-то пропустил и вывел на эту же страницу [[!TicketForm?]] для подключения скриптов, ситуация не изменилась. Стандартная форма работает, форма через ajax нет. Еще обратил внимание, что у формы через ajax нет (не выведены) элементов форматирования текста: B,I…
то данная форма работает.
Форма выведенная через ajax не работает
Спасибо страница перестала дублироваться, но обратил внимание на другую проблему.
Форма TicketForm не работает, ничего не отправляет, не добавляет фото (при клике ничего не происходит), рядом с «Выберите файл» появились «0/0 0%», при нажатии кнопки «на проверку» (даже с пустой формой) просто перезагружается страница
И скрипт с частью страницы, помещен в чанк ajaxscr, на странице выводится через чанк
Вывод на странице
[[!Ajax1]]
[[$ajaxscr?]]
Пытаюсь вывести через ajax сниппет (т.е изначально сниппета на странице нет, он выводится по срабатыванию события). Сниппет выводится, но текстом, парсер видимо его не обрабатывает.
Если меняю в коде
то выводится целая страница в странице, вместе с обработанным сниппетом.
1. Если я правильно понял, то парсер заново обрабатывает всю страницу, поэтому и получается страница в странице?
2. Возможно ли сделать так, чтобы парсер обрабатывал только вновь вставленный сниппет?
Вот мой код вызова целиком