IDLink (Objekt): Unterschied zwischen den Versionen

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen
 
(10 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 17: Zeile 17:
 
  (<b>IDLink</b>)<code>.name</code>  = <code>sp_mylink.link</code>
 
  (<b>IDLink</b>)<code>.name</code>  = <code>sp_mylink.link</code>
  
<div class="note">'''Tip:''' Um auf das Iterator-Item zuzugreifen indem der Link gesetzt wird kann <code>(<b>IDLink</b>)<code>.item.parent</code> verwendet werden. (Liefert in diesem Fall das [[ListItemInformation]]-Objekct <code><b>(A)</b><code>:sp_myiterator[2]</code>)</div>
+
<div class="note">'''''Tip:''' Um auf das Iterator-Item zuzugreifen indem der Link gesetzt ist, kann (<b>IDLink</b>)<code>.item.parent</code> verwendet werden. (Liefert in diesem Fall das [[ListItemInformation]]-Objekt <b>(A)</b><code>:sp_myiterator[2]</code>)''</div>
  
 
Über folgende Objekte ein ein IDLink Objekt erlangt werden:
 
Über folgende Objekte ein ein IDLink Objekt erlangt werden:
 
* <code>link</code>-Attribut des [[ElementNode]]-Objektes
 
* <code>link</code>-Attribut des [[ElementNode]]-Objektes
* <code>referrerLink</code>-Attribute der Objekte [[Article]], [[Resource]], [[Media]]
+
* <code>referrerLinks</code>-Attribute der Objekte [[Article]], [[Resource]], [[Media]]
* <code>referrerLink()</code>-Methode der Objekte [[Article]], [[Resource]], [[Media]]
+
* <code>referrerLinks()</code>-Methode der Objekte [[Article]], [[Resource]], [[Media]]
 +
<div class="note">'''''Beispiel:'''
 +
Es existieren Einrichtungen, die über einen Link ein oder mehreren Kategorien zugeordnet sind.
 +
Nun sollen auf einer Seite "Kategorie" alle mit dieser Kategorie verknüpften Einrichtungen gelistet werden.
 +
<code>
 +
&lt;%-- Alle Einrichtungen listen, welche diese Kategorie verwenden --%&gt; 
 +
&lt;ul&gt;
 +
&lt;sp:loop collection="!{informationpool.einrichtungen}.sortedElements" item="e"&gt; 
 +
&nbsp;
 +
  &lt;sp:condition&gt;
 +
    &lt;sp:if name="parent.anchor" eq="informationpool.themen"&gt;
 +
      &lt;sp:loop collection="e.themenliste" item="it"&gt;
 +
        &lt;sp:if name="it.sp_link.link.name" eq="${name}"&gt;
 +
          &lt;li&gt;&lt;a href="&lt;sp:print name="e.relativeUrl" /&gt;"&gt;&lt;sp:print name="e.name" /&gt;&lt;/a&gt;&lt;/li&gt;
 +
          &lt;sp:break /&gt;
 +
        &lt;/sp:if&gt;
 +
      &lt;/sp:loop&gt;
 +
    &lt;/sp:if&gt;
 +
    &lt;sp:elseif name="parent.anchor" eq="informationpool.zielgruppen"&gt;
 +
      &lt;sp:loop collection="e.zielgruppen" item="it"&gt;
 +
        &lt;sp:if name="it.sp_link.link.name" eq="${name}"&gt;
 +
          &lt;li&gt;&lt;a href="&lt;sp:print name="e.relativeUrl" /&gt;"&gt;&lt;sp:print name="e.name" /&gt;&lt;/a&gt;&lt;/li&gt;
 +
          &lt;sp:break /&gt;
 +
        &lt;/sp:if&gt;
 +
      &lt;/sp:loop&gt;
 +
    &lt;/sp:elseif&gt;
 +
    &lt;sp:elseif name="parent.anchor" eq="informationpool.therapieformen"&gt;
 +
      &lt;sp:loop collection="e.therapieformen" item="it"&gt;
 +
        &lt;sp:if name="it.sp_link.link.name" eq="${name}"&gt;
 +
          &lt;li&gt;&lt;a href="&lt;sp:print name="e.relativeUrl" /&gt;"&gt;&lt;sp:print name="e.name" /&gt;&lt;/a&gt;&lt;/li&gt;
 +
          &lt;sp:break /&gt;
 +
        &lt;/sp:if&gt;
 +
      &lt;/sp:loop&gt;
 +
    &lt;/sp:elseif&gt;
 +
  &lt;/sp:condition&gt; 
 +
&nbsp;
 +
&lt;/sp:loop&gt;   
 +
&lt;/ul&gt;
 +
 
 +
ersetzen durch
 +
 
 +
&lt;%-- Alle Einrichtungen listen, welche diese Kategorie verwenden --%&gt; 
 +
&lt;sp:sort name="sortedList" collection="referrerLinks('sp_link.link')" keys="parent.name"/&gt;&lt;sp:if name="sortedList.size" gt="0"&gt;
 +
  &lt;ul&gt;
 +
  &lt;sp:loop collection="sortedList" item="it"&gt;
 +
    &lt;li&gt;&lt;a href="&lt;sp:print name="it.parent.url"/&gt;"&gt;&lt;sp:print name="it.parent.name"/&gt;&lt;/a&gt;&lt;/li&gt;
 +
  &lt;/sp:loop&gt;
 +
&lt;/ul&gt;&lt;/sp:if&gt;
 +
</code>
 +
</div>
 +
 
 +
 
 +
* <code>referenceLinks</code>-Attribute der Objekte [[Article]], [[Resource]], [[Media]]
 +
* <code>referenceLinks()</code>-Methode der Objekte [[Article]], [[Resource]], [[Media]]
 +
<div class="note">'''''1. Beispiel:'''
 +
Es existieren Artikel, die über einen Link mit dem aktuellen Artikel verknüpft sind.
 +
Nun sollen auf einer Seite alle von diesem Artikel verknüpften Artikel gelistet werden.
 +
<code>
 +
&lt;%-- Sammle alle CityGov-Seiten, die von dem aktuellen Artikel über die Variable "sp_page" (vom Typ Link) verlinkt sind, ein. CityGov-Seiten haben die Variable sp_vv_objectType gesetzt. --%&gt;
 +
&lt;%-- wenn diese Seite eine CityGov-Seite inkludiert, dann zusätzlich VV-Styles und Scripte laden --%&gt;
 +
&lt;sp:filter name="vvPage" collection="system.information.referenceLinks('sp_page.link')" attribute="child.sp_vv_objectType" filter="*"/&gt;
 +
&lt;sp:if name="vvPage.size" gt="0"&gt;
 +
</code>
 +
</div>
 +
 
 +
<div class="note"> ''''' 2. Beispiel:'''
 +
Der Slider-Abschnitt besitzt ein Linkfeld "sp_page". Hierüber findet eine Verknüpfung zu einer anderen Seite statt. Nur wenn dieses Feld gefüllt ist, wird ein Slider angezeigt. Da nun "sp_page" nicht eindeutig ist (andere Templateabschnitte können auch so ein Feld beinhalten), muss zusätzlich geprüft werden, ob sp_page ein Link-Object innerhalb des Template-Abschnitts "Slideshow" ist. Das kann wiederum über das Templateauswahlfeld "sp_iterateType" geprüft werden.
 +
 +
<code>
 +
&lt;%-- wenn diese Seite vom Typ "content" einen Slider inkludiert, dann zusätzliche Scripte laden --%&gt;
 +
&lt;sp:filter name="sliderPage" collection="system.information.referenceLinks('sp_page.link')" attribute="item.parent.parent.parent.sp_iterateType" filter="${!{template.g09.snip.slideshow}}"/&gt;
 +
&lt;sp:if condition="${sp_infoLevel.contains('content')} && ${sliderPage.size} > 0"&gt;
 +
</code>
 +
</div>
  
 
==Attribute==
 
==Attribute==
Zeile 41: Zeile 114:
 
| type
 
| type
 
| [[String]]
 
| [[String]]
| Linktyp (Z.B. <code>link</code>, <code>systemlink</code>
+
| Linktyp (z.B. <code>link</code>, <code>systemlink</code>, ...)
 
| 1
 
| 1
 
|-
 
|-
Zeile 47: Zeile 120:
 
| [[String]]
 
| [[String]]
 
| Variablenname über den der Link erzeugt wurde
 
| Variablenname über den der Link erzeugt wurde
 +
| 1
 +
|-
 +
| locale
 +
| [[Locale]]
 +
| Verwendete Sprache
 
| 1
 
| 1
 
|-
 
|-

Aktuelle Version vom 11. September 2012, 15:45 Uhr

Name

IDLink - Verknüpfung zwischen zwei Elementen

Beschreibung

Der IDLink beschreibt die Verknüpfung zweier Elemente. Elemente können über Links, Systemlinks und Navlinks miteinander verbunden werden. Diese Links werden über Artikelfelder definiert. Mit diesem Objekt können Informationen über die Verknüpfung erfragt werden. Beispielsweise über welches Feld, in welchem Iterator-Element die Verknüpfung definiert ist.

Beispiel: Artikel (A) besitzt einen Link auf Artikel (B)

(A) ----(sp_myiterator[2].sp_mylink.link)----> (B)

Ein IDLink-Objekt für diese Verknüpfung würde folgende Informationen bereitstellen:

(A) <--(parent)-- (IDLink) --(child)--> (B)
(IDLink).type  = link
(IDLink).field = sp_myiterator[2].sp_mylink
(IDLink).item  = SimpleInformation von (A):sp_myiterator[2].sp_mylink
(IDLink).name  = sp_mylink.link
Tip: Um auf das Iterator-Item zuzugreifen indem der Link gesetzt ist, kann (IDLink).item.parent verwendet werden. (Liefert in diesem Fall das ListItemInformation-Objekt (A):sp_myiterator[2])

Über folgende Objekte ein ein IDLink Objekt erlangt werden:

Beispiel:

Es existieren Einrichtungen, die über einen Link ein oder mehreren Kategorien zugeordnet sind. Nun sollen auf einer Seite "Kategorie" alle mit dieser Kategorie verknüpften Einrichtungen gelistet werden.

<%-- Alle Einrichtungen listen, welche diese Kategorie verwenden --%>   
<ul>
<sp:loop collection="!{informationpool.einrichtungen}.sortedElements" item="e">   
 
  <sp:condition>
    <sp:if name="parent.anchor" eq="informationpool.themen"> 
      <sp:loop collection="e.themenliste" item="it">
        <sp:if name="it.sp_link.link.name" eq="${name}">
          <li><a href="<sp:print name="e.relativeUrl" />"><sp:print name="e.name" /></a></li>
          <sp:break />
        </sp:if>
      </sp:loop>
    </sp:if>
    <sp:elseif name="parent.anchor" eq="informationpool.zielgruppen">
      <sp:loop collection="e.zielgruppen" item="it">
        <sp:if name="it.sp_link.link.name" eq="${name}">
          <li><a href="<sp:print name="e.relativeUrl" />"><sp:print name="e.name" /></a></li>
          <sp:break />
        </sp:if>
      </sp:loop>
    </sp:elseif>
    <sp:elseif name="parent.anchor" eq="informationpool.therapieformen">
      <sp:loop collection="e.therapieformen" item="it">
        <sp:if name="it.sp_link.link.name" eq="${name}">
          <li><a href="<sp:print name="e.relativeUrl" />"><sp:print name="e.name" /></a></li>
          <sp:break />
        </sp:if>
      </sp:loop>
    </sp:elseif>
  </sp:condition>   
 
</sp:loop>    
</ul>

ersetzen durch

<%-- Alle Einrichtungen listen, welche diese Kategorie verwenden --%>   
<sp:sort name="sortedList" collection="referrerLinks('sp_link.link')" keys="parent.name"/><sp:if name="sortedList.size" gt="0">
 <ul>
  <sp:loop collection="sortedList" item="it">
    <li><a href="<sp:print name="it.parent.url"/>"><sp:print name="it.parent.name"/></a></li>
  </sp:loop>
</ul></sp:if>


1. Beispiel:

Es existieren Artikel, die über einen Link mit dem aktuellen Artikel verknüpft sind. Nun sollen auf einer Seite alle von diesem Artikel verknüpften Artikel gelistet werden.

<%-- Sammle alle CityGov-Seiten, die von dem aktuellen Artikel über die Variable "sp_page" (vom Typ Link) verlinkt sind, ein. CityGov-Seiten haben die Variable sp_vv_objectType gesetzt. --%> 
<%-- wenn diese Seite eine CityGov-Seite inkludiert, dann zusätzlich VV-Styles und Scripte laden --%> 
<sp:filter name="vvPage" collection="system.information.referenceLinks('sp_page.link')" attribute="child.sp_vv_objectType" filter="*"/> 
<sp:if name="vvPage.size" gt="0"> 

2. Beispiel:

Der Slider-Abschnitt besitzt ein Linkfeld "sp_page". Hierüber findet eine Verknüpfung zu einer anderen Seite statt. Nur wenn dieses Feld gefüllt ist, wird ein Slider angezeigt. Da nun "sp_page" nicht eindeutig ist (andere Templateabschnitte können auch so ein Feld beinhalten), muss zusätzlich geprüft werden, ob sp_page ein Link-Object innerhalb des Template-Abschnitts "Slideshow" ist. Das kann wiederum über das Templateauswahlfeld "sp_iterateType" geprüft werden.

<%-- wenn diese Seite vom Typ "content" einen Slider inkludiert, dann zusätzliche Scripte laden --%>
<sp:filter name="sliderPage" collection="system.information.referenceLinks('sp_page.link')" attribute="item.parent.parent.parent.sp_iterateType" filter="${!{template.g09.snip.slideshow}}"/>
<sp:if condition="${sp_infoLevel.contains('content')} && ${sliderPage.size} > 0">

Attribute

Attribut Type Beschreibung ab IES Version
parent ID ID des Elementes, das als übergeordnet gilt, wenn die Verknüpfung einen Teil einer Baumstruktur abbildet. 1
child ID ID des Elementes, das als untergeordnet gilt, wenn die Verknüpfung einen Teil einer Baumstruktur abbildet. 1
type String Linktyp (z.B. link, systemlink, ...) 1
field String Variablenname über den der Link erzeugt wurde 1
locale Locale Verwendete Sprache 1
item SimpleInformation Item über die der Link erzeugt wurde. 2.1.0
name String Name des Links 2.1.0