parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Фреймы и request:uri

Виталий Новиков 25.09.2004 19:05

Добрый день!
Столкнулся с такой проблемой:
сайт с фреймами (это необходимо, т.к. использую перловый
скрипт для поиска и счетчик посещений на php; все страницы
имеют одинаковый стиль: однообразные header, footer и меню, которые
генеряться парсером -- не хочеться все это генерить еще и перлом
(это не в облом - просто в таком случае потеряется простота и красота
кода, IMHO).
Во фрейме, называемом main_frame, выводится контент или, например, результат поиска: (auto.p в корне web)
@main[]

    $frames[yes]
    ^make_page[]


@make_page[]

<html>
<head>
    <title>^make_title[]</title>
    ^define_function[]
</head>
^if($frames eq "yes"){
    <frameset rows="70, *">
	<frame src="/header.html">
	<frameset cols="20%, *">
	    <frame src="/navigation.html">
	    <frame name="main" src="/main_frame.html">
	</frameset>
    </frameset>
}{
    <body>
	^make_banner[]
	<table width="100%" border="1">
	    <tr>
		<td>

		    ^make_content[]
	</table>
}
</html>

@show_content[]
    <table width="100%" border="0">
        <tr>
             <td>
                 site content...
метод show_content[] вызывается из main_frame.html:
^show_content[]
идея такова: этим методом наполнять main_frame.html в зависимости от
$request:uri
Но... работает все как и должно работать, а не как я предполагал вначале ;) :
$request:uri
содержит
/main_frame.html всегда.
И вот вопрос к вам: где мне запомнить искомый
$request:uri
, например, /page_mass/my_page.html ?
Казалось бы, перегрузка метода
@show_content[]
на странице my_page.html решит проблему, но парсер не
пускает (полет мысли программиста ограничивает только компилятор ;) : метод не перегружается - вызывается оригинальный
метод из auto.p.
Попытка запоминания
$request:uri
из auto.p или из метода
@auto[]
из my_page.html:
@auto[]
$MAIN:url[$request:uri]
тоже ни к чему не приводит - если проверить переменную из
@show_content[]
то оказывается
что она undefined ! Как же так ведь по документации сказано, что методы
@auto[]
вызываются
ПЕРЕД методом
@main[]
!!!!

Посоветуете что-нибудь ?

Спасибо.