Перейти к содержимому

Реферальная программа Мегаплана


Разные директории

#1 polermo

polermo
  • Пользователь
  • 52 сообщений
  • Репутация: 0
0

Отправлено 12 Ноябрь 2009 - 15:40

Страницы сайта разложены по разным директориям (включая sidebar, header и footer - лежат в папке blocks), а файлы index.php, mail.php лежат в корневой директории сайта. При этом директорий на сайте может быть много и они могут быть вложены друг в друга. Соответственно путь к файлам будет из этих директорий разный, т.к. чтобы попасть в корневую директорию нам придется подниматься на несколько уровней вверх в зависимости от степени вложенности директорий.

Если бы все файлы лежали в одной директории, то, например, <?php include("blocks/header.php"); ?> включаем на кажд. странице и все ОК...


А как быть, когда файлы в разных директориях и на всех страницах указать одинаковые ссылки к файлам sidebar, header и footer???

 

 

  • 0

#2 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 13 Ноябрь 2009 - 03:16

А в чем практическая полезность такого метода хранения?

Можете сохранить в файле конфига имя домена и указывать потом просто абсолютный путь к файлу.
Например если файл храниться в папке /blocks, тогда вы берете из файла конфиг переменную, которая хранит домен
$main = "http://example.com"; и в вашем присоединяющем скрипте пишете
<?php include($main."/blocks/header.php"); ?>
  • 0

#3 polermo

polermo
    Topic Starter
  • Пользователь
  • 52 сообщений
  • Репутация: 0

Отправлено 13 Ноябрь 2009 - 13:18

а если выложить sidebar, header и footer в ту же директорию, что и index.php и путь к файлам отсчитывать от корня диска?

так можно каким-то образом?
  • 0

#4 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 13 Ноябрь 2009 - 17:33

Ну если у вас будет абсолютный путь, то он будет обращаться именно туда, куда нужно. В остальных случаях либо не получится, либо надо будет писать какой нибудь определяющий скрипт.
  • 0

#5 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 16 Ноябрь 2009 - 00:28

polermo, посмотрите на любую CMS. Там обязательно присутствует переменная или константа с полным путём до корня системы.
У вас есть 2 варианта:
1) Писать путь относительно корня, но тут проблема если у вас скрипт изначально будет располагаться не в корне, а в какой-то директории, тогда и её писать везде придётся.
2) Опредлить глобальную переменную пути к корневому каталогу системы и юзать уже её. Конечно можно даже скрипт написать по автоматическому определению этого пути.
  • 0

#6 polermo

polermo
    Topic Starter
  • Пользователь
  • 52 сообщений
  • Репутация: 0

Отправлено 20 Ноябрь 2009 - 14:12

ок, спасибки
  • 0

#7 кипятильник

кипятильник
  • Пользователь
  • 102 сообщений
  • Репутация: 0

Отправлено 23 Ноябрь 2009 - 10:56

я всегда делаю так
$doc_root = $_SERVER['DOCUMENT_ROOT']; // полный путь к файлу
require_once($doc_root.'/inc/design.php');
require_once($doc_root.'/inc/config.php');

теперь можеш и не думать о путе к файлу :blink:
  • 0

#8 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 23 Ноябрь 2009 - 19:35

кипятильник, ты не прав...
$_SERVER['DOCUMENT_ROOT'] - возвращает путь до корня сервера или до виртуального хоста.
А представим ситуацию, если у тебя скрипт относительно корня лежит ещё в какой-то папке, что же тогда? Твой скрипт просто перестанет работать.
Решение будет более универсальным. Надо в файле, который будет лежать в корне исполнения скрипта вписать данный код
$site_path = realpath(dirname(__FILE__) . "/") . "/";
define ('SITE_PATH', $site_path);

  • 0

#9 кипятильник

кипятильник
  • Пользователь
  • 102 сообщений
  • Репутация: 0

Отправлено 23 Ноябрь 2009 - 19:40

почему я не прав?
все правильно если файл лежит в папке просто тогда (ка и на примере)
require_once($doc_root.'/ПАПКА_1/ПАПКА_2/design.php');


  • 0

#10 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 23 Ноябрь 2009 - 20:28

кипятильник, вот именно что везде дописывать эти 2 папки. И это неправильно. Надо исчислять путь от корня его исполнения.
К примеру у вас будет форум лежать в папке /forum/, вам наверное было бы удобно в вашем движке форума из 1000 файлов дописывать данную папку.
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru