Не работают инклюды! :(

  • Автор темы Антон В.
  • Дата начала

Антон В.

Guest
Не работают инклюды! :(

Здравствуйте Уважаемые!

Я не специалист в программировании, но жизнь заставила разобраться с одной штукой.

Имеется сайт, построеный на файлах с расширением *.shtml, чтобы использовать инклюды разных составных частей сайта.
Все прекрасно работает. Но вот решил установить один php скрипт (форма связи через сайт). Скрипт работает на одном файле: index.php. Для своей работы скрипт подгружает файл шаблона, по умолчанию называется template.htm и в шаблоне нужно указать лишь $data и в этом месте будет выводиться результат работы скрипта. Я переименовал файл шаблона в template.shtml, изменил в php скрипте так же название имени файла шаблона. Все прекрасно, сам скрипт работает, но вот инклюды перестали работать.

Вот и сама суть вопроса, как сделать так, чтобы работали в файле teplate.shtml инклюды вида: <!--#include virtual="/inc/lalala.htm" -->

Мне кажется, что инклюды не работают потому, что файл шаблона не выполняется, а подгружается скриптом.

Вобщем помогите решить проблему, как реализовать задуманное.

Заранее спасибо!
 

Wsc

Guest
Да нет, дело в настройках сервера.
добавь параметр

AddHandler server-parsed .html .shtml

и будет тебе счастье
 

Антон В.

Guest
Секунду, попробую! :)

-~{}~ 11.06.05 19:41:

Ничего не изменилось...
 

Wsc

Guest
Автор оригинала: Антон В.
Секунду, попробую! :)

-~{}~ 11.06.05 19:41:

Ничего не изменилось...
Да, сорри, не сосвсем внимательно прочитал вопрос.
Именно по причине include не обрабатываются SSI-директивы.
 

svetasmirnova

маленький монстрик
Мне кажется, что инклюды не работают потому, что файл шаблона не выполняется, а подгружается скри
Да, видимо поэтому, если Вы подключаете их в PHP скрипте, например, [m]include[/m]. Нужно обмануть сервер. Даже постила сюда как. Кажется, так:
PHP:
readfile('http://www.site.ru/path/file.shtml');
 

Антон В.

Guest
Не совсем понял. Тоесть в php скрипт надо добавить такую строчку, и тогда инклюды заработают?
 

svetasmirnova

маленький монстрик
От инклюдов отказаться, заменить их вышеуказанной конструкцией, читать мануал.
 

Антон В.

Guest
Значит так. Переименовал я шаблон в template.php, указал в нем вместо инклюда: <? readfile('http://new.himoza.com/inc/up.htm'); ?>
Результат - 0. Ни ошибок, не вывода содержимого.
 

svetasmirnova

маленький монстрик
Зачем шаблон надо было переименовывать? Это же те самые SSI-файлы, которые Вы хотите чтобы выполнялись? или я что-то не понимаю?
 

Антон В.

Guest
Прочтите еще раз внимательнее суть проблемы.

Мне не надо, чтобы выполнялись shtml файлы, мне надо чтобы в файле шаблона, работая из под php скрипта работали инклуды на сторониие htm файлы.

http://new.himoza.com/contacts/ - это перед вами скрипт index.php, который подключает к себе шаблон template.shtml

http://new.himoza.com/contacts/template.shtml - а вот сам шаблон.

Как видите в шаблоне инклуды работают, а в этом же шаблоне из под скрипта php инклюды не работают.
 

tristram

Guest
Антон В. svetasmirnova
меня ваши переговоры порадовали :))
дело в том что ssi (server side includes) парсятся апачем не на выходе данных в сокет а на чтении файла, по-этому
index.php
PHP:
include("ssi.shtml");
ssi.shtml:
PHP:
 <!--#include virtual="page.htm" -->
работать не будет ни при [m]include[/m] ни при [m]readfile[/m]. по HTTP обращатся это изврат настоящий т.к. это дополнительная нагрузка на сервер и потери в скорости. не говоря о том что возможно PHP на это не настроен.
Советую отказатся от SSI.
 

Антон В.

Guest
Хорошо. А если шаблон будет иметь расширение *.php и я буду делать php include то будет ли он выполняться, если учесть что запускается не шаблон, а исполняемый файл?

Я пробовал так, инклуд не работал. :(

Вобщем суть проблемы, как ее решить? Хоть какой-нибудь инклуд чтобы сделать!
 

Антон В.

Guest
Почему у нас народ постоянное пытается возомнить из себя Энштейна? Я написал в самом моем первом топике, Я НЕ РАЗБИРАЮСЬ В ПРОГРАММИРОВАНИЕ, но жизнь вынудила разобраться с этой проблемой. Я прошу помочь КОНКРЕТНЫМИ примерами, а не вокруг да около.
 

DiTHER

bang bang
Автор оригинала: Антон В.
Почему у нас народ постоянное пытается возомнить из себя Энштейна? Я написал в самом моем первом топике, Я НЕ РАЗБИРАЮСЬ В ПРОГРАММИРОВАНИЕ, но жизнь вынудила разобраться с этой проблемой. Я прошу помочь КОНКРЕТНЫМИ примерами, а не вокруг да около.
Залезь на указанную ссылку. Никому не хочется дублировать все сказанное там. Попробуй. Если не получится - тогда приходи и спрашивай (цени своё время тоже - если поймёшь сам - намного полезней будет для тебя самого)
 

Vasya

Guest
1. Скрипт работает на одном файле: index.php
2. в шаблоне нужно указать лишь $data и в этом месте будет выводиться результат работы скрипта
3. как сделать так, чтобы работали в файле teplate.shtml инклюды вида: <!--#include virtual="/inc/lalala.htm" -->
1. & 2. Для этого надо в скрипте index.php подгрузить файл шаблона, скажем, в строку, и заменить там `$data` на что-то другое.

1. & 3. Для этого надо в index.php вызвать функцию virtual('template.shtml').

2. & 3. Для этого можно из файла template.shtml вызвать скрипт index.php примерно таким образом: <!--#include virtual="index.php" -->
Заменить этой конструкцией строку `$data`.

1. & 2. & 3. Не прокатит. Ибо 1. & 3. исключает 1. & 2.

Вывод: надо переформулировать задачу :)
 
Сверху