cms how to

[[ezpublish]]

Zuletzt angesehen: » ezpublish_problems » welcome » ezpublish_extensions_packages » syntax » typo3_snippets » perfektescms » ezpublish

Anmelden

Geben Sie Ihren Benutzernamen und Ihr Passwort in das Formular unten ein, um sich anzumelden. Bitte beachten Sie, dass dafür „Cookies“ in den Sicherheitseinstellungen Ihres Browsers erlaubt sein müssen.

Anmelden

Allgemeines


Was sollte diese Zusammenfassung erklären?

  1. Anlegen eines neuen Siteaccess
    1. Deaktivieren der Online Registrierung (wichtig!!!)
  2. Anpassen der Templates
  3. Anpassen der Navigation
    1. Frontend
      1. Einstellungen
      2. Sprachabhängige Navigation
    2. Backend
      1. verschiedene Klassen anzeigen
  4. Verwendung der Suche
  5. Mehrsprachigkeit
  6. Verwendung von Funktionen
  7. Kontaktformular
    1. per sendmail
    2. an verschiedene Empfänger
    3. Verwendung von Formularen und deren Validierung
  8. Ausgaben anpassen ( limit, sort, classes )
  9. Workflow & Notifications Beine machen

Seiteaccess einrichten


Die Datei site.ini.append.php existiert in dem Ordner override und in jedem siteaccess. Die Abarbeitung erfolgt vom siteaccess hin zur override. Somit überschreibt die override Einstellung alle vorher gemachten Angaben.

settings\override\site.ini.append.php
AvailableSiteAccessList[]=de
AvailableSiteAccessList[]=en
settings\de\site.ini.append.php
[SiteAccessSettings]
RelatedSiteAccessList[]=de
RelatedSiteAccessList[]=de_admin

Für den Benutzer anonymous müssen am Ende die Zugriffsrechte für den neuen siteaccess freigeschaltet werden

[Admin Menü] → [Benutzer und Rechte] → [Rollen und Richtlinien] → [Anonymous] → [login bearbeiten]

SiteAccess( de , en )

Deaktivieren der Online Registrierung (wichtig!!!)

[SiteAccessRules]
Rules[]
Rules[]=access;enable
Rules[]=moduleall
Rules[]=access;disable
Rules[]=module;user/register

Settings

settings/siteaccess/[PAGE] oder[PAGE]_admin]
Datei Erläuterung
site.ini.append.php [Site Settings] Eingabe von Metadaten
menu.ini.append.php [TopAdminMenu] Auswahl der anzuzeigenden Navigationspunkte im Admin Menü
[MenuSettings] Einstellungen der Navigationstypen
design.ini.append.php [StylesheetSettings] CSS Dateien festlegen
override.ini.append.php [StylesheetSettings] festlegen der Templates
icon.ini.append.php Setzen neuer Icons ( geht der override nicht die Datei /share/icons/[ICONSET]/icon.ini editieren )

Debugging (de)aktivieren

[DebugSettings]
Debug=inline|popup
DebugOutput=enabled
DebugRedirection=disabled

Debugging Einstellungen

E-Mail

Um Kontaktformulare, Registrierung und anderen Funktionen zu Testen, bei denen ein E-Mail Versand stattfindet, auch ohne funktionierenden Mail Server zu testen, kann man die E-Mails als Datei abspeichern. Speicherort der Dateien ist var/log/mail

[MailSettings]
Transport=file|sendmail

Templates

[TemplateSettings]
TemplateCompile=disabled
TemplateCache=disabled
ShowUsedTemplates=enabled

Caching

[ContentSettings]
ViewCaching=disabled

Templates


Syntax

  • Auf die öffnende Klammer darf kein Leerzeichen folgen

Richtig

{$module_result.content}

Falsch

{ $module_result.content}

CSS einbinden

Name Erläuterung
@import url({„stylesheets/debug.css“|ezdesign});
@import url({„stylesheets/core.css“|ezdesign});
CSS einbinden

Templates einbinden

Name Erläuterung
{include uri=„design:page_head.tpl“} Header einbinden
{include uri=„design:page_toppath.tpl“} Breadcrumb einbinden
{include uri=„design:page_copyright.tpl“} Fusszeile einbinden

Funktionen

fetch Funktion

Attribute
Attribute Erläuterung
limit Anzahl der Augabe beschränken
sort_by Sortierreihenfolge angeben
class_filter_array Auf bestimmte Klassen beschränken

Beispiel

{let foo=fetch(	'content','list', 
		hash(	parent_node_id, $fooId
     			'limit', '3',
     			'sort_by', array('attribute',false(),'fooClass/fooAttribute'),
     			class_filter_type,include,
     			class_filter_array,array( fooClass )
     			)
     		)
}

Das Beispiel liefert eine Liste mit drei Objekten der Klasse bar absteigend nach dem Attribute fooAttribute sotiert.

weitere häufig genutzte

Funktion Erläuterung
$foo|count()|gt(0) Anzahl der Arrayelemente

Variablen

http://ez.no/doc/ez_publish/technical_manual/3_9/templates/the_pagelayout/variables_in_pagelayout

Variable Erläuterung
{$module_result.content} Content auslesen im pagelayout
$child.data_map.object.content.relation_list.0.node_id VerknüpfungsId ausgeben

Variablen setzen

Mit def lassen sich eine oder mehrere Variablen deklarieren, set ändert den Wert einer Variable und mittels undef wird eine oder mehrere Variablen gelöscht.

Beispiele

{def $foo='bar'}
{def $foo2='bar2' $foo3='bar3'}

{set $foo='foo'}

{undef $foo $bar}
{undef}

Operatoren

Operator Erläuterung
sub -
gt >
lt <
and &&
eq ==

weitere unter http://ez.no/doc/ez_publish/technical_manual/3_9/reference/template_operators/logical_operations

Ausgaben erzeugen

Jede Variable die von geschweiften Klammern umgeben ist, erzeugt eine Ausgabe.

Beispiele

Name Erläuterung
{$foo} gibt einen String aus, falls foo ein Text ist
{$foo.object.data_map.bar gibt den Wert des Attributes bar der Klasse foo aus

Debugging

Zum debuggen eignen sich die folgenden Funktionen

Name Erläuterung
{$item|attribute(show,1) } alle Datenfelder ausgeben, mit der Zahl wird die Tiefe der Ausgabe gesteuert
{$item.object.data_map|attribute(show,1)} alle Attribute eines Objekts

Bilder ausgeben

{$:foo.item.data_map.image.content[large].full_path|ezroot}

{$:foo.object.data_map.bar.content.data_map.image.content[original].full_path)}

{attribute_view_gui attribute=$foo.item.data_map.image}

{attribute_view_gui attribute=$foo.object.data_map.image}

{attribute_view_gui attribute=$foo.object.data_map.image.content.data_map.image}

{attribute_view_gui attribute=$foo.item.item_object.contentobject.main_node.data_map.image}

{attribute_view_gui attribute=$foo.item.item_object.contentobject.main_node.data_map.image.content.data_map.image}

{attribute_view_gui attribute=$foo.object.data_map.image image_class='reference'}

Funktion Attribute Parameter
attribute_view_gui image_class large
reference
original

Formulare

www.xyz.com/eng/content/view/full/222/(para)/23

{$view_parameters.para}

{if ezhttp_hasvariable( 'getVar','get' )}
Get var exists...
{/if}
{if ezhttp( 'getVar','get','hasVariable' )}
Get var exists...
{/if}

Navigation

Frontend

Die Dateien des Standardmenüs befinden sich in dem Verzeichnis

design\base\templates\menu
Datei Verwendung
flat_top.tpl horizontale Navigationsstruktur
sub_left.tpl vertikale Navigationsstruktur

den Ordner kopiert man in sein override Verzeichnis

design\<SITEACCESS>\override\templates\menu

Einstellungen

Angabe welche Klassen in der Navigation angezeigt werden sollen

settings\override\menu.ini.append.php
[MenuContentSettings]
TopIdentifierList[]
TopIdentifierList[]=folder
LeftIdentifierList[]
LeftIdentifierList[]=folder

Sprachabhängigkeit

Bei der Erzeugung der Navigation mit der Funktion treemenu kann eigentlich ein Paramter language angegeben werden. Die Funktion lieferte in meinem Fall aber trotzdem Ordner ohne Übersetzung in der Standardsprache. Deshalb wird erst die ausgewählte Sprache ausgelesen

{def $locales=fetch( 'content', 'locale' )}

und danach jeder Punkt überprüft ob eine Übersetzung vorhanden ist oder nicht.

{if or($menu.id|eq(2), is_set($menu.node.object.languages.$local))}

Vollständiger Code

{def $locales=fetch( 'content', 'locale' )}
 
{let docs=treemenu( $module_result.path,
                    is_set( $module_result.node_id )|choose( 2, $module_result.node_id ),
                    ezini( 'MenuContentSettings', 'LeftIdentifierList', 'menu.ini' ),
                    0, 5, 'tree', 15, $locales.locale_code )
                    depth=1
                    last_level=0
                    local=$locales.locale_code 
                    root_node=fetch( content, node, hash( node_id, 2 ) )
                    root_node_array=array( hash('id', $root_node.node_id,
                                                'level', 0,
                                                'url_alias', $root_node.url_alias,
                                                'url', $root_node.url,
                                                'text', $root_node.name,
                                                'is_selected', eq($module_result.node_id, $root_node.node_id)
                                                ) )
}
	<ul>
	{section var=menu loop=merge($root_node_array, $:docs) last-value}
		{if or($menu.id|eq(2), is_set($menu.node.object.languages.$local))}							
			<li><a href={$menu.url_alias|ezurl}>{$menu.text|shorten( 25 )}</a></li>
		{/if}
	{/section}
	</ul>
 
{/let}

Backend - Admin Siteaccess

Standardmässig sieht der Redakteur im Treemenu nur Ordner, um das zu ändern wird eine Override Datei angelegt in der die Klassen eingetragen werden, die zusätzlich angezeigt werden sollen.

settings/<SITEACCESS>/contentstructuremenu.ini.append.php
[TreeMenu]
Dynamic=enabled
UseCache=enabled
 
[TreeMenu]
ShowClasses[]
ShowClasses[]=folder
ShowClasses[]=reference
ShowClasses[]=feedback_form
ShowClasses[]=article
ShowClasses[]=article_news
ShowClasses[]=relationship
ShowClasses[]=text
ShowClasses[]=user_group

Für jede Klasse können eigene Icons angegeben werden.

settings\override\icon.ini.append
ClassMap[]
ClassMap[folder]=filesystems/folder.png

Kontaktformular

Versenden über sendmail

Extrem genervt fand ich gerade heraus, das in der Konfigurationsdatei site.ini der Wert des Parameters EmailSender mit einem Leerzeichen beginnen muss.

EmailSender= example@domain.com

Das ist mir bei allen anderen Einstellungen noch nicht untergekommen. Das ganze liegt daran, dass dieser Wert in der Datei lib/ezutils/classes/ezsendmailtransport.php ohne Überprüfung mit einem anderen String zusammengefügt wird. Vorliegendes Verhalten betrifft sowohl ez Publish 3 und 4.

$sendmailOptions .= ' -f'. $emailSender;

Versenden eines Kontaktformular an verschiedene E-Mail Empfänger

Overridetemplate

  • Formular um eine Selektion erweitern (Informationssammlung an)
  • Override Template [DESIGN]/override/templates/collectedinfomail/feedback_form.tpl erzeugen

Setzen der Empfänger E-Mail

Im folgenden Quellcode ist die Selectbox das erste Formularelement und wird mit $collection.attributes.0 ausgelesen. Die Anweisung {set-block scope=root variable=email_receiver}example@domain.com{/set-block} muss in einer Zeile stehen, ansonsten nimmt ez Publish die Einstellung EmailReciever aus der site.ini.php Datei.

{section show=$collection.attributes.0|get_class|eq('ezinformationcollectionattribute')}
	{let selected_id_array=$collection.attributes.0.content}
		{section var=Options loop=$collection.attributes.0.class_content.options}
 
			{section-exclude match=$selected_id_array|contains( $Options.item.id )|not}
			{def $bereich=$Options.item.name|wash( xhtml )}  // Wert aus der Selectbox
			{def $bereichID=$Options.item.id}  // ID der Selectbox
		{/section}
	{/let}
{/section}
 
{if $bereich|eq(bereich1)}
	{set-block scope=root variable=email_receiver}bereich1@domain.com{/set-block}
{elseif $bereich|eq(bereich2)}
	{set-block scope=root variable=email_receiver}bereich2@domain.de{/set-block}
{else}
    {* fallback to site.ini.append.php (EmailReceiver) *}
{/if}

Anpassen der Ausgabe

Um im E-Mail Text den Wert der Selectbox anzuzeigen wird die Ausgabe der ID abgefangen und mit der Auswahl ersetzt

{if $Attribute:item.data_text|eq($bereichID)}
	{$bereich}
{else}
	{$Attribute:item.data_text|wash}
{/if}

Mehrsprachigkeit


Per Link umschalten

{def $locales=fetch( 'content', 'translation_list' )}
{foreach $locales as $locale}
    <a href={concat( "index.php/", $locale.country_code|downcase(), "/",$DesignKeys:used.url_alias)|ezroot}>{$locale.language_name}</a>
    {delimiter}
          &nbsp;|&nbsp;
    {/delimiter}
{/foreach}

kompletter Artikel http://ez.no/community/articles/new_features_in_ez_publish_3_8/translating_and_displaying_ multi_lingual_content

Per Selectbox umschalten

Hierfür wurde die Extension RedirectOperators verwendet. Sie muss in den Ordner

/extensions

kopiert werden und dann in der Datei

settings/override/site.ini.append.php

mit folgender Angabe aktiviert werden

[ExtensionSettings]
ActiveExtensions[]=RedirectOperators
[...]
<form name="formLanguage" id="form" style="display: inline; margin: 0;" method="post" >
	{def $locales=fetch( 'content', 'translation_list' )}
	{def $lastURL=$module_result.uri}
	{def $selected=""}
	{def $countryCode=""}
 
{* es kann nicht garantiert werde das die Seite anderssprachig existiert,
	drum erfolgt der Sprung auf die Startseite
	bei concat "/",$DesignKeys:used.url_alias)|ezroot angefügt enstpräche der 
	aktuellen Seite *}
 
	<select name="language" onchange='document.forms["formLanguage"].submit()'>
{foreach $locales as $locale}	
	{set $countryCode=concat( "/",$locale.country_code|downcase())}
 
	{if $lastURL|begins_with($countryCode)}
		{set $selected='selected'}	
	{else}
		{set $selected=''}	
	{/if}
 
    <option {$selected} value={concat( "index.php/",
   				$locale.country_code|downcase())|ezroot}>{$locale.country_code}</option>
 
{/foreach}
	</select>
[...]
[...]
{if ezhttp( 'language','post','hasVariable' )}
	{def $lastUrl=ezhttp('language', 'post' )}
 
	{if $lastUrl|count_chars()|gt(0)}
		{redirectrelative( $lastUrl )}
	{/if} 
{/if}
[...]

Workflow & Notifications


Eigentlich muss dafür ein Cronjob eingerichtet werden. Wenn das nicht geht, kann man auch mal wieder die index.php pimpen

siehe http://ez.no/ezpublish/documentation/configuration/configuration/cron_jobs