Объекты

Xaoc

Новичок
Всем Привет!!!

Так...немного разобрались...теперь постараемся разложить все по полочкам.
Так-с. Начнем.
Задача: создать механизм, который должен без особых проблем и затрат времени реализовать некоторые требования; создать механизм, который можно будет использовать во внешних программах, не относящихся к основному комплексу как основные.

Первая задача - это как раз и есть тот самый сабж - "Объекты". Предположим: есть пользователь CMS, который НЕ знает ХТМЛ, но которому нужно вставить изображение на одну из страниц сайта. В то же время он НЕ умеет пользоваться ФАРами и т.п. коммандерами (это для ФТП). Для этого он заходит в раздел Объекты и создает объект Изображение, задает параметры изображения, с помощью формы input type=file заливает все это дело на сервер. Ему дается некая комбинация символов для вставки в нужное место на странице. Пользователь вставляет эту комбинацию и теперь на странице будет показываться ТО изображение. Это первая задача.

Вторая задача немного проще. Предположим есть система новостей. Есть столбец с пятью последними анонсами новостей. Этот столбец нужно вставить на ВСЕ страницы сайта (ну так задумано). Например нужно вставить так же на страницы форума. Предположим что форум посторонний. Что тогда?
Далее: предположим, что кроме системы новостей есть еще с десяток приложений требующих этот механизм, но если использовать вариант по типу %NEWS5%, то придется для каждого приложения делать большие функции замены той или иной комбинации. Моя же задача сделать механизм, который можно будет безболезнено интегрировать в данную среду, но чтобы было мощно. :)

Пока под критерий "Удобнее. Интеграционичнее. Красивее" подходит варинат с JavaScript, согласитесь. Но у него так же своих проблем много.

Так...вроде проблему изложил по полной катушке. 2Mammoth - я не обижаюсь ;) спасибо за советы
А так же выражаю всем остальным благодарность за потраченное на меня время....
но все же - теперь вроде понятнее и я думаю может у кого какая-нибудь мысль для меня появится...
 

Mammoth

Guest
Задача экспорта контента на посторонний (!!!) сайт наиболее просто решается внедрением на страницы постороннего сайта строки
Код:
<script language="javascript" type="text/javascript" src="http://site_of_Xaoc/get_Xaoc_hot_news.php">
И не надо тут никаких объектов.

Внедрение системы новостей на страницы своего сайта решается не менее просто - внедрением в темплейт страницы выражения вида %my_hot_news% и написанием обработчика этого выражения. Конкрентная реализация зависит от шаблонного движка. Например, в Смарти выражения вида %my_hot_news% можно настроить на подстановку значения какой-либо переменной, а можно - на вызов своей функции, оформленной в виде плагина к смарти.

В целом я так и не понял в чем у тебя возникли сложности.
 

Xaoc

Новичок
Уважаемый Mammoth!

В реализации этих двух способов у меня проблем не возникло - они уже были реализованы до открытия данной дискуссии. Просто фактически вопрос состоял в том, чтобы Вы - многоуважаемая публика, рассказали мне о недостатках этих способов и по возможности предложили другие :)
вот оно так.
 

csa

Guest
Автор оригинала: Xaoc
Моя же задача сделать механизм, который можно будет безболезнено интегрировать в данную среду, но чтобы было мощно.
почему бы не заворачивать сторонний код в ob_start(); include "plugin.php" $c = ob_get_contents(); ob_end_clean();?
далее ищешь в $c нужные теги и заменяешь
PHP:
if(preg_match_all("/include\(([^,\)]+)(,?(.*?))\)/", $__cont, $_m, PREG_SET_ORDER)){
    foreach($_m as $_row){
        if(!empty($_row[3])){
            $p_argc = explode(',',$_row[3]);
            preg_match_all("/([\w\d]+)=([^,]+)/", $_row[3], $_p_argc_assoc, PREG_SET_ORDER);
            foreach($_p_argc_assoc as $_p_row ){
                $p_argc_assoc[$_p_row[1]] = $_p_row[2];
            }
        }

        ob_start(); include "plugins/".$_row[1]; $c = ob_get_contents(); ob_end_clean();
        $_regex = str_replace("'","\'", "include\($_row[1]$_row[2]\)");
        $__cont = preg_replace("'$_regex'", $c, $__cont);
    }
}
$__cont - контент с тегами
plugins - каталог с плагинами (обработчики тегов)
тег имеет вид include(plugin_file_name[,param1=dfdsf[,..]])
параметры помещаются в $p_argc (а-ля сишный argc) и $p_argc_assoc (ассоциативный массив)

зы. $_row[1] стоит проверять как минимум на отстутствие ".."
ззы. код несколько раз дописывался (при сохранении обратной совместимости), поэтому есть некая избыточность
 
Сверху