Наверх

Блог RSS

Сортировка: По дате ↓ По просмотрам

Часть 2 (Практика). Вывод свойств нескольких объектов

12 апреля 2013, 23:23

Итак, нам нужно выполнить следующее задание:
Задание. Написать сниппет, который выводит на страницу заголовки, аннотации и даты публикации всех новостей, если их всего пять или меньше, а если новостей больше пяти, пусть выводит содержание ресурса «Новости» (того самого контейнера, который является родительским ресурсом всех новостей).
Допустим, id ресурса с новостями 22. Тогда получить все дочерние ресурсы с заголовками, аннотациями и пр. мы можем так:
$where = array('parent' => 22);
$resources = $modx->getCollection('modResource',$where);
foreach ($resources as $res) {
      $output .= '<h4>'.$res->get('pagetitle').'</h4>';
      $output .= '<p>'.$res->get('introtext').'</p>';
      $output .= '<p><small>Дата: '.$res->get('publishedon').'</small></p>';
}
return $output;

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

Часть 2. Метод getCollection

12 апреля 2013, 23:14

Продолжим знакомство с xPDO. В первой части мы рассмотрели возможности получения информации о каком-то объекте. А что, если нам нужно получить сразу несколько объектов, при том, что мы не знаем, какие у них id-шники, сколько их, знаем только, например, их родителя?

Здесь нам поможет метод getCollection.

getCollection — брат метода getObject, который в отличие от него выдает (возвращает) нам не объект, а целый массив объектов.
Давайте откроем сайт из предыдущей части и в консоли напишем следующее:
$resources = $modx->getCollection('modResource');
$output = '<p>Всего ресурсов: '.count($resources).'</p>';
foreach ($resources as $k => $res) {
  $output .= '<p>['.$k.'] => '.$res->get('pagetitle').'</p>';
}
print $output;

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

Подписка на новости для вашего сайта

12 апреля 2013, 15:55

Сделал я себе блог и решил, что каждый день на него никто заходить все равно не будет, но почитать новые статьи многие бы не отказались. И решил я сделать подписку на новые статьи для любого посетителя.

Так как на начальном этапе подписчиков будет немного, то отправку писем я реализовал с помощью простого плагина на событие OnDocFormSave
Читать дальше

Часть 1 (Практика). Получение свойств объекта

11 апреля 2013, 17:08

Давайте, напишем свой сниппет, который будет показывать пользователю любое поле любого ресурса. Нам понадобятся знания, полученные в первой части статьи.
Задача. У сайта есть слоган. Текст слогана находится в поле introtext главной страницы сайта. Нужно отображать этот слоган на всех страницах сайта.

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

Часть 1. Метод getObject

11 апреля 2013, 16:42

Я думаю, все когда-либо слышали аббревиатуру xPDO, все знают, что она как-то связана с MODX. Многие слышали, что xPDO может показывать фокусы, с его помощью можно производить массовые операции с разными объектами, а Fi1osof и многие другие постоянно всем советуют изучать его.

Однако многих отпугивают такие заголовки, как, например

$this->_lazy и повторные запросы к БД при $object->toArray() и ->get();
или
xPDO::addDerivativeCriteria(), class_key, CRC и прочие связанные друг с другом тонкости

потому что начинать, конечно, надо с простого.

Вот в этой статье я и попытаюсь сделать введение в xPDO для тех, кто просто хочет понять, что это такое.

Для начала разверните где-нибудь тестовый пустой сайт (проще всего будет зарегистрироваться на https://modhost.pro/, создать бесплатный аккаунт и на нем развернуть один сайт). После чего поставьте себе компонент Console и создайте пару-тройку страниц с разными названиями.
Читать дальше

Плагин для переключения контекстов при отсутствии нужного URL в текущем контексте

11 апреля 2013, 14:46

Иногда возникает потребность разбить ресурсы на несколько контекстов, например, чтобы вынести каталог товаров в отдельный контекст.

Прописывать везде ссылки типа [[~30 &context=`catalog`]] не хочется, да и не всегда возможно, поэтому я написал плагинчик switchContext на событие OnHandleRequest, который сам переключает контекст, если нужной страницы нет в текущем контексте
Читать дальше

Галерея в стиле Вконтакте или Яндекс.Картинок

11 апреля 2013, 13:21

Уже написал две статьи о своем новом сниппете AlignImage на community.modx-cms.ru и на modxclub.ru. Для тех, кому интересны подробности, опишу их здесь.

Сниппет позволяет выводить галерею в стиле Вконтакте или Яндекс.Картинок. Вот так, например:


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

Оптимизация сайта на MODX Revolution — уменьшение времени загрузки страницы

10 апреля 2013, 15:17

Советы по оптимизации сайта штатными средствами MODX

Всегда вызывайте сниппеты кешируемыми


Многие разработчики привыкли писать так:
[[!getResource?
  &parents=`5`
  &tpl=`tpl.news`
]]
Это в корне неверно. Убирайте восклицательные знаки везде. Исключение составляют те сниппеты, которые обрабатывают какую-то информацию, которая поступает от пользователя, т. е.:
  • FormIt (пользователь заполняет форму и сниппет должен данные обработать);
  • Login, Register (точно так же — обработка пользовательских данных, например, логин и пароль);
  • getPages (ссылки на разные страницы формируются с GET-параметрами, типа /?page=3, соответственно сниппет должен обработать этот GET-параметр);
  • Ну и другие сниппеты, например, на моем сайте — это сниппеты Loginza для авторизации и TicketsComments, с помощью которого можно оставлять комментарии к статье.
Остальные сниппеты (такие как Wayfinder, getResources, Breadcrumb и пр.) должны вызываться без восклицательного знака.
Читать дальше

Новый дизайн, новый движок — Перенесли narkohelp.ru на MODX REVO

10 апреля 2013, 12:35

Перенесли один из старейших сайтов по тематике лечения разных видов зависимости (http://narkohelp.ru/) на MODX Revolution.

Скриншот сайта narkohelp.ru
Скриншот сайта narkohelp.ruСкриншот сайта narkohelp.ru

.

.

.

.

.

.


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

ООП офигенная штука!

09 апреля 2013, 17:17

Наконец-то я решил попробовать ООП. Ну что ж, друзья… Я подсел и конкретно. Теперь многое хочется переписать на ООП. Каким же я был слепым!

А всего-то — маленькая доза. Решил сделать проверку на то, имеет ли пользователь возможность просматривать свойства объекта или нет. И если нет — выводить ошибку. Так как это пригодится еще много где, решил вставить этот функционал (правильнее, наверное, «метод») прямо в класс самого объекта.

После генерации схемы и модели для работы со своими таблицами в базе, я получил файл, в котором мой новый объект описывался так:
class Calls extends xPDOSimpleObject {}
И я мог делать со своим объектом все, что хотел — то есть, getObject, getCollection, newObject, get, set

А тут взбрело в голову дописать функционал прямо в класс
Читать дальше

Авторизация

через сервис Loginza:

Подписка или RSS

Буду присылать новые статьи — никакого спама



Шаблоны MODX

1 2 Дальше »

Объектная
модель
MODX