Zentriertes Design und unterschiedlich gestaltete Bereiche der Website lassen sich in Plone einfach realisieren.
#visual-portal-wrapper {
width: 62em;
margin-left: auto;
margin-right: auto;
}
In parts/plone/CMFPlone/skins/plone_templates/main_template.pt:
wird für den body
-Tag eine css-Klasse defniniert, die es erlaubt, unterschiedliche Gestaltungen für einzelne Bereiche der Wwbsite anzugeben:
<body tal:attributes="class string:${here/getSectionFromURL} .">
Dies führt dann z.B. zu folgenden body
-Tag, je nachdem in welchem Bereich sich die gerade aufgerufene Seite befindet:
<body class="section-news">
<body class="section-events">
So lassen sich die Bereiche auch gestalterisch unterscheiden:
body.section-news {
...
}
body.section-events {
...
}
Analog lassen sich auch die Gestaltungen für einzelne Templates unterscheiden:
<body tal:attributes="class ... template-${template/id}; ...">
body.template-frontpage_view {
...
}
Plone bringt einige Javscripts mit, die sich einfach in Templates und Inhalten verwenden lassen.
form_tabbing.js
Um Reiter in Formularen zu erhalten, erwartet dieses Skript folgendes Markup:
<form class="enableFormTabbing">
<fieldset id="fieldset-id1">
<legend id="fieldsetlegend-id1">Tab one</legend>
</fieldset>
<fieldset id="fieldset-id2">
<legend id="fieldsetlegend-id2">Tab two</legend>
</fieldset>
</form>
Alternativ kann auch folgendes Markup verwendet werden:
<dl class="enableFormTabbing">
<dt id="fieldsetlegend-id1">tab one</dt>
<dd id="fieldset-id1">content one</dd>
<dt id="fieldsetlegend-id2">tab two</dt>
<dd id="fieldset-id2">content two</dd>
</dl>
table_sorter.js
Um Tabellen zu sortieren kann dieses Javascript einfach in folgendem Markup verwendet werden:
<table class="listing" id="my-table">
<thead>
<tr>
<th>First Name</th>
<th>Last name</th>
</tr>
</thead>
<tbody>
<tr>
<td>
Veit
</td>
<td>
Schiele
</td>
</tr>
<tr>
<td>
Sönke
</td>
<td>
Löffler
</td>
</tr>
</tbody>
</table>
Beachten Sie bitte, dass das table_sorter.js
-Javascript normalerweise nur angemeldeten Nutzern zur Verfügung steht. Wollen Sie es auch anonymen Nutzern zur Verfügung stellen, sollte Ihr jsregistry.xml
-Profil so aussehen:
<?xml version="1.0"?>
<object name="portal_javascripts" meta_type="JavaScripts Registry">
...
<javascript
cacheable="True"
compression="safe"
cookable="True"
enabled="True"
expression=""
id="table_sorter.js"
inline="False"/>
</object>
Das Skript erwartet die Klasse listing
und eine eindeutige ID für die Tabelle sowie <th>
-Tags innerhalb von <thead>
-Tags.
Soll eine Tabelle der Klasse listing
keine sortierbaren Spalten enthlaten, kann der Tabelle eine Klasse nosort
hinzugefügt werden.
Soll nur eine Spalte innerhalb einer Tabelle nicht sortiert werden können, so kann dem entsprechenden <th>
-Tag die Klasse nosort
zugewiesen werden.
collapsiblesections.js
Dieses Javascript kannn bei folgendem Markup verwendet werden:
<dl class="collapsible">
<dt class="collapsibleHeader">
Title
</dt>
<dd class="collapsibleContent">
Content
</dd>
</dl>
Sobald collapsible
umgeschaltet wurde, erhalt das dl
-Tag eine zusätzliche Klasse, die zwischen collapsedBlockCollapsible
und expandedBlockCollapsible
hin- und herschaltet. Hierfür können Sie dann z.B. folgende CSS-Anweisungen angeben:
.expandedBlockCollapsible .collapsibleContent {
display: block;
}
.collapsedBlockCollapsible .collapsibleContent {
display: none;
}
Wird die collapsedOnLoad
-Klasse dem dl
-Tag hinzugefügt, wird die Definitionsliste bereits beim Laden der Seite ausgeklappt.
Wird die inline
-Klasse für das dl
-Tag angegeben, wird zwischen collapsedInlineCollapsible
und expandedInlineCollapsible
umgeschaltet anstatt zwischen collapsedBlockCollapsible
und expandedBlockCollapsible
.
jQuery
JavaScript-Bibliothek, die die Traversierung und das Event-Handling von HTML-Dokumenten vereinfacht. So lässt sich z.B. in einem Einzeiler angeben, dass alle PDFs in einem neuen Fenster geöffnet werden sollen:
jQuery("#content a[ @href $= '.pdf']").attr('target', '_blank');
Weitere Informationen zu jQuery erhalten Sie unter:
Und mit FireQuery gibt es eine Firefox-Extension, die in Firebug integriert ist.