|
Übersetzung des Originals von David Convent, , Initiating a new theme project for Plone 3 mit einigen Ergänzungen / Änderungen. Alles, was Sie brauchen, um mit einem benutzbaren Produktskelett zu beginnen. Diese Seite ist eine zeitweilige Veröffentlichung eines Kapitels, das Teil eines Tuturials über Themenentwicklung für eine Plone-Seite wird (upgedatete Version für Plone 3).
Der Weg von DIYPloneStyle Installation von DIYPloneStyle In dem Produktordner von DIYPloneStyle sehen Sie im Dateisystem ein Verzeichnis "bin/", wo Sie ein Pythonskript mit dem Namen "generator.py" finden. Dieses Skript kann für das erstellen eines Produktskeletts benutzt werden, welches alle benötigten Elemente (wie im vorhergehenden Kapitel aufgelistet) enthält. Starten des Skripts
Unter Unix/Linux/OSX Aus einer Bash-Shell (von einem Terminal) benutzen Sie ein Kommando, das etwa so aussieht wie folgendes (2 Zeilen): cd Pfad_zum_Zope_Instanz_Heimat_Verzeichnis/Products/ DIYPloneStyle/bin/generator.py --productname=MyOwnPloneSkin --skinname="My Theme"
Beachten Sie, dass die Anführungszeichen erforderlich sind, falls ein Leerraum in dem Wert vorhanden ist, der als Option mitgeben wrid. Unter Windows Öffnen Sie die Windows-Kommandozeile und starten Sie das Skript mit ein Paar Kommandos, die etwa wie die folgenden aussehen: cd c:\Plone\Data\Products c:\Plone\Python\python.exe DIYPloneStyle\bin\generator.py --productname=MyOwnPloneSkin --skinname="My Theme"
Beachten Sie, dass die Anführungszeichen auch unter Windows erforderlich sind, falls ein Leerraum in dem Wert vorhanden ist, der als Option übergeben wird. Dies geht davon aus, dass Sie das Plone-Installationsprogramme dazu veranlaßt haben, Plone in c:\Plone anstatt in c:\Program Files\Plone zu installieren. Es ist eine gute Praktik, solch eine angepaßte Installationsoption zu verwenden: es wird viel einfacher sein, den kompletten Pfad zum Python-Interpreter einzugeben, falls dies nötig ist, und einen Pfad ohne Leerzeichen zu haben ist leichter/einfacher/besser, während man mit der DOS-Kommandozeile arbeitet. Es ist auch gut, den Python-Interpreter zur Windows-PATH-Umgebungsvariable hinzuzufügen. Ich fand eine Anleitung, wie man dies erledigt, in diesem Howto. Sobald Sie dies getan haben, können Sie das Produkt mit der Eingabe des folgenden Kommandos auf der Kommandozeile erstellen: python.exe DIYPloneStyle\bin\generator.py --productname=MyOwnPloneSkin --skinname="My Theme"
- Hinweis
- Auf Systemen mit Unix-Derivaten können Sie das Skript von jedem Verzeichnis im Dateisystem aufrufen. Auf Windows können Sie dies nicht: Ihr aktuelles Arbeitsverzeichnis muß außerhalb des Produktverzeichnisses von DIYPloneStyle sein.
Installation des erzeugten Produktes Nachdem Sie das Skript zum Erzeugen des Produkts laufen lassen haben, haben Sie ein frisches Plone-Oberflächen-Produkt im Verzeichnis Products/ Ihrer Zope-Instanz. Alles was Sie tun müssen, wenn Sie wollen, dass es in Plone installiert werden kann, besteht darin, den Zope-Server neu zu starten. Falls Sie mehr über die möglichen Argumente des Skripts lernen wollen, können Sie sich entweder die Ausgabe des Skripts anschauen, wenn es ohne Argumente (oder mit der Option --help) aufgerufen wird, oder den ziemlich einfach zu verstehenden Code des Skripts lesen. Der Weg von ZopeSkel ZopeSkel erweitert das Dienstprogramm Paste Script, ein Kommandozeilenwerkzeug für das Erstellen von Python-Gerüst-Pakete und -Eggs ("Eier"), das auf einem Satz von Vorlagen aufbaut. Paste Script installiert ein Kommandozeilendienstprogramm, genannt paster. paster wird mit dem Kommando create zum Erstellen von neuen Code-Strukturen im Dateisystem aufgerufen (lesen Sie weiter in diesem Kapitel zu einem Anwendungsbeispiel). ZopeSkel ist ein Satz von Erweiterungsvorlagen für das Werkzeug paster create, das Pakete für Zope und Plone (für Plone 2.1 bis zu Plone 3.0) erzeugen kann, einschließlich Themenpaketen. Zunächst laden Sie ZopeSkel von Plone.org herunter und entpacken Sie es. Danach installieren Sie es. Falls Sie Plone mit dem Unified Installer installiert haben, erledigen Sie dies als Benutzer mit Systemverwalterrechten folgendermaßen: - Gehen Sie in das Verzeichnis in das Sie ZopeSkel entpackt haben
- Rufen Sie dort das Kommando auf (hier als Beispiel für den Unified Installer für Plone 3.0.4 und ZopeSkel 1.1)(evtl. entsprechend anpassen):
/opt/Plone-3.0.4/Python-2.4.4/bin/easy_install-2.4 ZopeSkel-1.1 - Danach werden die weiteren benötigten Pakete "Cheetah" und "PasteScript" selbständig heruntergeladen und alles selbständig in die Zope-Instanz installiert .
Nachdem Sie nun ZopeSkel installiert haben, geben Sie in einem Terminal den folgenden Befehl ein: paster create -t plone3_theme plonetheme.mytheme
Wenn die ausführbare Datei nicht in Ihrem PATH liegt, geben Sie den kompletten Pfad zu dieser Datei an. Sofern Sie den Unified Installer für Plone 3.0.4 benutzt haben,geben Sie als ein: /opt/Plone-3.0.4/Python-2.4.4/bin/paster plonetheme.mytheme In Abhängigkeit davon, für welche Version von Plone Sie ein Thema entwickeln wollen, können Sie entweder die Kommandoergänzung 'plone2.5_theme' oder the 'plone3_theme' template verwenden, um Ihr Produkt zu erstellen. Unterschiede zwischen diesen beiden Gerüsten werden genauer in späteren Abschnitten dieses Dokumentes beschrieben. Dieses Tuturial beinhaltet nicht den Gebrauch der Vorlage 'plone2_theme', die eine Anpassung von DIYPloneStyle 2.1 ist. Falls Sie es benutzen müssen, können Sie von der früheren DIYPloneStyle documentation lernen, wie Sie Themen für Plone 2.1 erstellen Da wir in der Lage sein müssen, das generelle Installation-Profil unseres Themas zu bekommen, um von Plone erkannt zu werden, und dass die in skins/ aufgeführten Verzeichnisse im Skin-Werkzeug registriert werden, muss unser Paket von Zope 2 ladbar sein. Um dies zu erreichen, antworten Sie immer mit "True" (ja/wahr) (dies ist die voreingestellte Vorgabe) auf die Frage "Enter zope2product (Are you creating a Zope 2 Product?)" während des Prozesses zum Erstellen des Codes. Beachten Sie, dass hier eine Unklarheit besteht: die Übergabe des Wertes "True" bei dem Parameter zope2product bedeutet nicht, dass ZopeSkel ein Zope-Produkt erstellt, das in das Verzeichnis Products/ einer Zope-Instanz gespeichert werden kann. Es bedeutet nur, dass das Paket, das ZopeSkel erstellt, von Zope 2 geladen werden kann: es wird im ZMI im Control_Panel > Products Seite gelistet, sein Verzeichnis skins/ wird vom Skins-Werkzeug ('portal_skins') erkannt, und sein generelles Installationsprofi (Generic Setup profile) kann vom Installationswerkzeug ('portal_setup') geladen werden. Es ist also ein Paket in dem Sinne, dass es irgendwo in den Python-Pfad (üblicherweise in das Verzeichnis lib/python/ einer Zope-Instanz) abgelegt werden muss. Dessen ZCML-Konfigurationsdatei muss irgendwo angemeldet werden (über einen ZCML-Slug in packages-includes oder über eine Deklaration, die Paket-ZCML einzubeziehen (include) in der Datei configure.zcml eines anderen Paketes). Zusätzlich ist dieses Paket von ZopeSkel so strukturiert worden, dass es als egg (Ei) benutzt werden kann. Sofern Sie eine Installation mit dem Unified Installer für Plone 3.0.4 vorgenommen haben, installieren Sie Ihr erstelltes Paket - vorausgesetzt Sie befinden sich im Verzeichnis, in dem sich das erstellte Produkt befindet - als root (su/sudo) mit: /opt/Plone-3.0.4/Python-2.4.4/bin/easy_install-2.4 Name_Ihres_Produktes Anschließend schauen Sie in die Datei INSTALL.txt im Verzeichnis docs Ihres neu erstellten Produkts. Dort finden Sie die Anweisung, wie Sie einen slug für das Verzeichnis packages-includes erstellen. Geben Sie die entsprechenden Zeilen mit einem Editor in eine neue Datei ein und speichern Sie diese unter dem angegebenen Namen (plonetheme.mytheme-configure.zcml) im Verzeichnis /opt/Plone-3.0.4/zeocluster/client1/etc/package-includes/ Danach starten Sie das Zeocluster erneut und Sie können das Produkt auf dem gewohnten Wege in Plone installieren. Der bevorzugte Weg
Nun die große Frage: Welches ist der beste Weg, um den Basis-Code für mein neues Themen-Projekt zu erzeugen? Ich persönlich bevorzuge aus verschiedenen Gründen die Herangehensweise von ZopeSkel/paster: ZopeSkel ist komplett plattformübergreifend. Obwohl DIYPloneStyle in Python geschrieben ist, erlebten einige Benutzer Probleme unter Windows mit von DIYPloneStyle erstellten Themen-Produkten. Ich arbeite an diesen Problemen, aber ich sehe nach wie vor nicht, warum es perfekt auf Linux-/Unix-Systemen arbeitet, während es Leuten unter Windows Kopfschmerzen bereitet. ZopeSkel erzeugt Python-Pakete, die irgendwo im Python-Pfad installiert werden können, während DIYPloneStyle Zope-Produkte erstellt, die in das Verzeichnis Products/ einer Zope-Instanz abgelegt werden müssen. Ich weiß, dass die Leute es immer noch vorziehen, mit Zope-Produkten zu arbeiten, da sie nicht Acht geben müssen auf den ZCML-Slug, um Zope das Paket laden zu lassen. Dies ist eine persönliche Wahl. Persönlich ziehe ich es vor, so nah wie möglich am reinen Pythonweg (und Zope 3-Weg) des Verwaltens von Python-Paketen zu arbeiten, was das Erstellen eines Paketes mit ZopeSkel voraussetzt. ZopeSkel erzeugt Python-Eier, die mit easy_install installiert werden können. Hauptvorteil von Python-Eiern ist, dass sie ihre eigenen Abhängigkeiten steuern. Ich arbeite mit Eiern auch gern bei einem Buildout. Ich finde es praktisch und einfach. Oh und ich vergaß zu bemerken, dass, auch wenn ZopeSkel auf das Erstellen von wundervollen Eiern fokusiert ist, es noch immer möglich ist, einfache Zope2-Produkte mti ZopeSkel und seiner Vorlage Plone3_theme zu erstellen. Indem wir "Products" als Wert bei der Variable namespace_package während der interaktiven Kommandozeilensitzung eingibt, stellen wir sicher, dass wir - auf Paketebene - ein Produkt haben, das dem üblichen Zope2-Produkt-Layout entspricht. Mit diesen Kommandos zum Beispiel: paster create -t plone3_theme Products.MyTheme Enter namespace_package (Namespace package (like plonetheme)) ['plonetheme']: Products Enter package (The package contained namespace package (like example)) ['example']: MyTheme Enter skinname (The skin selection to be added to 'portal_skins' (like 'My Theme')) ['']: My Theme ...
- Wichtig
Wenn Sie Ihr Themen-Produkt auf diese Weise erzeugen, sollten Sie sich nicht im Verzeichnis Products/ (aktuelles Verzeichnis in der Konsole) Ihrer Zope-Instanz befinden, sondern irgenwo anders, z.B. in einem speziell zur Entwicklung innerhalb des Zope-Instanz-Verzeichnisses. Sobald Sie ein Paket erstellt haben, kopieren oder symlinken Sie das Paket Products.MyTheme/Products/MyTheme in das Verzeichnis Products/ Ihrer Zope-Instanz und starten Sie Zope neu. Das Resultat derVorlage plone3_theme kompiliert, wenn Sie es mit dem Paket-Namensraum "Products" aufrufen, in der Weise, wie das Subversion-Repository von Plone selbst heute organisiert ist: complies with the way the subversion repository of Plone itself is organized nowadays: Was eingesetzt als CMFPlone gespeichert wird und eine Zope2-Produkt ist, wurde umbenannt zu Products.CMFPlone. Es ist nun als Ei (egg) organisiert, aber der Code des Paketes selbst ist grundsätzlich identisch mit demjenigen, der als CMFPlone bekannt war. ZopeSkel kann praktisch ohne zeitliche Verzögerung (on the fly) eine Subversion-Repository-Struktur für das erstellte Projekt erzeugen, noch bevor die Vorlage angewandt wird. Benutzen Sie beispielsweise einfach die Option --svn-repository option, während Sie das Kommando paster create aufrufen: paster create -t plone3_theme --svn-repository=https://svn.plone.org/svn/collective plonetheme.mytheme
Mit diesem Kommando wird paster plonetheme.mytheme/branches/, plonetheme.mytheme/tags/ und plonetheme.mytheme/trunk/ in dem spezifizierten Subversion-Repository erstellen und die erzeugten Dateien zu dem Trunk hinzufügen. Alles, was Sie zu tun haben, nachdem das Paket erstellt worden ist, besteht darin, ist der Commit in das SVN. Handlich, nicht wahr? Ein kleiner Rat, falls Sie planen, paster auffordern, Ihre Subversion-Struktur zu erstellen: fügen Sie *.egg-info und *.pyc zu den Patterns global-ignores in Ihrer Subversion-Kofigurationsdatei (üblicherweise ~/.subversion/config) hinzu. Auf diesem Weg fügt paster nicht das unerwünschte Verzeichnis plonetheme.mytheme.egg-info hinzu und setup.pyc kompiliert die Pythondateien in Ihre Repros. Und Sie müssen nicht manuell entfernen. Es ist relativ leicht für einen Programmierer oder Integrierer, die paster-Vorlagen zu erstellen, die zu ihren Entwicklungsanforderungen passen. Das Erstellen eines Satzes von speziellen Vorlagen für ein Unternehmen oder im Zusammenhang mit einem speziellen Projekt wird dank des Paste-Skripts ermöglicht. Das Paste-Script ist viel mehr als ein auf Vorlagen basierender Erzeuger von Code. Lesen Sie mehr darüber (in englischer Sprache). Dies bedeutet natürlich nicht, dass Sie DIYPloneStyle nicht mehr benutzen sollten. Falls Sie an das Arbeiten damit gewöhnt sind und sich keine Gedanken über einen neuen Weg zum Erstellen von neuen Projekten machen wollen, benutzen Sie einfach DIYPloneStyle weiter. Nochmals, es ist einfach eine Frage der persönlichen Auswahl. Zumindest so lange, wie DIYPloneStyle gültigen Code für Plone erstellt... - ZopeSkel wird langsam der Standardweg für Plone werden
- DIYPloneStyle wird nicht mehr in neueren Hauptversionen veröffentlicht werden, so dass ZopeSkel _DER_ Weg werden wird, um neue Themen-Projekte für Plone zu erstellen, beginnend mit Plone 4 (oder jeder Plone-Version, die DIYPloneStyle 3.0 überflüssig machen wird). Trotzdem wird DIYPloneStyle 3.x mit Fehlerbereinigungen gepflegt werden und es wird Versionen mit kleineren Veränderungen geben, in denen Fehler gefunden und beseitigt werden.
|