Such Fifi, such!
|
Geschrieben von Beat Rubischon (Link) am
Montag, 15. Oktober 2007, 19:12
aus dem *dig-dig-dig* dept.
Schon lange wollte ich eine Suche für unsere kleine Website bauen. Irgendwie ist es leicht pervers, Google zu fragen, was im eigenen Keller liegt. Aber so wirklich motiviert war ich, als ich realisierte, dass man das Firefox Suchfeld dynamisch erweitern kann.
Der erste Schritt war - dank Debian - ganz einfach:
# apt-get install htdig htdig-doc catdoc pstotext
Das Konfigfile etwas anpassen, damit auch der eigene (und nur der eigene) Server indiziert wird. Laufenlassen, Apache Log beobachten. Schnell habe ich gemerkt, dass da ein rekursiver Loop in meiner Zope Site steckte. Eines der Uebel bei einem objektorientierten CMS. Ich flickte den Fehler gleich mit einem index_html. Meine Bandbreite wird mir danken.
Den Webalizer für meine Statistik kastrierte ich etwas, um die vielen Requests aus eigener Sache zu verheimlichen:
IgnoreAgent htdig
Nun, ht://dig tut, sieht aber noch ziemlich ugly aus. Im Prinzip möchte ich ihn ja in meinem Design haben, also muss ich ihn irgendwie ins Zope reinziehen. Der erste Schritt ist eine Externe Methode, die in das DTML eingebettet werden kann.
Zugegeben, ziemlich hässlich. Ich bin nun einmal kein Python Spezi... Ich brate aus den übergebenen Parametern in REQUEST eine neue Parameterzeile für htdig zusammen. Da os.popen Programme mit Parametern der Shell übergibt, musste ich einen anderen Weg wählen. Ich packe den String in das Environment und execute direkt ein Perlscript. Und Perl, das kenne ich einigermassen.
htdig wird "sauber" gestartet, ohne dass eine Shell dazwischenkommt. Der Output, Perl sei dank, wird auch gleich etwas zurechtgestutzt. W3C ist sonst nicht wirklich happy mit dem HTML.
Das DTML ist absolut simpel.
Noch etwas HTML und CSS, und in meiner Website hat es das gewünschte Suchfeld. Jetzt aber los auf das Suchfeld. Für den nötigen XML gibt es offizielle Spezifikationen und ein paar Muster im Netz. Logischerweise auch bei Wikipedia. Mein Code stand schnell und die Zeile in den HTML Headern auch:
Und die Sache funktioniert - der Pulldownknopf wird blau und "meine" Seite lässt sich als Suchmaschine eintragen:
*strike*
Permalink
|
Das Kleingedruckte: Der Besitzer der folgenden Kommentare ist wer
immer sie eingeschickt hat. Wir sind in keiner Weise für sie
verantwortlich.
-
Re: Such Fifi, such!
Geschrieben von p2501 (Link) am
Dienstag, 16. Oktober 2007, 14:20
Hehehe. Der Python Code ist sauber, aber du hättest ihn etwas kleiner haben können. *g*
---
import os
import urllib
def htsearch(self, REQUEST):
os.environ['FETCH'] = urllib.urlencode(REQUEST)
return os.popen('~/bin/htsearch').read()
---
Übrigens: += gibts in Python auch, und ist auch für Strings erlaubt, wird aber von einigen Programmierern gemieden. Technisch machts keinen Unterschied: Es ist nur eine Kurzform, kein eigenständiger Operator.
|
|