MODxВышел MODx Revolution 2.0.0-beta-5

Лег спать, начал читать ридер и увидел эту чудесную новость на официальном форуме MODx.

Разработчики уверяют, что это последняя бета версия MODx Revolution 2.0.0. Теперь весь процес будет сосредоточен на багфиксах, вопросах безопасности, багах IE, оптимизации интерфейса и процессе установки для версии RC1.

Список изменений и дополнений:

  • Revolution 2.0.0-beta-5 написан только на PHP 5.1.1+ и оптимизирован для него
  • улучшен дизайн пользовательского интерфейса
  • новые REST системы управления пакетами
  • встроенная в cms помощь теперь доступна на большинстве страниц, которые напрямую подключаются к официальной документации MODx
  • упорядочен процесс установки, сейчас он стал более эффективным и модульным
  • ограничени на установку пакетов, не поддерживаемых Revolution 2.0.0
  • болшое количество CSS/JS изменений в панели менеджера, что ускорило работу самой панели
  • много исправлений для редактирования TV параметров
  • также исправлено более 75 багов

Скачать MODx Revolution 2.0.0-beta-5

MODxОшибка при загрузке картинки через FCKeditor

Наверное одна из самых часто встречаемых проблем новичками при работе с MODx, в частности с загрузкой изображений через FCKeditor. При попытке добавить картинку мы получаем ошибку Error, “Failed to upload file, internal error…”. Ошибка возникает из-за того, что в конфигурации прописан неполный путь к файлам сайта. Достаточно прописать абсолютный путь к файлам сайта и все будет работать. Данная ошибка появляется только после переноса сайта на хостинг, локально никаких проблем с загрузкой картинок на сайт нет.

Чтобы решить проблему идем в Отчеты -> Системная информация и там копируем значение переменной MODX_BASE_PATH.. Затем переходим в Инструменты -> Конфигурация -> Интерфейс и представление и в поле Путь к файлам: вставляем значение переменной MODX_BASE_PATH дописав в конце /assets. Значение должно получиться такого вида:

1
/var/www/vhosts/site.ru/httpdocs/assets/

Пока не сохраняем изменения, меняем еще одно значение URL к файлам: прописав туда адрес сайта (можно скопировать из адресной строки браузера), также в конце дописываем /assets/

1
http://site.ru/assets/

В разделе “Инструменты -> Конфигурация -> Файл-менеджер” в поле Путь для файл-менеджера: указываем значение “/” (без кавычек).

Сохраняем изменения и пробуем загружать картинки.

MODxПроблема с загрузкой аватара пользователем

Очередной пост про MODx. Я уже подумываю о создании отдельного блога по разработке на этой cms, как-то пишется только о ней, но ничего, пока ничего менять не буду, скоро попрут посты о joomla.

В этот раз столкнулся с проблемой добавления пользователями аватаров через свой профиль с помощью сниппета WebLoginPE. При добавлении имеем следующую ошибку:

1
2
3
4
5
6
7
8
9
10
« MODx Parse Error »
MODx encountered the following error while attempting to parse the requested resource:
« PHP Parse Error »
 
PHP error debug
  Error:    move_uploaded_file(/var/www/blabla/data/www/*******.ru/siteroot/image-06.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied
  Error type/ Nr.:    Warning - 2
  File:    /var/www/blabla/data/www/*******.ru/siteroot/assets/snippets/webloginpe/webloginpe.class.php
  Line:    2527
  Line 2527 source:    if (!move_uploaded_file($_FILES['photo']['tmp_name'], $userImage))

Отсюда мы видим, что аватар хочет загрузиться в корневую папку сайта и ен загружается потому что не имеет прав для этого действия, что вполне нормально. Менять права мы не будем, а значит нужно поменять папку для загрузки аватаров. Открываем файл webloginpe.class.php и ищем там такую строку (находится будет где-то между строками 2500-2600):

1
$userImage = $modx->config['base_path'].strtolower(str_replace(' ', '-', basename( $_FILES['photo']['name'])));

и заменяем ее на следующую конструкцию:

1
2
$uploads_dir = 'assets/snippets/webloginpe/userimages/';
$userImage = $modx->config['base_path'].$uploads_dir.strtolower(str_replace(' ', '-', basename( $_FILES['photo']['name'])));

где $uploads_dir это директория, где будут храниться аватары. Вот и все, радуем пользователей своими аватарами.

MODx2 месяца спустя

modx

Как-то в самом начале был у меня пост про первое впечатление от modx, появившееся после первого знакомства с этой cms и развертывании на ней одного из проектов.  Прошло уже почти 2 месяца с того времени и многое поменялось. За это время было сделано еще 6 совершенно разносторонних сайтов на этой же cms. Опыта работы с modx, конечно, прибавилось, ждите вскоре пару статей о организации коллективного блога на modx и о создании более сложной галереи с помощью сниппета MaxiGallery.

После 2-ух месяцев использования могу сказать, что это невероятно гибкая (даже более гибкая, чем я писал в посте про первое впечатление), нет такого дизайна, который был не “сел” бы на нее, в некоторых сms такая проблема присутствует. Весь html вынесен в шаблоны и чанки, которые создаются разработчиком сайтом, т.е. никакого генерирования кучи стороннего кода.Со сниппетом PHx можно творить такие чудеса, что UMI.CMS – очень похожая система по логике – со своим шаблонизатором, без возможности использования в нем условных циклов, выглядит весьма уныло.

P.S. Если у кого вдруг не стоит в настройках ворда галочка напротив “создавать резервную копию” – поставьте. Вчера 2 часа работы вылетело в трубу из-за ошибки ворда, да такой ошибки, что после нее ни одним известным способом восстановить  документ не удалось.

MODxОбновление до версии 1.0.2

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

Обновляемся: http://modxcms.com/download.html

MODxСортировка ресурсов по дате публикации

В новой версии MODx встретил довольно неприятный баг – параметр Ditto &dateSource не понимает значение `pub_date`, поэтому для вывода новостей, статей и других ресурсов пришлось воспользоваться вот таким решением (пример вывода акций на одном из моих проектов):

1
[!Ditto?&parents=`2` &orderBy=`ASC` &display=`5` &tpl=`shares_list` &trunc=`1` &paginate=`1` &truncLen=`400` &truncText=`...` &extenders=`summary,dateFilter` &paginate=`1` &dateSource=`pub_date` &dateFormat=`%d.%m.%Y`&sortBy=`pub_date`&filter=`publishedon,@EVAL return strtotime("-1 week");,6`&paginateAlwaysShowLinks=`0`!]

MODxИзбавляемся от � при использовании в Ditto параметра &truncLen

Если нужно вывести определенное кол-во символов в анонсе новости, то для этого воспользуемся Ditto с паарметром &truncLen и тут же встречаемся с проблемой, что в конце всегда выводится �. Избавиться  от этого просто:

сначала смотрим прописана ли у нас правильная кодировка коннекта к базе данных:

1
в config.inc.php $database_connection_characterset = 'utf8'

если там все ок, то дописываем в .htaccess следующие строки:

1
2
3
4
5
6
PHP_VALUE mbstring.internal_encoding UTF-8
PHP_VALUE default_charset UTF-8
PHP_VALUE mbstring.http_output UTF-8
PHP_VALUE mbstring.encoding_translation On
PHP_VALUE mbstring.detect_order UTF-8
PHP_VALUE mbstring.func_overload 7

UPDATE:

если вышеуказанные действия не помогли, то открываем файл

1
assets/snippets/ditto/extenders/summary.extender.inc.php

находим там функцию function textTrunc($string, $limit, $break=”. “) и делаем 2 действия: 1. дописываем в ее начало такую строку mb_internal_encoding(”UTF-8″); и 2. меняем функции substr на mb_substr. должно получиться следующее:

1
2
3
4
5
6
7
8
9
10
11
12
13
	function textTrunc($string, $limit, $break=". ") {
	  	// Original PHP code from The Art of Web: www.the-art-of-web.com
		mb_internal_encoding("UTF-8");
	    // return with no change if string is shorter than $limit
	    if(strlen($string) <= $limit) return $string;
 
	    $string = mb_substr($string, 0, $limit);
	    if(false !== ($breakpoint = strrpos($string, $break))) {
	      $string = mb_substr($string, 0, $breakpoint+1);
	    }
 
	    return $string;
	  }

MODxMODx 1.0.1 – новая версия, новые возможности

Проворонил я выход новой версии на целых 10 дней. 22 октября состоялся релиз 1.0.1 версии MODx CMS. В кратце о новых возможностях и изменениях:

Была улучшена безопасность некоторых участков кода с целью защиты маловероятных CSFR атак в панели администратора. Обновлен сниппет AjaxSearch до версии 1.8.4, который теперь предотвращает проникновение sql-инъекций при выключенном js.

Пополнение в списке плагинов, входящих в дистрибутив, встречаем плагин ManagerManager. Так и не понял, что он делает, если кто в курсе – объясните.

Еще одно пополнение плагинов, на этот раз просто невероятно приятное дополнение: плагин Transalias, позволящий писать задавать ЧПУ (сео-урлы) на 3-ех языках: Русский (!), японский и английский (до этого было только на английском). Скажем спасибо русскоязычному сообществу modx за активность на официальном форуме, на данный момент больше всего тем в русской части форума, по сравнению с другими языками.

Обновлен установщик. Теперь не составляет труда отредактировать чанки, сниппеты, плагины, шаблоны до установки cms. Все аккуратненько разложено по соответствующим папочкам. При установке предлагают выбор какие плагины и сниппеты ставить -  какие нет.

Усовершенствован QuickManager +. Наконец-то он теперь надоедливо не висит все время вверху, а появляется только по требованию. Так же добавлены кнопки “Менеджер” (ведет на главную страницу админки) и “Закрыть” (убирает и без того не широкую полоску в верхний левый угол, мегаудобно).

Внешний вид панели администратора стал теперь поприятнее, сделано множество мелких обновлений.

Ryan Thrash советует обновляться на 1.0.1 со всех ранних версий, включая 0.9.

С нетерпением ждем MODx 2.0 Revolution, обещают до нового года выпустить. Пока пользуемся тем, что есть:

Скачать MODx Evolution 1.0.1

Скачать MODx Revolution 2.0.0-beta-4

MODxMaxiGallery – организация галереи на сайте

Продолжая свое знакомство с MODx (Evolution 1.0), как и обещал расскажу о создании галереи на этой cms при помощи сниппета MaxiGallery. Документацию по сниппету на русском можно найти здесь.

Для начала скачиваем сниппет с официального сайта modx. В установке ничего сложного нет: переходим в админку “элементы- управление элементами – сниппеты – новый сниппет”, вводим название сниппета, а в “код сниппета” вставляем содержимое файла maxigallery.txt из ранее скачанного архива. Остальные файлы из архива копируем в соответствующие папки вашего сайта. Сниппет установлен.

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

Вариант вывода 1

Что нужно сделать: на определенных страницах нужно вывести 2-3 фотографии.

minigalleryКак сделать: создаем TV-параметр (Элементы -> Управление элементами -> Параметры(TV) -> Новый параметр),  имя параметра – mini_gallery; заголовок – “Включить галерею на странице”;  тип вывода – checkbox; в поле “Возможные значения” пишем макрос вывода галереи, в моем случае это

[!MaxiGallery? &display=`embedded` &embedtype=`lightboxv2` &pics_per_row=`3` &max_thumb_size=`190` &max_pic_size=`600` &thumb_use_dropshadow=`0`!]

Далее указываем шаблоны страниц, на которых будет использоваться сниппет. На этом настройка TV-параметра закончена, жмем Сохранить – параметр создан.

Теперь нужно добавить в шаблон вывод нашего параметра:

[*mini_gallery*]

minigallery2Теперь при редактировании страницы ниже поля ввода текста появится новый пункт “Включить галерею на странице”, для вывода нашей мини-галереи достаточно отметить чекбокс. Чтобы добавить фотографии переходим на страницу, где включена галерея и там на месте галереи будет кнопка “Manage Pictures” (нужно быть залогиненым под администратором). Жмем, добавляем фотографии, любуемся своей страницей.

Вариант вывода 2

Второй тип вывода состоит в следующем: есть страница(пункт в меню) “Галерея”, на ней выводится список галерей, при клике на одну из них переходим к просмотру фото, в принципе, стандартная организация галереи. Реализуется она еще проще чем предыдущий вариант.

1. Создаем страницу “Галерея”.

2. В содержимое страницы вставляем вывод сниппета [!MaxiGallery? &display=`childgalleries`!] и жмем “сохранить”.

3. Создаем дочерний ресурс “Галерея 1″ (родителем будет “Галерея”) и в его содержимое вставляем сниппет [!MaxiGallery? &display=`embedded` &embedtype=`slimbox` &pics_per_row=`3` &max_thumb_size=`110` &max_pic_size=`0` &thumb_use_dropshadow=`1`!] и сохраняем.

4. Добавляем фото на странице с помощью кнопки “Manage Pictures”.

5. Повторяем действия 3-4 столько раз, сколько галерей необходимо.

Примечание: чтобы наблюдать эффекты slidebox или lightbox нужно разлогиниться.

О организации галереи на MODx с помощью модуля Easy 2 Gallery можно почитать в блоге веб-кодера

MODxMODx – первое впечатление

MODx cms

Около месяца назад получил заказ на разработку корпоративного сайта-визитки для одной фирмы. После составления и согласования ТЗ и дизайна передо мной встал вопрос в выборе CMS, которая была бы взята за основу сайта.

Первая мысль, которая пришла в голову – это написать свою mini-cms с нуля, и опыта бы прибавилось в пхп, и дело сделано. Но после нескольких дней раздумий эта идея была признана не самой лучшей в этой ситуации по нескольким причинам: 1. из-за небольшого опыта в программировании на пхп продукт мог бы получиться некачественным; это было основной причиной отказа от этой идеи. 2. можно было бы сорвать сроки.

Дальше почему-то мой выбор пал на MODx, хотя раньше я с ним никогда не работал. Joomla отпала сразу из-за своей тяжеловесности и не совсем удобной админки. Wordpress, делают и на нем сайты-визитки, но я считаю, что это блоговый движок и не зачем изобретать велосипед, когда есть более удобные средства для данной реализации. Платные движки тоже рассматривал, но все-таки хотелось опенсорс.

Итак, MODx. Первое, что понравилось – это официальный сайт движка, приятный  и удобный. Один официальный многоязычный форум, не приходится искать ответы на вопросы на куче сайтов посвященных движку – основная тусовка вся там. Установка движка в принципе как и у других cms никаких затруднений не вызывает.MODx Admin Panel

Переходим в админ панель, с первого взгляда более-менее все понятно, но как оказалось под этим минималистическим  интерфейсом скрывается огромный функционал и невероятная гибкость. Работать с движком одно удовольствие. Чего только стоит их шаблонизатор – мечта верстальщика.

Каждой странице можно задать свой шаблон, заголовки пунктов – их несколько: 1. для вывода в админке 2. для вывода на странице 3. расширенный заголовок для вывода на странице 4. заголовок для пункта меню. С меню никаких проблем, можно вычислить и первый и последний пункт, можно применять отдельные стили к четным и нечетным пунктам, можно каждому пункту присвоить свой класс. Встраивание своего пхп-кода с минимальными телодвижениями: достаточно создать сниппет с вашим кодом и чанк для его вывода на странице. Дерево структуры сайта в админке, этот способ представления всегда более понятен чем любой другой. Хотелось бы увидеть в 2.0 версии возможность перетаскивания страниц сайта (как в umi.cms).

Все самые необходимые сниппеты и модули уже встроены в cms. На официальном форуме можно скачать и другие нужные вам модули. Насколько я мог заметить модулей и сниппетов не так много для MODx на данный момент, если сравнивать с такими гигантами как Joomla или Wordpress, но из-за легкой интегрируемости своего кода с cms эта проблема вскоре будет решена.

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