Надеюсь, что мой вопрос будет по теме.
На моем сайте хочу, используя функцию php, сделать более легче редактируемый сайт, создал четыре файла php top, right, left & footer, которые в свою очередь составляют верхнюю, правую, левую и нижнюю часть выводимой страницы соответственно, однако столкнулся с проблемой, для меня пока не разрешимой, если все эти файлы выложены в корне сайта, то при попытке создать папку (например для статей) и сделать абсолютные или относительные ссылки на эти основные файлы, ссылки (содержащиеся в этих файлах ссылки ) меняются т.е. добавляют к правильному пути еще и адрес той папки в для создания страницы которого они запрашиваются. Например:
Нормально выглядит так: www.site.ru/rutop.php, a в папке со статьями /article в адресе почему то добавляется адрес этой папки и адрес уже выглядит так: www.site.ru/article/rutop.php. Можно безусловно избежать этой проблемы если абсолютно все файлы и соответственно ссылки на них размещать в корне сайта, но эту ужасно не удобно! Надеюсь, кто-нить из гуру и сенсеев php сможет указать правильный путь в решении этого вопроса.
Как же сделать так, чтобы другие скрипты и вообще эти php файлы работали при таких условиях?
Заранее благодарен, НИКолай
1. euroboy - 23 Июля, 2005 - 17:18:13 - перейти к сообщению
2. Владимир - 23 Июля, 2005 - 18:56:59 - перейти к сообщению
Относительная ссылка из /article на файл www.site.ru/rutop.php должна выглядеть так: ../rutop.php
Абсолютная ссылка должна работать однозначно даже если у тебя файлы на другом сервере.
Называй темы так, чтобы было понятно о чем речь.
3. euroboy - 23 Июля, 2005 - 19:28:48 - перейти к сообщению
Ничего подобного и на Денвере и на сайте одна и та же проблема, вот например в корне сайта файл модержащий меню все ссылки отображает ка кположено, то бишь верные пути указывает, как только он используется в папке, т.е. страница со статьей содержащаяся в папке и имеющая функцию инклюд на этот файл с меню, все начинает себя вести по другому (и при относительный и при абсолютном пути до этого файла с меню). И на Денвере и на сайте у хостера появляется в АДРЕСЕ название этой самой злоч\счастной папки в адресе. И ничего поделать не удается, почему и как не знаю потому и обратился за советом, уважаемый админ TvoyWeb не смог дать ответ и порекомендовал выложить этот запрос для всеобщего обсуждения. Вот и вся история.
4. TvoyWeb - 23 Июля, 2005 - 19:56:08 - перейти к сообщению
euroboy пишет:
админ TvoyWeb не смог дать ответ и порекомендовал выложить этот запрос для всеобщего обсуждения.
Нет ты не прав. Я не по этой причине порекомендовал тебе создать тему. А потому что многим это будет полезно знать.
Итак начнем.
К примеру у тебя есть файл left.php с меню.
Примерный код меню:
CODE:
<a href="index.php">Главная</a>
<a href="about.php">О нас</a>
<a href="contact.php">Контакты</a>
<a href="about.php">О нас</a>
<a href="contact.php">Контакты</a>
Например в корне у тебя есть файл index.php в который инклюдится наш left.php, находящийся тоже в корне. Тогда все ссылки на странице www.site.ru/index.php будут выглядеть как надо.
Но если будем вызывать файл www.site.ru/article/article.php в который также инклюдим файл left.php из корня то все ссылки будут выглядеть как ссылки относительно папки article.
Решение: прописывать в left.php абсолютные ссылки, тогда ссылки не будут меняться независимо куда инклюдится left.php.
5. Владимир - 23 Июля, 2005 - 20:09:44 - перейти к сообщению
Давай так. Что такое инклуд? Это включения некого файла в код страницы(как его части). Раз у тебя страница в /article, то и весь код, включая инклудный файл, лежит в /article. Поэтому ссылки и неверные. Сделай так: перед ссылками в файле меню добавь $papka. Получаться примерно так:
<a href= $papka.'ссылка_меню.php' >
Теперь в файлах php до инклуда задай $papka = "../"; для файлов в папках и $papka = "./"; для файлов основной директории. Должно получиться...
<a href= $papka.'ссылка_меню.php' >
Теперь в файлах php до инклуда задай $papka = "../"; для файлов в папках и $papka = "./"; для файлов основной директории. Должно получиться...
6. euroboy - 24 Июля, 2005 - 10:48:12 - перейти к сообщению
Спасибо за помощь и дельный совет, правда, так и не смог понять, как и куда нужно вставлять код $papka.
Большая часть проблем решена, однако неожиданно возникли и другие, вернее те же самые, только до этого не бросавшиеся в глаза!
После инклюда файла right.php в основную страницу в папке www.site.ru/article/index.php выяснилось следующее:
в данном файле находящемся в корне есть html-код с ссылками а также картинка (формат .jpg) так вот, при нормальном виде ссылки на них должны быть например следующие:
http://www.site.ru/lavka/index.php, а получается вот что -
http://www.site.ru/article/lavka/index.php
с картинкой та же беда. должно быть:
http://www.site.ru/i/shop_pic3.jpg , а на выходе имеем -
http://www.site.ru/article/i/shop_pic3.jpg. Вот так выглядит код этого ресурса непосредственно в самом файле файла right.php:
<img src="i/shop_pic3.jpg" width="152" height="220" border="0">
Даже с учетом всех Ваших рекомендаций, решения и этой проблемы я так и не смог найти, и ничего не остается, как снова обратится к Вам за помощью.
Заранее благодарен, НИКолай.
Большая часть проблем решена, однако неожиданно возникли и другие, вернее те же самые, только до этого не бросавшиеся в глаза!
После инклюда файла right.php в основную страницу в папке www.site.ru/article/index.php выяснилось следующее:
в данном файле находящемся в корне есть html-код с ссылками а также картинка (формат .jpg) так вот, при нормальном виде ссылки на них должны быть например следующие:
http://www.site.ru/lavka/index.php, а получается вот что -
http://www.site.ru/article/lavka/index.php
с картинкой та же беда. должно быть:
http://www.site.ru/i/shop_pic3.jpg , а на выходе имеем -
http://www.site.ru/article/i/shop_pic3.jpg. Вот так выглядит код этого ресурса непосредственно в самом файле файла right.php:
<img src="i/shop_pic3.jpg" width="152" height="220" border="0">
Даже с учетом всех Ваших рекомендаций, решения и этой проблемы я так и не смог найти, и ничего не остается, как снова обратится к Вам за помощью.
Заранее благодарен, НИКолай.
7. Владимир - 24 Июля, 2005 - 15:42:50 - перейти к сообщению
Цитата:
Не устраивает?Решение: прописывать в left.php абсолютные ссылки,
Тогда разжовываю с кодом $papka:
ВСЕ ссылки в любом месте сайта должны иметь вид:
CODE:
<a href= $papka.'ссылка.php' >страница</a>
ВСЕ рисунки должны иметь вид:
CODE:
<img src=$papka.'адрес_картинки.jpg' width="152" height="220" border="0">
В начале КАЖДОГО файла .php должна быть строчка:
Для файлов .php лежащих в любой папке
CODE:
$papka = "../";
Для файлов .php лежащих в корне сайта
CODE:
$papka = "./";
ссылка.php и адрес_картинки.jpg - это твои относительные ссылки. Те, что были у тебя изначально.
8. Леголегс - 24 Июля, 2005 - 16:07:50 - перейти к сообщению
euroboy
Я бы тебе посоветовал всё-таки использовать абсолютные ссылки. Если сильно ломает писать
Я бы тебе посоветовал всё-таки использовать абсолютные ссылки. Если сильно ломает писать
CODE:
то пиши путь от корневой папки, т.е. от "/"<a href="http://site.hoster.ru/somedir/some.php">ссылка</a>
CODE:
<a href="/somedir/some.php">ссылка</a>
9. Ray Wen - 24 Июля, 2005 - 16:28:06 - перейти к сообщению
euroboy
Владимир
А по моему с самого начала не правильный подход к проблеме...
euroboy, твоя праблема в том что ты не верно видиш суть и выход из проблемы... нужно сейчас думать не о том как исправить свои ошибки, а о том как правильно сделать... А сделать нужно следующее...
Нужно на все взглянуть с другой стороны... ты сейчас пытаешся сделать кучу страничек с содержанием и навесить на них одинаковый шаблон, при этом разбить по класификации... А что если сделать на оборот, сделать шаблон и на него навесить разное содержание? Ты сразу избавляешся от кучи проблем...
Пример: Сделай свой диз в одном или нескольки файлах и прикрепи его к одному, к index.php... Сделай содержание страничек и запихни его в папку page/... При этом ты сможеш в этой папке уже разбивать по папочкам на классы как тебе взблагорасудится... пробем с дизайном у тебя уже не возникнет... В index.php прописываеш всего одну строчку где ты хотел бы видеть свое содержание... примерно так:
Естественно что в page/ должен быть файл index.php с содержанием главной страницы... Ссылки на страницы будут выглядеть примерно так: index.php?id=rutop, или index.php?f=article&id=rutop для того чтобы достать файл с содержанием из папки article...
Мда, придется повозится с переделкой, но зато потом будет на много удобнее... полностью решаются проблемы с шаблонами, так как это всего один файл и прописан он только в нем одном... Добавлять тоже удобнее, забрасываеш содержание и даеш где-то ссылку на него...
Владимир
А по моему с самого начала не правильный подход к проблеме...
euroboy, твоя праблема в том что ты не верно видиш суть и выход из проблемы... нужно сейчас думать не о том как исправить свои ошибки, а о том как правильно сделать... А сделать нужно следующее...
Нужно на все взглянуть с другой стороны... ты сейчас пытаешся сделать кучу страничек с содержанием и навесить на них одинаковый шаблон, при этом разбить по класификации... А что если сделать на оборот, сделать шаблон и на него навесить разное содержание? Ты сразу избавляешся от кучи проблем...
Пример: Сделай свой диз в одном или нескольки файлах и прикрепи его к одному, к index.php... Сделай содержание страничек и запихни его в папку page/... При этом ты сможеш в этой папке уже разбивать по папочкам на классы как тебе взблагорасудится... пробем с дизайном у тебя уже не возникнет... В index.php прописываеш всего одну строчку где ты хотел бы видеть свое содержание... примерно так:
CODE:
$id=(isset($_GET['id'])?$_GET['id']:'index'; //Для запуска главной странице при входе без параметров
include ('page/'.((isset($_GET['f']))?$_GET['f'].'/'.$id:$id).'.php');
include ('page/'.((isset($_GET['f']))?$_GET['f'].'/'.$id:$id).'.php');
Естественно что в page/ должен быть файл index.php с содержанием главной страницы... Ссылки на страницы будут выглядеть примерно так: index.php?id=rutop, или index.php?f=article&id=rutop для того чтобы достать файл с содержанием из папки article...
Мда, придется повозится с переделкой, но зато потом будет на много удобнее... полностью решаются проблемы с шаблонами, так как это всего один файл и прописан он только в нем одном... Добавлять тоже удобнее, забрасываеш содержание и даеш где-то ссылку на него...
10. Владимир - 24 Июля, 2005 - 17:45:43 - перейти к сообщению
Ray Wen пишет:
Абсолютно согласен. Было бы желание сделать один раз большой труд чтобы потом жить спокойно. А по моему с самого начала не правильный подход к проблеме...