Suchfeld (manuell) einbauen und bearbeiten
am 10.03.2010 - 20:24 Uhr in
Hallo,
folgende Situation: Ich soll ein Wordpress Theme möglichst originalgetreu in ein Drupal Template verwandeln. Der Großteil ist bereits fertig, ein dazu passendes Template habe ich einfach umgestaltet. Jetzt sind also nur noch Feinheiten dran. Mit Ausnahme der Suche, denn die bekomm ich leider nicht richtig hin. :(
Das Template hat von Haus aus keine eigene "search-theme-form.tpl.php" - das wäre auch nicht weiter tragisch, dann lasse ich den Code einfach in die page.tpl.php drin. Der Suchfeldcode beinhaltet jetzt:
<div id="searchform">
<input type="text" name="search_theme_form" id="edit-search-theme-form-l" size="25" value="Suchen »" title="Enter the terms you wish to search for." />
<input type="submit" value="Suchen" id="edit-submit-search" name="op" />
<?php
print $search["hidden"];
?>
In der CSS steht dazu:
#searchform {
position: absolute;
right: 10px;
bottom: 6px;
}
#edit-search-theme-form-l {
padding: 2px;
font-size: 14px;
line-height: 14px;
width: 200px;
border: 1px inset #eee;
color: #666;
}
#edit-submit-search {
font-size: 14px;
line-height: 14px;
width: 66px;
height: 24px;
background: url(images/searchsubmit.png);
border: none;
text-indent: -9999px;
}
Das passiert: Die Suche wird grafisch angepasst und auch richtig platziert. Ins Suchfeld selbst kann ich ohne Probleme Text eingeben. Aber wennn ich [Enter] klicke oder mit der Maus auf den Suchbutton klicke passiert nichts. Leider bin ich auch noch nicht der PHP und Drupal-Crack.
Frage: Warum passiert nichts und wie kann ich das möglicherweise ändern? Und wie kann ich das in einer search-theme-form.tpl.php einfügen, sodass es auch über die Optionen des Themes aus- und eingeschalten werden kann?
Vielen Dank für eure Hilfe =)
Grüße
PH
- Anmelden oder Registrieren um Kommentare zu schreiben
Formular unvollständig
am 11.03.2010 - 08:33 Uhr
Hallo PH,
es sieht so aus, als ob dein Formular unvollständig wäre. Du hast zwar ein Eingabefeld und einen Button, aber kein Formular drumrum, das deine Angaben auch abschicken würde. Hier im Drupalcenter sieht der Code für das Suchfeld so aus:
<?php
<form action="/search" method="post" id="search-form" class="search-form">
<strong>Drupal</strong>Center durchsuchen:<br>
<div style="float: left; padding-top: 2px; padding-right: 2px;">
<input class="input-text" value="" size="14" name="keys" type="text"></div>
<div><input value="Go!" name="op" title="Search" alt="Seite durchsuchen" type="submit">
</div>
<input value="de34f7fddb213a76e28cc766a2dbc840" name="form_token" type="hidden">
<input value="search_form" id="edit-search-form" name="form_id" type="hidden">
</form>
?>
Neben dem Suchfeld im Theme gibt es auch noch einen standardmäßigen Such-Block. Evtl. lässt sich der auch ohne Eingriffe ins Theme für deine Zwecke verwenden.
Fehler bei der Gültigkeitsüberprüfung
am 13.03.2010 - 12:58 Uhr
Hallo,
danke für die rasche Antwort. Es tut sich zumindest was wenn ich jetzt was suchen möchte. ;)
Allerdings ergibt sich jetzt ein neues Problem. Denn egal was ich suche, es erscheint immer folgender Text:
Fehler bei der Gültigkeitsüberprüfung, bitte erneut versuchen. Falls der Fehler bestehen bleibt, wenden Sie sich bitte an den Administrator der Website.
Mittlerweile sieht der Text so aus:
<form action="/search" method="post" id="search-form" class="search-form">
<div id="searchform">
<input class="input-text" value="" size="14" name="keys" type="text" id="edit-search-theme-form-l">
<input value="Go!" name="op" title="Search" alt="Seite durchsuchen" type="submit" id="edit-submit-search">
</div>
<input value="de34f7fddb213a76e28cc766a2dbc840" name="form_token" type="hidden">
<input value="search_form" id="edit-search-form" name="form_id" type="hidden">
</form>
Warum geht das nicht? Ich habe Test-Artikel und Testseiten erstellt und diese mit Inhalten gefüllt. Ein Cronlauf ist auch schon durch und generell sind auch 100% in der Suche indiziert, laut Einstellungen > Sucheinstellungen. Getestet auf einem Lokalserver und einem Webserver mit jeweils Drupal Version 6.15...
Hi <input
am 13.03.2010 - 13:36 Uhr
Hi
<input value="de34f7fddb213a76e28cc766a2dbc840" name="form_token" type="hidden">
die FAPI generiert dir einen Token pro Formular Abruf. Wenn du den Token nochmal benutzt geht es nicht. Das soll die Übernahme des Formulars in spätere, vielleicht illegale Aufrufe verhindern und auch so etwas wie Double Posts.
Von daher kannst du ein Suchformular nicht einfach so kopieren und musst immer über die FAPI gehen.
Schau dir mal an, was Garland mit dem Suchformular macht.
Hallo, puh, das ist (für
am 14.03.2010 - 14:03 Uhr
Hallo,
puh, das ist (für mich) schwieriger als ich erwartet hatte. Die API's habe ich mir mal angesehen, aber schlau werde ich daraus nicht...
Also hab ich weiter gesucht. Hier habe ich das gefunden:
<input id="<?=$form['#build_id']?>" type="hidden" value="<?=$form['#build_id']?>" name="form_build_id"/>
<input id="<?=$form['form_token']['#id']?>" type="hidden" value="<?=$form['form_token']['#default_value']?>" name="form_token"/>
<input id="<?=$form['form_id']['#id']?>" type="hidden" value="<?=$form['form_id']['#value']?>" name="form_id"/>
Aber das bringt mich nicht weiter. Denn wenn ich das so einbaue zeigt er mir im ausgeführten Quelltext - also wenn ich die Seite lade - folgenes an:
<form action="" method="post" id="search-form" class="search-form">
<div id="searchform">
<input class="input-text" value="" size="14" name="keys" type="text" id="edit-search-theme-form-l">
<input value="Go!" name="op" title="Search" alt="Seite durchsuchen" type="submit" id="edit-submit-search">
</div>
<input id="<?=$form['#build_id']?>" type="hidden" value="<?=$form['#build_id']?>" name="form_build_id"/>
<input id="<?=$form['form_token']['#id']?>" type="hidden" value="<?=$form['form_token']['#default_value']?>" name="form_token"/>
<input id="<?=$form['form_id']['#id']?>" type="hidden" value="<?=$form['form_id']['#value']?>" name="form_id"/>
</form>
Anders gesagt, das wird gar nicht erst ausgeführt.
Außerdem vermute ich ein Problem mit form acion="", denn er lädt gerade nur erneut die Startseite (bzw. wenn ich was reinschreibe die entsprechende Unterseite).
Das ist mir irgendwie noch zu hoch... =)