Zum Inhalt springen

Anchor Navi Korrekte Synthax

Erstellt am 6. November 2014 · 3 Antworten · letzte Antwort am 13. Januar 2015

Tags: Frage

WebBe ·

Hallo Ich bin gerade dabei eine Anker-Navi Funktion zu bauen.
Es sollte ähnlich so funktionieren wie bei Typo3 CMS.

Habe dazu ein eigenes Gridelement gebaut mit einer Property anchorID.

Inerhalb des Objekts gibts allerdings keine Probleme.
Die Property wird ausgelesen und entsprechend gerendert.

Nun möchte ich gerne eine Navigation rendern lassen und irgendwie bekomm ich hier einfahc keinen Output.

Eigentlich will ich folgendes sagen:

Suche auf der aktuellen Seite alle Gridelemente von Typ "eigenes Grid" und nimm die Eigenschaft anchorID und gib mir diese jeweils aus.

meine bisherigen versuche:

1. items = ${q(node).children('Namespace:eigenesGrid').property('anchorID')}
Output: Null

1. items = ${q(node).children('Namespace:eigenesGrid')}
Output: Null

3. items = ${q(node).children().children()}
Output: 5X "eigenes Grid" // Ok ich bin beim Objekt angekommen.

4. items = ${q(node).children().children().property('anchorID')}
Output: NULL

Verschiedene Kombinationen mit isInstanceOf usw. habe ich auch versucht.

Was komisch ist:
items = ${q(node)}
Output: aktueller Seitenname

items = ${q(node).property('title')
Output: NULL

Irgendwie habe ich hier noch nicht etwas ganz verstanden. Es scheint als hätte ich ein Problem mit den Kontexten.

Kann mir jemand erklären was ich hier falsch mache?

toifel ·

children() gibt dir eine Sammlung aller Child-Elemente - die müsstest du noch mal abarbeiten. Innerhalb einer each() Schleife müsstest du mit THIS eine Referenz zu dem gewünschten Objekt und desses properties erhalten.

LucitheR ·

Moin,

Ich stehe genau vor demselben Problem.
Ich habe die Anchor-Tags stumpf als HTML-Elemente in die Seite eingebaut

<a id="whatever"></a>

aber mir ist nicht klar wie ich diese als Schleife in ein NEOS Menü einbauen kann...

kann mir da mal einer helfen? Finde die ts2 reference da nicht sonderlich hilfreich.

WebBe ·

Hallo. Bei mir hat der Kollege einen Bock eingebaut welchen ich nicht bemrekt habe 🙂
Er Fragte nach ner Property im Fluid-Template die es gar nicht gab.

Jedenfalls hier die Lösung:

- Erstelle einen Nodetype (Beispiel VENDOR.PACK.GRIDOBJEKT) welcher von ['TYPO3.Neos.NodeTypes:Column'] erbt und erweitere Ihn mit folgenden Properties:

 properties:
    anchorLink:
      type: string
      ui:
        inspector:
          group: 'dataAttr'
        label: 'Name'
    anchorTagId:
      type: string
      ui:
        inspector:
          group: 'dataAttr'
        ##reloadIfChanged: Fals
        label: 'Link'

Danach das Objekt per TS Laden:

prototype(VENDOR.PACK:GRIDOBJEKT) < prototype(TYPO3.TypoScript:Template){
...

  #ID für Anchor Verlinkung
  anchorTagId = ${q(node).property('anchorTagId')}

...
}

Ein Menu der uns alle Objekte dieses Typs holt:

subMenu = Menu{
  templatePath = 'resource://VENDOR.PACK/Private/Templates/TypoScriptObjects/Navbar.html'
  sectionName = 'subMenu'
  items = ${q(node).find('[instanceof VENDOR.PACK:GRIDOBJEKT]')}
}

und am Schluss die Zwei Fluid-Templates

Das Objekt:

   <div id="{anchorTagId}">
     <ts:render path="contentContainer" />
   </div>

und die Navi:

<f:for each="{items}" as="item">
  <li class="link col-md-6"><a href="#{item.properties.anchorTagId}">{item.properties.anchorLink}</a></li>
</f:for>

NEOS ROCKS!!!