Еще один проект на MODX+Livestreet (modLivestreet)

У меня сразу две новости.

1. Я организовал собственный MODX-клуб modxclub.ru
Он будет работать в полузакрытом режиме. То есть он как бы открыт (можно зарегистрироваться, читать, комментировать и т.п.), но не все на нем видно. Есть закрытые части сайта (и это не только отдельные страницы).

2. Сайт так же сделан на modLivestreet. И хотя в чистом виде modLivestreet не способен «из коробки» обеспечить все плюшки сразу, с небольшими изменениями он дает вполне удовлетворительный результат. К примеру, использование MODX-элементов внутри Smarty-шаблонов (благодаря использованию плагинов из пакета modxSmarty) обеспечивает полное взаимодействие с MODX. Читайте статью о некоторых фишках непосредственно на modxclub.ru

Не подгружаются стили CSS после авторизации.

Пытаюсь настроить MODX + LiveStreet, хостинг reg.ru, после авторизации не подгружаются стили и сайт отображается текстом. После сброса кеша и перезагрузки страницы, файл кеша CSS создаётся пустым, JS — со скриптами. Если зайти не авторизованным, то всё нормально со стилями. Кроме всего, сервер, время от времени выдаёт ошибку 500. В логах пишет:
Читать дальше →

Переопределение Livestreet-документов в MODX + SEO

Хочу сегодня рассказать об одной фишке. Кто уже устанавливал modLivestreet, тот знает, что в MODX документы нет необходимости создавать для Livestreet-страниц. MODX срабатывает на событие OnPageNotFound, и если это раздел Livestreet (смотрит по УРЛ-адресу), то вызывает сниппет modLivestreet.run, то есть вызывает Livestreet.

Но это не означает, что нельзя создавать свои страницы УРЛ-ами Livestreet-а. Можно. Просто для того, чтобы этот запрос запрос перенаправлялся на страницу Livestreet-а, надо выбирать для документа шаблон modLivestreet.Default (сразу оговорюсь, что этот метод без лишних телодвижений работает только тогда, когда раздел Livestreet-а находится в корне, так как в шаблоне modLivestreet.Default вызывается сниппет modLivestreet.run без перегрузки УРЛ-а, а значит в Livestreet будет передан весь УРЛ с префиксом, из-за чего Livestreet не сможет найти адрес. Скорее всего доработаю это в следующем релизе).

Так вот, для чего это нам может понадобиться?

Пример первый: если посмотреть внимательно, то страница /blog/ — это зеркало главной страницы. Уже не СЕО-шно, а значит задача — перенаправить со страницы /blog/ на главную.
Решение: создаем в MODX ссылку-контейнер с алиасом blog (Дружественные УРЛ-ы должны быть включены, страница должна стать доступной по адресу /blog/), и делаем перенаправление на главную (прописываем в адрес [[++site_url]]). Все, 301-ый редирект на главную.
Читать дальше →

Доводка LiveStreet + Modx

Есть грабли: www.shelestfest.ru
1) Дата рождения пользователя уменьшается на 1 день. Мария родилась 18 дек., а я 23 ноября. Показывает ровно на 1 день раньше.
2) a. Не грузятся фото превью в топиках (не в фотосетах, а именно в просто топиках).
б. Не грузятся фото в фотосетах большого объёма (в рамках допустимого) и грузятся по 1 шт.
3) «Топики» ведут на «главную» — а нужен список из постов
4) «Лента активности» — пустая, при заходе админом

p.s. Хотелось бы знать — где менять порядок пунктов меню LS и подвинуть кнопку «ещё» правее?

Релиз modLivestreet-0.6.1-rc

Сегодня на мой взгляд выходит очень интересная версия modLivestreet. Я не так давно выпустил пакет modxSmarty, который позволяет использовать Smarty во фронтэнде MODX-а, и как раз там писал несколько плагинов для смарти, чтобы можно было использовать MODX-объекты прям в шаблонах (смотрите видео в топике).

Так вот, сегодня я закинул эти плагины в Livestreet, плюс сделал пару мелких махинаций, и теперь MODX-элементы можно прям в шаблонах Livestreet-а использовать. К примеру вот так: {snippet name=Wayfinder params=«startId=`0`»} (сразу сформирует меню еще на стороне Livestreet-а, не дожидаясь передачи MODX-парсеру).

Можно результат присвоить переменной, к примеру {snippet name=Wayfinder params=«startId=`0`» assign=menu}
В пакет входят и другие элементы (chunk, config, link, tv, field, parser), в общем все необходимое.
parser — наверно самый интересный. Он парсит контент с MODX-тегами. К примеру можно так использовать: {parser content=«УРЛ сайта: [[++site_url]]»}

Учитывая то, что Livestreet полностью базируется на Смарти (даже большая часть логики в нем реализована), это нововведение открывает большие перспективы. Правда есть одна досадность: Livestreet в принципе не рассчитывался на то, чтобы использовать кешируемые Smarty-шаблоны (то есть может и рассчитывался, но шаблон synio точно этого не предусматривает). То есть снизить нагрузку за счет Смарти при обработке MODX-элементов не получится — {chunk}, {snippet} и т.п. — все будет без кеширования. Так что этим не злоупотребляйте, используйте только тогда, когда обязательно надо будет обработать это на стороне LS.
Читать дальше →

Реализация мультиязычной сети

Всем привет,
Задача у меня следующая: создать мультиязычную сеть на базе связки MODX + Livestreet.
— Под каждый язык должен быть свой индивидуальный контент, но при этом база пользователей одна.
— Один из языков RTL

Как именно стоит это сделать ведь есть разные варианты.

Установить один MODX и в нем несколько Livestreet плагинов кажется самым подходящим вариантом, но возникает вопрос если это вообще возможно — несколько плагинов. Точнее оно ясно что возможно но насколько сложно это реализовать.

Можно ли создать несколько контекстов в MODX и на каждый свой отдельный livestreet плагин? Так бы можно было каждому контексту назначит свой язык. И в такой настройке, если я правильно понимаб, юзеры будут на одной базе MODX.

Еще вот вопрос как лучше реализовать ЮРЛ языков да так что бы поисковикам было приятно. Сделать домен третьего уровня на каждый язык/контекст (en.site.com, ru.site.com) или же site.com/en, site.com/ru

Посоветуйте пожалуйста по поводу всего что я написал выше.

Парсер MODX съедает вызов сниппета в тегах "code"

При добавлении комментария или при создании топика в Livestreet-е не могу прописать такую конструкцию:
[[вызов_сниппета]]
Здесь всё прекрасно работает.
Парсер MODX съедает скобки, т.е. нет подставления на & #91;& #91;. В файле: /engine/lib/external/Jevix/jevix.class.php, автоподставление прописано.
public $entities2 = array('<'=>'& lt;', '>'=>'& gt;', '"'=>'& quot;', '['=>'& #91;', ']'=>'& #93;');
Пробелы выставлены преднамеренно.
Подскажите, что может быть и где копать.