Schrift
[thread]785[/thread]

Suchfunktion: In einem Templatesystem

Leser: 1


<< >> 8 Einträge, 1 Seite
styx-cc
 2006-07-20 23:57
#8425 #8425
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Hallo,
ich versuche gerade eine Suchfunktion fuer eine Webseite zu schreiben..

So sieht das bis jetzt aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
for my $file (@search_files) {
my $next_file = 0;
open(SF, "<", "../templates/$file")
or die("Cant open Template to search in: $!");

while (my $line = <SF>) {
my @keywords = split (/ /, $keyword);

for my $word (@keywords) {
if ($line =~ /$word/i) {
push(@matches, $file);
$next_file = 1;
last;
}
}

last if $next_file;
}
close SF;
}
return @matches;
}


In der Webseite gibt es ein navi.cgi, welches die navigation der seiten uebernimmt und das main.tmpl laedt.
Ein search.cgi in welchem der obige code steht...

Jetzt wollte ich eine uebersicht erstellen, welche zu den Seiten verlinkt, in denen Matches vorhanden waren...
So weit kein Problem, aber ich will auch, das die Matches farblich hervorgehoben werden wenn man eine Seite mit Treffern aufruft.

Haettet ihr da einen Loesungsansatz fuer mich?
Muss ich unbedingt ein neues Template fuer die Suchergebnisse erstellen oder koennte ich nicht einfach den $tmpl->output(); in einem Scalar oder Array speichern und vor der Ausgabe bearbeiten?

vielen dank

MfG

ps.: um sich ein Bild von der Sache machen zu koennen: http://www.styx.cc.de/cgi-bin/navi.cgi
die Suche ist allerdings noch nicht implementiert.\n\n

<!--EDIT|styx-cc|1153425518-->
Pörl.
renee
 2006-07-21 09:57
#8426 #8426
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=styx-cc,20.07.2006, 21:57][...] oder koennte ich nicht einfach den $tmpl->output(); in einem Scalar oder Array speichern und vor der Ausgabe bearbeiten?

[...][/quote]
Das kannst Du tun!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
styx-cc
 2006-07-21 10:03
#8427 #8427
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Hast du evt. noch einen kleinen Modul Tipp, damit er mir z.B.
Code: (dl )
<meta name="description" content="Kinder- und Jugendtheater Murkelbühne eV, " />

nicht durch:
Code: (dl )
<meta name="description" content="Kinder- und Jugend<span style="color:red;">theater</span> Murkelbühne eV, " />
ersetzt, denn in anderen Tags will ich ja eigentl. nich rumfuschen :- )

MfG, Stefan
Pörl.
styx-cc
 2006-07-21 10:14
#8428 #8428
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Hmmpf,
ich sehe gerade, so wie ich mir das vorstelle wird das nichts...
Die main.tmpl laedt das Menue und den Kopf und danach wird via:
Code: (dl )
<!-- TMPL_INCLUDE_VAR NAME="content" -->

der jeweilige Content nachgeladen, wie soll ich da den Content vor der Ausgabe noch mal manipulieren?

MfG
Pörl.
renee
 2006-07-21 10:51
#8429 #8429
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Mach die ersetzungen nur im Body-Teil. Vielleicht ist CPAN:HTML::HiLiter etwas für Dich!
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
styx-cc
 2006-07-22 19:27
#8430 #8430
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Ahh sehr schoen :- )

Durch dich bin ich ueber CPAN:HTML::HiLiter zu CPAN:HTML::Highlight gekommen, dass ist genau das was ich brauchte :- )

Vielen Dank, Mfg\n\n

<!--EDIT|styx-cc|1153586298-->
Pörl.
styx-cc
 2006-07-22 20:48
#8431 #8431
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Hmm,
HTML::Highlight macht zwar genau das was es soll, aber danach braucht es noch 10-20 sekunden um die Seite zu laden (lokal)...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
       my @highlight = split (/ /, $searched) if $searched;
my @colors = ('#C7FEE7');

my $hl = new HTML::Highlight (
words => [@highlight],
wildcards => [],
colors => [@colors],
czech_language => 0,
debug => 0
);

$output = $hl->highlight($output);

return $output;


Ich hab in der zwischenzeit selber versucht ein paar Regexvarianten durchzuprobieren, aber das will nich so:
Code: (dl )
$output =~ s#>(.*)($_)(\W)?(.*)<#$1<span style=\"color: red;\">$1$2$3$4</span>#gi;


Das HTML::HiLiter hoert sich ja eigentl. auch interessant an, aber der benoetigt einige weiter Module, und das gibt wieder aerger mitm Hochladen aufm Webspace *grml

MfG, Stefan
Pörl.
styx-cc
 2006-07-23 13:12
#8432 #8432
User since
2006-05-20
533 Artikel
BenutzerIn

user image
Geeschafft :- )
Lokal braucht er zwar immer noch 10-20 Sekunden laenger, aber auf Server laeufts dann korrekt..

MfG
Pörl.
<< >> 8 Einträge, 1 Seite



View all threads created 2006-07-20 23:57.