====== 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 ==== <xsl:choose> <xsl:when test="contains($page-title, '&#38;')"> <xsl:value-of select="substring-before($page-title, '&#38;')" /> <xsl:text>&</xsl:text> <xsl:value-of select="substring-after($page-title, '&#38;')" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="$page-title" /> </xsl:otherwise> </xsl:choose>