11ноября,
2010
Удобное редактирование ключевых слов (keywords) в Modx Evolution

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

Для этого понадобится всего пара штук:

1. TV-параметр. Назовём его «keywords». Это должен быть тип Text, остальное не подходит. Назначить этот TV всем документам, где должны быть ключевые слова.

2. Установленный плагин Managermanager (он уже предустановлен в релизах, начиная с версии 1.02 вроде, последняя сейчас 1.04, так что проблем с этим быть не должно).

3. Добавить всего одну строчку в mm_rules (описание правил для Managermanager):

mm_widget_tags('keywords');

4. В <head> поставить вот такую строчку:

<meta name="keywords" content="[*keywords*]">

Этот виджет для Managermanager-а позволяет собирать вводимые на сайте теги, но никто не мешает использовать его для сбора, например, ключевых слов. Вводимое новое слово в любом документе в этом TV, потом отображается уже, как слово из выборки, по которому можно просто кликнуть, выглядеть это должно примерно так:

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

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

Более подробно о виджете «mm_widget_tags» есть в документации на русском.

15мая,
2010
Ошибка в ManagerManager в версии 0.3.8

В последней версии ManagerManager, которая идёт с дистрибутивом Modx-а 1.0.3, обнаружилась ошибка:
mm_hideTemplates работает корректно только в Firefox-е. В остальных браузерах список шаблонов остаётся прежним и ничего не скрывается.

На официальном форуме предложили решение:
В файле /managermanager/functions/templates.inc.php заменить:

foreach ($tplIds as $tpl) {
$output .= 'if ($j («select#template»).val () != '.$tpl. ') { '. «\n»;
$output .= '$j ("select#template option[value='.$tpl.']").hide ();' . «\n»;
$output .= '}' . «\n»;
}

на:

foreach ($tplIds as $tpl) {
$output .= 'if ($j («select#template»).val () != '.$tpl. ') { '. «\n»;
$output .= '$j ("select#template option[value='.$tpl.']«).remove ();' . „\n“;
$output .= '$j („select#template optgroup:not (:has (*))“).remove ();' . „\n“;
$output .= '}' . „\n“;
}

Также в файле /manager/actions/mutate_content.dynamic.php на строке 585 исправить на:

<optgroup label=»blank">
<option value="0">(blank)</option>

Что поможет избежать других проблем, потому как тег <optgroup> не указан.

Проверил, работает в Chrome, Opera и IE. Более того, Opera вылетала постоянно при попытке редактировать документ, после внесения исправления стала работать корректно.

28апреля,
2010
Установка модуля, плагина и сниппета YAMS в Modx

YAMS — Yet Another Multilingual Solution — служит для создания многоязычных сайтов на базе Modx CMS.

Поиск по сайтам связанным с настройкой и работой с Modx уcпехом не увенчался. Вообще, никакой поиск успехом не увенчался, когда потребовалась информация на русском языке.
Пришлось разбираться с английской документацией и методом проб и ошибок делать проект.

Полностью переводить документацию не буду, расскажу в общих чертах, как его запустить и заставить работать.

Устанавливался YAMS на версию Modx Evolution 1.0.3, которая уже в дистрибутиве имеет предустановленный ManagerManager последней версии, без него YAMS просто не получится использовать.

Установка:
Надо скачать архив последней версии. Там что-то непонятное с версиями. Последняя версия почему-то не лежит на странице для скачки, а в списке Previous Releases, потому прямая ссылка на версию 1.1.7-alpha RC7, она пока последняя.

Распаковать архив и залить в папку assets/modules/yams, выставить права на папку yams 775.

Подключение модуля, плагина и сниппета:

Код модуля:

require_once ( $modx->config['base_path'] . 'assets/modules/yams/yams.module.inc.php' );

— Создать в администрационной части в разделе «Модули» новый модуль YAMS.
Описание: Yet Another Multilingual Solution Module

— Создать в администрационной части в разделе «Плагины» новый плагин YAMS.
Описание: Yet Another Multilingual Solution Plugin
Код плагина:

require ( $modx->config['base_path'] . 'assets/modules/yams/yams.plugin.inc.php');

В системных событиях плагина поставить галочки на:
OnLoadWebDocument
OnParseDocument
OnWebPageInit
OnWebPagePrerender
OnLoadWebPageCache
OnPageNotFound
OnBeforeDocFormSave

— Создать в администрационной части в разделе «Сниппеты» новый сниппет YAMS.
Описание: Yet Another Multilingual Solution Snippet
Код сниппета:

<?php
require ( $modx->config['base_path'] . 'assets/modules/yams/yams.snippet.inc.php' );
?>

После перезагрузить страницу, чтобы модуль заработал.

Настройка ManagerManager:
Независимо от того, что используется, в файле с правилами или чанке с правилами в конце надо прописать:

require ( $modx->config['base_path'] . 'assets/modules/yams/yams.mm_rules.inc.php' );

Собственно, YAMS готов к работе.

В «Инструментах» > «Конфигурации» включить Дружественные URL, разрешить вложенные URL, также использовать в связке с предыдущим параметром повторяющиеся псевдонимы, тогда путь до документа в адресной строке будет выглядеть:
site.com/en/catalogue/home-video
site.com/ru/catalogue/home-video

Настройка:

Во вкладке «Модули» > «YAMS» лежат все настройки.

Настройка языков:

Собственно, исчерпывающая страница, на которой показаны языки и как их добавлять. Теги, названия для отображения в самом же языке, в других языка, выбор письма справа налево или наоборот, теги (нужны для вызовов сниппета YAMS, обозначение, группы), системное название языка, имя сервера система подставляет автоматически. Set Default — поставить язык по умолчанию, чтобы с него открывался сайт.

Дальше идёт настройка сервера, после того, как созданы все необходимые языки, YAMS создаёт правила, которые надо вписать в .htaccess, чтобы правильно работали пути и редиректы.

Это находится на следующей вкладке:

Всё содержимое из этой вкладки просто скопировать в .htaccess

Другие настройки:

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

Последняя вкладка: Multilingual Templates

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

YAMS заменяет стандартные поля Pagetitle, Longtitle, Content итд TV-параметрами с окончанием _ru, _en итд, то бишь, чтобы Pagetitle страницы был привязан именно к языку и полное название TV-параметра тогда выглядит pagetitle_ru.

Как только создаётся новый шаблон, во вкладке Multilingual Templates надо ему присвоить статус многоязычного.

Также можно создавать новые TV-параметры с нужным окончанием, они автоматически будут переноситься в соответствующий таб языков.

Не рекомендуется, даже больше, нельзя убирать поле Internal Name, оно нужно для отображения названия документа в дереве слева.

Создание шаблона:

Стандартный шаблон без дополнительных вызовов других сниппетов. YAMS автоматически определяет такие поля, как [*pagetitle*], [*longtitle*], [*content*]. То есть, достаточно вставить их в шаблон, сделать во вкладке Multilingual Templates шаблон многоязычным и при редактировании документа заполнить эти поля для каждого языка, при переключении языков на сайте, они будут меняться.

Механизм переключения языков:

Создаётся, например, чанк Languages, ставится в нужном месте в шаблоне и в чанк записывается:

[[YAMS? &get=`repeat` &repeattpl=`lang_tpl` &currenttpl=`current_lang_tpl`]]

&repeattpl=`lang_tpl` — шаблон кнопки языка
&currenttpl=`current_lang_tpl` — шаблон кнопки текущего языка

Шаблон lang_tpl выглядит, например, вот так:

<a href="(yams_docr)">(yams_name)</a>

(yams_docr) — ссылка, сгенерированная до текущей страницы в этом или остальных языках
(yams_name) — имя языка, вписанное в табе Модули > Yams > Language Settings

&currenttpl — шаблон выбранного языка. Тоже самое, только можно добавить class="selected", ну, или что по вкусу, чтобы язык был виден, как текущий.

Точно таким же образом можно подставить и флажки вместо текста.

Wayfinder и YAMS

Вызов Wayfindera:

[[Wayfinder? &startId=`0`  &useWeblinkUrl=`true` &rowTpl=`menu_tpl`]]

YAMS-у требуется, чтобы параметр &useWeblinkUrl был включён.
Чтобы Wayfinder правильно генерировал ссылки, всё в шаблоне работает через сниппет YAMS.

Шаблон одной кнопки — menu_tpl:

<li[+wf.id+][+wf.classes+]><a href="(yams_doc:[+wf.docid+])" [+wf.attributes+]>[[YAMS? &get=`content` &docid=`[+wf.docid+]` &from=`pagetitle`]]</a>[+wf.wrapper+]</li>

Ditto и YAMS:

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

&extenders=`@FILE assets/modules/yams/yams.extender.inc.php`

Если вызов некэшируемый [!Ditto!], то в параметрах вызова надо указывать id и язык:
&id=`(yams_id)` &language=`(yams_mname)`
А в шаблоне плейсхолдеры указываются тогда так:

[+(yams_id)_pagetitle+].

Если вызов кэшируемый [[Ditto]], то автор предлагает поместить в каждый язык по вызову Ditto, также в вызове прописать &id=`id` &language=`имя языка`.

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

[[Ditto? &tpl=`news_(yams_id)`]]

Существует два чанка news_ru, news_en. В зависимости от того, какой язык текущий, параметр (yams_id) подменяется обозначением языка.

А в самих чанках:

<h1>[+introtext_ru+]</h1><p>[+content_ru+]</p>

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

Это общая информация, не вдаваясь в мелкие детали, чтобы собрать мультиязычный сайт её вполне достаточно.

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

3февраля,
2009
Наконец-то обновился

Mark.Sh

Потратив почти четыре месяца, работая над ним по ночам, когда выдавался момент, иногда в выходные дни выдирал минутку, мучал, мучал и домучал. Зашла шлея ещё под хвост перерисовать пиктограммки на главной в эти выходные. Пришлось перерисовывать.

Дизайн, HTML и CSS, а также установка ModX — всё сам.

За помощь в написании текстов спасибо OllyDark, за перевод на латышский и русский — всяческие благодарности Moon_Light.

Кое-что ещё не доделал, буду дорабатывать, но в целом сайт уже рабобельный.

6января,
2009
Несуществующий скотч

scotch

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

3января,
2009
Шаг за шагом

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

24ноября,
2008
Из подручных средств

sctch

Делаем с практиканткой логотип несуществующей компании по производству клейкой ленты. :)