Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Подключение шаблона к файлам .php сайта
Mazorati  
 ۩     Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 46
Пользователь №: 30054
На форуме: 5 лет, 3 месяца, 8 дней
Карма:




Всем привет.

Испробовал очень много вариантов возможности подключить шаблон к сайту. Допустим у меня есть папка templates там шаблоны по папкам , и есть файлы index.php(и др.), где выполняется php скрипт. Как мне лучше всего подключать шаблон?
Допустим если я вывожу список категорий. У меня есть шаблон сайта. и шаблон для категории. Как мне все это скомбинировать? Помогите народ, что то совсем не варю...
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bodja  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1483
Пользователь №: 28208
На форуме: 5 лет, 7 месяцев, 17 дней
Карма: 61




Цитата
Испробовал очень много вариантов возможности подключить шаблон к сайту.

Огласите варианты,выберем что удобнее.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Mazorati  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 46
Пользователь №: 30054
На форуме: 5 лет, 3 месяца, 8 дней
Карма:




Значит нашел такой вариант: http://myrusakov.ru/php-use-tpl.html
и такой: http://drupalace.ru/lesson/neobkhodimye-fa...lona-pagetplphp

Какой из них лучше и что лучше исправить? wink.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
caballero  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1674
Пользователь №: 29588
На форуме: 5 лет, 4 месяца, 10 дней
Карма: 40




ты бы сначала просветил шо там за шаблоны у тебя - шаблон понятие растяжимое

как моно обсуждать как подключать ессли непонятно что подключать
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
vital  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



int main(){printf("Hello World"); return 0;"}
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2476
Пользователь №: 20247
На форуме: 7 лет, 29 дней
Карма: 63




require()


--------------------
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Mazorati  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 46
Пользователь №: 30054
На форуме: 5 лет, 3 месяца, 8 дней
Карма:




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

vital , если подключать шаблон методом inclide() и require, то как внутри него вывести, допустим, новости?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
McLotos  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



武士道
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1250
Пользователь №: 28342
На форуме: 5 лет, 7 месяцев, 10 дней
Карма: 28




Как сделано у меня:
1. есть директория templates, в ней лежат папки со скинами
2. есть функция, которая при старте проекта делает некоторые проверки
а.) проверить не появились ли новые папки в директории templates, если появились, то прописать новый скин в БД
б.) когда заходит юзер, система проверяет какой скин указан у него в анкете, если не стандартный, подключает его скин, или оставляет как есть.
в.) если у пользователя выбран какой-то свой скин, то сначала проверяем все ли файлы в нём есть, если чего-то нет, то пишем юзеру что скин повреждён и ставим стандартный.
3. header.tpl - файл который отвечает за подключение всех css и js файлов и скриптов
патом идёт $page.tpl (он меняется в зависимоти от текущей локации, ну допустим главная страница(index.tpl) может отличаться по структуре от страницы новостей(news.tpl), у форума естественно своя структура, следовательно для него существует свой (forum.tpl)
а дальше подключается footer.tpl который в 90% случаев всегда одинаковый.
Это всё работает при условии что для какой-нибудь из локаций не выбран свой особенный header.tpl и footer.tpl. Если допустим нужно их создать, то создаётся что-то типа header.forum.tpl или footer.news.tpl
Т.е. в результате получаем что количество файлов скина у меня примерно равно
(количество локаций)+2, при особых условиях (количество локаций)*3, но такой необходимости пока не было.
т.е. у меня существуют файлы header.php и footer.php, в которых указано в какой ситуации какой tpl нужно подтянуть.
в этих двух файлах кроме всего прочего есть строки типа
работает стабильно и безотказно.
а контролируется все примерно так
$headtpl = $_SERVER['DOCUMENT_ROOT']."/templates/{$userskin}/header.tpl";
$foottpl = $_SERVER['DOCUMENT_ROOT']."/templates/{$userskin}/footer.tpl";
$path = $_SERVER['DOCUMENT_ROOT']."/templates/{$userskin}/{$currentlocname}.tpl";
$deffoottpl = $_SERVER['DOCUMENT_ROOT']."/templates/default/footer.tpl";
$defheadtpl = $_SERVER['DOCUMENT_ROOT']."/templates/default/header.tpl";
$defpath = $_SERVER['DOCUMENT_ROOT']."/templates/default/{$currentlocname}.tpl";


--------------------
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Mazorati  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 46
Пользователь №: 30054
На форуме: 5 лет, 3 месяца, 8 дней
Карма:




McLotos спасибо, это то все понятно. А дальше то ты как подключаешь? вот это мне и надо узнать..
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
McLotos  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



武士道
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1250
Пользователь №: 28342
На форуме: 5 лет, 7 месяцев, 10 дней
Карма: 28




что значит "дальше"?
Не совсем понимаю. я и показал фрагмент кода, который подключает tpl к php. Или ты думаешь что это как в html, т.е. нужно прописывать эти адреса во всех файлах?
Нет, php динамически создаёт всё содержимое страницы, а подключенные файлы так и остаются, они никуда не исчезают и постоянно их переподключать не нужно.


--------------------
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Mazorati  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 46
Пользователь №: 30054
На форуме: 5 лет, 3 месяца, 8 дней
Карма:




Создал класс. Все заработало.
<?php

class
Template {

public $dir = '.';
public $template = null;
public $copy_template = null;
public $data = array();
public $block_data = array();
public $result = array('info' => '', 'content' => '');
public $template_parse_time = 0;

//задаём параметры основных переменных подгрузки шаблона

public function set($name , $var) {
if (is_array($var) && count($var)) {
foreach ($var as $key => $key_var) {
$this->set($key , $key_var);
} } else $this->data[$name] = $var;
}

//обозначаем блоки

public function set_block($name , $var) {
if (is_array($var) && count($var)) {
foreach ($var as $key => $key_var) {
$this->set_block($key , $key_var);
} } else $this->block_data[$name] = $var;
}

//производим загрузку каркасного шаблона

public function load_template($tpl_name) {
$time_before = $this->get_real_time();
if ($tpl_name == '' || !file_exists($this->dir . DIRECTORY_SEPARATOR . $tpl_name)) { die ("Невозможно загрузить шаблон: ". $tpl_name); return false;}
$this->template = file_get_contents($this->dir . DIRECTORY_SEPARATOR . $tpl_name);
if ( stristr( $this->template, "{include file=" ) ) {
$this->template = preg_replace( "#\\{include file=['\"](.+?)['\"]\\}#ies","\$this->sub_load_template('\\1')", $this->template);
}
$this->copy_template = $this->template;
$this->template_parse_time += $this->get_real_time() - $time_before;
return true;
}

// этой функцией загружаем "подшаблоны"

public function sub_load_template($tpl_name) {
if ($tpl_name == '' || !file_exists($this->dir . DIRECTORY_SEPARATOR . $tpl_name)) { die ("Невозможно загрузить шаблон: ". $tpl_name); return false;}
$template = file_get_contents($this->dir . DIRECTORY_SEPARATOR . $tpl_name);
return $template;
}

// очистка переменных шаблона
public function _clear() {
$this->data = array();
$this->block_data = array();
$this->copy_template = $this->template;
}

public function clear() {
$this->data = array();
$this->block_data = array();
$this->copy_template = null;
$this->template = null;
}
//полная очистка включая результаты сборки шаблона
public function global_clear() {
$this->data = array();
$this->block_data = array();
$this->result = array();
$this->copy_template = null;
$this->template = null;
}
//сборка шаблона в единое целое
public function compile($tpl) {
$time_before = $this->get_real_time();
foreach ($this->data as $key_find => $key_replace) {
$find[] = $key_find;
$replace[] = $key_replace;
}
$result = str_replace($find, $replace, $this->copy_template);
if (count($this->block_data)) {
foreach ($this->block_data as $key_find => $key_replace) {
$find_preg[] = $key_find;
$replace_preg[] = $key_replace;
}
$result = preg_replace($find_preg, $replace_preg, $result);
}
if (isset($this->result[$tpl])) $this->result[$tpl] .= $result; else $this->result[$tpl] = $result;
$this->_clear();
$this->template_parse_time += $this->get_real_time() - $time_before;
}
//счётчик времени выполнения запросов сборки
public function get_real_time()
{
list($seconds, $microSeconds) = explode(' ', microtime());
return ((float)$seconds + (float)$microSeconds);
}
}
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bulgakov  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь учится
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 819
Пользователь №: 28069
На форуме: 5 лет, 7 месяцев, 25 дней
Карма: 30




Свернутый текст
Тока мне эти паблики глаза режут?
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
TMake  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Журнал
Группа: Форумчанин
Завсегдатай форума
Сообщений: 3106
Пользователь №: 16333
На форуме: 8 лет, 1 месяц, 6 дней
Карма: 58




Mazorati для переменных public замени, а то не политкорректно получилось, для методов смотри сам
метод set меняй на __set, проще будет использовать
PM
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Mazorati  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 46
Пользователь №: 30054
На форуме: 5 лет, 3 месяца, 8 дней
Карма:




stepan
Public на что заменить? Если на __set заменю как использовать тогда)?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
McLotos  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



武士道
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1250
Пользователь №: 28342
На форуме: 5 лет, 7 месяцев, 10 дней
Карма: 28






--------------------
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









ohmy.gif
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

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

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса