PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (21): В начало « ... 13 14 15 16 17 18 19 20 [21]

> Найдено сообщений: 311
Crate Отправлено: 22 Января, 2012 - 10:28:44 • Тема: Шаблонизатор • Форум: CMS и фреймворки

Ответов: 38
Просмотров: 8982
Ребята, а как теперь кэш обновлять? Я думал очищать папку, но гугл нашел только вот это:
PHP:
скопировать код в буфер обмена
  1. function recRMDir($path){
  2.     if (substr($path, strlen($path)-1, 1) != '/') $path .= '/';
  3.     if ($handle = @opendir($path)){
  4.         while ($obj = readdir($handle)){
  5.             if ($obj != '.' && $obj != '..'){
  6.                 if (is_dir($path.$obj)){
  7.                     if (!recRMDir($path.$obj)) return false;
  8.                 }elseif (is_file($path.$obj)){
  9.                     if (!unlink($path.$obj))    return false;
  10.                     }
  11.             }
  12.         }
  13.           closedir($handle);
  14.             if (!@rmdir($path)) return false;
  15.           return true;
  16.     }
  17.    return false;
  18. }

Проверил. Не работает. можно в принципе и удалять папку целиком а потом создавать ее заново, но как сделать проще?
Crate Отправлено: 21 Января, 2012 - 13:33:11 • Тема: Шаблонизатор • Форум: CMS и фреймворки

Ответов: 38
Просмотров: 8982
Мелкий
Спасибо, все работает =)

sKaa пишет:
Вообще для таких целей я вверху как раз и описал метод assign
Он мне не нужен, т. к. все переменные будут в ядре.
(Добавление)
Правда теперь не хочет заменять на языковые переменные типа $language['panel'].
Crate Отправлено: 21 Января, 2012 - 12:41:03 • Тема: Шаблонизатор • Форум: CMS и фреймворки

Ответов: 38
Просмотров: 8982
А вот другой вопрос: как мне поступить если например нужно заменить много значений?
Попробовал циклом, но нечего не выходит:
PHP:
скопировать код в буфер обмена
  1. class Style {
  2.                 function parse ($path, $name) {
  3.                         if (file_exists(ROOT."/data/cache/".$name)) {include_once (ROOT."/data/cache/".$name.".php");}
  4.                         else {$this->compile($path, $name);}
  5.                 }
  6.                
  7.                 function compile ($path, $name) {
  8.                         $file = file_get_contents ($path);
  9.                         $result = $this->replace ($file);
  10.                         // $result = $this->replace ($file);
  11.                         file_put_contents (ROOT."/data/cache/".$name.".php", $result);
  12.                         include_once (ROOT."/data/cache/".$name.".php");
  13.                 }
  14.                
  15.                 function replace ($data) {
  16.                         $matches = array (
  17.                         "{"."PATH"."}" => PATH,
  18.                         "{L_"."PANEL"."}" => $language['panel'],
  19.                         "{L_"."PARAMETERS"."}" => $language['parapeters'],
  20.                         "{L_"."GENERAL"."}" => $language['general'],
  21.                         "{L_"."PAGES"."}" => $language['pages'],
  22.                         "{L_"."LINK"."}" => $language['link'],
  23.                         "{L_"."TITLE"."}" => $language['title'],
  24.                         "{L_"."SUBTITLE"."}" => $language['subtitle'],
  25.                         "{L_"."CONTENT"."}" => $language['content'],
  26.                         "{L_"."DESCRIPTION"."}" => $language['description'],
  27.                         "{L_"."KEYWORDS"."}" => $language['keywords'],
  28.                         "{L_"."ANNOUNCE"."}" => $language['announce'],
  29.                         "{L_"."POSITION"."}" => $language['position'],
  30.                         "{L_"."STATUS"."}" => $language['status'],
  31.                         "{L_"."MEDIAFILES"."}" => $language['mediafiles'],
  32.                         "{L_"."PACKS"."}" => $language['packs'],
  33.                         "{L_"."UPDATES"."}" => $language['updates'],
  34.                         "{L_"."STYLES"."}" => $language['styles'],
  35.                         "{L_"."LANGUAGES"."}" => $language['languages'],
  36.                         "{L_"."PLUGINS"."}" => $language['plugins'],
  37.                         "{L_"."LIBRARIES"."}" => $language['libraries'],
  38.                         "{L_"."TOOLS"."}" => $language['tools'],
  39.                         "{L_"."PAGES_CREATE_SUCCESS"."}" => $language['pages_create_success'],
  40.                         "{L_"."PAGES_EDIT_SUCCESS"."}" => $language['pages_edit_success'],
  41.             );
  42.                         foreach ($replace as $key => $val) {
  43.                             $result = str_replace ($key, $val, $data);
  44.                         }
  45.                         return $result;
  46.                 }
  47.         }
  48.        
  49.         $style = new Style ();
Crate Отправлено: 20 Января, 2012 - 06:45:57 • Тема: Шаблонизатор • Форум: CMS и фреймворки

Ответов: 38
Просмотров: 8982
Вот что примерно получилось:
PHP:
скопировать код в буфер обмена
  1. class Style {
  2.     function parse ($path, $name) {
  3.         $cache->check($path, $name);
  4.     }
  5. }
  6.        
  7. class Cache {
  8.     function check ($path, $name) {
  9.         $file = ROOT.$path;
  10.         if (file_exists(ROOT."/data/cache".$name)) {include_once (ROOT."/cache/".$name.".php");}
  11.         else {$this->compile($path, $name);}
  12.     }
  13.                
  14.     function compile ($path, $name) {
  15.         $source = fopen ($path);
  16.         $file = fread ($source);
  17.         $result = str_replace ("\{PATH_TO_APP\}", "<?=".PATH_TO_APP.";?>", $file);
  18.         if ($result == true) {
  19.             fwrite (ROOT."/data/cache/".$name.".php", $result);
  20.             include_once (ROOT."/data/cache/".$name.".php");
  21.         }
  22.         else {$this->compile($path, $name);}
  23.     }
  24. }
  25.        
  26. $style = new Style ();
  27. $cache = new Cache ();


Вызов:
PHP:
скопировать код в буфер обмена
  1. $style->parse("путь_до_шаблона", "имя_шаблона");


Дополнительно:
PHP:
скопировать код в буфер обмена
  1. define ("ROOT", $_SERVER['DOCUMENT_ROOT'], true);
  2. define ("PATH_TO_APP", ROOT."/application", true);


(Добавление)
Полностью рабочий код (вызов тот же):
PHP:
скопировать код в буфер обмена
  1. class Style {
  2.         function parse ($path, $name) {
  3.                 $file = ROOT.$path;
  4.                 if (file_exists(ROOT."/data/cache/".$name)) {include_once (ROOT."/data/cache/".$name.".php");}
  5.                 else {$this->compile($path, $name);}
  6.         }
  7.                
  8.         function compile ($path, $name) {
  9.                 $file = file_get_contents ($path);
  10.                 $result = str_replace ("{"."PATH_TO_APP"."}", PATH, $file);
  11.                 file_put_contents (ROOT."/data/cache/".$name.".php", $result);
  12.                 include_once (ROOT."/data/cache/".$name.".php");
  13.         }      
  14. }
  15.        
  16. $style = new Style ();
Crate Отправлено: 19 Января, 2012 - 14:23:07 • Тема: Шаблонизатор • Форум: CMS и фреймворки

Ответов: 38
Просмотров: 8982
А как пересохранить скомпилированный файл в другую директорию?
Crate Отправлено: 19 Января, 2012 - 13:21:33 • Тема: Шаблонизатор • Форум: CMS и фреймворки

Ответов: 38
Просмотров: 8982
caballero пишет:
уже существует готовый - называется PHP
Так как же все таки сделать его с помощью метаязыка?
Crate Отправлено: 19 Января, 2012 - 11:44:24 • Тема: Шаблонизатор • Форум: CMS и фреймворки

Ответов: 38
Просмотров: 8982
DeepVarvar пишет:
шаблонзатор не нужен
Суть вопроса не в том, как заставить меня отказаться от шаблонизатора, а как его создать.
(Добавление)
Еще вопрос: можно ли распарсить файл через прег_матч_олл? Или как записать все строки файла в одну переменную?
Crate Отправлено: 19 Января, 2012 - 11:25:17 • Тема: Шаблонизатор • Форум: CMS и фреймворки

Ответов: 38
Просмотров: 8982
DeepVarvar пишет:
а потом дойдем типа вот до такого

Вы о чем?
(Добавление)
DeepVarvar
Все же ключ массива (если не переменная) должен быть заключен в кавычки. Иначе не сработает.
Crate Отправлено: 19 Января, 2012 - 11:16:09 • Тема: Шаблонизатор • Форум: CMS и фреймворки

Ответов: 38
Просмотров: 8982
Мелкий пишет:
Дык он и не вызывается даже. Что вы тут пытались сделать - для меня вообще загадка.
Совсем забыл:
PHP:
скопировать код в буфер обмена
  1. $style->parse("/template/pages.php");


digi
Одно дело из БД вытаскивать значения, а другое из языковых файлов тянуть.
(Добавление)
DeepVarvar
Аккуратней будет так:
PHP:
скопировать код в буфер обмена
  1. <div class="news">
  2.   <?PHP foreach ($this->items as $value) : ?>
  3.     <div class="title"><?=$value['title'];?></div>
  4.     <div class="date"><?=$value['date'];?></div>
  5.     <div class="content"><?=$value['content'];?></div>
  6.   <?PHP endforeach; ?>
  7. </div>
Crate Отправлено: 19 Января, 2012 - 10:40:04 • Тема: Шаблонизатор • Форум: CMS и фреймворки

Ответов: 38
Просмотров: 8982
Начал потихоньку разбираться. Создал функцию для парсинга инклюда:
PHP:
скопировать код в буфер обмена
  1. class Style {
  2.     function parse ($path) {
  3.         $result = ROOT.$path;
  4.         preg_match_all ("\{PATH_TO_APP\}", PATH_TO_APP, $result);
  5.         include_once ($result);
  6.     }
  7. }
  8.        
  9. $style = new Style ();


Дополнительно:
PHP:
скопировать код в буфер обмена
  1. define ("ROOT", $_SERVER['DOCUMENT_ROOT'], true);
  2. define ("PATH_TO_APP", ROOT."/application", true);
  3.  


Но инклюд не парсится.
Crate Отправлено: 19 Января, 2012 - 08:28:08 • Тема: Шаблонизатор • Форум: CMS и фреймворки

Ответов: 38
Просмотров: 8982
Здравствуйте, уважаемые программисты!

Я начал писать CMS, использовал курсы Костикса, но потом мне понадобился шаблонизатор. Смарти и Твиг не подходят, т. к. много весят. Решил посотреть на примере phpBB, но ничего не понял.

Суть вопроса:
Хочется сделать простым создание шаблонов на сайт, с использованием лексем типа {CONTENT}, но чтобы они заменялись на заданные значения в ядре.

Страниц (21): В начало « ... 13 14 15 16 17 18 19 20 [21]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB