Zuletzt angesehen: » ezpublish_problems » welcome » ezpublish_extensions_packages » syntax » typo3_snippets » perfektescms » ezpublish
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.
Was sollte diese Zusammenfassung erklären?
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 )
[SiteAccessRules] Rules[] Rules[]=access;enable Rules[]=moduleall Rules[]=access;disable Rules[]=module;user/register
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 ) |
[DebugSettings] Debug=inline|popup DebugOutput=enabled DebugRedirection=disabled
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
[TemplateSettings] TemplateCompile=disabled TemplateCache=disabled ShowUsedTemplates=enabled
[ContentSettings] ViewCaching=disabled
Richtig
{$module_result.content}
Falsch
{ $module_result.content}
| Name | Erläuterung |
|---|---|
| @import url({„stylesheets/debug.css“|ezdesign}); @import url({„stylesheets/core.css“|ezdesign}); | CSS 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 |
| 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.
| Funktion | Erläuterung |
|---|---|
| $foo|count()|gt(0) | Anzahl der Arrayelemente |
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 |
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}
| 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
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 |
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 |
{$: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 |
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}
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
Angabe welche Klassen in der Navigation angezeigt werden sollen
settings\override\menu.ini.append.php
[MenuContentSettings] TopIdentifierList[] TopIdentifierList[]=folder LeftIdentifierList[] LeftIdentifierList[]=folder
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}
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
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;
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}
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}
{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} | {/delimiter} {/foreach}
kompletter Artikel http://ez.no/community/articles/new_features_in_ez_publish_3_8/translating_and_displaying_ multi_lingual_content
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} [...]
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