Ärger mit we:search

Fragen zum Erstellen von Templates für webEdition.
manolo
Senior Member
Beiträge: 272
Registriert: Mi 11. Jun 2003, 16:55
Wohnort: Bayreuth
Kontaktdaten:

Ärger mit we:search

Beitragvon manolo » Mi 23. Aug 2017, 16:18

Hallo zusammen,

ich habe gerade etwas Ärger mit der Suchfunktion we:search – hier sollen alle Dokumente mit einem bestimmten Stichwort als Listview angezeigt werden. Grundsätzlich arbeiten wir dabei immer mit Template-Snippets, die vom Redakteur in einem we:block zusammengesetzt werden.

In einem dieser Snippets erzeuge ich ein Formular mit <we:search type="textinput" name="suche" /> ein Feld für ein Keyword, nach dem gesucht werden soll. webEdition macht daraus ein Konstrukt wie

Code: Alles auswählen

<input class="form-control keyword" value="gottes" placeholder="z. B. Karwendelmarsch" name="we_lv_search_sucheblk_rows__11" type="text">
der Name des Feldes ( we_lv_search_sucheblk_rows__11 ) variiert hier immer, je nachdem, wann das Formular im Block angelegt wurde. Soweit so gut. Nun wird das Formular an eine Zielseite abgesendet, die Variable von we_lv_search_sucheblk_rows__11 wird per Post übergeben und kommt auch auf der Zielseite mit der Listview an.

Auf der Zielseite gibt es jetzt auch mehrere Block-Elemente, und in einem dieser Block-Elemente steckt eine Funktion, die die Suche auswerten soll, z. B.

Code: Alles auswählen

<we:ifSearch name="suche" set="true">Suche nach <we:search type="print" name="suche" xml="true"/></we:ifSearch>
Und jetzt kommt's: wenn das Formular und die Suchfunktion nicht die gleiche Nummer im Block haben, erkennt die Suche anscheinend nicht, das ein Wert übergeben wurde und zeigt gar nichts an. Nur wenn das Formular-Elemente und das Auswertungselement im Block zufällig die gleiche Nummer haben, wird was angezeigt. Das funktioniert z. B., wenn das Formular und die Zielseite identisch sind. Und das geht in meinem Fall leider nicht, ich brauche auf jeden Fall unterschiedliche Seiten mit unterschiedlichen Block-Elementen (einmal mehr Text, einmal weniger).

Weiß jemand von Euch, wie ich dieses Problem lösen kann?

1000 Dank für Eure Hilfe!

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Ärger mit we:search

Beitragvon blickfang » Mi 23. Aug 2017, 17:19

Hi Manolo,

das macht Sinn, da die Suchfunktion immer nach einem übergebenen Parameter ausgewertet wird, dessen Name Du angeben musst. Wenn Du also

Code: Alles auswählen

<we:ifSearch name="suche" set="true">
in einem Block stehen hast, kann ich mir gut vorstellen, dass webEdition den internen name="suche" auch zu name="meinblock_sucheblk__4711" o.ä umbaut und damit eine positive Auswertung nur dann statt findet, wenn die beiden Namen der unterschiedlichen Blöcke (senden/empfangen) zufällig gleich sind, weil Sie an gleicher Stelle stehen "...__{position}"

Gruß
Timo
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

manolo
Senior Member
Beiträge: 272
Registriert: Mi 11. Jun 2003, 16:55
Wohnort: Bayreuth
Kontaktdaten:

Re: Ärger mit we:search

Beitragvon manolo » Do 24. Aug 2017, 11:11

Danke, Timo. Also ich hab das jetzt grob so gemacht:

Das Formularfeld wird nicht mit we:search aufgebaut, sondern "von hand" als Feld "keyword". Auf der Zielseite kenne ich jetzt wenigstens den Namen der Variable ("keyword" im Gegensatz zu we_lv_search_sucheblk_rows__4711) im Request. Diesen Wert speichere den Wert von Feld "keyword" in "we_lv_search_sucheblk_rows_[Name/ID des aktuellen Blocks]". Die Herausforderung besteht darin, rauszukriegen, wie der Name des aktuellen Blocks ist, hier muss man $GLOBALS["we_doc"]->getElement("rows") auswerten ("rows" ist der Name des Blocks).

– furchtbar umständlich, wie ich meine.

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Ärger mit we:search

Beitragvon blickfang » Do 24. Aug 2017, 12:34

hm, ich checks noch nicht so ganz was Du genau machst...
Welchen Name/Id von welchem Block musst Du wo wissen?
Das Problem wird sein, dass Du für die <we:listview type="search" name="manuelles KeywordFeld"> den Name nicht maniupulieren kannst, da der ja auch von <we:block> geändert wird. Was Du vielleicht machen könntest, wäre vo Deinem <we:listview> die Request-variable "keyword" auf den erforderlichen Name hin zu manipulieren, der in der Listview dann erwartet wird.

Den Name bzw. die Position des Blocks bekommst Du mit <we:position> heraus und könntest Dir das evtl. dann vor der Listview zusammenbauen... Ansatz:

Code: Alles auswählen

<we:block name="rows" >
<we:position type="block" reference="listviewblock" to="gobal" nameto="position" />

<?php
	$_REQUEST['we_lv_search_sucheblk_rows__' . $GLOBALS['position']] = $_REQUEST['keyword']; 
?>

<we:listview type="search" name="suche">
..
</we:listview>
<?php 
</we:block>
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

manolo
Senior Member
Beiträge: 272
Registriert: Mi 11. Jun 2003, 16:55
Wohnort: Bayreuth
Kontaktdaten:

Re: Ärger mit we:search

Beitragvon manolo » Fr 1. Sep 2017, 15:48

Timo, so ähnlich habe ich das umgesetzt. Nur finde ich, das ist wirklich ziemlich umständlich: we:search mit Blocks...


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 20 Gäste