wWeblic::renderItemData
Zeigt ein Strukturelement an, welches rein über Parameter definiert wird
Funktionsaufruf
Parameter
- item
- Zu verwendendes Element z.B. headline.standard, falls die Funktion innerhalb einer Seite ausgeführt wird oder andernfalls /wGlobalProject/wGlobal/layout/templates/items/headline.standard.wItem.php
- data
- Daten, wie Sie in Seiten über wd:fragment-Elemente übergeben werden.
- options
- Optionen
- executePHPPost [|true]
- Falls vom Cache ausgeschlossenes PHP interpretiert werden soll
- includeItemsProject [|true]
- Falls alle XSLT-Elemente-Templates des Projectes eingebunden werden sollen
- subDirItems
- Falls die Items aus einem Unterverzeichnis genommen werden sollen, z.B. /newsletter
- includeObjectsProject
- Falls alle XSLT-Objekt-Templates des Projectes eingebunden werden sollen
- includeGlobalsProject
- Falls alle globalen XSLT-Templates des Projectes eingebunden werden sollen
- additionalTemplatesToInclude [|Array]
- Weitere einzubindende Templates können als Array übergeben werden.
- pathProjectLayout
- Pfad des Layout-Projektes
- dataViewable
- Daten für Online-/Offline z.B. onlineStatus, from, to
Hinweis zu den Beispielen:
Wenn Sie den PHP-Code innerhalb eines PHP-Quelltext Elementes/Weblics verwenden, übernehmen Sie die öffnenden/schliessenden PHP-Tags nicht, sondern rein den PHP-Code (z.B print-Zeile)!
- Beispiel 1: Innerhalb eines PHP-Elementes einer Seite ein Element über die ID ansprechen
- Beispiel 2: In einem beliebigen PHP-Skript ein Element über den Pfad ansprechen
- Beispiel 3: Google Map über renderItemData ausgeben
- Beispiel 4: "Inhalte aus anderer Seite" über renderItemData ausgeben
- Beispiel 5: "Objekt-Inhalte aus anderer Seite" über renderItemData ausgeben
- Beispiel 6: Seitenkommentare im Objekt-Template über renderItemData ausgeben
- Beispiel 7: Externes Video über renderItemData ausgeben
- Beispiel 8: Bild-Element über renderItemData ausgeben
- Weiterführende Links
Beispiel 1: Innerhalb eines PHP-Elementes einer Seite ein Element über die ID ansprechen
Beispiel:
Quelltext
<?php
// Öffnendes und schliessendes PHP-Tag aus diesem Beispiel nicht übernehmen, sondern nur die print-Zeile:
print wWeblic::renderItemData('headline.text', array('text' => 'Dynamische Überschrift 4', 'display' => 'h4'));
?>Ergebnis
Dynamische Überschrift 4
Beispiel 2: In einem beliebigen PHP-Skript ein Element über den Pfad ansprechen
Beispiel:
Quelltext
<?php
print wWeblic::renderItemData('/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/items/headline.text.wItem.php', array('text' => 'Dynamische Überschrift 4', 'display' => 'h4'));
?>Beispiel 3: Google Map über renderItemData ausgeben
Beispiel:
Quelltext
<?php
// Beachten Sie, dass je nach Aufruf der Map (mit Koordinaten oder Adresse) ggf. ein anderer GoogleMap API-KEY erforderlich ist!
print '<script src="/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/scripts/jquery.js"></script>';
$itemData = array(
'title' => '',
'display' => '',
'maptype' => 'ROADMAP',
'width' => '',
'height' => '',
'zoom' => '10',
'longtitude' => '8.8321670',
'latitude' => '47.7637000',
'address' => '',
'infoContent' => '',
'infoContentCSS' => '',
'showInfoAlways' => '',
'iconMarker' => '',
'kmlUrl' => '',
'dirLocations' => '',
'listingOfCurrentPage' => '',
'filterOperator' => 'and',
//'filters' => array(),
'disableScrollwheel' => '',
'hideMarker' => '',
'showLinkRoute' => '',
'showLinkRouteBelow' => '',
'showRouteGeoLocation' => ''
);
$itemOptions = array('additionalTemplatesToInclude' => array('/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/items/script.html.wItem.php'));
print wWeblic::renderItemData('/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/items/map.google.wItem.php', $itemData, $itemOptions);
?>Beispiel 4: "Inhalte aus anderer Seite" über renderItemData ausgeben
Beispiel:
Quelltext
<?php
$itemOptions = array( 'path' => '/[IHR-INHALTS-PROJEKT]/wGlobal/content/elements/kontaktinformationen.php',
'groupId' => 'content1'
);
$options = array('includeItemsProject' => true);
print wWeblic::renderItemData('/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/items/content.includeGroup.wItem.php', $itemOptions, $options);
?>Beispiel 5: "Objekt-Inhalte aus anderer Seite" über renderItemData ausgeben
Beispiel:
Quelltext
<?php
$itemOptions = array( 'path' => '/[IHR-INHALTS-PROJEKT]/aktuelles/meldungen/klimaresonanzfenster.php',
'groupId' => 'content1'
);
$options = array('includeItemsProject' => true, 'includeObjectsProject' => true);
print wWeblic::renderItemData('/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/items/content.includeGroup.wItem.php', $itemOptions, $options);
?>Beispiel 6: Seitenkommentare im Objekt-Template über renderItemData ausgeben
Beispiel:
Quelltext
<?php
// additionalTemplatesToInclude ab CMS-Version 011.001.163.000 einsetzbar
print wWeblic::renderItemData('userContent.comments', array(
'allowToComment' => 'ifIsLoggedIn',
'showComments' => 'ifIsLoggedIn',
'hasToBeReleasedAfterCreate' => '',
'emailToReleaseAfterCreate' => '',
'emailToAfterCreate' => '',
'userAdmin' => '',
'groupsAdmin' => '',
'allowToEditCommentByUser' => '1',
'allowToDeleteCommentByUser' => '',
'allowRespondToComments' => '',
'spamProtection' => 'honeypot',
'emailToInformAfterCreate' => '',
'emailFrom' => '',
'emailToNotifyComment' => ''
), array('additionalTemplatesToInclude' => array('/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/misc/comments.global.php')));
?>Beispiel 7: Externes Video über renderItemData ausgeben
Beispiel:
Quelltext
<?php
/* Soll für das Externe Video die 2-Klick Lösung angezeigt werden,
dann muss die Option includeItemsProject auf true gesetzt werden.
*/
print wWeblic::renderItemData('video.external', array(
'clip' => 'https://www.youtube.com/watch?v=mGQLXRTl3Z0',
), array('includeItemsProject' => true));
?>Beispiel 8: Bild-Element über renderItemData ausgeben
Beispiel:
Quelltext
<?php
$itemOptions = array('picture' => '<img class="picture" src="/default-wAssets/img/banner-weblication.jpg"/>',
'title' => htmlspecialchars("Weblication® Banner!"),
'layout' => '0',
'layoutQuality' => '70',
'pictureArea' => ''
);
$options = array('pathProjectLayout' => '/default-wGlobal'
);
print wWeblic::renderItemData('/default-wGlobal/wGlobal/layout/templates/items/picture.standard.wItem.php', $itemOptions, $options);
?>Wichtige Hinweise
Beachten Sie, daß beim Einsatz von Javascript und CSS in den Elementen diese ggf. bei Nutzung über eine eigene PHP-Seite manuell zur Funktion eingebunden werden müssen. Sofern die o.g. Funktion z.B. über ein PHP-Skript Element/Weblic® innerhalb eines BASE Projektes eingebunden wird, sollten JS und CSS in den meisten Fällen schon dynamisch in die Seite generiert werden.
Sofern im XSL-Template eines Weblics® ein call-template Aufruf gesetzt wird, muß dieser gegen einen php:function Aufruf ersetzt werden (wie z.B. beim aktuellen Google™ Maps und Ansprechpartner Weblic® für widthCurrentElement umgesetzt).
Je nach Verschachtelung eines Elementes müssen manche Elemente anstatt über wWeblic::renderItemData() über wWeblic::renderItemStr() umgesetzt werden (z.B. Akkordeon-Container).
Weiterführende Links
Hinweis
Beim Einsatz von Framework-Funktionen in eigenen Skripten beachten Sie bitte den Artikel "So verwenden Sie das PHP-Framework in eigenen Scripten".
Wenn Sie eine Funktion innerhalb einer Weblication® Seite z.B. über das PHP-Quelltext Element oder in einem XSL-Template über wsl:php einbinden, muss das Framework über die grid.php nicht mehr referenziert werden.
- Wofür ist wWeblic::renderItemData da?
- Mit **wWeblic::renderItemData** wird ein **Strukturelement** ausgegeben, das **rein über Parameter** definiert wird.
- Wie lautet die Signatur von renderItemData?
- Der Funktionsaufruf lautet: <code class="codeInline">String renderItemData(String item, Array data, Array options)</code>
- Was bedeutet der Parameter "item" bei renderItemData?
- <code class="codeInline">item</code> ist das **zu verwendende Element**, z. B. <code class="codeInline">headline.standard</code>. Je nach Kontext wird entweder ein Elementname verwendet (wenn die Funktion innerhalb einer Seite ausgeführt wird) oder ein **voller Pfad zur wItem.php** (z. B. <code class="codeInline">/wGlobal/layout/templates/items/headline.standard.wItem.php</code>).
- Welche Rolle spielt der Parameter "data"?
- <code class="codeInline">data</code> enthält die **Daten**, die an das Element übergeben werden (z. B. Werte aus <code class="codeInline">wd:fragment</code>-Elementen in Seiten).
- Welche Optionen steuern das Rendering in renderItemData?
- Über <code class="codeInline">options</code> können u. a. folgende Aspekte gesteuert werden: - **executePHPPost**: ob PHP interpretiert werden soll (Default: <code class="codeInline">true</code>) - **includeItemsProject**: ob die **XSLT-Element-Templates** des Projektes eingebunden werden sollen - **includeObjectsProject**: ob die **XSLT-Objekt-Templates** des Projektes eingebunden werden sollen - **includeGlobalsProject**: ob die **globalen XSLT-Templates** eingebunden werden sollen - **additionalTemplatesToInclude**: zusätzliche einzubindende Templates als Array - **pathProjectLayout**: Pfad des Layout-Projektes - **subDirItems**: Items aus einem **Unterverzeichnis** (z. B. <code class="codeInline">/newsletter</code>) nutzen
- Was bedeutet die Option executePHPPost?
- Mit <code class="codeInline">options['executePHPPost']</code> kann gesteuert werden, ob **PHP interpretiert werden soll**, insbesondere für Fälle, in denen Inhalte vom Cache ausgeschlossen sind. Vorgesehen ist <code class="codeInline">true</code> als Standard.
- Wann sollte includeItemsProject auf true gesetzt werden?
- Wenn für ein Element die zugehörigen **XSLT-Element-Templates des Projektes** eingebunden werden sollen. Beispiel: Bei der **2-Klick Lösung** für ein externes Video muss <code class="codeInline">includeItemsProject</code> auf <code class="codeInline">true</code> gesetzt werden.
- Was bewirkt includeObjectsProject?
- Wenn <code class="codeInline">includeObjectsProject</code> auf <code class="codeInline">true</code> gesetzt wird, werden alle **XSLT-Objekt-Templates** des Projektes eingebunden.
- Was bewirkt includeGlobalsProject?
- Wenn <code class="codeInline">includeGlobalsProject</code> auf <code class="codeInline">true</code> gesetzt wird, werden alle **globalen XSLT-Templates** eingebunden.
- Wofür ist additionalTemplatesToInclude gedacht?
- <code class="codeInline">additionalTemplatesToInclude</code> erlaubt das **nachträgliche Einbinden weiterer Templates** über ein Array, z. B. um zusätzliche Renderer/Teile einzuschließen (z. B. Kommentare-Template über einen weiteren Template-Pfad).
- Wie kann subDirItems genutzt werden?
- Über <code class="codeInline">subDirItems</code> kann angegeben werden, dass Items aus einem **Unterverzeichnis** genommen werden sollen, z. B. <code class="codeInline">/newsletter</code>.
- Wie kann ich den Aufruf von renderItemData innerhalb eines PHP-Quelltext-Elements verwenden?
- Wenn du PHP-Code innerhalb eines **PHP-Quelltext Elements / Weblics** verwendest, dann **übernimm die öffnenden/schließenden PHP-Tags nicht**, sondern nur den PHP-Code, z. B. nur die <code class="codeInline">print</code>-Zeile: <pre><code class="codeBlock" style="color: #000000">php print wWeblic::renderItemData('headline.text', array('text' => 'Dynamische Überschrift 4', 'display' => 'h4')); </code></pre>
- Wie kann ich ein Element über einen Pfad ansprechen (statt über einen Item-Namen)?
- Du kannst <code class="codeInline">item</code> auch als Pfad zur passenden <code class="codeInline">wItem.php</code> übergeben, z. B.: <pre><code class="codeBlock" style="color: #000000">php print wWeblic::renderItemData('/[IHR-LAYOUT-PROJEKT]/wGlobal/layout/templates/items/headline.text.wItem.php', array('text' => 'Dynamische Überschrift 4', 'display' => 'h4')); </code></pre>
- Wie kann ich mit renderItemData Inhalte aus einer anderen Seite ausgeben?
- Dafür wird typischerweise ein **content.includeGroup.wItem.php** verwendet und als <code class="codeInline">item</code> ein Layout-Template angesprochen. In <code class="codeInline">itemOptions</code> werden u. a. <code class="codeInline">path</code> (Pfad zum Inhaltsfile) und <code class="codeInline">groupId</code> übergeben, z. B. mit <code class="codeInline">includeItemsProject</code> auf <code class="codeInline">true</code>.
- Wie kann ich Objekt-Inhalte aus einer anderen Seite ausgeben?
- Analog zu Inhalten aus anderer Seite, jedoch typischerweise zusätzlich mit <code class="codeInline">includeObjectsProject => true</code>, sodass Objekt-Templates aus dem Projekt eingebunden werden. Dafür wird ebenfalls über <code class="codeInline">content.includeGroup.wItem.php</code> gearbeitet.
- Wie kann ich ein Google-Map Element über renderItemData ausgeben?
- Indem du das Map-Item-Template aufrufst (z. B. <code class="codeInline">map.google.wItem.php</code>) und in <code class="codeInline">data</code> die benötigten Parameter (z. B. Koordinaten oder Adresse) übergibst. Je nach Aufruf (Koordinaten vs. Adresse) kann ggf. ein anderer **Google Maps API-Key** erforderlich sein.
- Wie kann ich in renderItemData ein externes Video ausgeben?
- Über ein geeignetes Item (z. B. <code class="codeInline">video.external</code>) und das <code class="codeInline">clip</code>-Argument (YouTube-Link). Für die **2-Klick Lösung** sollte <code class="codeInline">includeItemsProject</code> auf <code class="codeInline">true</code> gesetzt werden.
- Wie kann ich mit renderItemData ein Bild (Picture Element) ausgeben?
- Indem du das <code class="codeInline">picture.standard.wItem.php</code>-Template übergibst und die Bilddaten in <code class="codeInline">data</code> (z. B. <code class="codeInline">picture</code>, <code class="codeInline">title</code>, <code class="codeInline">layout</code>, <code class="codeInline">layoutQuality</code>) sowie passende Layout-Pfade in <code class="codeInline">options</code> setzt (z. B. <code class="codeInline">pathProjectLayout</code>).
- Welche wichtigen Hinweise gibt es zum Einsatz von Javascript und CSS?
- Wenn in Elementen **Javascript und CSS** verwendet werden, müssen diese ggf. bei Nutzung über eine **eigene PHP-Seite manuell** eingebunden werden. Wenn <code class="codeInline">renderItemData</code> über ein PHP-Skript/Weblic innerhalb eines Projektes eingebunden wird, werden JS und CSS in den meisten Fällen bereits dynamisch in die Seite generiert.
- Müssen call-template Aufrufe in XSL-Templates ersetzt werden?
- Ja. Sofern im **XSL-Template** ein <code class="codeInline">call-template</code> Aufruf gesetzt ist, muss dieser gegen einen **<code class="codeInline">php:function</code>** Aufruf ersetzt werden (z. B. bei bestimmten Anpassungen wie <code class="codeInline">widthCurrentElement</code> in Maps/Ansprechpartner-Beispielen).
- Wann sollte ich statt renderItemData andere Funktionen nutzen?
- Je nach Verschachtelung eines Elements müssen manche Elemente statt über <code class="codeInline">wWeblic::renderItemData()</code> ggf. über <code class="codeInline">wWeblic::renderItemStr()</code> umgesetzt werden (z. B. bei **Akkordeon-Containern**).