0.00
57 читателей, 59 топиков

[EVO] Получение сниппетов через ajax.

Хочу обсудить еще один вариант получения результата выполнения сниппетов через ajax. Решение не законченное так как по хорошему требует хак ядра и без внесения изменений в парсер очень ограничено.

Итак если повесить на события OnWebPageInit, OnWebPagePrerender такой плагин.
$e = &$modx->Event;

if ($e->name == 'OnWebPageInit'){  
  $modx->dumpSnippets = 1;
}

if ($e->name == 'OnWebPagePrerender'){  
  die($modx->snipCode);
}


Без хака ядра.
Мы получим html в котором есть результаты выполнения сниппетов из которого при желании можно вырезать нужный.

С хаком
Если изменить метод парсера _get_snip_result чтобы он создавал дамп($modx->snipCode) не ввиде строки, а ассоциативного массива где ключами будут идентификаторы сниппета, результаты можно будет получать намного удобнее.

P.S. Если в результате выполнения сниппета будет вложенный сниппет он не будет отпарсен. То есть нужно еще раз вызывать парсер.

XML-RPC + MODX EVO + SUBLIME TEXT2 = удаленное управление, возможно?

Мечтаю а такой связке)) XML-RPC + MODX EVO + SUBLIME TEXT
То есть кодить и править тексты в виндоус, прямо из Sublime с подсветкой и тп)

Вот например парень написал плагин для вордпресс для сублиме
github.com/dnstbr/Sublpress
dnstbr.me/labs/sublpress-sublime-text-wordpress-plugin/

Думаю возможно и для Modx но исходник на python))

Вообще про XML-RPC для эво слабо освещен, нашел по теме… вот это
forums.modx.com/thread/?thread=34268&page=1

Кто бы и за сколько взялся сделать для общественности, готов спонсировать.

Вообще по этому протоколу потом можно нативные клиенты для андроид сделать например.

ПС.:
Есть еще удобная платная прога, для постинга текста в MODX
zebroid.ru/
но кодинг не поддерживает)

Одностраничный MODx или не MODx-ом единым.

Как обычно делают ajax каталоги на Modx? Прямо скажем не очень. Просто делают на нужную страницу запрос, вырезают нужную часть с помощью jQuery и заменяют старое содержимое новым.
Получается что мы загрузили в месте с нужной нам частью кучу не нужной информации, тогда как использование ajax предполагает что мы должны подгружать только нужную нам часть.

Можно конечно через index-ajax обращатся к скрипту который будет возвращать нам только нужную информацию, но если к каталогу добавят фильтры или заказчик решит что будет здорово если сайт начнет поддерживать ajax навигацию, тогда проект рискует превратится в кошмар человека который будет его поддерживать. В качестве аргумента скажу что часто javascript код, даже в в анонимную функцию не заворачивается.

Так что я предлагаю. А предлагаю я в таких случаях использовать framework(как заметил Angel_Nash В случае если использовать настоящий фреймворк, то там как ни крути костыльностьи не добиться — до правок ядра фреймворка врятли доберетесь)) ) для одностраничных приложений. А роль Modx свести к сервису который будет поставлять данные.

В общем вот как это может выглядеть на angular(поддался моде, о чем не жалею) onepagedemo.0939779797.pp.ua/articles.html

А теперь по пунктам как я это делал.
1. Готовим сниппет который будет отдавать нам нужные данные в формате JSON. Я для этого выбрал Doclister. Во первых хотел посмотреть как с ним работается, во вторых он может результат отдавать в JSON.

<?php
$param = array(
  	'offset' => (int)$_GET['offset'],
  	'display' => '40',
  	'depth' => 2,
  	'parents' => (int)$_GET['parent'],
    'tvList' => 'img',
  	'addWhereList' => 'template=5',
    'api' => 'pagetitle,tv.img,introtext',
  	'sysKey' => 'posts'
  );
$documents = $modx->runSnippet('DocLister',$param);
return $documents;
?>

Меняем две последние строчки в сниппете DocLister на
$total=$DocLister->getChildrenCount();
  return isset($modx->Event->params['api']) ? "[".$DocLister->getJSON($data,$modx->Event->params['api']).",".$total."]" : $DocLister->render();

чтобы он отдавал и общее количество документов.

3. Создаем документ который будет отдавать JSON и помещаем в его содержимое сниппет. Тип содержимого ставим application/json

2. Создаем шаблон и тегу в котором находится каталог добавляем атрибут ng-app=«postcat»
<div class="nine columns" role="content"   ng-app="postcat" ng-cloak ng-init="parent=[*id*]" >
	<div ng-view></div>     
</div>

В результате наше приложение будет в контексте только этого тега. А все что за пределами можно использовать как обычно. Например добавить Wayfinder как сделал я.

Все роль Modx на этом закончена.

3. Загружаем в /assets/js github.com/angular/angular-seed

4.Подключаем в head скрипты angular.
<script src="/assets/js/angular-seed/app/lib/angular/angular.js"></script>
  <script src="/assets/js/angular-seed/app/js/app.js"></script>
  <script src="/assets/js/angular-seed/app/js/controllers.js"></script>
  <script src="/assets/js/angular-seed/app/js/filters.js"></script>  
  <script src="/assets/js/angular-seed/app/js/ng-pagination.js"></script>


5. Дальше пишем код в эти скрипты. Листинг не привожу, так как обяснять api angular не входило в мои планы. И вообще интересующимся рекомендую angularjs.org/.

В двух словах
общее количество страниц делю на сегменты по четыре страницы.
в случае необходимости загружаю нужный сегмент(то есть сразу четыре страницы). Чем уменьшаем общее количество запросов.

P.S. В результате у нас получился довольно шустрый каталог на 8000 документов.
P.P.S. Кто-то спросит зачем здесь Modx, ведь тогда вместо него лучше использовать нормальный framework. А я отвечу что если остальной функционал укладывается в возможности modx, тогда ему здесь самое место.

[EVO] MODx Evo Cloud

Здравствуйте. Недавно пришла в голову идея сделать сборку в которой файлы будут частично находиться в облаке. То есть все основные «исполняемые» и файлы дизайна остаются как прежде, а остальные (фото, видео, документы, музыка и т.д.) автоматически отправляются в облако через API и потом так же отдаются пользователю.

Сейчас уже практически реализовал API в MODx для работы с API облаков, но понял что неплохо будет если сразу сделаю и протестирую работу на нескольких разных хранилищах.

Хотелось у Вас спросить о хранилищах которые знаете Вы.
Что должно быть:
  • Хорошее API с документацией(Обязательно)
  • Поддержка папок(желательно)
  • Отдача прямых URL(Обязательно)
  • БольшАя скорость отдачи файлов(желательно)

Спасибо.

[EVO] Избавляем админку EVO от FRAMESET (нужен небольшой хелп)

Давно хотел что б в EVO было верхнее меню DropDown
да и нормальные всплывающие окна на весь экран а не только над frame

Этому мешает всего 1 штука это FRAMESET который собственно давно устарел
и которому на замену пришел iframe

Немного подумал сел помучать админку в итоге оказалось все не так уж сложно
но осталось решить пару моментов:

1 это ресайз дерева и контента (на FRAMESET это базовая возможность)
2 это проверить кросбраузерность, как минимум нужено решение для ie8 и опера до версии 12


Скачать html с задачкой и админку modx без frameset можно тут

p.s. в бекапе доступ в админку admin 123456
p.s.s Так как пока в modx в админке не используется jQuery то задачку нужно решить без него :)

[REVO] Чем плох Revo или 101 проблема архитектуры.

Вместо вступления.


Этот топик назревал давно. Материала было много — и я постараюсь его структурировать.

Цель топика НЕ
  • Доказать что MODX — УГ
  • Переубедить пересесть на что-либо другое
  • Критиковать modx как визитоделочную CMS

Цель топика же, в свою очередь
  • Вызвать попоболь у фанатиков (не путать с фанатами)
  • Показать недостатки
  • Modx — не CMF

Читать дальше →

[EVO] Плагин для редактора, работа с базой напрямую

Добрый день.
Пришла как-то идея. Хочу узнать может кто-то уже реализовывал подобное.

Можно организовать процесс работы с modx evo так?

Вы из текстового редактора (например sublime text), через плагин подключаетесь к удаленной базе на сервере.
И прямо в редакторе слева у вас появляется дерево для работы напрямую с шаблонами, снипеттами, чанками…

Мне не хочется переводить все на файлы и также не удобна работа в админке модекса.
Подобное решение было по моему компромиссом)

Cache MODX Revolution -> быстрее только на html.

Cache MODX Revolution
Всем привет, давно не писал ничего. Писать есть про что и очень много, да вот с временем не сильно.
MODX — очень хороший конструктор для сайтов, на нём очень легко натягивать любой дизайн, да и реализовывать многие вещи очень удобно и быстро, есть конечно и подводные камни, но это как у всех. Идеального ничего не бывает.
Зачастую у нас в сайтах очень много статических страниц и даже если страницы в кэше, вы можете посмотреть, сколько у нас инклудиться файлов
Читать дальше →