Топики пользователя «alooze»

Каким я бы хотел видеть Modx Evo

Опубликовано временно, будет убрано скоро.
UPD: есть повод для обсуждения, поэтому пока что оставлю опубликованным.

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

Некоторые пункты, к сожалению, исключают безпроблемную совместимость с более ранними версиями. Главное, что хотелось бы сохранить — работоспособность существующих сниппетов, которые считаются стандартными.

В одиночку такую работу само собой потянуть нереально. Более того, в полном объеме все перечисленные (и забытые) изменения вряд ли пригодятся в каком угодно сложном проекте: все равно нужно будет многое делать под собственные нужды. Поэтому данный список составлен больше в качестве упражнения по юзабилити, чем как реальная постановка задачи.



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

Жесткие ссылки в Modx Evolution (несколько родителей у ресурса)

1. Введение

Что такое жесткая ссылка и зачем она нужна?

В ОС Linux, в отличие от Win есть 2 вида ссылок. Первый вид — т.н. символические ссылки, практически аналог ярлыков в Windows. Второй — жесткие ссылки. О жестких ссылках можно думать, как о копиях одного и того же файла, но при изменении одной из этих копий синхронно меняются и остальные копии. Все, естественно, чуть сложнее, но как модель это описание подойдет.

Теперь посмотрим на Modx. В ветке Evo есть 2 типа ресурсов: документ и веб-ссылка. Если вы хоть раз пользовались вторым типом, то представляете его возможности. В случае, если эта ссылка ведет на другой ресурс в дереве, это как раз получается аналог символической ссылки в Linux или ярлыка в Windows.



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

[Evo][Хак] Вынужденная правка API

Буду краток.

На сайте был TV с типом text. В него писались id ресурсов, через запятую. В какой-то момент этот TV стал Listbox. Но в одном из документов по старой памяти сохранилась запись «22,». В итоге, когда вызывался этот TV в шаблоне Ditto (вместе с самописным модификатором PHx), падал сайт с ошибкой Mysql.

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

В итоге выяснилось, что в API функции getDocuments нет проверки на такие вещи. Пришлось внести исправления.

Итак, файл document.parser.class.inc.php, строка 1458:


function getDocuments($ids= array (), $published= 1, $deleted= 0, $fields= "*", $where= '', $sort= "menuindex", $dir= "ASC", $limit= "") {
        if (count($ids) == 0) {
            return false;
        } else {
//вот тут я вставил проверку
            /**++**/
            foreach ($ids as $id) {
              if (intval($id) != 0) $newIds[] = intval($id);
            }
            $ids = $newIds;
            /**++**/
//конец правки



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

[Evo] Модуль Freeze - стазис файловой структуры (концепт).

Архив с кодом
Описание установки — ниже.

1. Дисклаймер

Этот модуль лежал в заброшенном состоянии несколько месяцев. Причиной этого был тот факт, что при сканировании дерева каталогов сайта (не Modx) средствами php достаточно сильно кушались ресурсы. Оставленный для созревания код мог быть никогда не дописан, но появился этот топик и черновики были доработаны.

Объяснение выше сделано не только для затравки. Из-за длительного промежутка код может оказаться недостаточно цельным. Я с этим обстоятельством могу мириться, так как у меня код работает. Но дать этому дополнению статус хотя бы беты я не рискну. Причины — ниже.

Да, код вы можете свободно дорабатывать и использовать "как есть" на свой страх и риск.

2. Задачи и решения

Назначение этого модуля — пассивная защита от посторонних файлов в директориях сайта. Пассивная — потому что никаких попыток отследить откуда взялся левый скрипт модуль не делает. Его задача вовремя обнаружить изменение файловой структуры сайта и при необходимости вернуть все как было.



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

Какая ваша основная специальность (по бумажкам)

Проголосовало: 94. Воздержалось: 3

В течение сегодняшнего дня несколько раз всплывала тема основной профессии Modx-кодеров. Стало интересно, а есть ли хоть один программист с дипломом среди нас?=) Если нетрудно, в комментариях одним словом укажите вашу специальность по документу.

[Evo] Плагин для заполнения TV на основе запекания других TV

Создано под впечатлением от этого комментария

Задача плагина — при сохранении формы редактирования документа сделать что-то с одним или несколькими значениями TV и записать результат в результирующий TV.



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

[Evo][Хак] PHx нарвался

Достал этот диво-инструмент и вытекающие из его использования чудеса.

Решение не претендует на свежесть взгляда или универсальность. В моем случае оно работает.


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

PlusCatalog - микро-каталог "на коленке" [Evo]

1. Постановка задачи.

Для одного из сайтов понадобилось создавать ресурсы из 2-3 строк текста + фото. Количество таких ресурсов может в перспективе стать запредельным. Использовать для хранения этих данных таблицу в БД modx я посчитал слишком расточительным, да и дерево документов — не резиновое.

Единственно возможным вариантом является хранить эти записи в отдельной таблице в БД. Структуру таблицы можно задать именно такую, которая нужна. Для записи данных в таблицу, а также для их правки/удаления, можно использовать модуль.

Однако, сам по себе сайт для редактора получился достаточно простым и логичным. Я ощутил, что не имею морального права заставлять пользователя часть материалов добавлять через модуль, а часть — через документы modx. Следовательно, нужен интерфейс для работы с внешней таблицей, причем этот интерфейс должен разместиться прямо в дереве документов.



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

[Хак] Авторизация "все включено" или Modx Evo+phpBB+Loginza = дружба

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

1) Постановка задачи.

На действующем сайте с самописным движком и форумом phpBB в поддиректории forum/ была сделана совместная авторизация средствами phpBB. В ТЗ была поставлена задача: сохранить совместную авторизацию для ModX и phpBB и добавить к ней возможность входить через Логинзу. Все три авторизации должны были быть сквозными.



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

Sphider и ModX

1. Предыстория.

Делал сайт, который до этого работал на самописном движке. Те разделы, которые позволяли организовать документы ModX, сделал ресурсами. Однако часть сайта не позволила преобразовать себя в полноценные ресурсы. Основная причина — количество (более 30 000) и размер каждого из «недоресурсов» — 1-2 строки (сообщения пользователей, что-то типа твитов, только более размазанные по сайту). Вывод этих «твитов» сделал, не мудрствуя лукаво, по GET запросу в рамках одного ресурса. Иначе говоря, сама страница с id одна, а содержимое у нее зависит от параметров в строке URL.



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