Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2010, 15:11   #1
MrakSPb
 
Регистрация: 19.12.2009
Сообщений: 7
По умолчанию PHP код в шаблонах CMS

Добрый день!
Есть некая самописная CMS. Для оформления страниц сайта используются шаблоны в формате *.htm. Собственно, требуется в один из шаблонов внедрить некий php код.
В самой CMS шаблон обрабатывается след образом:
PHP код:
...
var 
$templName='page.htm';
...
$this->templ->file($this->templName,'_pageMain_');
... 
Была идея в .htaccess добавить обработку файлов *.htm как php, но из-за того, что шаблоны вызываются file() это не помогло.

Еще есть идея сделать поиск тегов <?php ?>, выдернуть из них php код и обработать, но тут возникла проблема с реализацией..

Может у кого есть идеи?
MrakSPb вне форума Ответить с цитированием
Старый 02.08.2010, 16:40   #2
arvitaly
Пользователь
 
Аватар для arvitaly
 
Регистрация: 01.08.2010
Сообщений: 51
По умолчанию

А какой именно PHP код нужно внедрить
arvitaly вне форума Ответить с цитированием
Старый 02.08.2010, 16:43   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Не совсем понятно - а как сейчас там реализовано добавление данных php в шаблон?
Имею ввиду - сейчас-то данные как-то передаются же в шаблоны? Чем тот же способ вас не устраивает..?
Andkorol вне форума Ответить с цитированием
Старый 02.08.2010, 19:46   #4
MrakSPb
 
Регистрация: 19.12.2009
Сообщений: 7
По умолчанию

Цитата:
Сообщение от arvitaly Посмотреть сообщение
А какой именно PHP код нужно внедрить
PHP код:
<?php include '/blogs.php'?>
а в файлике импорт RSS..

Сейчас данные сделаны по схеме Шаблон - {ИМЯ_МОДУЛЯ} - XML - Функция PHP. Мне бы не хотелось создавать дополнительные поля в XML схеме и переписывать часть движка...
MrakSPb вне форума Ответить с цитированием
Старый 02.08.2010, 21:18   #5
arvitaly
Пользователь
 
Аватар для arvitaly
 
Регистрация: 01.08.2010
Сообщений: 51
По умолчанию

Я бы сделал так, в шаблон прописываем что нибудь типа {{include==/blogs.php}}
Код:
ob_start();
$this->templ->file($this->templName,'_pageMain_'); 
$content=ob_get_contents();
ob_end_clean();
if (strpos($content,"{{include==/blogs.php}}")>0)
{
     include '/blogs.php';
     $content = str_replace("{{include==/blogs.php}}","",$content);
}
echo $content;
arvitaly вне форума Ответить с цитированием
Старый 02.08.2010, 22:29   #6
MrakSPb
 
Регистрация: 19.12.2009
Сообщений: 7
По умолчанию

Идею понял. Но не работает к сожалению echo ничего не выводит. Возможно потому что все описывается в теле класса.

На всякий случай приведу побольше кода CMS
PHP код:
<?php

class KPage extends KModule
{
    var 
$_get_vars=array('action');
    var 
$_objects=array();
    var 
$cache;
    var 
$templ;
    var 
$templName='page.htm';
    var 
$templNamePrint='page_print.htm';
    var 
$action='';
    var 
$isPrintVer=false;
    var 
$parser;
    var 
$renderFromXML='';
    var 
$isDynamic=false;
    var 
$cachKey='';

    var 
$title='';
    var 
$keyWords=array();
    var 
$description='';

    var 
$objToSave=array();

function 
KPage(&$db)
{
    
$this->_initVars();
    if(
$this->action=='show_print')
        
$this->isPrintVer=true;
    global 
$t,$cache;
    
$this->cache=&$cache;
    
$this->templ=&$t;
}

function 
setPrintVer()
{
    
$this->isPrintVer=true;
}

function 
setXML($xmlFile)
{
    
$this->renderFromXML=$xmlFile;
}

function 
_txtConv($str)
{
    
$str=strip_tags($str);
    
$str=strtr($str,array('"'=>'\''));
    return 
$str;
}

function 
render($placeName="")
{   
    
$this->renderXML($this->renderFromXML);
    if(
$this->isPrintVer){
        
$this->templName=$this->templNamePrint;
        @
$this->templ->set('HTTP_REFERER',$_SERVER['HTTP_REFERER']);
        
$url=array();
        foreach(
$_GET as $name=>$val){
            if(
$name=='action' && $val=='show_print')continue;
            
$url[]=$name."=".$val;
        }
        
$this->templ->set('backURL','?'.implode('&',$url));
    }
    global 
$category;
    if(isset(
$category)){
        
$this->templ->set('cur_cat',$category->getCat());
        
$this->templ->set('parent_cat',$category->parentCat);
        
$this->templ->set('key',$category->getKey());
        
$this->templ->set("cur_cat_name",$category->getCatName());
    }
    
    
//$this->templ->file($this->templName,'_pageMain_'); 
ob_start();
$this->templ->file($this->templName,'_pageMain_'); 
$content=ob_get_contents();
ob_end_clean();
if (
strpos($content,"{blogs}")>0)
{
     include 
'/blog.php';
     
$content str_replace("{blogs}","",$content);
}
echo 
$content;

    
$this->templ->set('title',$this->title);
    
$this->templ->set('description',$this->_txtConv($this->description));
    
$this->templ->set('keyWords',$this->_txtConv(implode(',',$this->keyWords)));       

    
$this->templ->set("HTTP_ROOT",_HTTP_ROOT);
    return 
$this->templ->subst('_pageMain_');
}

// тут еще пачка функций..

}
?>


* в шаблоне прописан тег {blogs}
MrakSPb вне форума Ответить с цитированием
Старый 03.08.2010, 01:08   #7
arvitaly
Пользователь
 
Аватар для arvitaly
 
Регистрация: 01.08.2010
Сообщений: 51
По умолчанию

А все проще тогда
Вот в этом месте

Код:
return $this->templ->subst('_pageMain_');
замени на
Код:
$content=$this->templ->subst('_pageMain_');
if (strpos($content,"{blogs}")>0) 
{ 
ob_start();
     include '/blog.php'; 
     $content = str_replace("{blogs}",ob_get_contents(),$content); 
ob_end_clean();
} 
return $content;
а там убери и будет счастье
arvitaly вне форума Ответить с цитированием
Старый 03.08.2010, 15:16   #8
MrakSPb
 
Регистрация: 19.12.2009
Сообщений: 7
По умолчанию

Цитата:
Сообщение от arvitaly Посмотреть сообщение
а там убери и будет счастье
Счастья полные штаны! спасибо
MrakSPb вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ищу работу на дому (PHP, cms JOOMLA) ilma55 Фриланс 1 04.11.2010 20:52
CMS + php + MySQL Vit255 Фриланс 2 14.12.2009 14:46