Тэг ‘modx’

MODx Yams - мультиязычные сайты на modx Evo

Задача реализации мультиязычных сайтов (сайт, содержимое которого может быть на нескольких языках) возникает, пожалуй, у многих разработчиков. На сегодняшний день существует довольно много готовых решений, как выделенных в отдельные независимые библиотеки (i..n L..n), так и  в рамках конкретных движков-продуктов.

Если в MODx Revolution средства для реализации мультиязычности и мультисайтовости уже встроены, то для создания сайта на нескольких языках с использованием MODx Evo (Evolution - более ранняя версия MODx) придётся немного повозиться. Благо, сейчас есть уже готовые решения. Одно из популярных - YAMS. Читать целиком »

Опубликовано Октябрь 1, 2011 | автор: levik  |  Нет комментариев »

MODx и ISPManager - доступ к manager

MODx и ISPManager имеют одинаковый адрес для доступа к “админке”

  • Заходим в ispmananger
  • На вкладке World Wide Web выбираем пункт WWW домены
  • В правой части выбираем домен, двойным щелчком (или иконка “Редактирование”) переходим к редактированию
  • Включаем галочку “Отключить ISPManager”
  • Ждем минут 5-10, и открываем админку MODx по адресу  site/manager/

Разделяем админку ISPManager (https://) и MODx (http://)
Если имеется доступ к файлу httpd.conf (у вас выделенный сервер - искать скорее всего /etc/httpd/conf/httpd.conf), то можно добавить строчку в раздел нужного сайта (искать в секции VirtualHost, или для Debian и apache2 в enabled_sites):
Alias /manager/ /путь_к_файлам_сайта/manager/

Изменяем расположение админки MODx (как поменять /manager/ на /admin/ например):

1. переименовать папку manager в admin/
2. в файлах admin/includes/config.inc.php и admin/includes/document.parser.class.inc.php заменить все пути “manager/” на “admin/”
3. открыть новую админку по адресу site/admin/

При замене не рекомендуется пользоваться автоматической заменой в файлах.

При установке MODx не проверяет пароль (ошибка проверки соединения базы данных)

Если при установке CMS MODx на странице проверки соединения Базы данных сервер “задумался”… Пользователь и пароль базы данных проверены много раз и должны работать.

Если у вас хостинг с ISP Manager, а админка открывается с URL /manager/

Страница проверки логина и пароля базы данных работает с mootols - javascript , который подгружается из каталога /manager/ Естественно, если у Вас открывается ISP, никаких mootols.js скрипт не находит.. и работает некорректно.

После снятия галочки в ISP-Manager (см выше), проверка базы данных должна закончиться успехом :)

http://www.webhostingsearch.com/articles/10-promising-content-management-systems.php/

При возникновении ошибки Вы не можете отключить manager для текущего WWW-домена во время отключения домена через панель - либо зайти пользователем с правами побольше (странно, в комментариях наоборот - мол root не может отключить), либо редактировать конфиг

Опубликовано Февраль 28, 2011 | автор: levik  |  Комментарии (3) »

Перенос сайта на MODx на другой сервер

Шпаргалка по переносу сайтов на MODx с одного хостинга на другой (или на/с локальный компьютер) по большому счету не особо отличается от шпаргалки по переносу блога на Wordpress

Для того, чтобы перенести сайт на MODx, потребуется скопировать сам сайт и базу данных :) Как правило, в этом заключается перенос любого сайта, который использует базу. Ну и, возможно, потребуются некоторые правки в конфигурационных файлах (где искать конфигурационные файлы в разных CMS).

Файлы размещаем на новом месте в соответствующей (как правило, корневой, если это не подкаталог ) директории сайта. Дамп базы данных загружаем в соответствующую базу (реквизиты для доступа, как правило, предоставляет хостер, если это хостинг, либо администратор, каковым часто является сам “переносчик” сайта на локальном компьютере).

Сразу рекомендую установить разрешения на запись для каталога assets\cache\ и всех файлов в нём. Возможно, потребуются разрешения и на другие каталоги.. например, при загрузке изображений…

После изменений параметров,отвечающих за подключение к БД в файле /manager/includes/config.inc.php
[code]$database_server = ‘localhost’;
$database_user = ‘root’;
$database_password = ‘password’;

$dbase = ‘`modx_database`’;[/code]

можно войти в административный раздел  (/manager/) сайта на новом месте. Если всё сделано правильно, и конфигурация нового сервера соответствует требованиям modx, доступ в админку должен работать.

Заходим в админке в раздел “Конфигурация” и устанавливаем правильные пути для файл-менеджера и TinyMCE (Если изначально над ними никаких манипуляций не проводилось - можно их стереть \Clear\, тогда будут выбраны значения по умолчанию)

Теперь можно смело “Очистить кэш” (Сайт->Очистить кэш) нового сайта и зайти по новому адресу - сайт должен работать.

Удачи!

ps. При пользовании шпаргалкой, мозг рекомендуется не выключать. Использовать в случае возникновения ситуаций, не предусмотренных в данном “руководстве”

pps. Полезной может быть шпаргалка по установке MODx

ppps. http://ru.wikibooks.org/wiki/MODx/administrator_guide/moving_site_to_new_server

Опубликовано Февраль 1, 2011 | автор: levik  |  Нет комментариев »

MODx - шпаргалка по установке и настройке

Решил собрать в одном месте краткое руководство по настройке MODx. Сразу оговорюсь, что на полноту изложения не претендую - на то и шпаргалка.. И подойдет она для сайтов без специфичного функционала (там уж кто на что горазд). И да.. шпаргалка по MODx Evolution 1.0.4 (скорее всего, подойдет и для других версий MODx EVO)

Установка MODx

При установке MODx особых трудностей возникнуть не должно - автоматический установщик отлично справляется со своими обязанностями. Кроме того, по умолчанию выбраны для установки все элементы (плагины-чанки-сниппеты…). Пример сайта я обычно не устанавливаю, хотя он может оказаться полезным для изучения (как раз в качестве примера). Единственное, что хотелось бы отметить - это

  • переименовать файл ht.access в .htaccess и раскомментировать строки register_globals и AddDefaultCharset

Настройка MODx

  • Создать шаблон(ы);
  • Создать помимо главной (по умолчанию с ID 1) 404 (403) страницу;
  • Указать (проверить) абсолютные и относительные пути для файл-менеджера и редактора (Путь к файлам, URL к файлам и Путь для файл-менеджера), установить разрешения на запись в каталог;
  • Настраиваем транслитерацию имени для загружаемых файлов;
  • Настраиваем транслитерацию URL (плагин TransAlias)
  • Обычно ставлю плагин Seo strict URLs - склеивает дубли страниц перенаправлением на “основной” алиас, убирает alias главной страницы (minimal-base по умолчанию) в wayfinder-меню и хлебных крошках;
  • Если испольуем ЧПУ, то следует проверить в шаблоне внутренних страниц наличие <base href=”[(site_url)] “></base> - облегчает настройку работы с загруженными файлами;
  • Отключаем вывод сообщений об ошибках на рабочем сайте
  • Если на сайте используется JQuery, следует отключить автозагрузку JQuery в плагине QuickManager (Load JQuery in front-end). В сниппетах могут задаваться параметры для отключения JQuery.
  • Служебные документы можно защитить от редактирования, используя mm_widget_accessdenied- виджет “Доступ запрещен”. При необходимости, можно скрыть или настроить отображение практически любых полей для каждого документа и каждого пользователя (роли)

Много полезных советов по настройке MODx можно найти у e-KAO, однако следует помнить, что создание различных сборок MODx не поощряется разработчиками… Используйте её для собственных нужд ;)

Опубликовано Август 13, 2010 | автор: levik  |  Комментарии (7) »

MODx - плагин TransAlias - автоматическая транслитерация адресов

В CMS/CMF MODx для автоматической транслитерации URL-ов страниц в комплект входит плагин TransAlias. Однако, по умолчанию настроен он так, что позволяет добавлять URL-ы, содержащие и русские буквы.

Для транслитерации русских букв в строке URL адреса следует произвести небольшую настройку плагина. А именно - заходим на вкладку “Конфигурация” (Элементы - Управление элементами - Плагины- TransAlias (8) - 1.0.1 Human readible URL translation supporting multiple languages and overrides), и выбираем значение “russian” для параметра Trans table

Там же можно настроить и разделитель слов (word separator) - дефис-минус или нижнее подчеркивание:

  • modx-transalias-plugin.htm (используется разделитель dash);
  • modx_transalias_plugin.htm (используется разделитель underscore);
  • еще есть “none”, но думаю “всё в кучу” будет смотреться намного хуже

Кстати, по умолчанию все URL-ы приводятся к нижнему регистру. Чтобы плагин “пропускал” буквы верхнего регистра (т.е. разрешить в URL-ах заглавные буквы) следует слегка подправить код (вообще, не рекомендуется.. но мы ведь аккуратно):

$alias = strtolower($modx->stripAlias(trim($pagetitle)));

заменить на (просто убрать strtolower - функция, которая и преобразует заглавные буквы в строчные)

$alias = $modx->stripAlias(trim($pagetitle));

Для того, чтобы плагин работал, в настройках событий (вкладка “Системные события”) должна стоять галочка напротив события OnStripAlias.

При необходимости отключить плагин TransAlias (как и любой другой плагин MODx) можно просто поставив галочку напротив “Плагин отключен”.

Опубликовано Август 12, 2010 | автор: levik  |  Комментарии (3) »

JoCo - управление JOT-комментариями в ModX

Несмотря на универсальность и функционал сниппет комментариев JOT не очень удобен для администрирования комментариев. Их просто нельзя найти нигде, кроме как на страницах сайта. Естественно, перебирать весь сайт в поисках новых комментариев не очень удобно.

Неплохое дополнение к jot, которое значительно расширяет имеющиеся функции - JoCo : Jot Comment tool.

Это дополнение включает в себя модуль (позволяющий управлять комментариями в панели управления MODx) и сниппет для расширения стандартного функционала JOT.

Установка модуля JoCo проста - копируем папку JoCo в каталог /assets/modules/ , после чего создаем новый модуль JoCo, в который прописываем всего лишь одну строку кода (содержимое искать в текстовом файле, в архиве с модулем)

Скачать JoCo для управления комментариями можно здесь:
http://modxcms.com/forums/index.php/topic,30632.0.html

Опубликовано Июль 20, 2010 | автор: levik  |  Нет комментариев »

Jot - комментарии в Modx

Сниппет jot позволяет организовать работу с комментариями в системе MODx. Для удобного управления комментариями из админки можно воспользоваться сниппетом JoCo

Jot входит в “стандартную” поставку MODx версии 1… Однако, по умолчанию - на английском языке. Чтобы использовать комментарии JOT на русском языке следует внести изменения в шаблоны (jot/templates) и в php-файлы используемых классов. Строго говоря, вместо внесения изменений в файлы шаблонов можно воспользоваться чанками и указать их в качестве параметров при вызове сниппета.

Перевод Jot. Можно также воспользоваться готовым переводом (качать в этой теме форума) . Однако, в шаблонах используются иконки от старой “темы” панели управления… В общем, видимо, без напильника не обойтись. Делается один раз и надолго.

Подводные камни JOT

Переходы при нажатии на “tab” в некоторых браузерах (у меня “нормально” сработала только “Опера”) воспринимаются не совсем корректно. Параметр tabindex должен принимать значения до 32767. В общем, открываем файл jot.class.inc.php и исправляем

$this->config[”seed”] = rand(); // строка 119, на
$this->config[”seed”] = rand(300, 32760); // новая строка 119

Разрешаем web-пользователям редактировать свои комментарии.
&canedit    (comma delimitted web groups)    Comma delimitted web groups that can edit their OWN comments.
Если опустить параметр &canpost, то все смогут комментировать

JOT - защита от спама

Простой способ избавиться от большой части спама - запрещать слова “http, url”  (также можно добавить “viagra, cialis” и.т.д.) Это делается с помощью параметра &badwords

Можно также защищаться с помощью “черных списков”. Пример использования списка Project Honey Pot (на английском) искать в Wiki: http://wiki.modxcms.com/index.php/Spamproofing_for_Jot. Этот подход можно использовать и для других списков.

(спасибо пользователю kp52)

Jot - вместо логина (username) отображаем полное имя (Full name) пользователя (менеджера) в комментариях. В шаблоне assets/snippets/jot/templates/chunk.comment.inc.html следует заменить username на fullname:
[+comment.createdby:userinfo=`username`:ifempty...
на
[+comment.createdby:userinfo=`fullname`:ifempty...

Jot - выбираем комментарии из нескольких документов (потребуется, например, при выводе последних комментариев на главной странице или в шаблоне)
http://modxcms.com/forums/index.php/topic,15746.msg108349.html#msg108349

Альтернативный вариант выбора последних JOT комментариев в MODx - сниппет LatestComments
http://modxcms.com/forums/index.php/topic,47196.0.html

Вывод последних комментариев JOT - еще один сниппет
http://modxcms.com/forums/index.php?topic=17843.msg276620#msg276620

Опубликовано Июль 1, 2010 | автор: levik  |  Комментарии (2) »

Кэширование в modx и очистка кэша

В системе modx предусмотрено кэширование документов. Если не вдаваться в подробности, то это значит, что данные, необходимые для формирования страницы сохраняются из базы данных в отдельный файл, к которому в дальнейшем происходит повторное обращение.

Конечно, для некоторых страниц в кэшировании необходимости нет, некоторые страницы и разделы при кэшировании теряют функционал. Настраивается кэширование как для отдельного документа (галочка “Кэшировать” на вкладке Настройка страницы), так и для любого сниппета (зачем каждый раз формировать данные, если они не изменяются?) - вызов сниппета в виде [[SnippetName]] ([!SnippetName!] -вызов без кэширования)

Очень часто неправильный тип вызова становится причиной некорректной работы сниппета (не работает разбивка на страницы, например)

По умолчанию при каждом сохранении документа (как нового так и уже существующего) modx производит очистку кэша. Действительно, пока кэш не будет очищен, система будет брать данные из “устаревших” кэш файлов. Причем удалять надо все файлы - иначе данные в некоторых сниппетах (например, Ditto) будут взяты из кэша.

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

Отключаем очистку кэша

mm_default('clear_cache', '0', '', '3', '0'); // 3 - номер шаблона
mm_default('clear_cache', '0', '', '', '0'); // или для всех шаблонов по умолчанию

альтернативный вариант от пользователя Kollad
http://modxcms.com/forums/index.php/topic,50843.msg295768.html#msg295768

Немного хакнув /plugins/managermanager/functions/fieldvalues.inc.php строка
$allowed_actions = array('85','4','72');
заменил на
$allowed_actions = array('85','4','72','27');
где, 27 = Editing document (manager/includes/actionlist.inc.php);

Опубликовано Июнь 23, 2010 | автор: levik  |  Нет комментариев »

modx - ditto, reflect, tags (tagging) - делаем тэги на MODx

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

Для начала, до разработки сайтов на MODx рекомендуется ознакомиться с некоторыми терминами, специфичными для этой системы..  Сниппеты, Чанки, TV, Шаблоны… организация документов. В качестве примера можно изучить DEMO-сайт, почитать WikiУчебник .

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

Итак, делаем тэги + даты на MODx

  1. Внимательно изучаем статью http://modx.ru/blog/add_tags/ и комментарии к ней. Делаем все, что там описано. Добавляем TV с именем tags, сниппеты Ditto, tagLinks и TvTagCloud нам пригодятся.
  2. Если планируются многословные тэги, а также есть желание упростить их ввод в “админке” (ткнул на тэг - он добавлен) читаем про пробелы и виджет тэгов MODx . После - добавляем mm_widget_tags(’tags’,’ ‘) , и исправляем, если требуется, &delimeter = ‘,’ (в вызове Ditto)
  3. Сниппет Reflect - своеобразная надстройка над Ditto. В месте вывода архива по датам (июнь 2010, май 2010…)
    [!Reflect? &config=`wordpress` &targetID=`3` &path=`3` &dittoSnippetParameters=`parents:3` &id=`wp` &getDocuments=`1`!]

Основная часть закончена. По идее, всё должно отображаться как нужно. Теперь бубен и напильник :)

При совместном использовании Ditto, Reflect и тэгов к ссылкам добавляются “лишние” параметры . К ссылкам дат добавляется &tags, а к ссылкам тэгов добавляются даты (wp_year…)

  1. Чистим ссылки в выводе Reflect. Сделано добавлением нового сниппета Leftmenu с кодом:
    <? php // snippet 'Leftmenu';
    $tmp=$modx->runSnippet('Reflect', array(
    'targetID' => 3,
    'config'=>'wordpress' ,
    'path'=>'3' ,
    'tplContainer'=>'reflect_tpl',
    'dittoSnippetParameters'=>'parents:3',
    'id'=>'wp',
    'getDocuments'=>'1'
    ));
    // echo $tmp; // для проверки корректности выполнения сниппета$tmp = preg_replace ('/(&)?(wp_)?tags=[^&"]*(&)?(start=0&)?/is','',$tmp);
    // регулярник для очистки от параметров wp_tags=xxx (от текущего ditto) tags=xxx (облако тэгов) и start=0
    echo $tmp;
    //[!Reflect? &config=`wordpress` &targetID=`3` &path=`3` &tplContainer=`reflect_tpl` &dittoSnippetParameters=`parents:3` &wp_tags=`` &id=`wp_` &getDocuments=`1`!]
    ?>
  2. 2. Чистим ссылки на страницы тэгов в выводе DITTO:
    В шаблоне вместо плейсхолдера [+tagLinks+] используем вызов сниппета - вывод тэгов со ссылками только на тэги
    [!tagLinks? &tv=`tags` &label=`
    Метки: ` &id=`[+id+]` &path=`3`!]

Если с первого раза не получится - отчаиваться не стОит. Опыт.. опыт.. и ещё раз опыт.

А вообще-то можно использовать стандартную конфигурацию из DEMO-сайта.

ps По умолчанию, Reflect считает, что в Ditto используется дата создания документа. Иногда удобнее использовать дату публикации документа. Кроме указания соответствующего параметра в Ditto, эту информацию следует  передать и в Reflect, примерно так: &dittoSnippetParameters=`parents:11|sortBy:pub_date`

Опубликовано Июнь 20, 2010 | автор: levik  |  Комментарии (3) »

modx - подборка сниппетов

О MODx можно почитать http://cad.kurganobl.ru/modx_book_01.html/

В системе управления cms/cmf MODx один из способов реализации дополнительного функционала  - так называемые Сниппеты (snippet). По сути Snippet в MODx это блок php-кода, который вызывается специальной конструкцией непосредственно из страницы. В сниппете доступны все переменные php (например, $_GET или $_POST..), кроме того могут быть переданы параметры, определяющие логику работы сниппета (чем-то похоже на вызов процедуры с параметром)

Однако, для работы со сниппетами не обязательно знать PHP код - можно воспользоваться уже готовыми. Все дополнения, как и дистрибутив системы, лучше скачивать непосредственно из репозитария (как минимум, гарантирована последняя версия с минимумом глюков ;) ).

Анатомия сниппетов
http://wiki.modxcms.com/index.php/Snippet_call_anatomy
http://sottwell.com/how-modx-works.html
http://modxcms.com/forums/index.php/topic,31097.0/topicseen.html - modx secrets

Краткий обзор сниппетов MODx

Полностью описать всю логику работы сниппетов в одной статье невозможно физически. Постараюсь в двух-трех строчках дать характеристику полезных на мой взгляд сниппетов. (Для полного-детального описания одного “сниппета-монстра” DITTO не хватит, пожалуй, даже десяти статей. Кстати, с него и начнем…)

Сниппет Ditto
Отображение нескольких документов на странице. Возможность группировки/сортировки/фильтрации..
[[Ditto? &id=`wp` &parent=`3` &display=`10` &dateFormat=`%d.%m.%Y` &sortBy=`createdon` &truncText=`»` &removeChunk=`Comments` &tpl=`ditto_blog` &paginate=`1` &extenders=`summary,dateFilter` &paginateAlwaysShowLinks=`1` &tagDelimiter=`, ` &tagData=`documentTags2`]]
http://www.alexuspro.ru/blog/2009/ditto-output-breaker/ - прерыватель вывода для Ditto

Сниппет Reflect
Представление архива с разбиением по месяцам/годам. Работает в связке с Ditto
[!Reflect? &config=`wordpress` &targetID=`3` &path=`3` &dittoSnippetParameters=`parents:3` &wp_tags=“ &id=`wp` &getDocuments=`1`!]

Сниппет tagLinks http://modxcms.com/extras/package/?package=448
Вывод ссылок с тэгами на странице документа (тэги прописаны для документа). Можно использовать совместно с Ditto для корректного отображения ссылок (вместо плейсхолдера [+tagLinks+])
[!tagLinks? &tv=`documentTags` &label=`Метки: ` &path=`172`!]

Сниппет Jot http://modxcms.com/extras/package/?package=216
отображение, редактирование и модерирование комментариев к документу
[[Jot? &subscribe=`1` &pagination=`10`]]
(доп. плагин JoCo позволяет удобно управлять комментариями в MODx)

Сниппет WayFinder
Меню с кучей настроек. можно вывести многоуровневое меню
http://www.prodevtips.com/2008/07/06/jquery-treeview-with-modx-wayfinder/ JQuery меню

Сниппет BreadCrumbs
“Хлебные крошки” - вывод “пути” к документу

Сниппет SEO Strict URLs
Перенаправляет все варианты обращения к странице на один в соответствии с настройками сайта. При установке не забыть раскомментировать пару строчек в .htaccess (www-редирект)
http://modxcms.com/extras/package/395 - качать тут.

Сниппет eForm
Позволяет создавать различного рода формы, при отправке формы отправить сообщение по E-mail, и конечно же добавить собственную обработку отправленных данных.
http://modxcms.com/forums/index.php?topic=35820.0 -отправка из Eform внутренней почты MODx

Сниппет GetField
поможет взять нужное поле у нужного документа
[!GetField? &docid=`_ID` &field=`pagetitle`!]

Плагин Doc Finder 1.6
Поиск документов в админке

сниппет tvsLinks - вставляет ссылки на нужные документы, используя значение tv-параметра;
http://modxcms.com/forums/index.php/topic,35096.0.html

Класс CakeMODx : Some different MODx APIs….
API modx для работы с документами, пользователями, группами, комментариями.. в общем, полноценное управление извне
http://modxcms.com/forums/index.php/topic,35663.0.html
http://community.modx-cms.ru/blog/research/79.html#comment1090 - пример работы

EasyEvents - организация календаря-событий в MODx
http://modxcms.com/extras/package/?package=118

FastContentCSV - импорт информации через CSV
http://modxcms.com/forums/index.php/topic,29616.0.html

Разблокировать пользователя / manager-а в MODx
http://modxcms.com/forums/index.php/topic,9934.0.html

Мультидоменный MODx Evo (несколько сайтов в одной установке MODx), спасибо Fuzzy
http://www.modxcms.de/multiple-domains-with-modx.html

MultiPhotos - прикрепляем к одной страничке несколько изображений
http://community.modx-cms.ru/blog/addons/1146.html

Многоязычные сайты на MODx - несколько языковых версий сайта
http://forums.modx.com/index.php/topic,29597.0.html
YAMS

CurrentDate - вывод текущей даты в нужном формате (формат date php)

Опубликовано Июнь 19, 2010 | автор: levik  |  Комментарии (2) »