Для начала опишу структуру проекта:
1. Имеются файлы типа Index.php, admins.php, news.php и т.д. (т.е. колличество файлов равно колличеству существующих локаций, привычка ещё на html так когда-то писал)
2. К каждому php файлу имеется свой tpl файл с таким-же названием.
3. Все *.php файлы (которые отвечают за содержимое локации) ничего в себе не содержат кроме
<?session_start();
if (!session_is_registered("id")) header("location:/");?>
<?require_once $_SERVER['DOCUMENT_ROOT']."/system/Includes/global.inc.php";?>
Есть несколько файлов, которые лежат в system/core/ и отвечают собственно за работоспособность проекта.
Например:
1. файл queries.php содержит в себе все запросы
2. functions.php - все существующие в проекте самописные функции
3. constants.php - название говорит само за себя =)
4. parameters.php - мой самый любимый файл. Почему самый любимый? Потому-что открыв только его я могу изменить любую часть проекта и для этого не нужно будет открывать другие файлы и исправлять код там.
1. Этот файл решает на какую страницу можно заходить, на какую нельзя, если доступ разрешён он проверяет на сколько он разрешён, в зависимости от ситуации вытягивает нужное меню и нужный контент, он отслеживает состояние шаблонов, т.е. если шаблон вдруг повреждён или потерян, то вместо него подставляется другой незаметно для пользователя и без выдачи каких-либо ошибок. Плюс через него-же можно настроить логику компановки шаблона на текущей страницы, ну к примеру не всегда можно использовать связку Header.tpl+{Location name}.tpl+Footer.tpl, вдруг дизайнеру взбредёт изобрести свой header для каждой страницы. А вообще планируется то файл parameters.php будет контролировать ещё и контент всех страниц. Т.е. во все tpl будет просто добавлено <?=$content?>() (да простит меня twin за короткие теги), а файл параметров будет уже решать что это значит. =)
Ну в общем много всяких тонкостей.
Вот кстати сам код хвалёного parameters.php
На растерзание критикам. Особенно хотелось бы узнать мнение twin'а
Мне просто интересно узнать мнение знатоков по каждому пункту из вышесказанного, и может даже получить в сторону этого файла здоровую адекватную критику.
Жду отзывов. =)
<?session_start();?>
<? if ( stristr($_SERVER['HTTP_USER_AGENT'], 'Chrome') ) {$brows='1';}
else{$brows = '0';}
if ($brows !== '1')
{require_once $_SERVER['DOCUMENT_ROOT']."/system/error/browsers.php";}
elseif ($brows == '1')
{require_once $_SERVER['DOCUMENT_ROOT']."/system/Includes/global.inc.php"; dbconnect();
require_once $_SERVER['DOCUMENT_ROOT']."/system/core/Template.php";
if ($_SESSION['lang'] == "eng"){$langs=$_SERVER['DOCUMENT_ROOT']."/system/langs/acep.en.lang.php";}
elseif ($_SESSION['lang'] == "rus") {$langs=$_SERVER['DOCUMENT_ROOT']."/system/langs/acep.ru.lang.php";}
elseif ($_SESSION['lang'] == "kaz") {$langs=$_SERVER['DOCUMENT_ROOT']."/system/langs/acep.kz.lang.php";}
else {$langs = $_SERVER['DOCUMENT_ROOT']."/system/langs/acep.alter.lang.php";}
require $langs;
$loc = mysql_query($location);
$a = mysql_fetch_array($loc);
$currentlocid = $a['ID'];
$currentlocname = $a['Name'];
if (!empty($_SESSION['id']))
{
$b = mysql_query($checkgroup);
$c = mysql_fetch_array($b);
$group = $c['ID'];
$groupname = $c['Name'];
$constr = "Select Value From acep_Core Where Category='Menu' && Parameter1='{$currentlocid}' && Parameter2='{$_SESSION['access']}'";
$res = mysql_query($constr);
$myr = mysql_fetch_array($res);
$menu = $myr['Value'];
if (!empty ($menu)){
if ($_SESSION['skin']!== '0'){
$findskin = mysql_query($skin);
$arrskin = mysql_fetch_array($findskin);
$userskin = $arrskin['Name'];
}
$msg = $lang['text.hello']."<br>";
//подстраховка на случай, если скин будет повреждён.\
if ($currentlocid!=="3"){
if (file_exists($headtpl))
{include_once $headtpl;
print Template::evaluate($menu,$lang);}
else {$err = $lang['text.headskinerror'];
include_once $defheadtpl;
print Template::evaluate($menu,$lang);}
if (file_exists($path))
{include_once $path;}
else {$err = $lang['text.locskinerror'];
include_once $defpath;}
if (file_exists($foottpl))
{include_once $foottpl;}
else {$err = $lang['text.footskinerror'];
include_once $deffoottpl;}
echo $err;}
elseif ($currentlocid=="3")
{include_once $alterhead;
print Template::evaluate($menu,$lang);
include_once $path;}}
elseif(empty($menu)){ $msg = $lang['text.accesserror']; echo $msg;}}
else{$userskin="default";
include_once $_SERVER['DOCUMENT_ROOT']."/system/core/Login.php";
}
;}?>
Для более глубокого понимания, вот образец значения некоторых переменных
$foottpl = $_SERVER['DOCUMENT_ROOT']."/templates/{$userskin}/footer.tpl";
$path = $_SERVER['DOCUMENT_ROOT']."/templates/{$userskin}/{$currentlocname}.tpl";
$deffoottpl = $_SERVER['DOCUMENT_ROOT']."/templates/default/footer.tpl";
Спустя 24 минуты, 58 секунд (5.10.2011 - 08:20) Renden написал(а):
McLotos
ИМХО это сугубо мои мысли\замечания, можешь принять к сведению можешь проигнорировать
1) Это глупо, достаточно 1 файла index.php остальное в него подключать модулями. Единственное админку многие делают отдельно.
2) Нах?)) А если шаблоны нужны будут одинаковыми для 2 страниц, смысл создавать 2 одинаковых шаблона? Я считаю что должен быть шаблон по умолчанию, так сказать который выоводит все в CONTENT, и возможность создавать шаблоны для конкретной страницы(модуля) если вдруг приспичит.
По поводу файлов в system/core/ это твое дело как их размещать как называть.. но ИМХО в данном случае достаточно бы 2 файлов function.php и config.php
По поводу кода скажу что оформление по моему мнению плохое, нечитаемо..
ИМХО это сугубо мои мысли\замечания, можешь принять к сведению можешь проигнорировать
1) Это глупо, достаточно 1 файла index.php остальное в него подключать модулями. Единственное админку многие делают отдельно.
2) Нах?)) А если шаблоны нужны будут одинаковыми для 2 страниц, смысл создавать 2 одинаковых шаблона? Я считаю что должен быть шаблон по умолчанию, так сказать который выоводит все в CONTENT, и возможность создавать шаблоны для конкретной страницы(модуля) если вдруг приспичит.
По поводу файлов в system/core/ это твое дело как их размещать как называть.. но ИМХО в данном случае достаточно бы 2 файлов function.php и config.php
По поводу кода скажу что оформление по моему мнению плохое, нечитаемо..
Спустя 31 минута, 28 секунд (5.10.2011 - 08:51) McLotos написал(а):
Я просто не могу сделать пока по-другому, поэтому такое колличество файлов.
Просто у меня все ссылки и подключение всех необходимых файлов подготавливаются по результату запроса из БД, допустим юзер находится на странице новостей, в таком случае подаётся запрос на подключение нужного файла по id локации в БД.
Хотя, если например попробовать не указывать в БД адрес физического файла, а только название локации и ID, можно будет попробовать
Просто у меня все ссылки и подключение всех необходимых файлов подготавливаются по результату запроса из БД, допустим юзер находится на странице новостей, в таком случае подаётся запрос на подключение нужного файла по id локации в БД.
Хотя, если например попробовать не указывать в БД адрес физического файла, а только название локации и ID, можно будет попробовать
Спустя 14 минут, 48 секунд (5.10.2011 - 09:06) Renden написал(а):
McLotos
Ну допустим что мешает даже примерно такой простецкий вариант использовать:
index.php
в таком случае по умолчанию подинклюдит тебе новости, если укажешь допустим index.php?page=contacts то будет те другая страница.
А вообще почитай курсы от ирбис тим..
Ну допустим что мешает даже примерно такой простецкий вариант использовать:
index.php
$page = $_GET['page'] ? trim($_GET['page']) : 'news';
$query = mysql_query("SELECT * FROM tbl WHERE page_name='".mysql_real_escape_string($page)."'");
$row = mysql_fetch_assoc($query);
if (file_exists('modules/'.$row['file'])
include ('modules/'.$row['file']);
в таком случае по умолчанию подинклюдит тебе новости, если укажешь допустим index.php?page=contacts то будет те другая страница.
А вообще почитай курсы от ирбис тим..
Спустя 1 минута, 44 секунды (5.10.2011 - 09:08) TranceIT написал(а):
Посмотри как просто и красиво на ирбисе сделано переключение страниц:
/**
* The switch of modules
* Переключатель страниц
*/
switch($GET['page'])
{
case 'main':
include IRB_ROOT .'admin/main/router.php';
break;
case 'second':
include IRB_ROOT .'admin/second/router.php';
break;
case 'meta':
include IRB_ROOT .'admin/meta/router.php';
break;
case 'exit':
include IRB_ROOT .'admin/sequrity/exit.php';
break;
default:
include IRB_ROOT .'admin/main/router.php';
break;
}
Спустя 1 минута, 55 секунд (5.10.2011 - 09:09) Renden написал(а):
TranceIT
Помоему красивее держать страницы в базе а не простыней switch case
Помоему красивее держать страницы в базе а не простыней switch case
Спустя 7 минут, 3 секунды (5.10.2011 - 09:16) TranceIT написал(а):
Renden
Я в зависимости от ситуации использую оба варианта. Если это допустим сайт визитка, в котором четко определены все разделы, то лучшим считаю вариант ирбиса. Если это интернет магазин, где категории товаров постоянно меняются, то только базы.
Я в зависимости от ситуации использую оба варианта. Если это допустим сайт визитка, в котором четко определены все разделы, то лучшим считаю вариант ирбиса. Если это интернет магазин, где категории товаров постоянно меняются, то только базы.
Спустя 5 минут, 10 секунд (5.10.2011 - 09:22) Renden написал(а):
TranceIT
Да безразницы сайт визитка это или нет, наша задача свести к минимуму затраты своего времени в дальнейшем, написал 1 раз, и копипастишь в разные проэкты. Выгода базы в том что расширить страницы, удалить, добавить можно будет в любой момент без заглядывания в код. Думаю на любом сайте может в любой момент может потребоваться новая страница
Да безразницы сайт визитка это или нет, наша задача свести к минимуму затраты своего времени в дальнейшем, написал 1 раз, и копипастишь в разные проэкты. Выгода базы в том что расширить страницы, удалить, добавить можно будет в любой момент без заглядывания в код. Думаю на любом сайте может в любой момент может потребоваться новая страница
Спустя 2 минуты, 30 секунд (5.10.2011 - 09:24) redreem написал(а):
я вот год точу свой двиг и уже раза 4 его практически с нуля переписал по причине того, что только тогда, когда сталкиваешься с реальным проектом - понимаешь - насколько удобно или нет, быстро или медленно пишется сайт на двиге. поэтому пробуйте... не бойтесь выкидывать нахрен всю "гениальную" структуру и переписывать заного. в результате это сэкономит кучу времени и нервов в дальнейшем.
Спустя 1 час, 22 минуты, 53 секунды (5.10.2011 - 10:47) McLotos написал(а):
Цитата |
Ну допустим что мешает даже примерно такой простецкий вариант использовать: index.php |
А мне почему-то кажется что работать с реальными файлами проще.
Цитата |
не бойтесь выкидывать нахрен всю "гениальную" структуру и переписывать заного |
=)
Я пока этот проект пишу, сотню раз переписывал логику, многие модули уже заездил до дыр, раз 10 всё к чертям удалял и писал всё с нуля.
Конкретный вынос мозга! =)
Я когда его начал писать о php только слышал =)
А теперь вот сижу и кайфую. Как в матрице, подключился, отключился с осознанием того что выучил кунг-фу =)
Спустя 43 минуты, 50 секунд (5.10.2011 - 11:31) caballero написал(а):
Цитата |
А мне почему-то кажется что работать с реальными файлами проще. |
Разумеется проще и логичнее.
Есть два основных варианта построения - одни файл index.php
на который переправляются запросы а он инклудит остальные модули. И разные страницы по модулям котрые инклудят общие части типа загаловка. Если вы новичок - однозначно второй вариант - меньше путатся будете. Так что структурв у вас нормальная - меньше слушайте умников.
А вот с шаблонами вы напрасно связались.
PHP сам по себе уже шаблонизатор - он так сделан изначально и поэтому популярен.
Раз у вас бизнес логика вынесена в функции и запросы так на фига какие то tpl файлы?
Берете файл news.php к примеру и формируете HTML как обычно. Раз у вас логика уже отделена то это будет по сути тот же шаблон один к одному только без всяких прослоек и лишних приседаний.
Спустя 5 минут, 34 секунды (5.10.2011 - 11:36) McLotos написал(а):
Цитата |
на фига какие то tpl файлы |
Тут всё банально =)
Я занимаюсь только функциональной частью проекта и его жизнеспособностью, а в дизайн мне лезьт просто лень, поэтому у меня есть дизайнер, который ничего не знает о php, и я решил что будет проще нам обоим, если он будет заниматься только шаблонами и при этом не будет иметь доступа к php коду, а я не буду ковыряться во всех этих div и т.д. =)
Спустя 12 минут, 29 секунд (5.10.2011 - 11:49) caballero написал(а):
Цитата |
поэтому у меня есть дизайнер, который ничего не знает о php, и я решил что будет проще нам обоим, |
Не будет проще - проверено многократно на опыте. Все равно шаблон не будет состоять из одного HTML. В шаблоны все равно надо вставлять скриплеты с вашими данными из PHP. какая разница будет это переменная или if else на PHP или на каком то птичьем языке. Но зато надо будет один файл на страницу а не два.
Чем поменают дизайнеру пара инклудов сверху?
Спустя 18 минут, 7 секунд (5.10.2011 - 12:07) McLotos написал(а):
А контент, который нужно отображать в определённом диве?
Спустя 11 минут, 17 секунд (5.10.2011 - 12:18) Renden написал(а):
caballero
Цитата |
Но зато надо будет один файл на страницу а не два.Чем поменают дизайнеру пара инклудов сверху? |
И что плохого если tpl несколько, даже например удобнее открыть news.tpl и отредактировать там то что отвечает только за новости, а допустим news_comments.tpl отвечает за коментарии к новостям, какой смысл все лепить в 1 файл? А зачем в шаблоне include, нужно все-же страться отделять логику от представления.
Спустя 7 минут, 48 секунд (5.10.2011 - 12:26) McLotos написал(а):
Вообще какбы да, я и пришёл к выводу что нужны шаблоны только из-за нежелания искать php среди бесконечных <div>, <talbe> и т.д.
Спустя 33 минуты, 22 секунды (5.10.2011 - 12:59) caballero написал(а):
Цитата |
А контент, который нужно отображать в определённом диве? |
а в чем проблемма?
Спустя 5 минут, 22 секунды (5.10.2011 - 13:05) caballero написал(а):
еще раз
нет никакого смысла заменять скриплеты PHP на какой то птичий язык
хотите логику и дизай в разные файлы - не проблемма
зачем для этого какаято прослойка нужна
в чем преимущество переменной в фигурных скобках перед переменной в треугольных?
нет никакого смысла заменять скриплеты PHP на какой то птичий язык
хотите логику и дизай в разные файлы - не проблемма
зачем для этого какаято прослойка нужна
в чем преимущество переменной в фигурных скобках перед переменной в треугольных?
Спустя 10 минут, 40 секунд (5.10.2011 - 13:16) Renden написал(а):
caballero
имхо
vs
ИМХО 2 вариант проще для юзера ;)
имхо
<div class="bla-vla">
<div class="bla"><?php echo $username;?></div>
<div class="bla"><?php echo $email;?></div>
</div>
vs
<div class="bla-vla">
<div class="bla">{username}</div>
<div class="bla"><{email}</div>
</div>
ИМХО 2 вариант проще для юзера ;)
Спустя 22 минуты, 51 секунда (5.10.2011 - 13:38) caballero написал(а):
ничем не проще
особенно если писать не php echo a просто =
а теперь подумайте как проще для разработчика -
использовать язык на котором делаешь сайт или прикручивать дополнительную тормозящую прослойку да еще и перекладывать переменные с одной формы в другую
сам подход использования помим двух языков еще какой то третий псевдоязык вынуддающий парсить файл еще раз уже сомнителен
особенно если писать не php echo a просто =
а теперь подумайте как проще для разработчика -
использовать язык на котором делаешь сайт или прикручивать дополнительную тормозящую прослойку да еще и перекладывать переменные с одной формы в другую
сам подход использования помим двух языков еще какой то третий псевдоязык вынуддающий парсить файл еще раз уже сомнителен
Спустя 37 минут, 53 секунды (5.10.2011 - 14:16) bodja написал(а):
Renden
Хорошо,теперь представим,что у Вас есть тот же блок с коментами,
теперь нужно что бы у каждого блока была кнопочка "цитировать" у гостей +
кнопочка "редактировать" у автора поста + кнопочки "удалить" ,"банить" у админа.
Покажите как вы это будете разруливать на шаблоне,
через display:none ?
Хорошо,теперь представим,что у Вас есть тот же блок с коментами,
теперь нужно что бы у каждого блока была кнопочка "цитировать" у гостей +
кнопочка "редактировать" у автора поста + кнопочки "удалить" ,"банить" у админа.
Покажите как вы это будете разруливать на шаблоне,
через display:none ?
Спустя 2 минуты, 49 секунд (5.10.2011 - 14:19) redreem написал(а):
bodja да без проблем простейшим шаблонизатором+делением тплок сложных модулей на несколько тплок разруливается.
Спустя 29 минут, 59 секунд (5.10.2011 - 14:49) imbalance_hero написал(а):
Renden
Зная МИНИМУМ php, мне проще увидеть <?php echo , чем {} , потому что если я вижу '<?php echo' , то я знаю, что это вывод переменной. А если фигурные скобки, то внутри кода они не бросаются в глаза!!!
Зная МИНИМУМ php, мне проще увидеть <?php echo , чем {} , потому что если я вижу '<?php echo' , то я знаю, что это вывод переменной. А если фигурные скобки, то внутри кода они не бросаются в глаза!!!
Спустя 24 минуты, 6 секунд (5.10.2011 - 15:13) caballero написал(а):
Цитата |
да без проблем простейшим шаблонизатором+делением тплок сложных модулей на несколько тплок разруливается. |
то есть продублируем кусок дизайна несколько раз для разных кнопок?
Спустя 4 минуты, 22 секунды (5.10.2011 - 15:18) redreem написал(а):
вообще надо плясать не от тплок, а от теоретической структуры. если она разработана грамотно, то и код в результате будет выстраиваться прозрачным и масштабируемым.
Спустя 6 минут, 25 секунд (5.10.2011 - 15:24) bodja написал(а):
redreem
а не проще ли написать одну функцию или метод,
раскроить один раз, а не несколько и не подключать шаблонизатор?
если хотите дать дополнительные инструменты дизайнеру так дайте ему аля class="post1"
будет вам и другой цвет и шрифты и фоновые изображения и размеры.
Картинок в коде тоже можно избежать,к примеру
потом в коде $b=IMG_EDIT.IMG_COMMENT.IMG_DELETE
пожалуйста теперь меняйте себе кнопочки на какие хотите
а если придется менять кардинально дизайн то функционал тоже придется менять,так что одним подключением шаблонов вы все равно не обойдетесь .
Кстати я редко когда встречал шаблоны с элементами для динамических форм,
типа посты ,сообщения,блоки новостей и т.д. приходиться самому допиливать под понравившийся шаблон
а не проще ли написать одну функцию или метод,
раскроить один раз, а не несколько и не подключать шаблонизатор?
private function post($data,$name,$avatar,$msg,$i,$b) {
$h='<tr class="post1" >
<td class="post1_1">'.$data.'</td>
<td class="post1_2"><b>#'.($i+1).'</b> '.$b.'</td>
</tr>
<tr class="post2">
<td class="post2_1">
<div id="np'.$i.'" style="padding:5px 0 5px 0;">'.$name.'</div>
<div><img src="./avatar/'.$avatar.'" style="height:128px;width:128px;"></div>
</td>
<td class="post2_2" id="p'.$i.'">'.$msg.'</td>
</tr>
<tr class="post3">
<td></td>
<td></td>
</tr>';
return $h;
}
если хотите дать дополнительные инструменты дизайнеру так дайте ему аля class="post1"
будет вам и другой цвет и шрифты и фоновые изображения и размеры.
Картинок в коде тоже можно избежать,к примеру
define ('IMG_EDIT','<img src="./images/edit.png" style="cursor:pointer;"/>')
define ('IMG_COMMENT','<img src="./images/comment.png" style="cursor:pointer;"/>')
define ('IMG_DELETE','<img src="./images/delete.png" style="cursor:pointer;"/>')
потом в коде $b=IMG_EDIT.IMG_COMMENT.IMG_DELETE
пожалуйста теперь меняйте себе кнопочки на какие хотите
а если придется менять кардинально дизайн то функционал тоже придется менять,так что одним подключением шаблонов вы все равно не обойдетесь .
Кстати я редко когда встречал шаблоны с элементами для динамических форм,
типа посты ,сообщения,блоки новостей и т.д. приходиться самому допиливать под понравившийся шаблон
Спустя 4 минуты, 7 секунд (5.10.2011 - 15:28) redreem написал(а):
мы о чем говорим? о прикручивании костылей к существующим движкам или о своем двиге под собственные нужды? если о последнем, то какждый делает как ему удобно. я о том, что можно как угодно делать, просто когда двиг сталкивается с реальным проектом, оказывается что лучше было делать подругому.
Спустя 1 минута, 34 секунды (5.10.2011 - 15:30) caballero написал(а):
Цитата |
пожалуйста теперь меняйте себе кнопочки на какие хотите |
Речь щла не об изменении названия кнопок а о том что в зависимости от контента она должна появится или нет
Цитата |
типа посты ,сообщения,блоки новостей и т.д. приходиться самому допиливать под понравившийся шаблон |
Речь идет о шаблонизаторах а не о шаблонах как заготовоках дизайна
Спустя 30 минут, 5 секунд (5.10.2011 - 16:00) bodja написал(а):
Цитата |
Речь щла не об изменении названия кнопок а о том что в зависимости от контента она должна появится или нет |
Ну так читайте внимательно,там есть возможность и того и другого.
Цитата |
Речь идет о шаблонизаторах а не о шаблонах как заготовоках дизайна |
Я прекрасно понял о чем речь идет,спасибо.
Цитата |
мы о чем говорим? о прикручивании костылей к существующим движкам или о своем двиге под собственные нужды |
Да я незнаю,у меня вообще нет движка
Вообще спор начался с того,как и где хранить хтмл и каким боком его можно лучше вывести,наверное разговор ушел сомвем не в ту степь.
Спустя 3 минуты, 50 секунд (5.10.2011 - 16:04) caballero написал(а):
Вообще спор начался с того,как и где хранить хтмл и каким боком его можно лучше вывести,наверное разговор ушел сомвем не в ту степь.
Вопрос в том что ТС не хочет найти неприятностей на задницу (как следует с названия топика)
использование всякого рода шаблонизаторов вне синтаксиса PHP и HTML
верный способ это сделать.
Вопрос в том что ТС не хочет найти неприятностей на задницу (как следует с названия топика)
использование всякого рода шаблонизаторов вне синтаксиса PHP и HTML
верный способ это сделать.
Спустя 1 час, 56 минут, 20 секунд (5.10.2011 - 18:00) imbalance_hero написал(а):
McLotos
Стили вообще смотреть нереально. Сокращенность <? просто плохо, знаешь но используешь... если сравнивать с животными, ведёшь себя как барашек, я бы назвал и баран, но не знаю твоей грамотности и адекватности, потому что в связи с её отсутсвием мог бы и на барана обидеться :)
array там, где скорее всего надо assoc.
Цифру 1 писать как ТЕКСТОВУЮ...
Привет индусам:
вуаля:
И вообще, 80 или даже 90% этого содержания можно легко перенести в index.php, потому что как бы он выполняет функцию единого входа, поэтому зачем его инклюдить на каждой страницы, когда достаточно из индекса инклюдить каждую страницу и не будет перенасыщения однотипных команд.
Стили вообще смотреть нереально. Сокращенность <? просто плохо, знаешь но используешь... если сравнивать с животными, ведёшь себя как барашек, я бы назвал и баран, но не знаю твоей грамотности и адекватности, потому что в связи с её отсутсвием мог бы и на барана обидеться :)
array там, где скорее всего надо assoc.
Цифру 1 писать как ТЕКСТОВУЮ...
Привет индусам:
if ($_SESSION['lang'] == "eng"){$langs=$_SERVER['DOCUMENT_ROOT']."/system/langs/acep.en.lang.php";}
elseif ($_SESSION['lang'] == "rus") {$langs=$_SERVER['DOCUMENT_ROOT']."/system/langs/acep.ru.lang.php";}
elseif ($_SESSION['lang'] == "kaz") {$langs=$_SERVER['DOCUMENT_ROOT']."/system/langs/acep.kz.lang.php";}
вуаля:
$langs=$_SERVER['DOCUMENT_ROOT'].'/system/langs/acep.'.$_SESSION['lang'].'.lang.php';
И вообще, 80 или даже 90% этого содержания можно легко перенести в index.php, потому что как бы он выполняет функцию единого входа, поэтому зачем его инклюдить на каждой страницы, когда достаточно из индекса инклюдить каждую страницу и не будет перенасыщения однотипных команд.
Спустя 57 минут, 41 секунда (5.10.2011 - 18:58) redreem написал(а):
1. шаблонизация - это естественный процесс, который развивается, когда людям надоело писать на ассемблере (да и ассемблер, собственно, - это уже по сути шаблонизатор машинного кода [кто захочет крикнуть что это всеголишь мнемоническо отображение машинных команд - идите в баню]).
2. в этом естественном процессе, естесвенно (чрезмерные увлечения свойственны человеческой натуре), порой, некоторые заходят достаточно далеко, путем создания целых мнемоязыков-связок между html и php.
3. изучив и попробовав все эти излишки, думается, - каждый сам решит что ему удобно и целесообразно.
4. я знаю верстальщиков, которые плюются и бесятся, когда им приходится верстать без шаблонизатора, а конструкциями <?php ... ?>. Это уже дефакто. И мнение программиста тут не единственное и тем более не единственно "самое важное".
2. в этом естественном процессе, естесвенно (чрезмерные увлечения свойственны человеческой натуре), порой, некоторые заходят достаточно далеко, путем создания целых мнемоязыков-связок между html и php.
3. изучив и попробовав все эти излишки, думается, - каждый сам решит что ему удобно и целесообразно.
4. я знаю верстальщиков, которые плюются и бесятся, когда им приходится верстать без шаблонизатора, а конструкциями <?php ... ?>. Это уже дефакто. И мнение программиста тут не единственное и тем более не единственно "самое важное".
Спустя 3 часа, 41 минута, 11 секунд (5.10.2011 - 22:39) imbalance_hero написал(а):
redreem
Шаблонов МИЛЛИОНЫ, а язык программирования 1.
Если пишешь:
<?php if($var == 10) {?> То абсолютно все верстальщики мира понимают, что ты имеешь ввиду тут, а шаблонные - разбиты по группам.
Шаблонов МИЛЛИОНЫ, а язык программирования 1.
Если пишешь:
<?php if($var == 10) {?> То абсолютно все верстальщики мира понимают, что ты имеешь ввиду тут, а шаблонные - разбиты по группам.
Спустя 17 минут, 56 секунд (5.10.2011 - 22:57) redreem написал(а):
{} уже тоже повсеместно торчит.
Спустя 7 часов, 50 минут, 47 секунд (6.10.2011 - 06:47) McLotos написал(а):
Кстати о шиблонах и контенте. Я нашёл оптимальный вариант, я сделал две админки, одну для себя, вторую для дизайнера, у него там есть окошки, в которые он запивает контент вместе со своими стилистическими тегами, а в tpl просто выводятся переменные, которые там уже прописаны заранее, в результате дизайнер не лезет в код, и я могу спать спокойно =)
Спустя 31 минута, 7 секунд (6.10.2011 - 07:19) McLotos написал(а):
Цитата |
$langs=$_SERVER['DOCUMENT_ROOT'].'/system/langs/acep.'.$_SESSION['lang'].'.lang.php'; |
Это был первоначальный вариант, но что-то мне не очень понравилось когда сессионная переменная оказалась пустой и скрипт захлебнулся вместо того чтобы подключить alter.lang
А на счет
Цитата |
Привет индусам: |
могу сказать следующее, это не будет именно в таком варианте, так как языков много (больше 10и), то скорее всего конструкция будет работать через Case =)
И кстати, вы наверное не заметили что в сессии язык хранится в формате RUS/ENG а в именах фалов указаны RU/EN. Просто, если сейчас переименовывать файлы, нужно выкачивать все с серва (лень), или править в БД, а для этого исправлять все формы регистрации, и ещё половину скриптов проекта
Хотя такой вариант обдумывался, и будет ещё оптимизироваться дальше, может я к нему и вернусь.
И кстати, вы наверное не заметили что в сессии язык хранится в формате RUS/ENG а в именах фалов указаны RU/EN. Просто, если сейчас переименовывать файлы, нужно выкачивать все с серва (лень), или править в БД, а для этого исправлять все формы регистрации, и ещё половину скриптов проекта
Хотя такой вариант обдумывался, и будет ещё оптимизироваться дальше, может я к нему и вернусь.
Цитата |
плюются и бесятся, когда им приходится верстать без шаблонизатора, |
Шаблонизатор не обязателен, можно просто написать функцию, я просто рассуждаю стоит ли или оставить как еть, ведь функция это лишний запрос, значит дополнительное время.
Хотя с другой стороны очень хочется. Я не хочу однажды проснуться от звонка с фразой типа "У нас на главной странице написана какая-то чушь типа Warning: и ещё что-то там"
=)
Спустя 9 часов, 50 минут, 33 секунды (6.10.2011 - 17:09) imbalance_hero написал(а):
McLotos
Мне лень, ну я лучше копи-паст сделаю на 10 языков, чем 1 условие и одну строчку... принципы, лень... всё вместе = быдлокод.
Мне лень, ну я лучше копи-паст сделаю на 10 языков, чем 1 условие и одну строчку... принципы, лень... всё вместе = быдлокод.
_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки