Home / Forum / Abfrage wenn Kind in Elternelement

Abfrage wenn Kind in Elternelement

Um Zugang zu den Foren zu erhalten, müssen Sie angemeldet sein

Autor Nachricht

M K

Registriert seit: 24.02.2009

Beiträge: 92

Dienstag, 03. November 2009 10:37:08

hallo,

wie kann ich abfragen ob das aktuell angezeigte element in dem elternelement ({$module_result.content_info.parent_node_id}) ist?

irgenwie so:


{if $current_node_id -> $module_result.content_info.parent_node_id}...

wisst ihr was ich meine?

M K

Registriert seit: 24.02.2009

Beiträge: 92

Dienstag, 03. November 2009 11:57:39

wenn jemand etwas besseres weiß, immer her damit

meine Lösung:

{def $have_children = fetch( 'content', 'list', hash( 'parent_node_id', node_id ))}
	{foreach $have_children as $hc}
	   {if $module_result.content_info.parent_node_id|eq($hc.parent_node_id)}

	   {/if}		
        {/foreach}	

Thomas Köhn

Thomas Köhn

Registriert seit: 05.03.2007

Beiträge: 355

Dienstag, 03. November 2009 12:28:02

Bin mir nicht ganz sicher was du genau vor hast. Kann dir nur soviel sagen, dass jeder Knoten seinen Vater kennt. Über diese Beziehung kannst du jede Vater-Kind-Verwandschaft herausbekommen.

Dein Code führt irgendwie ins nichts. Deine "$have_children" haben alle den gleichen Vater mit der Node-ID "node_id" (aus fetch). Dein Code bringt also, wenn ich mich nicht völlig täusche, so gar nichts.

Dipl. Ing. (FH) M. Sc. Thomas Köhn

http://www.jac-systeme.de - Individuelle WEB-Lösungen
--
http://www.CJW-NETWORK.com/de - Developers united in eZ Publish
http://projects.ez.no/cjw_newsletter - eZ Publish Newsletter Lösung

M K

Registriert seit: 24.02.2009

Beiträge: 92

Dienstag, 03. November 2009 12:35:32

ich will wenn ein kindelement aktiv ist dem vaterelement eine css klasse zuweisen.

wie wäre denn dein codeschnippsel dafür?

momentan hab ich das so:

...
{foreach $navigation as $item}
	{set $have_children = fetch( 'content', 'list', hash( 'parent_node_id', $item.node_id ))}
	{set $item_class = array()}
	{foreach $have_children as $hc}
	{/foreach}	
	{if $module_result.content_info.parent_node_id|eq($hc.parent_node_id)}
	{set $item_class = $item_class|append("active" )}
	{set $current = 1}
	{/if}		
...


es funktioniert auch, ist allerdings bestimmt nicht gerade die geschickteste lösung...

Thomas Köhn

Thomas Köhn

Registriert seit: 05.03.2007

Beiträge: 355

Dienstag, 03. November 2009 14:04:17

Willst du also lediglich wissen, ob dein Knoten Kinder hat und wenn ja möchtest du eine zusätzliche CSS-Klasse hinzufügen. Richtig?

Dipl. Ing. (FH) M. Sc. Thomas Köhn

http://www.jac-systeme.de - Individuelle WEB-Lösungen
--
http://www.CJW-NETWORK.com/de - Developers united in eZ Publish
http://projects.ez.no/cjw_newsletter - eZ Publish Newsletter Lösung

M K

Registriert seit: 24.02.2009

Beiträge: 92

Mittwoch, 04. November 2009 12:40:08

Nicht ganz,

Beispiel:

ich lese einen artikel, jetzt möchte ich dem elternelement (mein menüpunkt) eine css klasse vergeben.

Thomas Köhn

Thomas Köhn

Registriert seit: 05.03.2007

Beiträge: 355

Mittwoch, 04. November 2009 14:34:35

Bin mir immer noch nicht genau sicher was du genau vor hast. Wenn ich dich richtig verstehe möchtest du wissen, ob zu einem bestimmten Knoten ein Kindelement selektiert ist.

- Ordner 1 
   - Ordner 2
      - Artikel 1
      - Artikel 2


Du willst also z.b. für den Ordner 2 wissen, ob Artikel 1 oder 2 aktuell selektiert ist!? Oder du willst für den Ordner 1 wissen, ob der Ordner 2 selektiert ist. Verstehe ich dich jetzt richtig?

Dipl. Ing. (FH) M. Sc. Thomas Köhn

http://www.jac-systeme.de - Individuelle WEB-Lösungen
--
http://www.CJW-NETWORK.com/de - Developers united in eZ Publish
http://projects.ez.no/cjw_newsletter - eZ Publish Newsletter Lösung

M K

Registriert seit: 24.02.2009

Beiträge: 92

Mittwoch, 04. November 2009 15:42:56


-root
   -siteaccess1
      -ordner1
         -artikel1
         -unterordner1
            -artikel1
      -ordner2
         -artikel1
   -siteaccess2
   -siteaccess3
   -siteaccess4


ich möchte jeweils dem aktiven hauptordner des siteaccesses eine css klasse zuweisen, bin ich also in "root/ordner1/unterordner1/artikel1" oder "root/ordner1/unterordner1" soll ordner1 die css class zugewiesen bekommen....

Thomas Köhn

Thomas Köhn

Registriert seit: 05.03.2007

Beiträge: 355

Mittwoch, 04. November 2009 16:23:53

Um zu prüfen, ob dein Knoten ("$meine_node" ein Hauptordner ist und ob der aktuelle Knoten eines seiner Kinder oder Kindeskinder oder ... (usw) ist, würde ich folgende Abfragen machen.

Um alle Knoten im aktuellen Pfad herauszubekommen, nehmen wir $module_result.path zur Hilfe.

Als erstes mußt du rausfinden, ob wir uns überhaupt in einem Hauptordner befinden. Nach deinem letzten Beispiel sind alle Knoten der Tiefe 3 immer Hauptordner (falls auch andere möglich zusätzlich Abfrage des ClassIdentifiers). Wenn es im aktuellen Pfad einen Knoten der Tiefe 4 gibt, sind wir also unterhalb eines Hauptordners. Dabei ist für uns nicht relavant, ob wir in Tiefe 4, 5, 5 oder noch tiefer sind. Der Code "is_set( $module_result.path.4" prüft dies.

Da deine Hauptordner immer Knoten der Tiefe 3 sind, mußt du nun nur noch prüfen, ob dein aktueller Knoten im aktuelles Pfad der Knoten der Tiefe 3 ist. Das machst du mit "$module_result.path.3|eq( $aktuelle_node )".

Das ganze dann noch mit and verknüpfen und fertig!

{if and( is_set( $module_result.path.4 ) , $module_result.path.3|eq( $meine_node ) ) }
...
{/if}


Das ist nur mal so ein Ansatz. Den mußt du dann für speziellere Fälle noch anpassen.

Dipl. Ing. (FH) M. Sc. Thomas Köhn

http://www.jac-systeme.de - Individuelle WEB-Lösungen
--
http://www.CJW-NETWORK.com/de - Developers united in eZ Publish
http://projects.ez.no/cjw_newsletter - eZ Publish Newsletter Lösung

M K

Registriert seit: 24.02.2009

Beiträge: 92

Mittwoch, 04. November 2009 17:38:00

werden ich nachher gleich mal ausprobieren...

Thomas Köhn

Thomas Köhn

Registriert seit: 05.03.2007

Beiträge: 355

Mittwoch, 04. November 2009 20:06:04

Sehe gerade einen kleinen Fehler in der zweiten Abfrage

$module_result.path.3.node_id|eq( $meine_node )

Dipl. Ing. (FH) M. Sc. Thomas Köhn

http://www.jac-systeme.de - Individuelle WEB-Lösungen
--
http://www.CJW-NETWORK.com/de - Developers united in eZ Publish
http://projects.ez.no/cjw_newsletter - eZ Publish Newsletter Lösung

M K

Registriert seit: 24.02.2009

Beiträge: 92

Mittwoch, 11. November 2009 15:00:29

funktioniert einwandfrei

Um Zugang zu den Foren zu erhalten, müssen Sie angemeldet sein