bContent - Joomla Content Management

Beitragsinhalt
bContent - Joomla Content Management
bContent Features
Die Idee dahinter
Struktur Definition
Felder
Bindings
Dateneingabe
Frontend und Templates
Diskussion

Frontend und Templates

Bei der Darstellung der generierten bContent Datensätze wollten wir, was das Styling der Artikel angeht, ein Höchstmaß an Flexibilität behalten. Deswegen war sofort klar, dass wir eine Templateengine nutzen werden. Standarmäßig nutzt bContent patTempalte als Template Engine. Die Anpassung für andere Engines wie Smarty oder Savant ist wegen der strikten Trennung von Logik und Layout trivial.

bContent Beispiel DatensatzLinks sehen Sie ein Beispiel für die Darstellung eines bContent Artikels. Die Grafik "Tipp der Redaktion" ist ebenfalls nur ein bContent Feld vom Typ Checkbox.

Dadurch, dass wir auf jedes Feld im Template separat zugreifen können, kann das Styling sehr flexibel gehandhabt werden.

Es besteht ein weiterer "Modus", in dem das bContent Plugin betrieben werden kann. In diesem Modus werden in einer Template-Schleife alle vorkommenden bFields hintereinander eingefügt. Dadurch hat man zwar weniger Arbeit, wenn es an die Templateerstellung geht. Allerdings kann man auch nicht einzelne Felder stylen.

Wir ziehen zur Zeit die Möglichkeit in Betracht, verschiedenen bFields Gruppen zuzuordnen. Diesen Gruppen kann dann die Art der Template-Verarbeitung zugewiesen werden. So könnten nicht nur einzelnen bFields verschiedene bTables zugewiesen werden, sondern kompletten Gruppen.

 

Die Templates basieren wie gesagt auf patTemplate. Ein simpler Vertreter sieht wie folgt aus:

<mos:tmpl name="fields">
## Hier könnten wir Javascript oder ein Stylesheet einbinden
<mos:tmpl name="fieldlist">
{BC_CONTENT}
<div class="one">{BC_ALTER}</div>
</mos:tmpl>
</mos:tmpl>

Hier wird also zunächst der standard Joomla Content ausgegeben, gefolgt von einem Div dessen Inhalt ein bField namens "BC_ALTER" ist. Nicht sehr sinnvoll das Ganze, aber hoffentlich aufschlussreich. 

Ein etwas aufwändigeres Beispiel folgt. Sie können sehen wie praktisch es ist, erst an dieser Stelle individuell auf Bedürfnisse der jeweiligen Datenstrukturen einzugehen. Würden wir diese Abfragen auf einer niedrigeren Abstraktionsstufe durchführen, würde uns der dabei entstehende Overhead daran hindern, flexibel zu bleiben. Das bContent Plugin nutzt das Template Caching von patTemplate. Dadurch wird die aufwändigere Template-Logik nur einmalig geparst, und die Generierung der Seite beschleunigt sich um ca. 20%.

<mos:comment>
/**
* @version $Id: 1.0 05/01/2006
* @package bContent
* @subpackage patTemplate - Template File
* @author Tom Bohacek http://www.bohacek.de
* @copyright Copyright 2007 - Tom Bohacek
**/
</mos:comment>
<mos:tmpl name="fields">
<style >
.zoomer {
display: block;
float:left;
width: 100px;
}
</style>
<mos:tmpl name="fieldlist"> 
{BC_CONTENT}
<table class="contentpaneopen bcontent head" style="margin: 10px 0px 20px 0; clear: both;" border="0" style="border-collapse:collapse;" cellpadding="0" cellspacing="0">
<tr>
<td>
<mos:comment>				
## Hier fragen wir ab ob ein Bild für den Darsteller vorhanden ist
</mos:comment>
<mos:tmpl type="condition" conditionvar="fieldlist.BC_BILDBIG_VALUE">				
<mos:comment>				
## die Regel ist ja, also Bild darstellen
</mos:comment>
<mos:sub condition="__default">
<img src="/images/stories/kinotraum/actors/<mos:var name="copiedVar" copyFrom="fieldlist.BC_BILDBIG_VALUE" />" style="float:left; margin-right: 5px;" title="<mos:var name="copiedVar" copyFrom="fieldlist.BC_BILDBIG_VALUE" />"  alt="<mos:var name="copiedVar" copyFrom="fieldlist.BC_BILDBIG_VALUE" />"/>
</mos:sub>	
<mos:comment>				
## kein Bild vorhanden -> Platzhalter nach Geschlecht zeigen
</mos:comment>
<mos:sub condition="__empty">
<mos:tmpl type="condition" conditionvar="fieldlist.BC_WESEN_VALUE">
<mos:sub condition="Frau">
<img src="/images/stories/kinotraum/actors/af_vide.jpg" style="float:left; margin-right: 5px;" title=""  alt=""/>
</mos:sub>
<mos:sub condition="Mann">
<img src="/images/stories/kinotraum/actors/am_vide.jpg" style="float:left; margin-right: 5px;" title=""  alt=""/>
</mos:sub>
<mos:sub condition="Tier">
<img src="/images/stories/kinotraum/actors/am_vide.jpg" style="float:left; margin-right: 5px;" title=""  alt=""/>
</mos:sub>
</mos:tmpl>
</mos:sub>	
</mos:tmpl>
</td>
<td style="width:350px;">
<p><b class="labels">Name</b> {BC_NAME_VALUE} 
<mos:tmpl type="condition" conditionvar="fieldlist.BC_TODESTAG_JAHR_VALUE">
<mos:sub condition="__empty">
<mos:var name="foo" copyFrom="fieldlist.BC_ACTOR_BDAY_VALUE" modifier="Expression" expression="$self>0" true="($self)" false=""/><br />
</mos:sub>
<mos:sub condition="__default">
(&#10013;)<br />
</mos:sub>
</mos:tmpl>
<mos:tmpl type="simplecondition" requiredvars="BC_GEBURTSTAG_TAG_VALUE" varscope="fieldlist">
<b class="labels">Geburtstag</b>{BC_GEBURTSTAG_TAG_VALUE}.{BC_GEBURTSTAG_MONAT_VALUE}.{BC_GEBURTSTAG_JAHR_VALUE}<br />
</mos:tmpl>					
<mos:tmpl type="simplecondition" requiredvars="BC_GEBURTSORT_VALUE" varscope="fieldlist">
<b class="labels">{BC_GEBURTSORT}</b> {BC_GEBURTSORT_VALUE}<br />
</mos:tmpl></p>
<mos:tmpl type="simplecondition" requiredvars="BC_TODESTAG_TAG_VALUE" varscope="fieldlist">
<b class="labels">Todestag</b> {BC_TODESTAG_TAG_VALUE}.{BC_TODESTAG_MONAT_VALUE}.{BC_TODESTAG_JAHR_VALUE}<br />
</mos:tmpl>
<mos:tmpl type="simplecondition" requiredvars="BC_AWARDS_VALUE" varscope="fieldlist">
<p><b>{BC_AWARDS}</b><br />{BC_AWARDS_VALUE}</p>
</mos:tmpl>		
<mos:tmpl type="simplecondition" requiredvars="BC_HOMEPAGE_VALUE" varscope="fieldlist">
<b class="labels">{BC_HOMEPAGE}</b> {BC_HOMEPAGE_VALUE}<br />
</mos:tmpl>		
<mos:tmpl type="simplecondition" requiredvars="BC_SQL_MITGESPIELT_VALUE" varscope="fieldlist">
<p><b>{BC_SQL_MITGESPIELT}</b><br />{BC_SQL_MITGESPIELT_VALUE}</p>
</mos:tmpl>							
</td>		
</mos:tmpl> 
</table>
</mos:tmpl>



 

B01 realisiert zeitgenössische Online-Kommunikationsmittel.
Wir sind spezialisiert auf OSCMS und unterstützen unsere Kunden vom Konzept bis zum Launch mit Erfahrung und exklusiven Komponenten zur Umsetzung von Communitys, Shops, Portalen und Webseiten.

B01 Kunden

Unsere Ideen, unsere Produkte, unsere Kunden.

B01 empfiehlt:

ZOO Content Construktion Kit

ZOO CCK

Virtuemart Shopsystem

E-Commerce

Joomla SEO

SEO

Joomla Content Editor

Content Editor

Joomla Social Networking

JomSocial