Сергей Шлоков

Сергей Шлоков

С нами с 31 января 2013; Место в рейтинге пользователей: #3
Сергей Шлоков
05 апреля 2020, 11:27
+1
Ты, наверно, путаешь с инлайн чанками.

pdoTools подключает свой парсер, который легко справляется с феномом в чанках любых сниппетов. По крайней мере, должен с стандартных ситуациях.
Сергей Шлоков
01 апреля 2020, 08:04
0
Да забудь ты уже про это. Во-первых, не надо лазить в ядро. Во-вторых, этот же результат можно получить отключив опцию cfgSetAutoBrMode в наборе параметров Ticket.

Можно было бы использовать второй вариант, а в нужных шаблонах выводить контент через Jevix с включенной опцией. Но тут возможны проблемы типа предпросмотра тикета. Ибо нет возможности повлиять на вывод.
Сергей Шлоков
01 апреля 2020, 07:57
0
Сорри, пропустил твой коммент. Самый простой вариант
// Событие OnWebPagePrerender

$templates = [1,2,3]; // id шаблонов, у которых нужно удалять br.
if (in_array($modx->resource->template, $templates)) {
    $modx->resource->_output = str_replace('<br>', '' , $modx->resource->_output); 
}
Сергей Шлоков
31 марта 2020, 14:30
0
Создал набор параметров Site. Связал его со сниппетом Jevix. Понимаю, что это криво, но другого выхода пока что не вижу.
Вполне себе годное решение, но от двойной обработки контента Jevix'ом не спасает. МОжет проще в плагине при загрузке документа вырезать теги br?
Сергей Шлоков
31 марта 2020, 13:58
+1
Заглянул в код (кстати, ты бы мог сделать это сам). По поводу сохранения в БД измененного тикета беру свои слова обратно. В БД хранится исходный текст. Поэтому пересохранять ничего не нужно.

Теперь объясняю, почему тебе кажется, что не работает вывод через сниппет. На самом деле он работает. Просто работает 2 раза. Первый раз сниппет Jevix вызывается в классе Ticket, когда идет получение ресурса по алиасу. В этот момент отрабатывают опции Ticket сниппета Jevix. Тут и добавляется тег br. Второй раз он вызывается в шаблоне. Отсюда напрашиваются 2 вывода:
1. Достаточно отключить опцию cfgSetAutoBrMode в параметрах Ticket.
2. Выводить контент тикета через сниппет Jevix нет никакой необходимости.
Сергей Шлоков
31 марта 2020, 11:45
0
Только это сделано на обычном ресурсе.
Ты где-то писал про тикеты? Прямо как маленький.

Тебе ниже уже написали про тикеты. Их надо заново пересохранить с отключенным Jevix. В противном случае изменённый джевисом тикет сохранится в БД уже с тегом br. Поэтому ты и не можешь его изменить через сниппет. Чтобы это стало возможным, нужно в БД сохранять исходный текст тикета.
Сергей Шлоков
31 марта 2020, 10:47
0
s21923.h10.modhost.pro/manager
s21923
8GVLBfZco8xy

Только я вызываю сниппет с дефолтными параметрами.
Сергей Шлоков
31 марта 2020, 09:12
0
Илья, я не понимаю, как у тебя это получается.
Вот не поленился и проверил (Спасибо огромное modhost.pro за механизм тестовых сайтов!). Всё работает!!!
Сергей Шлоков
30 марта 2020, 14:05
0
Ну так измени это значение в дефольных параметрах сниппета. Я так подозреваю, что значение `0` является строкой, и если в сниппете оно не приводится к логическому типу, то получается всегда true. Хотя могу и ошибаться. Комп остался в Москве, а я сижу на даче, семью спасаю ))

Решения вижу 2.
1. Вызывай через феном синтаксис с указанием параметра
...
'cfgSetAutoBrMode' => false,
...
2. Скопируй сниппет Jevix и в нем приводи к булеву типу этот параметр.
Сергей Шлоков
30 марта 2020, 13:39
0
&cfgSetAutoBrMode=1
Я уже давно не пишу через синтаксис MODX, поэтому могу ошибаться, но разве без обратных кавычек можно указывать параметры?

Если тебе не нужно переключать этот параметр в разных местах вызова, то измени его в дефолтных параметрах сниппета.
Сергей Шлоков
30 марта 2020, 07:20
+1
А что, сейчас параметры сниппета не работают?
Сергей Шлоков
25 марта 2020, 20:15
0
Боюсь тебя разочаровать — я не занимаюсь разработкой сайтов.
Я не совсем понимаю, что ты понимаешь под сервером разработки. Для разработки в IDE по-любому закачиваешь проект на локалку. Тут же можешь поднять встроенный в PHP вэб-сервер. Лично я использую XAMPP. Там уже всё есть. В идеале, конечно, докер нужно осваивать. Но мне пока это не нужно.
В твоём случае, насколько я понимаю, тебе нужен механизм деплоя, а не контроля версий.
Сергей Шлоков
25 марта 2020, 11:45
0
Прикольно. Один разраб сделал чек-аут на дев-сервере и у другого синхронизация на локалке все сломала.
Сергей Шлоков
25 марта 2020, 11:44
0
А теперь просто попробуй представить, как будет работать совместная работа на одном сервере разработки. Все одновременно будут править одно ядро? И как в этом случае разработчик должен тестировать своё творчество? Это его баг или другой разраб сейчас чего-то пилит?
Сергей Шлоков
20 марта 2020, 08:12
+2
Данное решение проигрывает связке PHP+Javascript. Уверен, Вы в курсе, что тайм лимит есть ещё у веб-сервера. И что при разрыве связи с клиентом (даже при включенном ignore_user_abort(true)) переадресация не сработает, как и любой вывод в браузер.

htmlspecialchars($_GET['offset'])
Тут можно только пожать плечами.
Сергей Шлоков
14 марта 2020, 13:38
+1
А что тут можно посоветовать? Наверно, учить PHP.
Сергей Шлоков
14 марта 2020, 11:58
2
+1
Самое простое решение через сниппет
$arr = explode(',', $list);
$arr = array_map(function($val){return trim($val);}, $arr);
shuffle($arr);
$output = array_intersect_key($arr, array_flip(array_rand($arr, (int) $number)));

return implode(',', $output);
И вызывать сниппет так
[[!RandomValues? list=`один, мотор, кровать, солнце, 11, 55, привет, ёу` &number=`2`]]
Сергей Шлоков
12 марта 2020, 19:43
+2
Да что за бзик с этими зависимостями. Почти все популярные композер пакеты и npm имеют те или иные зависимости. Это норма. Да, есть головняк с обновлениями. Не хочешь, пиши сам. Выбор простой.