Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шаблонизатор 
:(
    Опции темы
SamDark
Дата 25.12.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



americanets
Не очень, но всё зависит от количества данных.

p.s. см. ob_start() и остальные ob_*().
p.p.s. не лучше ли всё-таки разделить получение и отображение данных как несколькими постами ранее?


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
americanets
Дата 25.12.2006, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



Цитата(SamDark @  25.12.2006,  13:27 Найти цитируемый пост)
p.p.s. не лучше ли всё-таки разделить получение и отображение данных как несколькими постами ранее? 

лучше, но иногда требуется полное отделение дизайна от кода, можно пользовать и то и то в зависимости от ситуации 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
Eugene_Bond
Дата 25.12.2006, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 3.9.2006

Репутация: 1
Всего: 4



Цитата(SamDark @  25.12.2006,  12:29 Найти цитируемый пост)
Всё это - дело вкуса

Это дело подхода.
Если у меня набор модулей, которые используются в разных проектах одновременно, то генерировать модулем html я не буду -- для этого мне прийдется копировать каждый модуль и переписывать его в зависимости от дизайна сайта.
PM MAIL   Вверх
americanets
Дата 25.12.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



да, шаблоны нужная штука : )


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
SamDark
Дата 25.12.2006, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



Eugene_Bond
americanets
См. опять же тот же самый пост.

Получение данных от их вывода не зависит.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Eugene_Bond
Дата 26.12.2006, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 3.9.2006

Репутация: 1
Всего: 4



SamDark
опять таки, применимо только для движков с линейными контроллерами

хотя, на вкус и цвет..
PM MAIL   Вверх
americanets
Дата 26.12.2006, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 5
Всего: 12



вобщем пользовать можно все, кому что нравится, главное чтоб было тому кто делает, кто управляет вобщем всем smile 
Каждому по потребностям и по возможностям


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
SamDark
Дата 26.12.2006, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



Eugene_Bond
Что подразумевается под линейными контроллерами?

americanets,
Тут ты прав.


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Eugene_Bond
Дата 26.12.2006, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 3.9.2006

Репутация: 1
Всего: 4



SamDark

подразумевается, что код сайта выглядит примерно следующим образом:

article.php
Код

<?php

$title = 'Моя тестовая статья';
//Получаем данные для статьи
$art = Article::get();
$content = 'art.tpl';
//Получаем данные для новостей
$news = News::get();
$right = 'news.tpl';
//Запускаем
include('main.tpl');

?>


news.php
Код

<?php

$title = 'Мои новости';
//Получаем данные для новостей
$news = News::get();
$content = 'news.tpl';
//Запускаем
include('main.tpl');

?>


something.php
Код

<?php

$title = 'Мое что-то еще';
//Получаем данные для чего-то еще
$something = Something::get();
$content = 'something.tpl';

//Получаем данные для новостей
$news = News::get();
$right = 'news.tpl';
//Запускаем
include('main.tpl');

?>


то есть мы имеем клонированные файлы контроллеров конкретных разделов сайта, которые выполняются линейно. это сродни "функциональному программированию".


В любом случае переводить тему в холи варс смысла не вижу. Задачи бывают разные. Видимо есть и такие, которые можно решить и инклюдами.
PM MAIL   Вверх
SamDark
Дата 26.12.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



Eugene_Bond
Ну, какой-то у вас совсем пример тривиальный (как в принципе и у меня).
А вообще любой шаблонизатор работает точно по такому принципу:

1. Получение данных, передача их шаблонизатору.
2. Отображение.

И чем замена некоторого текста на что-то ещё лучше include() не понимаю. Конечно под include() стоит понимать переписанную функцию, возможно принимающую некоторые параметры, проверяющую авторизацию и т.д.

p.s. холи варс начинать даже не думал. Сам крепко подсел на Smarty из за удобства...


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
BuShaRt
Дата 2.1.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



SamDark
Цитата

p.s. холи варс начинать даже не думал. Сам крепко подсел на Smarty из за удобства...

То ты против шаблонизаторов, то за.. ))


Всем
Юзайте смарти и хватит уже задумываться о роизодительности и остальном, мы не в каменном веше живем... В крайнем случае оптемезировать вручную смарти можно, выкинув не нужное....



PM MAIL   Вверх
awers
Дата 5.1.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



Думаю работа шаблона должна заключаться не более чем в этом:
Код

include('style.css');
include('script.js');
<? show('header'); ?>
<? show('content'); ?> ...



Используя тот же "смарти" я понял что уж лучше деревянно чем монстерски огромно.
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 5.1.2007, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(awers @  5.1.2007,  18:18 Найти цитируемый пост)
Думаю работа шаблона должна заключаться не более чем в этом:

Как минимум глупость, как максимум бред. Подключать css, js через инклюд это вообще без комментариев.
PM ICQ   Вверх
Gold Dragon
Дата 6.1.2007, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



я ползуюсь следующем (упростил для восприятия smile )

есть файл шаблонов
Код

function sMainSkin($info){
return <<<EOF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>{$info['title']}</title>
</head>
<body>
<div>
<table cellspacing="0" cellpadding="0" border="0" width="100%">
    <tr>
        <td>{$info['image1']}</td>
     <td>{$info['image2']}</td>
    </tr>
</table>

<table cellspacing="0" cellpadding="0" border="0" width="100%">
<tr>
    <td>{$info['left']}</td>
    <td>{$info['content']}</td>
    <td>{$info['right']}</td>
</tr>
</table>

<p align='center'>{$info['copyright']}</p>
</div>
</body>
</html>
EOF;
}

function sNews($info){
    return <<<EOF
    <!-- здесь HTML-форма для выводе новостей -->
EOF;
}

function sStat($info){
    return <<<EOF
    <!-- здесь HTML-форма Статьи -->
EOF;
}


а тут всё это формируется и выводится
Код

// здесь создаётся основная страница типа
switch ($page) {
    case 'Stat': // статьи
        $info = fStat_();
        break;
    case 'News': // новости
        $info = fNews();
        break;
    default: // главная
        $info = fIndex();
}

echo sMainSkin($info);

// основные функции вывода страниц
function fIndex(){
    // что-то делается и возвращается
    // $info['title']
    // $info['image1']
    // $info['image2']
    // $info['left'] 
    // $info['content'] 
    // $info['right'] 
    // $info['copyright'] 
    return $info;
}

function fNews(){
    // что-то делается и возвращается
    // $info['title']
    // $info['image1']
    // $info['image2']
    // $info['left'] 
    // $info['content'] 
    // $info['right'] 
    // $info['copyright'] 
    return $info;
}
function fStat_(){
    // что-то делается и возвращается
    // $info['title']
    // $info['image1']
    // $info['image2']
    // $info['left'] 
    // $info['content'] 
    // $info['right'] 
    // $info['copyright'] 
    return $info;
}


это моё мнение, но куда проще и понятнее smile



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
SamDark
Дата 6.1.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый кот
***


Профиль
Группа: Участник
Сообщений: 1424
Регистрация: 25.7.2006
Где: Voronezh

Репутация: 10
Всего: 38



В общем, какие использовать шаблоны - не важно. Главное, чтобы разработчику было комфортно, но использовать их настоятельно рекомендую, иначе о повторном использовании кода не может идти речи.

Для себя сделал вывод, что одному вполне можно писать Native-шаблоны (те, что встроены в PHP), а вот в команде уже проще пользоваться Smarty или другой системой.

Для менее опытных программистов (или что ещё критичнее верстальщиков) шаблоны PHP могут оказаться слишком мощными, из за чего возможно появление ошибок и нарушение концепции MVC.

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


--------------------
rmcreative.ru — Это жжж неспроста...
yiiframework.ru — О фреймворке Yii на русском.
reggi — здесь я регистрирую домены
PM MAIL WWW GTalk Jabber MSN   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0967 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.