Moin

bekomme ich folgende Meldung: Sorry, you can't access this file directly, parameter "name" is required...
Oki, welche Datei ist gemeint? Die modules.php, denn in der Adressleiste des Browsers steht nach Aufruf des Formulars folgende URL:
http://www.kitmarshop.com/kitmar/modules.php?searchword=dd&name.x=0&name.y=0Die modules.php benötigt aber immer den Parameter "name" um zu wissen, welches Modul überhaupt aufgerufen werden soll. In dem Fall wäre das
name=Search. Die Suche wird also erst garnicht aufgerufen.
In dem Suchformular soll anscheinend der Imagebutton den Namen weitergeben, denn der ist mit den entsprechenden Attributen ausgerüstet:
<input type="image" id="searchsubmit" src="images/search.png" name="name" value="Search" />. Das funktioniert so aber nicht mit dem Eingabefeld-Typ image.
Der Vorschlag von Terraproject wäre eigentlich richtig, wenn das Formular mit
method=POST definiert wäre. Das Suchformular arbeitet aber mit
method=Get und da werden an die URL angehängt Parameter ignoriert.
Im Formular fehlt also erst mal ein zusätzliches verstecktes Feld, welches den Modulnamen übermittelt:
<input type="hidden" name="name" value="Search" />
Wenn man jetzt das Suchformular abschickt, wird zwar das Suchmodul aufgerufen, aber gesucht wird trotzdem noch nichts. Warum?
Das Suchmodul benötigt den Parameter "query" welcher den eigentlichen Suchstring übergibt. Der Parameter kommt aus dem Formulareingabefeld mit dem Namen "query" welches aber in dem Suchformular des Themes fehlt. Stattdessen heisst das Eingabefeld "searchword". Und mit dem Parameter searchword kann das Suchmodul eben nichts anfangen....
Wenn man jetzt also das Eingabefeld umbenennt funktioniert die Suche, so wie sie soll.
Das Formular enthält aber noch mehr, wenn auch nicht so wichtige, Fehler:
- Das in dem Eingabefeld angegebene Attribut maxlength=10 ist unsinnig, wir wollen ja auch längere Begriffe suchen können.
- Das Attribut alt={_SEARCH} im Eingabefeld ist unsinnig, Eingabefelder haben kein alt-Attribut
- Stattdessen würde sich ein alt und ein title-Attribut für den Imagebutton ganz gut machen
- wie oben angemerkt, sind die Attribute name und value beim Imagebutton unnötig
Das Formular muss komplett angepasst dann so aussehen:
<form method="get" action="modules.php?name=Search">
<input type="hidden" name="name" value="Search" />
<input type="text" name="query" id="s" size="30" class="inputbox" value="{_SEARCH}..." onfocus="this.value = '';" onblur="if(this.value=='') this.value='{_SEARCH}...';" />
<input type="image" id="searchsubmit" src="images/search.png" alt="{_SEARCH}" title="{_SEARCH}" />
</form>
Adresse in der Adressleiste mit dem neuen Formular gesendet (gesucht wurde "ee":
http://www.kitmarshop.com/kitmar/modules.php?name=Search&query=ee&x=0&y=0