Zugriff auf interne Details eines Blocks

Fragen zum Erstellen von Templates für webEdition.
manuel
Member
Beiträge: 30
Registriert: Do 9. Jan 2020, 16:17

Zugriff auf interne Details eines Blocks

Beitragvon manuel » Di 23. Nov 2021, 18:11

Hallo zusammen,

ich bereite gerade den Sprung von V8 auf V9 vor. Nun brauche ich an einigen Stellen zwingend den Zugriff auf die "Identifier" der einzelnen Blockelemente (z.B. _3 usw.). Damit kann ich später den Zugriff z. B. auf Select-Boxen im jeweiligen Block-Element regeln (z. B. we_NAME-XYZ_txt[layerstyleblk_rows__3]), weil ich so weiß, wie webEdition die generierten Elemente benennt.

Bis V9 konnten wir die Struktur der Blockelemente recht einfach über we_doc auslesen, so gibt <?php print_r ($GLOBALS["we_doc"]->getElement("rows")); ?> einen Array wie ["_5","_6","_2"] aus und wir haben unsere "Identifier". Jetzt geht das aber nicht mehr, weil we_doc private ist.

Also work-around habe ich versucht, den Block einmal in eine globale Variable zu kopieren:

<we:block name="rows" to="global" nameto="__rows"></we:block>

In V8 würde das so funktionieren, über die globale Variable __rows könnte ich dann wieder die Elemente auslesen -- in V9 erhalte ich eine Fehlermeldung, obwohl die Taghilfe für block die Attribute nameto und to erlaubt. Ist das ein Fehler von WE, der behoben werden könnte?

Oder gibt es eine andere Lösung? Mir fehlt gerade eine zündende Idee - habt Ihr eine?


Beste Grüße


Manuel

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Zugriff auf interne Details eines Blocks

Beitragvon mokraemer » Mi 24. Nov 2021, 16:00

und warum holst du dir nicht die Daten im Block schon in eine Struktur, die du auch verarbeiten kannst?
Einfach über ein to="var[]"
webEdition-Kern-Entwickler

manuel
Member
Beiträge: 30
Registriert: Do 9. Jan 2020, 16:17

Re: Zugriff auf interne Details eines Blocks

Beitragvon manuel » Mo 29. Nov 2021, 17:52

Hallo Marc,

ich brauche ja nicht Daten innerhalb des Blocks, sondern eine Auskunft, wie das aktuelle Element des Blocks "heißt" (wohl immer "_2" oder "_4"). Nur mit diesen Infos kann ich dann z. B. die Select-Boxen so benennen, wie WE das macht.
Und diese Angabe finde ich im Block selbst ja leider nicht heraus...

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Zugriff auf interne Details eines Blocks

Beitragvon mokraemer » Mo 29. Nov 2021, 21:20

Also so ganz kann ich mir keinen Reim darauf machen wofür das gut sein soll. Wenn überhaupt braucht man doch die Position und die bekommt man auch wieder über <we:position/>
Man hat die internen Namen eigentlich früher nur gebraucht um eben auf die Elemente eines Blocks zuzugreifen, weil man früher die Daten nicht anders schreiben konnte.
Also mir fehlt hier aus deiner Beschreibung ein sinnvolles Szenario. Das einzige was sinn machen würde, wäre, wenn du Daten später schreiben willst, dann würdest du aber <we:userInput/> nutzen... Du solltest hier mal klarer machen, warum es die interne ID sein soll/muß.
webEdition-Kern-Entwickler

manuel
Member
Beiträge: 30
Registriert: Do 9. Jan 2020, 16:17

Re: Zugriff auf interne Details eines Blocks

Beitragvon manuel » Di 30. Nov 2021, 16:35

Klar, Marc, gerne.

Zum Beispiel steckt in einem beliebigen Block-Element eine Listview vom Typ Search, also so was <we:listview type="search" name="suche".../>. Die Listview steckt in einem beliebigen Block-Element, und erhält (warum auch immer) nicht automatisch den Request-Parameter "suche" mit dem Keyword übergeben. Stattdessen muss ich (innerhalb des Block-Elements) per PHP der Variable we_lv_search_sucheblk_rows_{ID DES BLOCKS, z.B. _4} den Request Parameter zuweisen. Sonst wird der Request-Parameter bei der Suche nicht berücksichtigt.

Oder an einer anderen Stelle bauen wir (wieder in einem beliebigen Block-Element) im Editmode eine Select-Box selbst zusammen. Damit sie in WE funktioniert, brauchen wir auch hier eine Angabe zur ID des Blocks: <select name="we_XYZ_array[MyCategoriesblk_rows_{ID DES BLOCKS, z.B. _4}][]">.

In beiden Fällen komme ich mit der Angabe der Position nicht weiter, weil das Block-Element mit der ID _4 durchaus an die Position #1 sortiert sein kann.

Ich hoffe, es ist ein wenig klarer.

Und natürlich, ich kann das vermutlich alles umbauen und anders lösen (auch wenn ich im Fall der Suche keinen Schimmer habe, wie das alternativ zu lösen wäre), schöner wäre halt, wenn ich an die ID des Block-Elements rankommen würde - dann könnte ich mir den Aufwand ersparen.

ThomasGoebe

Re: Zugriff auf interne Details eines Blocks

Beitragvon ThomasGoebe » Di 30. Nov 2021, 17:32

Hallo manuel,

eigentlich solltest Du für solche Dinge eigene we:Tags erstellen. Das könnte Dir das Leben einfacher machen. Ich bin da selbst nicht mehr so drin, aber zumindest das Handling der blöcke übernimmt webEdition da ja für Dich. Letztlich kannst Du vom we:select tag abgucken.

Es sollte nach Aussagen im letzten Jahr auch bald eine Art API geben, mit der eigene Module / Apps o.a. gebaut werden können. Armin hatte da was in Arbeit, das hörte sich auch sinnvoll an. Aber ob und wann das kommt, weiss ich nicht.

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Zugriff auf interne Details eines Blocks

Beitragvon mokraemer » Di 30. Nov 2021, 23:05

also das mit der LV ist eher ein Bug; generell lassen sich LV's verschachteln - aber bei der Suche macht das eben keinen Sinn. Dazu braucht es eben nur einen Bug-Eintrag - und eben nicht den Zugriff auf interne Strukturen.

Für das Zweite sollte, wie Thomas schon sagt, entweder ein Custom-Tag gebaut werden, oder eben die Werte die ihr Euch zusammenbaut in <we:select type="csv" values="$vals" name="xx"/> o.ä. eingefügt werden. Und schon bist du fertig.
webEdition-Kern-Entwickler

manuel
Member
Beiträge: 30
Registriert: Do 9. Jan 2020, 16:17

Re: Zugriff auf interne Details eines Blocks

Beitragvon manuel » Mi 1. Dez 2021, 17:55

OK, danke Euch, ich habe einen Eintrag in der Bugbase erstellt. Ich schaue mir die Tage mal an, wie man ein eigenes WE-Tag erstellt.

ThomasGoebe

Re: Zugriff auf interne Details eines Blocks

Beitragvon ThomasGoebe » Mi 1. Dez 2021, 19:11

manuel hat geschrieben: Mi 1. Dez 2021, 17:55 OK, danke Euch, ich habe einen Eintrag in der Bugbase erstellt. Ich schaue mir die Tage mal an, wie man ein eigenes WE-Tag erstellt.
Wenn Du Dich mit den custom Tags beschäftigst, dann erweitere oder ergänze doch direkt die (spärliche) Doku dazu:
https://documentation.webedition.org/en ... e-tags.php

manuel
Member
Beiträge: 30
Registriert: Do 9. Jan 2020, 16:17

Re: Zugriff auf interne Details eines Blocks

Beitragvon manuel » Do 2. Dez 2021, 13:06

@Marc
Potzblitz, das ging ja schnell, danke für's schnelle Fehler beheben! Ich freue mich auf die Version 9.0.10!

@Thomas
Klar, wenn ich den Durchblick bei eigenen Tags habe, kann ich gerne meine Erkenntnisse noch in die Doku einbringen


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

Wer ist online?

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