Необходимо написать свой модуль к системе

#
Необходимо написать свой модуль к системе
Здравствуйте. Необходимо подключить замописный модуль к системе, который будет ловить все, что выводится в html, изменять код и выводить в обработанном виде.

Ткните плз. носом где читать о модулях на Host.CMS, о их работе, кустомизации, подключению и их написанию.

Заранее, спасибо.
Модератор
#
Re: Необходимо написать свой модуль к системе
#
Re: Необходимо написать свой модуль к системе
Почитал документацию. Не обижайтесь конечно, но ее действительно мало и написана она странным языком, такое ощущение, что она для служебного пользования..

Попробую немного упростить и разбить задачу.

1. Есть ли в Host.CMS возможности API, которые могли бы позволить контролировать вывод HTML, весь вывод. Чаще всего это делается через ob_start(), но с каким классом/методом работать в данной ситуации не понятно.

Поможете?
Модератор
#
Re: Необходимо написать свой модуль к системе
Antohsa писал(а):
Почитал документацию. Не обижайтесь конечно, но ее действительно мало и написана она странным языком, такое ощущение, что она для служебного пользования..

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

Antohsa писал(а):
Есть ли в Host.CMS возможности API, которые могли бы позволить контролировать вывод HTML, весь вывод.

Подробнее ... ob_start(), как и другие функции php никто не машет использовать. Используете в коде макетов-шаблонов-дин. страниц в нужных Вам местах.
#
Re: Необходимо написать свой модуль к системе
Мне необходимо подключить модуль стандартными методами, то есть без включений какого-либо кода со стороны пользователя, иначе я бы смог провернуть все необходимые операции в index.php.

Есть ли возможность подключить модуль до инициализации макета или, например, после подключения ядра. Есть ли какая-то событийная модель в ядре?

В общем задача сводится к тому, чтобы подключить модуль до вывода первых тегов HTML.
#
Re: Необходимо написать свой модуль к системе
Antohsa, а расскажите подробнее, чего за модуль, что вы от него хотите?

Antohsa писал(а):
который будет ловить все, что выводится в html, изменять код и выводить в обработанном виде
самый простой способ ловить _все_ - это создать index2.php с примерно таким кодом:

<?php
ob_start();
require_once(dirname(__FILE__) . '/' . 'index.php');
$my_var = ob_get_clean();
// $result = делаем что-то с $my_var;
echo $result;

при этом в файле .htaccess нужно изменить обработчик по-умолчанию на index2.php вместо index.php
RewriteRule ^(.*)$ /index2.php

а также исправить index.php на index2.php в строке DirectoryIndex в том же файле.

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

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

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

Однако логично предположить, что анализ _всего_ кода страницы вам не нужен - не надо делать перелинковку со слов находящихся в меню, или в футере и т.п.
И тогда тут напрашиваются два пути.

1й - перехватывать не всю страницу, а вывод динамического контента в ТДС. Перехватил статью, обработал - отдал. Объем анализируемой информации уменьшается и время анализа сокращается. Но все равно долго.

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

Я угадал направление ваших потребностей?
Заказов не беру. Консультирую редко.
#
Re: Необходимо написать свой модуль к системе
К сожалению не угадали. Я не такой хитрый, как кажется. Речь идет об оптимизации контента - сбор всех CSS в один файл, всех JS, удаление всего лишнего из HTML, динамическое создание css-sptit'ов и многое, многое другое.

Для этих целей (пока не буду правда называть конкретно) существует некоторое Веб-приложение, которое оптимизирует весь код. Другими словами, оно перехватывает через ob_start() входной поток, а возвращает в браузер уже оптимизированным. По некоторым оценкам скорость загрузки сайта возрастает минимум на 50%, а бывает и 200-300%. После оптимизации имеется собственная система кеширования, поэтому в дальнейшей нагрузки на сервер - минимальны.

Данная система может быть подключена автономно к любой CMS, путем внедрения вызова приложения в index.php, корректировкой .htaccsess и некоторые другие вещи. Но дело в том, что людям хочется иметь уже готовый модуль для своей CMS. Другими словами люди хотят установить модуль привычными для их CMS способами, также привычно его настроить и получить результат, не прибегая к правке кодов или чего подобного.

Модули/Компонеты/Плагины для Joomla, Drupal, Wordpress и Bitrix готовы.

Теперь необходим модуль для Host.CMS. Вот сижу разбираюсь.

П.С: Я не представляю интересов никаких компаний, все разработки персональны.
#
Re: Необходимо написать свой модуль к системе
Эмм...
Имхо, идея с веб-приложением несколько спорная, но наверное не стоит тут об этом (для холивара у меня есть аська).

По существу - событийность, конечно, присутствует. Например, сначала выполняются "Настройки ТДС", потом обработка макета и шаблонов, потом "Код ТДС". Но проблема в том, что не все страницы сайта являются ТДС, да и перехватывать вывод в них - не удобно.

Мой совет в таком случае - все-таки перехватывать индекс, способом, описанным выше.

Чтобы не вносить правки руками надо задействовать обработчики модуля по событиям "установка" (создание файла index2.php) и по событиям "включение/отключение" - соответствующие правки в .htaccess, если, конечно, вы сможете писать туда из php.

Как-то так.
Заказов не беру. Консультирую редко.
#
Re: Необходимо написать свой модуль к системе
Мне обязательно необходимо писать в .htaccess, будем думать дальше.

Но на самом деле делать это через index2.php не хорошо, только из-за того, что у Вас Zend стоит.
Модератор
#
Re: Необходимо написать свой модуль к системе
Antohsa,
Что-то мне подсказывает, что Вы извратили саму идею CMS. index.php автоматически обновляется и даже если бы он был открыт, писать в него ничего нельзя, зато можно в макеты, шаблоны и так далее.
Авторизация