Разделить PHP движок и шаблон

Статус
В этой теме нельзя размещать новые ответы.

amenor

Читатель
Заблокирован
Регистрация
3 Фев 2009
Сообщения
92
Реакции
17
  • Автор темы
  • Заблокирован
  • #1
У меня есть какая никакая но своя cms. Сами понимаете шаблон вшит в php, т.е. всё вместе. Вот хотел бы сделать разделение, шаблон в одну папку, как в dle скажем.
Посоветуйте что почитать по данной теме. По интернету полазил, но так как-то всё поверхностно и мало.
Да и ещё вопрос, слышал что нагрузку это сильно увеличивает, так ли это?
 
Найди любой шаблонный движок или воспользуйся своим.
Моё (как мне кажется самое простое) решение (для наглядности часть кода урезана:(

lib/template.php:
PHP:
<?php
////////////////////////////////////////////////////////////
// programmed by jID.
//
// last updated: 30.04.2008
// description: Template handling class
////////////////////////////////////////////////////////////


  class template {
    var $template="";     // templace contents
    var $form_file="";    // template filename

    // load template from file to $template
    function load($template_file) {
      $this->form_file=$template_file;
      $this->template=@file_get_contents($this->form_file);
    }

    // reload template from file $template
    function reload() {
      $this->load($this->form_file);
    }

    // replace key to value
    function replace($template_word, $value) {
      $this->template=str_replace($template_word, $value, $this->template);
    }

    // return parsed template
    function content() {
      return $this->template;
    }
  }
?>

Главный шаблон index_tpl.htm:
Код:
<html>
<head>
<title>Пример - {header}</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<body>
<h3>{header}</h3><br>
{content}
</body>
</html>

Шаблон записи entry_tpl.htm:
Код:
<div>{entry}</div>

Главный скприпт index.php:
PHP:
<?php
require("lib/template.php");
$content="";
$main_tpl = new template;
$main_tpl->load("index_tpl.htm");
$main_tpl->replace("{header}", "Заголовок");
$entry_tpl = new template;
$entry_tpl->load("entry_tpl.htm");
for ($i=0; $i<10; $i++) {
  $entry_tpl->reload();
  $entry_tpl->replace("{entry}", "Запись $i");
  $content.=$entry_tpl->content();
}

$main_tpl->replace("{content}", $content);
echo $main_tpl->content();
?>

Во вложении весь пример.
 

Вложения

  • test.zip
    1,2 KB · Просмотры: 21
amenor, совет: если хочешь сделать "как в dle", то и смотри, как сделано в дле. Лучше разобраться самому один раз и понять.
 
Наверное лучше воспользоваться устоявшимися решениями, например Для просмотра ссылки Войди или Зарегистрируйся.
Нагрузка конечно увеличивается, тут приходится платить за удобство.
 
Наверное лучше воспользоваться устоявшимися решениями, например Для просмотра ссылки Войди или Зарегистрируйся.
Нагрузка конечно увеличивается, тут приходится платить за удобство.

Smarty - не лучший шаблонизатор для новичка. И вообще, не самый лучший шаблонизатор.
 
Цитирую слова одного из своих наставников по части кодинга:

это реально как велосипед с 4мя и более сидениями, да еще **й знает в каком виде - при том что идея то на самом деле - чтобы одновременно ехали несколько человек на одном транспорте. - выход - машина - лексус скажем :-D
все красиво упаковано - и чтобы ехать тебе достаточно сесть, вставить ключ и рулить нажимая и отжимая газ
а вот смарти - это гребаный 4сидельный велик - и чтобы поехать тебе нужно найти еще 3х придурков - да еще и равновесие потом удерживать =)
вобчем смарти - герой своего времени, но время его давно прошло. одновременно с тем как он был выпущен. просто никто не захотел подумать головой, решили задачу и ладно
 
  • Автор темы
  • Заблокирован
  • #7
Тяжеловато как то всё для меня. А в dle с удовольствием бы позаимствовал идею как сделано у них, ну уж больно сдорово там всё наворочено.
 
Посоветуйте что почитать по данной теме. По интернету полазил, но так как-то всё поверхностно и мало.
Присоединяюсь, может кто-нибудь дать ссылку на толковую информацию для нуба, который немного знает html, php и хочет разобраться в cms. Тот же код для сапы вставляю на 50% методом научного тыка.
 
Smarty на самом деле лучше всего. Хоть он и увеличивает нагрузку, но достаточно ужобен и прост в применении. Разобраться не особо сложно, прочитав любую книгу по этой теме.
 
Не соглашусь, хрень полная. Зачем на шаблон взваливать логику, условия и т.п. Какие-то дикие компиляторы. Чтобы заменить несколько полей? Это наз-ся пытались упростить работу и придумали новый язык...
Лучше уж свой велосипед - простая замена по маркеру, и замена массивами (повторяющиеся элементы), например табличку отобразить
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху