CodeIgniter "Шаблон" система - PullRequest
1 голос
/ 02 июня 2011

Каждый раз, когда я начинаю новый проект, я обнаруживаю, что переделываю и переосмысливаю свою собственную библиотеку шаблонов.Я использую некоторые влияния от dom-манипуляций, но не хочу делать слишком много функций, чтобы он по-прежнему загружался быстро.

Вот так выглядит моя текущая система шаблонов:

Этофайл макета:

<body>
<div id="content">
    <block:content>This is a default text</block:content>
</div>
<div id="sidebar">
    <widget:advertisement type="wide" />
    <block:sidebar this_param="is_passed_on" />
</div>
</body>

Как вы можете видеть, я сделал 2 вида "дополнительных" тегов, которые будут заменены при последующей публикации шаблона.Я загружаю этот макет следующим образом:

$this->template->load("layout");

Затем я могу манипулировать тегами блока следующим образом:

$this->template->content = "I'm overwriting the default text";
$this->template->content->prepend("I forgot something");

$this->template->sidebar->view("viewfile_1", array(/*data*/));
$this->template->sidebar->view("viewfile_2", array(/*data*/));

Я могу установить текст вручную, я могу загрузить несколько видов в 1 блок,Я могу использовать несколько функций, похожих на dom, таких как prepend, append, ...

Я даже могу расширить шаблон с помощью дополнительных параметров макета, например:

$this->template->content->extend("2columns");

Этот файл макета может выглядетьнапример:

<div><block:left/></div>
<div><block:right/></div>

Так что вместо блока контента у меня теперь есть дополнительный левый и правый блок для размещения контента.

Я также создал тег виджета, который загружает определенный виджеткласс (/ widgets / реклама в данном случае).Необязательные параметры, добавленные в теги, передаются в файлы представлений и / или функцию отображения виджетов вместе с массивом данных прямого прохождения.

Короче говоря, именно так теперь работает моя система.На самом деле я не нашел других подобных систем, чтобы получить вдохновение.Не могли бы вы, ребята, дать мне совет, чтобы я мог собрать одну приличную систему, которую я смогу продолжать использовать?

1 Ответ

0 голосов
/ 23 апреля 2012

Мой подход:

  • Создание основных макетов для каждого типа страниц в макетах / папках (например, макеты Wordpress для дома, архива, одного поста, одной страницы)
  • Создание общих битов интерфейса в общей папке / папке (например, заголовок, нижний колонтитул, боковая панель, widget_XX, widget_YY)
  • Используйте Библиотека шаблонов Фила Осетрины (или Spark!) Для обработки представлений.
  • На каждом контроллере я загружаю все данные, необходимые для рендеринга в $ this-> data, и передаю этот объект в представление

Надеюсь, это поможет! Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...