PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (21): В начало « ... 13 14 15 16 17 18 19 20 [21]
Найдено сообщений: 311
Crate
Отправлено: 22 Января, 2012 - 10:28:44 • Тема: Шаблонизатор • Форум: CMS и фреймворки
Ответов: 38 Просмотров: 8982
Ребята, а как теперь кэш обновлять? Я думал очищать папку, но гугл нашел только вот это:
PHP:
скопировать код в буфер обмена
function recRMDir( $path ) {
if ( $obj != '.' && $obj != '..' ) {
if ( ! recRMDir( $path . $obj ) ) return false ;
if ( ! unlink ( $path . $obj ) ) return false ; }
}
}
if ( !@ rmdir ( $path ) ) return false ; return true ;
}
return false ;
}
Проверил. Не работает. можно в принципе и удалять папку целиком а потом создавать ее заново, но как сделать проще?
Crate
Отправлено: 21 Января, 2012 - 13:33:11 • Тема: Шаблонизатор • Форум: CMS и фреймворки
Ответов: 38 Просмотров: 8982
Мелкий
Спасибо, все работает =)
sKaa пишет: Вообще для таких целей я вверху как раз и описал метод assign
Он мне не нужен, т. к. все переменные будут в ядре.
(Добавление)
Правда теперь не хочет заменять на языковые переменные типа $language['panel'].
Crate
Отправлено: 21 Января, 2012 - 12:41:03 • Тема: Шаблонизатор • Форум: CMS и фреймворки
Ответов: 38 Просмотров: 8982
А вот другой вопрос: как мне поступить если например нужно заменить много значений?
Попробовал циклом, но нечего не выходит:
PHP:
скопировать код в буфер обмена
class Style {
function parse ( $path , $name ) {
if ( file_exists ( ROOT
. "/data/cache/" . $name ) ) { include_once ( ROOT
. "/data/cache/" . $name . ".php" ) ; } else { $this -> compile ( $path , $name ) ; }
}
function compile ( $path , $name ) {
$result = $this -> replace ( $file ) ;
// $result = $this->replace ($file);
include_once ( ROOT. "/data/cache/" . $name . ".php" ) ;
}
function replace ( $data ) {
"{" . "PATH" . "}" => PATH,
"{L_" . "PANEL" . "}" => $language [ 'panel' ] ,
"{L_" . "PARAMETERS" . "}" => $language [ 'parapeters' ] ,
"{L_" . "GENERAL" . "}" => $language [ 'general' ] ,
"{L_" . "PAGES" . "}" => $language [ 'pages' ] ,
"{L_" . "LINK" . "}" => $language [ 'link' ] ,
"{L_" . "TITLE" . "}" => $language [ 'title' ] ,
"{L_" . "SUBTITLE" . "}" => $language [ 'subtitle' ] ,
"{L_" . "CONTENT" . "}" => $language [ 'content' ] ,
"{L_" . "DESCRIPTION" . "}" => $language [ 'description' ] ,
"{L_" . "KEYWORDS" . "}" => $language [ 'keywords' ] ,
"{L_" . "ANNOUNCE" . "}" => $language [ 'announce' ] ,
"{L_" . "POSITION" . "}" => $language [ 'position' ] ,
"{L_" . "STATUS" . "}" => $language [ 'status' ] ,
"{L_" . "MEDIAFILES" . "}" => $language [ 'mediafiles' ] ,
"{L_" . "PACKS" . "}" => $language [ 'packs' ] ,
"{L_" . "UPDATES" . "}" => $language [ 'updates' ] ,
"{L_" . "STYLES" . "}" => $language [ 'styles' ] ,
"{L_" . "LANGUAGES" . "}" => $language [ 'languages' ] ,
"{L_" . "PLUGINS" . "}" => $language [ 'plugins' ] ,
"{L_" . "LIBRARIES" . "}" => $language [ 'libraries' ] ,
"{L_" . "TOOLS" . "}" => $language [ 'tools' ] ,
"{L_" . "PAGES_CREATE_SUCCESS" . "}" => $language [ 'pages_create_success' ] ,
"{L_" . "PAGES_EDIT_SUCCESS" . "}" => $language [ 'pages_edit_success' ] ,
) ;
foreach ( $replace as $key => $val ) {
}
return $result ;
}
}
$style = new Style ( ) ;
Crate
Отправлено: 20 Января, 2012 - 06:45:57 • Тема: Шаблонизатор • Форум: CMS и фреймворки
Ответов: 38 Просмотров: 8982
Вот что примерно получилось:
PHP:
скопировать код в буфер обмена
class Style {
function parse ($path, $name) {
$cache->check($path, $name);
}
}
class Cache {
function check ($path, $name) {
$file = ROOT.$path;
if (file_exists(ROOT."/data/cache".$name)) {include_once (ROOT."/cache/".$name.".php");}
else {$this->compile($path, $name);}
}
function compile ($path, $name) {
$source = fopen ($path);
$file = fread ($source);
$result = str_replace ("\{PATH_TO_APP\}", "<?= ".PATH_TO_APP." ; ?> ", $file);
if ($result == true) {
fwrite (ROOT."/data/cache/".$name.".php", $result);
include_once (ROOT."/data/cache/".$name.".php");
}
else {$this->compile($path, $name);}
}
}
$style = new Style ();
$cache = new Cache ();
Вызов:
Дополнительно:
(Добавление)
Полностью рабочий код (вызов тот же):
PHP:
скопировать код в буфер обмена
class Style {
function parse ( $path , $name ) {
$file = ROOT. $path ;
if ( file_exists ( ROOT
. "/data/cache/" . $name ) ) { include_once ( ROOT
. "/data/cache/" . $name . ".php" ) ; } else { $this -> compile ( $path , $name ) ; }
}
function compile ( $path , $name ) {
$result = str_replace ( "{" . "PATH_TO_APP" . "}" , PATH
, $file ) ; include_once ( ROOT. "/data/cache/" . $name . ".php" ) ;
}
}
$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
Мелкий пишет: Дык он и не вызывается даже. Что вы тут пытались сделать - для меня вообще загадка.
Совсем забыл:
digi
Одно дело из БД вытаскивать значения, а другое из языковых файлов тянуть.
(Добавление)
DeepVarvar
Аккуратней будет так:
PHP:
скопировать код в буфер обмена
<div class="news">
<?PHP foreach ( $this -> items as $value ) : ?>
<div class="title"><?= $value [ 'title' ] ; ?> </div>
<div class="date"><?= $value [ 'date' ] ; ?> </div>
<div class="content"><?= $value [ 'content' ] ; ?> </div>
<?PHP endforeach ; ?>
</div>
Crate
Отправлено: 19 Января, 2012 - 10:40:04 • Тема: Шаблонизатор • Форум: CMS и фреймворки
Ответов: 38 Просмотров: 8982
Начал потихоньку разбираться. Создал функцию для парсинга инклюда:
Дополнительно:
Но инклюд не парсится.
Crate
Отправлено: 19 Января, 2012 - 08:28:08 • Тема: Шаблонизатор • Форум: CMS и фреймворки
Ответов: 38 Просмотров: 8982
Здравствуйте, уважаемые программисты!
Я начал писать CMS, использовал курсы Костикса, но потом мне понадобился шаблонизатор. Смарти и Твиг не подходят, т. к. много весят. Решил посотреть на примере phpBB, но ничего не понял.
Суть вопроса:
Хочется сделать простым создание шаблонов на сайт, с использованием лексем типа {CONTENT}, но чтобы они заменялись на заданные значения в ядре.
Страниц (21): В начало « ... 13 14 15 16 17 18 19 20 [21]
Powered by ExBB FM 1.0 RC1. InvisionExBB