====== Symphony CMS ======
Ein gutes standardkonformes Content Management System ist [[http://symphony-cms.com|Symphony CMS]].
===== Demo-Pages =====
* [[http://www.designinfluences.com/]]
===== Installation =====
* aptitude install apache2 libapache2-mod-php5 php5-xsl php5-mysql php5-curl mysql-server git-core
mysql> create database symphony;
mysql> grant all on symphony.* to symphony@localhost identified by 'P@ssw0rd';
mysql> flush privileges;
mkdir -p /var/www/domains/ww1.tiri.de
cd !$
* Die aktuelle Symphony CMS Basis soll ins Verzeichnis ''html''
git clone git://github.com/symphony/symphony-2.git html
Initialized empty Git repository in /data/var/www/domains/ww1.tiri.de/html/.git/
remote: Counting objects: 4699, done.
remote: Compressing objects: 100% (1258/1258), done.
remote: Total 4699 (delta 3496), reused 4611 (delta 3408)
Receiving objects: 100% (4699/4699), 928.27 KiB | 190 KiB/s, done.
Resolving deltas: 100% (3496/3496), done.
cd !$
git submodule update --init
Submodule 'extensions/debugdevkit' (git://github.com/symphony/debugdevkit.git) registered for path 'extensions/debugdevkit'
Submodule 'extensions/export_ensemble' (git://github.com/pointybeard/export_ensemble.git) registered for path 'extensions/export_ensemble'
Submodule 'extensions/jit_image_manipulation' (git://github.com/pointybeard/jit_image_manipulation.git) registered for path 'extensions/jit_image_manipulation'
Submodule 'extensions/maintenance_mode' (git://github.com/pointybeard/maintenance_mode.git) registered for path 'extensions/maintenance_mode'
Submodule 'extensions/markdown' (git://github.com/pointybeard/markdown.git) registered for path 'extensions/markdown'
Submodule 'extensions/profiledevkit' (git://github.com/symphony/profiledevkit.git) registered for path 'extensions/profiledevkit'
Submodule 'extensions/selectbox_link_field' (git://github.com/pointybeard/selectbox_link_field.git) registered for path 'extensions/selectbox_link_field'
Initialized empty Git repository in /data/var/www/domains/ww1.tiri.de/html/extensions/debugdevkit/.git/
remote: Counting objects: 211, done.
remote: Compressing objects: 100% (188/188), done.
remote: g objects: 50% (106/211) 0 (delta 0)Receiving objects: 32% (68/211)
Receiving objects: 100% (211/211), 44.27 KiB, done.
Resolving deltas: 100% (99/99), done.
Submodule path 'extensions/debugdevkit': checked out '89714d6ee918839fa6f8bad6bf9976ff54acc414'
Initialized empty Git repository in /data/var/www/domains/ww1.tiri.de/html/extensions/export_ensemble/.git/
remote: Counting objects: 90, done.
remote: Compressing objects: 100% (89/89), done.
remote: Total 90 (delta 36), reused 0 (delta 0)
Receiving objects: 100% (90/90), 18.33 KiB, done.
Resolving deltas: 100% (36/36), done.
Submodule path 'extensions/export_ensemble': checked out '766485eb43715ce6be19f5b58e018172c7e60656'
Initialized empty Git repository in /data/var/www/domains/ww1.tiri.de/html/extensions/jit_image_manipulation/.git/
remote: Counting objects: 87, done.
remote: Compressing objects: 100% (87/87), done.
remote: Total 87 (delta 40), reused 0 (delta 0)
Receiving objects: 100% (87/87), 18.27 KiB, done.
Resolving deltas: 100% (40/40), done.
Submodule path 'extensions/jit_image_manipulation': checked out 'ac8545df3ed29ef0549a87d043956fa6aa951da8'
Initialized empty Git repository in /data/var/www/domains/ww1.tiri.de/html/extensions/maintenance_mode/.git/
remote: Counting objects: 14, done.
remote: Compressing objects: 100% (14/14), done.
remote: Total 14 (delta 5), reused 0 (delta 0)
Receiving objects: 100% (14/14), done.
Resolving deltas: 100% (5/5), done.
Submodule path 'extensions/maintenance_mode': checked out '157d42f37588ea39515606694362281bab89ec9c'
Initialized empty Git repository in /data/var/www/domains/ww1.tiri.de/html/extensions/markdown/.git/
remote: Counting objects: 29, done.
remote: Compressing objects: 100% (29/29), done.
remote: Total 29 (delta 11), reused 0 (delta 0)
Receiving objects: 100% (29/29), 53.29 KiB | 70 KiB/s, done.
Resolving deltas: 100% (11/11), done.
Submodule path 'extensions/markdown': checked out '98683c3f56871b52a2d9dc42ceb7648f8f16a5c3'
Initialized empty Git repository in /data/var/www/domains/ww1.tiri.de/html/extensions/profiledevkit/.git/
remote: Counting objects: 16, done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 16 (delta 3), reused 0 (delta 0)
Receiving objects: 100% (16/16), done.
Resolving deltas: 100% (3/3), done.
Submodule path 'extensions/profiledevkit': checked out '7a723f2ae7431276de7ff8353beac70e8fe0cb57'
Initialized empty Git repository in /data/var/www/domains/ww1.tiri.de/html/extensions/selectbox_link_field/.git/
remote: Counting objects: 121, done.
remote: Compressing objects: 100% (120/120), done.
remote: Total 121 (delta 49), reused 0 (delta 0)
Receiving objects: 100% (121/121), 23.44 KiB, done.
Resolving deltas: 100% (49/49), done.
Submodule path 'extensions/selectbox_link_field': checked out 'd2787bb0ecafed7f446c62d3c562bd8c5b8f03ad'
Zur Installation empfiehlt es sich, Verzeichnisrechte freizügig zu gestalten.
chmod 777 symphony .
chmod -R 777 workspace
Jetzt die Installation über die URL http://localhost/install.php durchführen.
Nach der Installation wieder etwas restriktiver.
chmod 755 symphony .
rm install.php install.sql workspace/install.sql update.php
Ggf. müssen noch Verzeichnisse im ''workspace'' angelegt werden.
mkdir -p workspace/{utilities,data-sources,events,pages}
mkdir -p workspace/{images,css,js}
===== Default User =====
* Au Thor (Username: author)
* Deve Loper (Username: developer)
===== Tutorial =====
* [[http://designprojectx.com/tutorials/]]
==== Extensions ====
Zunächst sind alle Extensions zu aktivieren.
Weitere Extensions können bei Bedarf nachinstalliert werden,
eine sinnvolle zusätzliche Basis Extension ist das Filemanager Modul.
* cd extensions
* git clone [[git://github.com/pointybeard/filemanager.git]] filemanager
Initialized empty Git repository in /data/var/www/domains/ww1.tiri.de/html/extensions/filemanager/.git/
remote: Counting objects: 107, done.
remote: Compressing objects: 100% (106/106), done.
remote: Total 107 (delta 59), reused 0 (delta 0)
Receiving objects: 100% (107/107), 23.05 KiB, done.
Resolving deltas: 100% (59/59), done.
* git clone [[git://github.com/nickdunn/order_entries.git]] order_entries
Initialized empty Git repository in /data/var/www/domains/ww1.tiri.de/html/extensions/order_entries/.git/
remote: Counting objects: 94, done.
remote: Compressing objects: 100% (82/82), done.
remote: Total 94 (delta 37), reused 0 (delta 0)
Receiving objects: 100% (94/94), 18.48 KiB, done.
Resolving deltas: 100% (37/37), done.
=== Database Manipulator ===
* [[git://github.com/yourheropaul/databasemanipulator.git]]
Initialized empty Git repository in /data/var/www/domains/ww1.tiri.de/html/extensions/databasemanipulator/.git/
remote: Counting objects: 16, done.
remote: Compressing objects: 100% (16/16), done.
remote: Total 16 (delta 3), reused 0 (delta 0)
Receiving objects: 100% (16/16), 5.08 KiB, done.
Resolving deltas: 100% (3/3), done.
* git clone [[git://github.com/pointybeard/asdc.git]]
==== Sections ====
Die Sektionen werden in der Administrationsoberfläche angezeigt und spiegeln einzelne Elemente der Website wieder.
''Navigation Group'' erzeugt einen Menüpunkt in der Admin-GUI, der Name ist ein Untermenü davon.
{{wissen:linux:symphony-cms-sections-01.png|Symphony Sections}}
==== Components ====
Komponenten sind XSL Datenquellen, die die Daten für die einzelnen Seiten bereitstellen.
Diese sind entsprechend zu erstellen.
''Data Sources'' sind PHP-Skripte, die im Dateisystem abgelegt sind und somit in Symphony CMS eingebunden werden können. Wichtig ist hierbei, dass gültiges XML zurückgegeben wird.
* Utilities liegen unter ''workspace/utilities''.
* Data-Sources liegen unter ''workspace/data-sources''.
* Events liegen unter ''workspace/events''.
FIXME
=== Verknüpfung von Datenquellen ===
Möchte man beispielsweise nur die Artikel eines Hauptartikels anzeigen lassen, so sind zwei Data-Sources nötig.
* Hauptartikel:
* Name: Hauptartikel
* Parameter-Output: SystemID
* Article:
* Parameter Output: SystemId --> $ds-article
* Article-by-Hauptartikel: Source: Article
* Filter Article by: {$ds-hauptartikel}
* Publish: Yes
* Parameter-Output (zur Kontrolle):
* System-ID ($ds-article-by-hauptartikel)
*
===== Styles =====
* [[http://github.com/bauhouse/fluid960gs/tree|fluid960]], [[http://960.gs/|960 Grid System]]
* cd workspace
* git clone [[git://github.com/bauhouse/fluid960gs.git]] assets
Initialized empty Git repository in /data/var/www/domains/ww1.tiri.de/html/workspace/assets/.git/
remote: Counting objects: 211, done.
remote: Compressing objects: 100% (181/181), done.
remote: Total 211 (delta 105), reused 0 (delta 0)
Receiving objects: 100% (211/211), 194.44 KiB | 103 KiB/s, done.
Resolving deltas: 100% (105/105), done.
===== Tips & Tricks =====
* [[http://www.symphony-cms.com/community/discussions/26920/|Require at least one of these URL Parameters]]
* Durch die Angabe mehrerer durch '':'' getrennter Parameter im Feld ''required URL Parameter'' wird erreicht, dass ein //empty result// erst dann auftritt, wenn keiner der Parameter gesetzt ist.
* Fallback Parameter: z.B. ''$language:$fallback-language''.
* Einen Parameter namens ''fallback-language'' mit dem statischen Wert ''de'' über die Global Parameter Loader extension setzen.
* [[git://github.com/carsten/globalparamloader.git]], [[git://github.com/rowan-lewis/globalresourceloader.git]]
* [[http://www.symphony-cms.com/community/discussions/424/|Dynamic XML via Script]]
==== XSL ausgeben ====
=== Artikel-Navigation ===
* Anzeige des Vorgängers und des Nachfolgers innerhalb der Seite.
==== Archive.XSL ====
* Datenquelle erstellen
* Essentials: Name: Archive
* Source: Entries
* Filter Entries by:
* Publish :: Yes
* Sort by: Date :: descending
* XML Output: Group by Date
* Included Elements: title, section, date
|
|
|
|
==== substring-before/after ====
&