
Евгений Генералов
С нами с 28 февраля 2015; Место в рейтинге пользователей: #299Экскурс как можно использовать vuejs в место extjs и не запариться.
Это не статься в стиле «я написал торт/тудушку/ещечтото на rea extjs и vue и вот что у меня получилось». Это просто инструкция как можно без особых усилий писать на чем-то стороннем (в моем случае vue).
(внимание) Так как на этом ресурсе сидят довольно опытные ребята, я не буду рассказывать все в подробностях, как поставить ноду + сопутствующее окружение, что такое modExtra, почему vue а не react/angular/свойвариант и т.д…
В общем погнали.
(внимание) Так как на этом ресурсе сидят довольно опытные ребята, я не буду рассказывать все в подробностях, как поставить ноду + сопутствующее окружение, что такое modExtra, почему vue а не react/angular/свойвариант и т.д…
В общем погнали.
Поругайте код, мне будет полезно
Господа, буду рад любым предложениям по улучшению этого написанного мною кода.
Поскольку я дилетант, то наверняка делаю это топорно и не изящно.
Поставил себе цель написать сниппет, который будет выводить на экран значения MIGX TV для всех ресурсов, которые будут дочерними к ресурсу родителю, чей id будет задаваться как параметр сниппета.
Поскольку я дилетант, то наверняка делаю это топорно и не изящно.
Поставил себе цель написать сниппет, который будет выводить на экран значения MIGX TV для всех ресурсов, которые будут дочерними к ресурсу родителю, чей id будет задаваться как параметр сниппета.
<?php
// получаем id родительского каталога как параметр
$p=$parent;
// выборка всех ресурсов, у кого родитель имеет переданный id
// и формируем массив с id ресурсов-детей.
$g=$modx->getCollection('modResource',array('parent'=>$p));
foreach ($g as $g1){
$where[]=$g1->get('id');
}
// проходим по всем элементам нашего массива, делая выборку одного объекта
// значение contentid которого совпадает с id из массива
// поскольку я задался целью получить только MIGX то прописываю id этого объекта
foreach ($where as $nowhere){
$result=$modx->getObject('modTemplateVarResource',array('contentid'=>$nowhere,'tmplvarid'=>1));
// добавил сюда проверку на существование $result поскольку не все ресурсы могут иметь заполненные
// MIGX поля
if ($result){
// $res становится строкой, в которой лежит JSON
$res=$result->get('value');
//$r становится массивом
$r=$modx->fromJSON($res);
// перебираем все елементы массива, чтобы добраться до содержимого.
// У меня поле имеет название text
// в результате получаем вывод на экран перечня значений всех MIGX для всех ресурсов
// дочерних к тому, чей id мы передали в сниппет
foreach ($r as $r1){ echo $r1['text']."
";}
} //end if
} // end foreach
Спасибо. MIGX getImageList и Fenom
Есть такой вызов
По поводу @CODE и fenom, — работает феном в чанке относительно самого ресурса. То есть, когда я делаю так
Когда я пишу
Когда я пишу
То работает, получаю содержимое переменной. Весь массив значений.
Вопрос, как использовать феном, чтобы не писать свой парсер переменной и не использовать классический вызов через квадратные скобки, а воспользоваться {$image}?
{$_modx->runSnippet('!getImageList', [
'tvname' => 'tv_product_main_gallery',
'tpl' => '@CODE: <some_chunk>'
])}
По поводу @CODE и fenom, — работает феном в чанке относительно самого ресурса. То есть, когда я делаю так
'tpl' => '@CODE: [[+image]]'
Работает.Когда я пишу
'tpl' => '@CODE: {$image}'
То не работает.Когда я пишу
'tpl' => '@CODE: {$_modx->resource.myMIGXtv}'
То работает, получаю содержимое переменной. Весь массив значений.
Вопрос, как использовать феном, чтобы не писать свой парсер переменной и не использовать классический вызов через квадратные скобки, а воспользоваться {$image}?
POST запросы на сторонний API из REVO, как?
Всем привет!
Нужно получить при визите на сайт неавторизованного пользователя (просто при заходе на фронт-энд любого) данные со стороннего сайта через его API POST-запросом и потом эти полученные данные отобразить на фронт-энде этому же пользователю.
Проблема — нельзя светить в HTML коде ключ этого API, иначе можно было бы javascript'om их дернуть и показать.
То есть запрос должен делаться на сервере и потом эти данные (принимаются в JSON) уже обработать и отдать на фронт-энд.
Как принято такую задачу решать в стиле modx way?
Я так понимаю надо делать плагин запроса и вешать его на событие OnHandleRequest?
Но мне не понятно как принять ответ от стороннего сайта и что с ним делать дальше.
В плэйсходер, в чанк его завернуть?
Извиняюсь, если вопрос тупой, но не могу даже что-то схематично прикинуть как это может выглядеть.
Заранее спасибо за помощь!
P.S. Буду признателен за кусок кода
Нужно получить при визите на сайт неавторизованного пользователя (просто при заходе на фронт-энд любого) данные со стороннего сайта через его API POST-запросом и потом эти полученные данные отобразить на фронт-энде этому же пользователю.
Проблема — нельзя светить в HTML коде ключ этого API, иначе можно было бы javascript'om их дернуть и показать.
То есть запрос должен делаться на сервере и потом эти данные (принимаются в JSON) уже обработать и отдать на фронт-энд.
Как принято такую задачу решать в стиле modx way?
Я так понимаю надо делать плагин запроса и вешать его на событие OnHandleRequest?
Но мне не понятно как принять ответ от стороннего сайта и что с ним делать дальше.
В плэйсходер, в чанк его завернуть?
Извиняюсь, если вопрос тупой, но не могу даже что-то схематично прикинуть как это может выглядеть.
Заранее спасибо за помощь!
P.S. Буду признателен за кусок кода
Создание мультисайта на MODX REVO
Лучше поздно, чем никогда. Как и обещал https://modx.pro/help/5194/ пишу про создание мультисайта на MODX REVO. Выкладываю в блог Готовые решения, т.к. в статье есть чуть-чуть кода.
Смысл всей затеи — упростить поддержку сайтов.
Под поддержкой понимаются любые действия связанные с работой сайта:
— размещение контента
— технические доработки сайта (программирование, верстка)
— консультирование модераторов, сеошников и т.д.
— бэкапы и восстановление информации
Кроме того, для упрощения работы необходимо внедрить стандарты, чтобы упростить рутину. Звучит громко, но на самом деле все просто — по «узким» моментам единожды принимаем какое-то решение и дальше просто поступаем по образцу, чтобы не тратить время на изобретение велосипедов. По принятому решению пишем короткую заметку в Евернот, чтобы потом когда понадобится можно было быстро найти, на чем основывалось решение.
В таких «стандартах» у меня:
— ресайз картинок с примерами кода
— настройки галереи fancybox с примерами кода
— создание файловых архивов
— названия чанков, например почти везде у меня есть чанки HEADER.site1, FOOTER.site1, ASIDE.site1 (в названии используем название контекста).
— и т.д. и т.п.
Т.е. единожды продумываем тонкости и решаем, что будем делать именно так и никак иначе. В дальнейшем это позволит избежать бардака и существенно ускорит процесс переноса существующих сайтов в мультисайт или разработку новых сайтов.
Смысл всей затеи — упростить поддержку сайтов.
Под поддержкой понимаются любые действия связанные с работой сайта:
— размещение контента
— технические доработки сайта (программирование, верстка)
— консультирование модераторов, сеошников и т.д.
— бэкапы и восстановление информации
Кроме того, для упрощения работы необходимо внедрить стандарты, чтобы упростить рутину. Звучит громко, но на самом деле все просто — по «узким» моментам единожды принимаем какое-то решение и дальше просто поступаем по образцу, чтобы не тратить время на изобретение велосипедов. По принятому решению пишем короткую заметку в Евернот, чтобы потом когда понадобится можно было быстро найти, на чем основывалось решение.
В таких «стандартах» у меня:
— ресайз картинок с примерами кода
— настройки галереи fancybox с примерами кода
— создание файловых архивов
— названия чанков, например почти везде у меня есть чанки HEADER.site1, FOOTER.site1, ASIDE.site1 (в названии используем название контекста).
— и т.д. и т.п.
Т.е. единожды продумываем тонкости и решаем, что будем делать именно так и никак иначе. В дальнейшем это позволит избежать бардака и существенно ускорит процесс переноса существующих сайтов в мультисайт или разработку новых сайтов.