wWeblic::renderItemData

Zeigt ein Strukturelement an, welches rein über Parameter definiert wird

Funktionsaufruf

String renderItemData(String item, Array data, Array options)

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:

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).


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.

 
FAQs
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' =&gt; 'Dynamische Überschrift 4', 'display' =&gt; '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' =&gt; 'Dynamische Überschrift 4', 'display' =&gt; '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**).