[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Пишем свою CMS
2s-mode
Здравствуйте, вот решил попробоватьнаписать что-то типа своей cms. Просто для себя, для саморазвития.
Начал с шаблонизатора.

Сам шаблон примерно выглядит вот так:

...
<titile><stitle></title>
...
<div class="content"><scontent></div>
...

и т.д. и т.п.

$file = file_get_contents("templates/ea/index.php"); // путь к шаблону
$file=str_replace('<stitle>',$title,$file); // title страницы
$file=str_replace('<sdecr>',$meta_descr,$file); // description страницы
$file=str_replace('<skey>',$meta_key,$file); // keywords страницы
$file=str_replace('<scontent>',$content,$file); // контент


Вот теперь самое интересное...)) Как быть с подключением модулей... Тут возникли трудности...

Первое что пришло в голову идти таким же методом... Опишу на примере модуля "Последние новости". Пишем в шаблоне
<smod>module1</smod>


В обработчике

preg_match_all("/<smod>(.*?)<\/smod>/", $file,$matches);
for ($i=0; $i<count($matches[1]); $i++)
{
$label=$matches[1][$i]; //получаем label равный module1
include("modules/$label/index.php"); //подключаем module1
$file=str_replace("<smod>$label</smod>",$mod,$file);
}


В файле модуля с название module1 пишем что-то вот такое:

В цикле
{
$mod .= $row['theme']; // тема новости
$mod .= $row['date_new']; // дата новости
$mod .= $row['text']; // текст новости новости
}



Как-то геморно получается.. Вот хотел бы спросить вашего совета.. Заранее спасибо...




Спустя 5 часов, 34 минуты, 44 секунды (3.06.2011 - 20:29) SergeyZuzic написал(а):
А чем постраничное подключение не подходит?
/*--CMS Текущие Модули--*/

$MODULES=$ENGINE['DB']->query("SELECT * FROM `modules`
WHERE (`action`='all;' OR `action` LIKE '%
$sql_page;%') AND `location`!='nothing' AND `on`='0' ORDER BY `priority` ASC , `sort_id` ASC");

if ($ENGINE['DB']->num_rows($MODULES)>0) {
while ($ENGINE['INC_MOD']=$ENGINE['DB']->fetch_assoc($MODULES)) {
$ENGINE['Ready'].=$ENGINE['INC_MOD']['module'].'-t;';
include 'modules/'.$ENGINE['INC_MOD']['module'].'/'.$ENGINE['INC_MOD']['location'];
}
}

Спустя 5 дней, 23 часа, 47 минут (9.06.2011 - 20:16) 2s-mode написал(а):
Цитата (SergeyZuzic @ 3.06.2011 - 17:29)
А чем постраничное подключение не подходит?
/*--CMS Текущие Модули--*/

$MODULES=$ENGINE['DB']->query("SELECT * FROM `modules`
WHERE (`action`='all;' OR `action` LIKE '%
$sql_page;%') AND `location`!='nothing' AND `on`='0' ORDER BY `priority` ASC , `sort_id` ASC");

if ($ENGINE['DB']->num_rows($MODULES)>0) {
while ($ENGINE['INC_MOD']=$ENGINE['DB']->fetch_assoc($MODULES)) {
$ENGINE['Ready'].=$ENGINE['INC_MOD']['module'].'-t;';
include 'modules/'.$ENGINE['INC_MOD']['module'].'/'.$ENGINE['INC_MOD']['location'];
}
}

А как в таков случае будет выглядеть текст модуля?

В моем варианте меня смущает текст самого модуля?

$mod="Привет";
$mod .="Привет";


Как-то это не очень.... :huh:

Спустя 1 час, 38 минут, 10 секунд (9.06.2011 - 21:54) SergeyZuzic написал(а):
Ну например мод страниц так:
<?
$SQL=$ENGINE['DB']->query("SELECT * FROM `page` WHERE `location`='{$ENGINE['GET_PAGE']}' AND `on`='0'");
$ENGINE['PAGE_INFO']['NUM_PAGE']=$ENGINE['DB']->num_rows($SQL);
if ($ENGINE['PAGE_INFO']['NUM_PAGE']==1) {
$ENGINE['PAGE_INFO']=$ENGINE['DB']->fetch_assoc($SQL);
if($ENGINE['PAGE_INFO']['public']==1 && $ENGINE['ACCESS']==0) {
$ENGINE['CORE']->GetTemplate("error_auth", 3);
$ENGINE['PAGE_INFO']['TITLE']='Ошибка авторизации!';
$ENGINE['PAGE_INFO']['CON1']='Ошибка, авторизации';
$ENGINE['PAGE_INFO']['CON2']='Ошибка авторизации!';
setcookie('host', $ENGINE['LINK'], 0, '/');
} else {
if($ENGINE['PAGE_INFO']['modular']==0) {
$ENGINE['CORE']->GetCache($ENGINE['PAGE_INFO']['location']);
}
$ENGINE['PAGE_INFO']['TITLE']=$ENGINE['PAGE_INFO']['title'];
$ENGINE['PAGE_INFO']['CON1']=$ENGINE['PAGE_INFO']['keywords'];
$ENGINE['PAGE_INFO']['CON2']=$ENGINE['PAGE_INFO']['description'];
}
}
else {
if(empty($_GET['ht_err'])) $ENGINE['P_TAG']['ht_err']='404'; else $ENGINE['P_TAG']['ht_err']=$_GET['ht_err'];
if($ENGINE['P_TAG']['ht_err']=='403') $ENGINE['P_TAG']['ht_img']='stop'; else $ENGINE['P_TAG']['ht_img']='404';
$ENGINE['CORE']->GetTemplate('404', 3);
$ENGINE['PAGE_INFO']['TITLE']='404 Страница не найдена!';
$ENGINE['PAGE_INFO']['CON1']='404, Страница, не, найдена';
$ENGINE['PAGE_INFO']['CON2']='404 Страница не найдена!';
}
$ENGINE['CORE']->SetTags(array(
'[title]'=>$ENGINE['PAGE_INFO']['TITLE'],
'[content1]'=>$ENGINE['PAGE_INFO']['CON1'],
'[content2]'=>$ENGINE['PAGE_INFO']['CON2']
));

?>

Спустя 2 минуты, 42 секунды (9.06.2011 - 21:57) SergeyZuzic написал(а):
Ну или самое банальное:

print 'Ку-ку'; //Грубо говоря это не верно для CMS, что и die для PHP

или

$ENGINE['PAGE']='Ку-ку';

Спустя 8 минут, 26 секунд (9.06.2011 - 22:05) sharki написал(а):
SergeyZuzic
Как же все запутано smile.gif) я бы тебя материл если бы мне попалась такая CMS biggrin.gif Ты даже комментарии не ставишь)

Спустя 15 часов, 26 минут, 45 секунд (10.06.2011 - 13:32) SergeyZuzic написал(а):
Ставлю =) Просто дела обстоят так, эта система мной была написана очень давно без комментов в некоторых местах с дырами. Ну мне преспичело её обновить, где что смог починил, а куда не заходил, то там так и остался бардак (без комментов с дырами и т.д.). + Раньше я не понимал того, что сам забуду где и что делается .... Чтож испраляюсь, как дойду до модулей "стандартных", то и поправлю... rolleyes.gif Прост сразу никому объяснять не стал user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.