Прошу помощи с физической структурой сайта

phoenix555
На сайте с 20.11.2008
Offline
165
4010

Уважаемые вебмастера! Прошу помощи!!!

Пишу первый динамический сайт, стал в тупик.

Сначала решил расположить все странички в корне, потом когда количество страниц стало расти, начал путаться и решил странички раскидать по папкам. Проблема заключается вот в чем:

во все страницы инклудятся header, footer, menu (далее inc-и) которые лежат в папке inc, а они в свою очередь ссылаются на images, ява-скрипты и др., которые лежат в корне.

Когда я создаю папки, чтобы расположить в них странички по категориям и меняю в страничках адреса ссылок на inc-и, inc-и начинают ссылаться на images, ява-скрипты в корне, а т.к. корнем уже является папка-категория, то в ней нет ни images, ни ява-скриптов. А я не хочу, чтобы для каждой папки и подпапки были свои inc-и.

Как быть?

💦💦💦 XMLRiver.com - Выдача Google и Yandex в формате XML.Yandex | От 10р за 1000 запросов 🍀🍀🍀 KeyAssort.com - Программа для профессиональной кластеризации поисковых запросов
topy
На сайте с 28.03.2006
Offline
142
#1

быть так:

 
<?php
include_once('../header.inc');
?>
Новости коротко и ясно (https://subnews.ru)
Alipapa
На сайте с 01.02.2008
Offline
234
#2

Так нужно ссылки в inc-ах сделать относительно корня сайта. Вот например

require_once "maincore.php";
require_once BASEDIR.$settings['opening_page'];

а в maincore.php где-то есть такой фрагмент

// Locate config.php and set the basedir path
$folder_level = ""; $i = 0;
while (!file_exists($folder_level."config.php")) {
$folder_level .= "../"; $i++;
if ($i == 5) { die("Config file not found"); }
}
require_once $folder_level."config.php";
define("BASEDIR", $folder_level);

То есть, здесь находится папка, содержащая файл config.php, и все пути начинаются с неё.

Биржа фриланса - простая и удобная (http://kwork.ru/ref/2541)
phoenix555
На сайте с 20.11.2008
Offline
165
#3

Спасибо, но первый ответ не помог, а во втором, наверное, описывается какой-то движок, а я никакой движок не использую, сам пишу

Alipapa
На сайте с 01.02.2008
Offline
234
#4

Да, это пример из движка, и он показывает классическое решение вашего вопроса и здесь не должно быть трудностей. Вместо config.php можно взять тот файл, который отличает вашу корневую папку от других. Вместо $settings['opening_page'] - ваши имена файлов. require_once - ну у вас вместо этого, наверное, include.

Николай В.
На сайте с 07.09.2006
Offline
62
#5

ТС, честно говоря, то, что вы описали, очень похоже на траву.

Лично я обычно стараюсь в корне ($_SERVER['DOCUMENT_ROOT'] — пусть это /www/http_docs/) держать только файлы, которые положено запрашивать моим посетителям, т.е. скрипты (вроде index.php или news.php), изображения (/www/http_docs/images/), js и так далее. Все, что требуется исключительно на стороне сервера, у меня обычно лежит выше, хотя это исключительно вопрос удобства.

Ваши инки называются шаблонами (templates) или скриптами вида (view scripts). Лежать им действительно положено в отдельной директории (например /www/templates/).

Итак, структура:

/www/http_docs/

/www/http_docs/index.php

/www/http_docs/images/

/www/http_docs/images/logo.png

/www/templates/

/www/templates/header.inc

/www/templates/footer.inc

Файлы:

/www/http_docs/index.php


<?php
/*
dirname(__FILE__) возвращает директорию для выполняемого файла, у нас это /www/http_docs
/.. — переход на уровень выше
*/

require_once(dirname(__FILE__) . '/../templates/header.inc');
echo("<h1>Yupee!</h1>");
require_once(dirname(__FILE__) . '/../templates/footer.inc');

/www/templates/header.inc


<html>
<body>
<p><img src="/images/logo.png" alt=""></p>

/www/templates/footer.inc


</body>
</html>

src="/images/logo.png" — слеш в самом начале означает, что файл будет запрошен из доступного браузеру корня сайта (http://www.site.ru). Конечно же стоит рассмотреть случай, когда у нас неожиданно изменится структура, например примет вид:

/www/http_docs/

/www/http_docs/test/index.php

/www/http_docs/test/images/

/www/http_docs/test/images/logo.png

/www/http_docs/test/templates/

/www/http_docs/test/templates/header.inc

/www/http_docs/test/templates/footer.inc

Наш индекс.похапе теперь доступен по адресу http://www.site.ru/test/index.php

Файлы:

/www/http_docs/test/index.php


<?php
/*
dirname(__FILE__) возвращает /www/http_docs/test
Дополнительно определим переменную с путем для браузера для передачи в шаблон
*/
$web_root = "/test/";
require_once(dirname(__FILE__) . '/templates/header.inc');
echo("<h1>Yupee!</h1>");
require_once(dirname(__FILE__) . '/templates/footer.inc');

/www/templates/header.inc


<?php
/*
Проверка в целях безопасности
*/
$web_root = (isset($web_root)) ? $web_root : "/";
?>
<html>
<body>
<p><img src="<?=$web_root;?>images/logo.png" alt=""></p>

PROFIT!

phoenix555
На сайте с 20.11.2008
Offline
165
#6

Николай В. спасибо большое, помогло

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий