Отправляет email-рассылки с помощью сервиса Sendsay

Вебстроительство. Форум !!!

[PHP] - Генерация страниц на основе шаблонов...

Здравствуйте.

Создавай сайт я наткнулся на такие вот грабли.
Мой сайт содержит разделы. Каждый раздел расположен в отдельной
папке относительно корня сайта. В каждом разделе (папки) есть свой
подраздел (подпапка). Структура у всех страниц одинаковая:
- вверху заголовок сайта
- слева менюха с баннерами
- справа содержание каждой страницы, т.е. контент.
На всех страницах остаются неизменными верхняя и левая части, а
меняется только левая. Вот я и подумал о том, что бы генерить
страницы. Положи в отдельную папку скрипт на РНР, в котором есть
HTML код для загрузки Шапки сайта с картинками, и скрипт для
загрузки меню сайта - левой части страницы.
В каждой папки, т.е. раздела есть файл index.php в котором я в
начале подключаю через include скрипт Шапки, потом скрипт Меню и
заполняю основную часть страницы контентом. В скриптах есть теги
<img> и в них прописан путь для загрузки картинок.
И тут наступают проблему. Если индексный файл положить в подпапку,
то уже не грузятся картинки, т.к. пути для них прописаны
относительно первого уровня папкок, а в других подпапок уже нет.

Как это можно вылечить ? И сделать, что бы скрипты для загрузки
Шапки и Меню можн было подключать к любым файлам index, где бы они не
находились ?

Помогите, плиз...

Ответить   Feniks Fri, 3 Dec 2004 10:40:12 +0200 (#274233)

 

Ответы:

Привет!

В тегах img вместо src="images/img1.jpg" ставь src="/images/img1.jpg".
Тогда картинки будут всегда браться из одной и той же папки images,
находящейся в корне сайта.

Пашка

3 декабря 2004 г., 11:40:12, Feniks <csn@b*****.ua> wrote:


Номер выпуска : 285
Возраст листа : 326 (дней)
Количество подписчиков : 192
Адрес в архиве : http://subscribe.ru/archive/inet.webbuild.build/msg/274242
Получить правила : mailto:inet.webbuild.build-rules@subscribe.ru
Формат "дайджест" : mailto:inet.webbuild.build-digest@subscribe.ru
Формат "каждое письмо" : mailto:inet.webbuild.build-normal@subscribe.ru
Формат "читать с веба" : mailto:inet.webbuild.build-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: inet.webbuild.build
Написать в лист: mailto:inet.webbuild.build-list@subscribe.ru
Отписаться: mailto:inet.webbuild.build--unsub@subscribe.ru?subject=inet.webbuild.build

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Fri, 3 Dec 2004 11:44:50 +0300 (#274242)

 

Здравствуйте, Павел.

В письме mid:20041203114327.2742***@i*****.subscribe
Вы писали 3 декабря 2004 г. в 10:44:50 [GMT +2:00]:

Про этот трек я знаю.
Но дело в том, что у моего хостера стоит линух с Апачи сервером, а у
меня на компе Винда с Апаче сервером под винду. На своем компе я делаю
сайт и его тестю, а потом сливаю хостеру.
Версии Апачи и РНР одинаковые как у меня, так и у хостера.

Я пробовал трюки с "/images", "../images", "./images".
С двумя точками работает только для первого уровня папок :-(
А если вообще без точки с одним "/", то вообще РНР не находит папки
"/images" :-/
Я не знаю, может в винде такая фигня, а в линухе все нормально.
Или может где-то надо РНР поднастроить ?

Ответить   Feniks Fri, 3 Dec 2004 12:13:34 +0200 (#274305)

 

PHP вам поднастроить не дадут. В линухе и в винде эти вещи работают
одинаково.
Указывайте абсолютные пути (типа http://site.ru/ima...) или пользуйтесь
регулярными выражениями. Эти два способа можно комбинировать, например
при выводе текстов замещать относительные пути абсолютными, тогда не
придётся править готовые странички. Подробнее - мануал. preg_replace(),
ereg_replace(), str_replace() - на выбор.

Ответить   Fri, 03 Dec 2004 18:53:53 +0600 (#274518)

 

Здравствуй, Feniks!

Ты чего-то не договариваешь. Если у img ставить в src в начале слэш
без всяких точек, то картинки будут браться из корня не Апачем и не
PHP, а браузером. При этом на сервере вообще PHP может не стоять -
браузеру пофигу. Если у тебя что-то не работает, значит ты используешь
слэш не в img, а в include или require в PHP. А так действительно
работать не будет. Расскажи плз поподробнее, что ты делаешь, что у
тебя не получается, и приведи примеры кода.

Пашка

3 декабря 2004 г., 13:13:34, Feniks <csn@b*****.ua> wrote:


Номер выпуска : 289
Возраст листа : 326 (дней)
Количество подписчиков : 192
Адрес в архиве : http://subscribe.ru/archive/inet.webbuild.build/msg/274649
Получить правила : mailto:inet.webbuild.build-rules@subscribe.ru
Формат "дайджест" : mailto:inet.webbuild.build-digest@subscribe.ru
Формат "каждое письмо" : mailto:inet.webbuild.build-normal@subscribe.ru
Формат "читать с веба" : mailto:inet.webbuild.build-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: inet.webbuild.build
Написать в лист: mailto:inet.webbuild.build-list@subscribe.ru
Отписаться: mailto:inet.webbuild.build--unsub@subscribe.ru?subject=inet.webbuild.build

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Fri, 3 Dec 2004 23:34:55 +0300 (#274649)

 

Здравствуйте, Павел.

В письме mid:20041203233504.2746***@i*****.subscribe
Вы писали 3 декабря 2004 г. в 22:34:55 [GMT +2:00]:

Ну тогда привожу косок кода...

Файл Index.php в корне сайта :
<?PHP require("Cgi-bin/BodyHeader.inc.php"); ?>
<H2>Добро пожаловать на наш сайт</H2>
<DIV ALIGN="center"><IMG SRC="Images/Divider.gif" BORDER="0"></DIV>
// покусано Файл Index.php в папке About сайта :
<?PHP require("../Cgi-bin/BodyHeader.inc.php"); ?>
<H2>Добро пожаловать на наш сайт</H2>
<DIV ALIGN="center"><IMG SRC="../Images/Divider.gif" BORDER="0"></DIV>
// покусано В этих двух файлах написанные таким образом пути работают и
подключается файл BodyHeader.inc.php и грузится картинка Divider.gif.

Теперь сам файл BodyHeader.inc.php :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
// покусано <LINK HREF="Res/Default.css" REL="stylesheet" TYPE="text/css">
^^^^^^^^^^^^^^^^^
<BODY LEFTMARGIN="5" TOPMARGIN="5" RIGHTMARGIN="5" BOTTOMMARGIN="5">
<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="0">
<TR>
<TD CLASS="Title-left"></TD>
<TD CLASS="Title-center" ALIGN="center" VALIGN="middle">

<IMG SRC="Images/Logo.gif" BORDER="0"></TD>
^^^^^^^^^^^^^^^^^

<TD CLASS="Title-center" VALIGN="middle">
<H1>Group of Developers</H1></TD>
<TD CLASS="Title-center" ALIGN="center" VALIGN="middle">

<IMG SRC="Images/Logo.gif" BORDER="0"></TD>
^^^^^^^^^^^^^^^^^

<TD CLASS="Title-right"></TD>
</TR>
</TABLE>
// покусано вот тут та и начинаются казусы.
При такими путями грузится все в индексном файле, который в корне
лежит. Но не грузится в папке About.

С индексными файлами (Index.php) проблем нету. В них прописываю пути
относительные и все гуд - инклуд срабатывает и картинки (которые в
Index.php) то же грузятся.
А вот как быть с путями на картинки и др. файлы в подключаемом модуле
BodyHeader.inc.php ?

Ответить   Feniks Mon, 6 Dec 2004 12:37:13 +0200 (#276060)

 

Привет, Feniks!

Соответственно, привожу исправленный код файлов, который точно будет
работать:

Файл Index.php в корне сайта :
<?PHP require("Cgi-bin/BodyHeader.inc.php"); ?>
<H2>Добро пожаловать на наш сайт</H2>
<DIV ALIGN="center"><IMG SRC="/Images/Divider.gif" BORDER="0"></DIV>
исправлено -^
// покусано Файл Index.php в папке About сайта :
<?PHP require("../Cgi-bin/BodyHeader.inc.php"); ?>
<H2>Добро пожаловать на наш сайт</H2>
<DIV ALIGN="center"><IMG SRC="/Images/Divider.gif" BORDER="0"></DIV>
исправлено -^
// покусано В этих двух файлах написанные таким образом пути работают и
подключается файл BodyHeader.inc.php и грузится картинка Divider.gif.

Теперь сам файл BodyHeader.inc.php :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
// покусано <LINK HREF="/Res/Default.css" REL="stylesheet" TYPE="text/css">
исправлено -^
<BODY LEFTMARGIN="5" TOPMARGIN="5" RIGHTMARGIN="5" BOTTOMMARGIN="5">
<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="0">
<TR>
<TD CLASS="Title-left"></TD>
<TD CLASS="Title-center" ALIGN="center" VALIGN="middle">

<IMG SRC="/Images/Logo.gif" BORDER="0"></TD>
исправлено -^

<TD CLASS="Title-center" VALIGN="middle">
<H1>Group of Developers</H1></TD>
<TD CLASS="Title-center" ALIGN="center" VALIGN="middle">

<IMG SRC="/Images/Logo.gif" BORDER="0"></TD>
исправлено -^

<TD CLASS="Title-right"></TD>
</TR>
</TABLE>
// покусано Все исправления сводятся к тому, что, как я и говорил, в теге img
ставим в src не "images/...", а "/images/...".

Успехов и удачи! :)
Пашка

6 декабря 2004 г., 13:37:13, Feniks <csn@b*****.ua> wrote:





Номер выпуска : 294
Возраст листа : 332 (дней)
Количество подписчиков : 191
Адрес в архиве : http://subscribe.ru/archive/inet.webbuild.build/msg/277451
Получить правила : mailto:inet.webbuild.build-rules@subscribe.ru
Формат "дайджест" : mailto:inet.webbuild.build-digest@subscribe.ru
Формат "каждое письмо" : mailto:inet.webbuild.build-normal@subscribe.ru
Формат "читать с веба" : mailto:inet.webbuild.build-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: inet.webbuild.build
Написать в лист: mailto:inet.webbuild.build-list@subscribe.ru
Отписаться: mailto:inet.webbuild.build--unsub@subscribe.ru?subject=inet.webbuild.build

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Thu, 9 Dec 2004 02:32:11 +0300 (#277451)

 

Здравствуйте, Павел.

В письме mid:20041209023008.2774***@i*****.subscribe
Вы писали 9 декабря 2004 г. в 1:32:11 [GMT +2:00]:

Вынужден тебя огорчить, Пашка.
Все равно не работает. Ничего не грузится: ни картинки, ни файл со
стилями (.css). :-( Где бы файл Index не лежал с тегами
<IMG SRC="/Images/Logo.gif" BORDER="0">, он не работает.

Странная штука получается... Такие теги с путями я не раз встречал на
чужих сайтах и они благополучно работали! Может где-то что-то надо
указать для этого ? Может мета теги какие-то ?

Ответить   Feniks Thu, 9 Dec 2004 10:02:04 +0200 (#277627)

 

ОК. Давай разбираться дальше: опиши плз, с помощью чего и как ты
смотришь страницы: какой браузер, что написано в строке адреса. Еще на
непрогрузившихся картинках нажми правой кнопкой и выбери свойства -
посмотри какой адрес картинки браузер там пишет.
О результатах просмотра напиши сюда. :))

Пашка

9 декабря 2004 г., 11:02:04, Feniks <csn@b*****.ua> wrote:


Номер выпуска : 296
Возраст листа : 332 (дней)
Количество подписчиков : 190
Адрес в архиве : http://subscribe.ru/archive/inet.webbuild.build/msg/277634
Получить правила : mailto:inet.webbuild.build-rules@subscribe.ru
Формат "дайджест" : mailto:inet.webbuild.build-digest@subscribe.ru
Формат "каждое письмо" : mailto:inet.webbuild.build-normal@subscribe.ru
Формат "читать с веба" : mailto:inet.webbuild.build-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: inet.webbuild.build
Написать в лист: mailto:inet.webbuild.build-list@subscribe.ru
Отписаться: mailto:inet.webbuild.build--unsub@subscribe.ru?subject=inet.webbuild.build

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Thu, 9 Dec 2004 12:02:58 +0300 (#277634)

 

Здравствуйте, Павел.

В письме mid:20041209120141.2776***@i*****.subscribe
Вы писали 9 декабря 2004 г. в 11:02:58 [GMT +2:00]:

Броузер: родной IE и Avant Browser, который использует ядро ИЕ.
В старке написано:
http://localhost/GoD/
GoD - это название сайта моего.

-

В свойствах указан адрес:
http://localhost/Images/Logo.gif

Без комментариев... :-))
Сам вижу, что адрес не верный. Пропущена папка "GoD". :-/
Отсюда банальный вопрос: а то если перед "/images" поставить
"GoD/images" ? :))
Ща попробую...
:)) :)) :))
100 пудова... запрацювало, т.е. заработало...

Большое спасибо. ;-)
Попробую теперь весь сайт так переделать.

Но есть одно "НО": это у меня-то папка "GoD" лежит в корне
веб-сервера, а у моего хостера может и по другому быть та.
Как быть ? Может создать конфиг. файл, в который поместить параметр с
локальным путем к сайту и его подставлять перед всем адресами ?
например, MyUrl="/God" и в теги тогда будет
<IMG SRC=<?=MyUrl?>"/Images/Logo.gif" BORDER="0">

PS. Я про свойства та картинок совсем забыл и да же не догадался. :-/

Ответить   Feniks Thu, 9 Dec 2004 16:37:32 +0200 (#277866)

 

Привет, Feniks!

В следующий раз будь поаккуратнее с формулировками: в данном случае
твой сайт называется localhost, а файлы находятся не в корне, а в
папке GoD. Это существенная разница. В корне они лежали бы, если в
строке адреса было бы написано http://localhost/ или
http://GoD.localhost/. Кстати, если
делаешь сайты, которые совсем не подразумеваешь далее перемещать
между каталогами, то очень советую именно так и делать. Для этого надо
просто донастраивать твой Apache и файл hosts.

Да, так и надо делать в таких случаях. Причем все такие настройки,
которые зависят именно от того, на каком хостинге запускается сайт,
советую выносить в отдельный конфиг-файл, который ты не будешь
копировать со своего компьютера на хостинг, потому что он меняться не
будет, а другие настройки (зависящие не от хостинга, а от чего-нибудь
другого) могут периодически меняться...

Пашка

9 декабря 2004 г., 17:37:32, Feniks <csn@b*****.ua> wrote:


Номер выпуска : 298
Возраст листа : 332 (дней)
Количество подписчиков : 190
Адрес в архиве : http://subscribe.ru/archive/inet.webbuild.build/msg/277980
Получить правила : mailto:inet.webbuild.build-rules@subscribe.ru
Формат "дайджест" : mailto:inet.webbuild.build-digest@subscribe.ru
Формат "каждое письмо" : mailto:inet.webbuild.build-normal@subscribe.ru
Формат "читать с веба" : mailto:inet.webbuild.build-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: inet.webbuild.build
Написать в лист: mailto:inet.webbuild.build-list@subscribe.ru
Отписаться: mailto:inet.webbuild.build--unsub@subscribe.ru?subject=inet.webbuild.build

http://subscribe.ru/ http://subscribe.ru/feedback

Ответить   Thu, 9 Dec 2004 19:51:09 +0300 (#277980)

 

Здравствуйте, Пашка.

В письме mid:20041209194916.2779***@i*****.subscribe
Вы писали 9 декабря 2004 г. в 18:51:09 [GMT +2:00]:

:-) Честно говоря, это мой первый опыт в разработке сайта с похожей
структурой и требованиями, плюс еще на РНР, которого я раньше в глаза
не видел... вот и наступил сразу на грабли... :))

В принципе, так оно и есть: у меня есть такой файл с настройками. Там
хранятся некоторые константы, переменные для работы с
MySQL-сервером... Добавлю туда и эту фишку с путями.

Спасибо за помощь. На выходных буду дома весь сайт переделывать.

Если опять будут вопросы, еще обращусь за помощью.
А пока тему можно считать закрытой. :))

Ответить   Feniks Fri, 10 Dec 2004 11:04:07 +0200 (#278362)