Последнее обновление: 18.05.2012 в 02:00
Подпишись на RSS
rss Подпишитесь на RSS, чтобы всегда быть в курсе событий.

Комментарии

Присоединяйтесь к обсуждению
  • Denis: Попробуйте обновить кэш
  • porcelanosa: У меня почему-то ничего не появилось — т.е. после применения к странице шаблона — ничего не...
  • Mark Hamstra: I used Google Translate to read this post, and just wanted to add that those issues should have been...
  • безимени: все было бы прекрасно если бы не гигантское количество грамматических ошибок. Серьезно. Глаза режет :(
  • Vasiliy Ivanov: Уже есть рабочий плагин, если готовы заняться — ради бога.=) Напишите только в разработчики...
2 Декабрь 2009 · MODx

Ситуация получилась весьма забавная. Хочется учесть мнения всех проголосовавших и ни кого не обидеть. После некоторых размышлений придумал, как это можно устроить. Больше всего голосов за главу 10: Сборник рецептов. О переводе этой главы я и буду договариваться с издательством. Что касается остальных глав, я просто подготовлю статьи, по соответствующей тематике возможно даже в немного [...]

Bookmark and Share

11 Июнь 2009 · Без рубрики

Недавно удалось договориться с издательством Packt Publishing о предоставлении для ознакомления книги «MODx Web Development» посвященной разработке сайтов на мой любимой системе сейчас в свободное время читаю  книгу. В принципе оставляет достаточно приятное впечатление описано все что надо и даже немного больше. Даже бегло просмотрев книгу можно понять, что любой кто обладает базовыми навыками в CSS, HTML и PHP при помощи этой книги может создать [...]

Bookmark and Share

loom-studio на Free-lance.ru
25 Март 2011

Немного про снипеты в MODx Revo

Рубрика: MODx, о работе. Метки: , , , ,
Vote This Post DownVote This Post Up (+2 rating, 4 votes)
Loading ... Loading ...

Проанализировав то, по каким запросам люди приходят на мой сайт, возникла идея написать пост на тему, что нужно сделать в MODx сниппете, что бы получилось как в evo. Раз возникла идея её надо реализовывать

В этой статье я постараюсь не лезть в глубины xPDO т.к сам не особо разобрался с ним. Это будет взгляд на систему со стороны программиста, которому надо быстренько сделать сниппет под свои текущие задачи.

Получение информации о текущем документе
Здесь всё достаточно просто информация, о текущем документе может быть получена через объект resource. Главное усвоить следующее: В ветке evo приходилось работать с ассоциативными массивами, в revo приходится работать с объектами.Далее всё просто.

 
//получаем id текущего документа
$id=$modx->resource->get('id');
//получаем заголовок текущего документа
$title=$modx->resource->get('pagetitle');
//получаем аннотацию текущего документа
$intro=$modx->resource->get('introtext');
//получаем контент
$content=$modx->resource->get('content');
//или
$content=$modx->resource->getContent();

Выборка объектов
Хорошо, с текущим документом будем считать, что разобрались всё достаточно просто, но на одном документе много не сделаешь. Рассмотрим, как можно получить доступ к остальному содержанию сайта.

 //получить документ с id=10
 $doc=$modx->getObject('modResource',array('id'=>10));
//то же самое только вместо массива используем строку
$doc=$modx->getObject('modResource','id=10');

дальше всё просто, берем примеры из предыдущего раздела и заменяем в них $modx->resource на $doc.
Теперь получим коллекцию объектов.

//получаем все опубликованные,не скрытые элементы из корневой //папки с шаблоном id которого не равен 3 
 $docs=$modx->getCollection('modResource',array('parent'=>0,'published'=>0,'hidemenu'=>0,'template:<>'=>3));
foreach($docs as $doc)
{
  //обработка полученных результатов
}

Получение TV параметров
Здесь всё достаточно просто

//получить все TV для текущего документа.
$tvs = $template->resource->getMany('TemplateVars');

либо

//получить TV для текущего документа с именем name_of_tv
$tv = $modx->resource->getTVValue('name_of_tv');;

Для документов, полученных при выборке, принцип тот же самый, только вместо $modx->resource ставим имя своего объекта.
Чанки
Далее рассмотрим вызов чанкак внутри сниппета. Пока что функции $modx->parseChunk(), $modx->getChunk() работоспособны, но в MODx 2.1 их уже не будет.

// создаем ассоциированный массив с параметрами
$param=array('key1'=>'value1','key2'=>'value2');
// получаем объект для работы с чанком testChunk
$chunk=$modx->getObject('modChunk',array('name'=>'testChunk'));
// выводим содержимое чанка 
echo $chunk->process($param);

Резюме
Я попытался в вкратце рассказать о нововведениях в MODx Revolution. Той части, что касается сниппетов. Более позробную информацию можно получить здесь

Bookmark and Share

Читайте так же:



  • http://вразработке Neznae4ko

    Очень давно искал нечто подобное, не мог подступиться ни с какого боку к разработке проекта используя php и модикс. Это статья и http://loom-studio.net/2011/01/%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D1%81-modx-evo-%D0%BD%D0%B0-modx-revo/ очень помогли.

    Теперь остался один вопрос: На сайте должны быть 4 типа пользователей
    1) те кто пишет посты (должны иметь право редактировать свои записи)
    2) модеры (редактируют чужие)
    3) те, кто пишет только в своём подразделе и может редактировать только это.
    4) Админ (я) который может всё

    и остальные незарегистрированые… Только смотрят. Надо, чтобы все могли это делать на сайте, а не в админке. Поэтому буду писать на пхп.

    Как такое сотворить? Уже совсем голова пухнет от ролей и политик…

    • http://loom-studio.net Денис

      На самом деле сам сейчас думаю над чем то подобным. Писать там придется достаточно много. Как только появятся наработки опубликую их здесь.

  • XkgoldxSite

    День добрый не подскажете, как в revo получить айди документа по его синониму .
    В эво была достаточно удачная на мой взгляд функция documentListing в которую передавался алиас а возвращался id в Revo насколько я понял ее убрали.

    • http://loom-studio.net Denis

      с ходу можно предложить такой вариант
      $doc=$modx->getObject(‘modResource’,array(‘alias’=>’[ваше значение]‘));
      $id=$doc->get(‘id’);

Мы плетем паутину
Создание сайтов для меня это не просто работа, это то, что больше всего мне нравится в этой жизни. Я постояно учусь новому и кое-что попадает на страницы этого блога. Сюда же я выкладываю свои мысли о жизни. Заходите, читайте, спрашивайте. Или пишите на loomst[at]gmail[dot]com

Twitter

Наш микроблог на Twitter

Рубрики

Поиск информации по категориям

Счетчик

Статистика сайта
Яндекс.Метрика