<?php
$filename="glmenu.txt";
$handle=fopen($filename, "r");
$st = fread($handle, filesize($filename));
fclose($handle);
echo ($st);
?>
Как "базонезависимо" прочитать файл на PHP?
Имеется сайт. Соответственно у него много страничек. Использовать frames очень нежелательно. На этих страничках есть повторяющиеся элементы, которые практически одинаковые на всех страничках (в основном это меню). При изменении сайта (добавление и удаление страничек) надо менять меню! Соответственно надо менять везде!!! А это рехнуться можно! Хотелось бы впихнуть все общие элементы в 1 файл или в несколько файлов, например, текстовых, а в страничках написать что-то типа этого:
Код:
Базонезависимость нужна понятно зачем - я это отлаживаю у себя на компе, а потом переношу на сервер. glmenu.txt у меня, например, на E:\php\...\glmenu.txt, а на сервере что-то типа httpdocs\glmenu.txt!
Нашёл функцию getcwd, но она почему-то возвращает c:\
Фигня какая-то...
P.S.
PHP знаю не очень... Просто много других языков знаю... поэтому могу... что-то...
Туда прописываем урл к сайту, физический путь к папке сайта и т.п..
Код:
define('BASE_URL', 'http://localdev.sitename/');
define('PATH', 'z:/home/localdev.sitename/www/');
define('PATH', 'z:/home/localdev.sitename/www/');
Код:
$t = new Templator(PATH.'templates/index.tpl');
а если использовать относительные а не абсолютные пути?
насчет статичных элементов - так это основа.. берешь один файл-статик, и в него закидываешь какой-то набор символов, который будешь заменять на нужное. В итоге при правке надо будет править всего один файл. Короче, почитай статью про использование шаблонов
Цитата: UAS
или использовать $_SERVER['DOCUMENT_ROOT'];
Я бы не советовал часто DOCUMENT_ROOT использовать. привязывает к структуре папок проекта.
DOCUMENT_ROOT удобно использовать в самом конфиге (чтоб не переконфижывать много). Я его также использую для инклуда одного глобального файла. А даже если и использовать то лутше врапнуть функцией. Тогда свою папку с проектом можно кинуть внуть другого проекта в любое место.
Цитата: per%cent
а если использовать относительные а не абсолютные пути?
ИМХО Относительные пути - зло.
еще один вариант - через SSI ;)
Цитата: Rebbit
Я бы не советовал часто DOCUMENT_ROOT использовать. привязывает к структуре папок проекта.
а как можно создать проект, где расплывчатая структура?
У меня вообще в конфиге моей CMS так прописано:
Код:
define("PATH_ROOT",$_SERVER['DOCUMENT_ROOT']."");
Код:
$filename=__FILE__;
$filename=dirname($filename);
$filename.="/glmenu.txt";
$handle=fopen($filename, "r");
$st = fread($handle, filesize($filename));
fclose($handle);
echo ($filename);
#echo ($st);
$filename=dirname($filename);
$filename.="/glmenu.txt";
$handle=fopen($filename, "r");
$st = fread($handle, filesize($filename));
fclose($handle);
echo ($filename);
#echo ($st);
Результат:
E:\PHP/glmenu.txt
А вот это выдаёт c:\
Код:
$filename=getcwd();
echo ($filename);
echo ($filename);
Хотя по логике должно выдать тоже самое!!!
И так тоже C:\
Код:
$filename=realpath(".");
echo ($filename);
echo ($filename);
Почему C:\ ???
[quote=per%cent]
а если использовать относительные а не абсолютные пути?
[/quote]
Я бы рад, но почему-то функция fopen($filename, "r"); даёт ошибку!
И я не знаю почему!
У меня просто как всё:
Есть сайт. Там куча htm-страничек. index в корневой директории + несколько основных, а остальные в верхних директориях.
Вот. И мне бы хотелось общие элементы прикрепить бы к какому-то единому файлу. Причём надо обеспечить базонезависимость.
Может я не прав, но у меня пока такая мысль: программно определить абсолютный путь и по определённому абсолютному пути читать файл.
Может это и не рационально.
А если я сделаю вот так:
Код:
define("PATH_ROOT",$_SERVER['DOCUMENT_ROOT']."");
Или так:
Код:
define('PATH', 'z:/home/localdev.sitename/www/');
А потом эту константу PATH я буду использовать во всех fopen();???
То мне в каждой htm-страничке надо будет это вставить перед тегом <html>, например.
Не придётся ли мне писать какую-то утилиту, которая бы перед отправкой всего этого на сервер, переправляла бы эти строки???
Как лучше?
Цитата: Meatcoins
Как лучше?
Не извращаться и не морочить мозги присобачиванием этого fopen ко всем html, а переделать ведь сайт из статики в динамику. Короче на движок перейти
Цитата:
Не извращаться и не морочить мозги присобачиванием этого fopen ко всем html, а переделать ведь сайт из статики в динамику. Короче на движок перейти
А это как?
Ну почитай в сети про шаблоны. Контент всех статей заносишь в какую-то БД. Пишешь движок, делаешь общий шаблон, потом в каком-то скрипте открываешь шаблон и в него вставляешь данные..
Код:
<html>
<head>{TITLE}</head>
<body bgcolor={BGCOLOR}>
{SOMETPLTAGS}
</body>
</html>
<head>{TITLE}</head>
<body bgcolor={BGCOLOR}>
{SOMETPLTAGS}
</body>
</html>
А потом {...} заменяем на html с помощью php!
Ну понятна идея.
Я немного не так сделал, но нечто похожее на это - написал утилиту, которая меняет строки во всех файлах и вставляю туда php...
Смысл понятен...