Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   как вызвать скрипт на страницу? (http://forum.oszone.net/showthread.php?t=30413)

koresaram 07-07-2003 14:15 208523

народ, такой вопрос: как вызвать результат работы скрипта на страницу сайта? особенности таковы, что сама страница, в которую я пишу  является файлом tpl то есть темплейтом. получается, что я вызываю скрипт, который подгружает себе темплейт для оыормления и вот из этого темплейта нужно вызвать другой скрипт. как это сделать?

mar 07-07-2003 17:26 208524

если это темплэйт (то-есть что-то вроде html-файла с переменными, подменяемыми обслуживающим скриптом), то как всегда в html - форма, или ssi если это позволено (и темплейт проходит ssi - парсинг на этом сервере)

koresaram 07-07-2003 17:59 208525

чо то ничего не понял :(
вобщем так: есть скрипт интернет магазина sale.pl чтобы он выглядел под дизайн моего сайта я его загнал в темплейт. то есть сделал два файла top.tpl и bottom.tpl и теперь сам скрипт sale.pl выглядит так
сначала всякие установки и т.п.
$top="top.tpl"
$tpl=new HTMLTMPL;
$tpl->src($top);
$tpl->output();
в середине тут содержание магазина, книжки, корзина, вобщем все.
$tpl=new HTMLTMPL;
$tpl->src($bottom);
$tpl->output();

но на самом сайте еще есть такой скрипт, который считает количество участников форума и выводит это количество на всех страницах (через exec cgi="counter.cgi") так вот как этот counter.cgi вызвать из файла top.tpl, который обрабатывается файлом sale.pl? про парсинг я что-то слышал а вот как этот парсинг делать? примечание сайт свой в смысле www.name.ru

[s]Исправлено: koresaram, 19:00 7-07-2003[/s]

ivank 07-07-2003 18:56 208526

koresaram
Что такое HTMLTMPL? CPAN search ничего о нём не знает, значит это не "стандартный" модуль -> ничем сходу помочь нельзя. В простейшем случае придётся добавить три строчки в "шаблонизатор", что бы научить его вставлять скрипты.

Добавлено:

Прошу прощения, кажись просто там поиск не работал, он мне и модуль CGI не нашёл, сейчас в других источниках посмотрю.

Добавлено:

koresaram
Вот документация: http://theoryx5.uwinnipeg.ca/CPAN/da.../HTMLTMPL.html Что непонятного-то?

В соответствующем .tpl файле, где надо поставить счётчик вписывается __counter__.

Соответственно код для включения файла будет выглядеть примерно так:
Код:

open(COUNTER, "| /path/to/your/counter/script")
$counter = join('', <COUNTER>);
close(COUNTER);
$counter =~ s/.*?\n\n//s; # удаляем HTTP-заголовок

$tpl=new HTMLTMPL;
$tpl->src($bottom);
$tpl->counter($counter);
$tpl->output();

Или можно поиграться с перенаправлением вывода и просто включить файл счётчика через require (если оно на перле, конечно), сбросив вывод в переменную.

koresaram 08-07-2003 11:04 208527

ни фига :( попробовал так как ты написал с кодами, но он ничего не показывает. только сверху выдал Content-type: text/html 907 и все. так, а где путь к скрипту пишется там до папки.... а не прямо до скрипта надо путь указать. но все равно не пашет.

вот: http://www.logist.ru/cgi-bin/sale/i-sale.pl в левой колонке снизу "Членов Клуба" и пусто. а вот к примеру из форума, у которого оформление тоже в темплейте www.logist.ru/forum/YaBB.cgi тут все на месте. причем на форуме этот вывод записан как exec cgi="counter.pl"

а непонятного тут все из за того, что я перл плохо знаю, только начал изучать. и английский не очень :(
а вот про три строчки в шаблонизаторе это ты что имел ввиду?

еще вот чего: у меня темплейты не мелкими частями. то есть шаблон сайта это табличка с тремя столбцами. вот все содержание выводится в средний столбик. я просто взял страницу index.htm и поделил HTML код на две части. первая часть кончается на начале среднего столбика, вторая начинается с конца столбика. вот эти две части и есть мои top.tpl и bottom.tpl может дело в этом?

[s]Исправлено: koresaram, 12:09 8-07-2003[/s]

Добавлено:

доигрался до того, что при вышеописанном подходе вместо результата скрипта выводится текст скрипта.

ivank 08-07-2003 18:21 208528

koresaram
Это был не рабочий код, а просто идея, к тому же я не подумав не там палочку поставил :). Вот работающий пример:
tpl.html
Код:

smt1: __smt1__
counter: __counter__
smt2: __smt2__

counter.pl
Код:

print "Content-type: text/html\n\n";
#some non-trivial code here...
print "123";

ex.pl
Код:

#!/usr/bin/perl -w

use HTMLTMPL;

$templ = new HTMLTMPL;
$templ->src('tpl.html');

$templ->smt1('something not important is here');

open(COUNTER, "perl counter.pl |");
$counter = join('', <COUNTER>);
close(COUNTER);
$counter =~ s/(.*)?\n\n//s; # удаляем HTTP-заголовок
$templ->counter($counter);


$templ->smt2('something not important strikes back!');

$templ->output('Content-Type: text/html');

Результат работы ex.pl
Код:

Content-Type: text/html

smt1: something not important is here
counter: 123
smt2: something not important strikes back!

Цитата:

а вот про три строчки в шаблонизаторе это ты что имел ввиду?
На счёт трёх строчек я приувеличил, по моим более точным подсчётам получилось 7 :)
Ну примерно тот же, код, но только засунуть его в HTMLTMPL, дабы он сам искал места где нужно вставить результат некоторого скрипта. Но, думаю, тебе это не нужно.


Время: 23:46.

Время: 23:46.
© OSzone.net 2001-