Wenden Sie das DRY-Prinzip zum Erstellen von Websites mit ExpressionEngine 2 an

ExpressionEngine 2 ist ein wunderbares Content-Management-System und wohl das designerfreundlichste CMS, das von vielen bekannten Namen wie A List Apart, Andy Clarke und Veerle Pieters verwendet wird. Ironischerweise ist die Standardkonfiguration jedoch nicht für die Verwendung in einem professionellen Webentwicklungsworkflow geeignet, an dem normalerweise mehrere Standorte, Server und Entwickler beteiligt sind.

In diesem Lernprogramm erfahren Sie, wie Sie ExpressionEngine 2 anpassen, sodass Sie mit einem soliden und dennoch flexiblen Startpunkt auf den Boden gehen können, der sich innerhalb weniger Minuten in mehreren Umgebungen implementieren lässt.


Überblick

Ich bin kein Programmierer. Allerdings das Programmier-Mantra wiederhol dich nicht, oder das DRY-Prinzip für jene Abkürzungsliebhaber unter uns, hat wirklich angefangen in mir zu schwingen, da ich mich sowohl mit der Webentwicklung als auch mit meinem eigenen Geschäft beschäftige. TROCKEN ist in der Tat ein guter Rat, um Ihr Leben im Allgemeinen zu leben. Sich zu wiederholen, kostet im Vorfeld mehr Zeit und möglicherweise viel mehr, wenn Sie zurückgehen und an mehreren Stellen dieselbe Änderung vornehmen müssen.

Außerdem ist dies ein Hindernis für das persönliche Wachstum, denn wenn Sie etwas tun, was Sie bereits getan haben, lernen Sie nichts Neues. Besser ist es, die Stellen zu identifizieren, an denen Sie sich wiederholen, und ein System zur Standardisierung dieser Aufgabe oder dieses Datenelements entwickeln.


Eine kleine Geschichte

Als ich vor anderthalb Jahren anfing, mit ExpressionEngine zu arbeiten, war dies ein einmaliges Projekt und ich war ein Neuling. Es ist unnötig zu erwähnen, dass die TROCKEN-Mentalität für mich das Weiteste war. Ich summte fröhlich mit den Einstellungen, die die Situation vorsah, ich dokumentierte nichts und hatte eine Menge Spaß mit benutzerdefinierten Feldern und Vorlagengruppen. Diese Dinge, die EE zum Traum eines Designers machen, werden wahr. Es war so etwas wie mein erstes Date mit der Software. Am Ende hat mir EE so gut gefallen, dass ich mich entschlossen habe, exklusiv zu werden und es als CMS der Wahl für alle zukünftigen Projekte zu „heiraten“.

Nach ungefähr dem dritten oder vierten Standort begann ich jedoch, Schwachstellen in unserer Beziehung zu erkennen (was wahrscheinlich passieren wird, wenn Sie sich wirklich mit etwas vertraut machen) und wurde frustriert, wenn ich kleine, sich wiederholende Aufgaben im Zusammenhang mit dem Einsatz und der Verwaltung von EE erledigte. Dies wurde insbesondere bei einigen laufenden Projekten deutlich, bei denen zwei bis dreimal wöchentliche Updates von der Entwicklung bis zur Bereitstellung auf Live-Servern erforderlich waren. Es kam zu dem Punkt, dass ich fast so viel Zeit damit verbrachte, Implementierungen zu verwalten, wie ich eigentlich programmierte.


Die Lösung

Ich war nicht damit einverstanden, Geld zu verlieren und bei langweiliger Plackerei zu versklaven. Ich versuchte, das Chaos zu beseitigen.

Was folgt, ist die Frucht meiner und anderer Arbeit, ein Leitfaden für die Anwendung des DRY-Prinzips auf die Entwicklung und Bereitstellung von Standorten mit EE.

Es führt Sie durch, wie ich ExpressionEngine 2s schlaffe, unsinnige Standardkonfiguration zu einem schlanken, effizienten Arbeitspferd angepasst und angepasst habe, das fast die gesamte Wiederholung von EE mit sich bringt. Im Einzelnen werden diese Modifikationen:

  • Geben Sie einen Ausgangspunkt mit allen häufig verwendeten Addons und aktivierten Einstellungen, damit Sie den Installationsassistenten nicht ausführen und jedes Mal von vorne beginnen.
  • Integrieren Sie EE mit einem Versionskontrollsystem Ihrer Wahl, um eine schnelle Bereitstellung auf mehreren Webservern oder Entwicklerarbeitsstationen und eine einfache Verwaltung von Code zu ermöglichen. Meine Erfahrung ist mit SVN, aber alle Prinzipien gelten auch für Git.
  • Zentralisieren Sie alle Einstellungen und Konfigurationen, um die einfache Migration von einem Server zu einem anderen zu ermöglichen. Das Starten und Weitergeben von Updates ist daher kein Kinderspiel und keine Kopfschmerzen.

Dies war ein ziemlich großes Unterfangen, und ich hätte es nicht alleine schaffen können. Ein großes Dankeschön geht an folgende Personen, die mir geholfen haben, ob sie es wussten oder nicht:

  • Tony Chester von OnWired und Casey Reid von Clearfire Studios, um mich in die richtige Richtung zu bringen.
  • Jamie Pittock von Erskine Design und sein großartiger Vortrag auf der EECI 2010, als er viel von diesem Zeug in EE 1 herausfand und mich dazu inspirierte, es in EE 2 in Gang zu bringen.
  • Jeff Freeman von Futurity Web Design für die Unterstützung eines kleinen PHP-Vorgangs (wie gesagt, ich bin kein Programmierer).

Schritt 1: Download und Installation

Um Ihrer Vernunft willen, besorgen Sie sich ein neues Exemplar des neuesten Builds von EE 2, bevor Sie dies tun. Laden Sie es wie üblich herunter, und installieren Sie es auf einem lokalen Server, da Sie an den Dateien viele Änderungen vornehmen müssen. Lassen Sie die Agile Records-Vorlagen aus, wenn Sie dazu aufgefordert werden.

Besorgen Sie sich die Beispieldateien, die in diesem Lernprogramm enthalten sind. Sie müssen noch nichts mit ihnen machen, aber halten Sie sie griffbereit.


Schritt 2: Ausgießen der Konfigsuppe

Wenn Sie ExpressionEngine jemals von einem Server auf einen anderen migrieren mussten, wissen Sie, dass diese Aufgabe keine leichte Aufgabe ist. In der Tat ist es ein absoluter Albtraum, wenn Sie unvorbereitet sind. Das liegt zum Großteil daran, dass ExpressionEngine Konfigurationsvariablen und Serverpfade während der gesamten Erstellung speichert, sodass es schwierig ist, sie alle aufzuspüren und sie beim Umzug von Servern anzupassen.

Kenn Wilson von Corvid Works fasst es in besserem Englisch als meines zusammen:

„Dies macht Expression Engine so unportabel, dass ein Wechsel von einem Server zu einem anderen, z. B. von der Entwicklung bis zur Produktion, erforderlich ist. Diese URL und die Pfadinformationen müssen an einem Dutzend Orten aktualisiert werden. Es ist ungeschickt, zeitaufwändig und fehleranfällig. “

Er ist recht auf Zum Glück gibt es einen anderen Weg. Anstatt alle diese Variablen an einem Dutzend Stellen in der Systemsteuerung zu bearbeiten und wahrscheinlich einige zu vergessen, können Sie sie an einer Stelle konsolidieren - die Konfigurationsdateien. Das ist richtig, alle diese Felder, die über Dutzende von Seiten in Ihrem CP verstreut sind, ordnen ein paar PHP-Dateien zu. Standardmäßig speichert ExpressionEngine Konfigurationsinformationen, um die Sie sich kümmern müssen, in zwei Dateien. Diese sind:

  • system / expressionengine / config / config.php
  • system / expressionengine / config / database.php

Notruf Datenbank.php

Wie du dir vielleicht vorstellen kannst, database.php speichert die MySQL-Datenbankverbindungsinformationen. Ich nehme an, EllisLab nimmt die Position ein, dass es einfacher ist, die DB-Informationen zu finden, wenn sie in einer eigenen Datei mit dem passenden Namen gespeichert sind, aber ich werde das Gegenteil behaupten. Das ist TROCKEN, verdammt noch mal! Ich möchte lieber eine Datei öffnen und meine Einstellungen von einer Stelle aus bearbeiten, nicht von zwei, also habe ich auf verzichtet database.php insgesamt. Nun, nicht ganz, aber ich habe alle Datenbankeinstellungen davon übernommen und sie verschoben config.php mit etwas PHP.

 

Benennen Sie Ihr bestehendes um database.php Datei zu etwas wie alte-database.php und verschieben Sie es auf Ihren Desktop, da Sie später die Verbindungseinstellungen benötigen. Ersetzen Sie es durch das database.php in diesem Tutorial enthalten, und setzen Sie die Berechtigungen wie angegeben auf 400.

Herzliche Glückwünsche. Sie müssen sich nie Sorgen machen database.php nochmal.

Config.php konsolidieren

Nun das database.php teilt ExpressionEngine mit, nach Informationen zur Datenbankverbindung in zu suchen config.php Wir müssen es tatsächlich dort einsetzen, aber es gibt ein Problem. Wenn EE von einem Server zu einem anderen wechselt, müssen die Datenbankverbindungseinstellungen geändert werden, um die neue Serverumgebung widerzuspiegeln. Wenn wir EE mit einem Versionskontrollsystem entwickeln und implementieren möchten (und mir auch vertrauen), müssen wir jedes Mal, wenn wir eine Arbeitskopie auf einem neuen Server bereitstellen, eine Kopie des config.php, Bearbeiten Sie die Datenbankeinstellungen so, dass sie für diesen Server korrekt sind, führen Sie ein FTP-Backup zum Server durch, und weisen Sie unsere Versionskontrolle an, diese zu ignorieren, wenn Sie ein Commit oder ein Update ausführen. Im besten Fall haben wir für jeden zusätzlichen Server, auf dem sich die Site befindet, eine separate, nicht versionskontrollierte Konfigurationsdatei. Für mich (und ich bin eine Ein-Mann-Show) heißt es:

  • lokaler Server des iMac
  • Lokaler Server von Macbook Pro
  • Staging-Server
  • Live-Server

Fügen Sie ein paar weitere Entwickler hinzu, wenn Sie in einer Agentur arbeiten und Sie sich viele dieser Fehler ansehen, die herumlaufen. Was passiert also, wenn Sie eine andere Konfigurationsvariable wie die Lizenznummer ändern müssen? Senden Sie sich und anderen Entwicklern eine E-Mail mit einer Kopie dieser Datei und laden Sie sie nacheinander auf alle Server hoch? TROCKEN, meine Freunde, TROCKEN. Die einzige logische Antwort ist eine einzelne, versionierte Version config.php Datei, die alle Serverumgebungen aufnehmen kann.

Blödsinn, könnte man sagen, aber dank klugem PHP ist es tatsächlich möglich. Wie Sie im folgenden Beispiel sehen können, sucht die PHP-Fallsyntax nach einer IP-Adresse und stellt die entsprechenden Datenbankeinstellungen bereit, die auf dieser IP basieren. Jetzt müssen Sie bei der Bereitstellung auf einem neuen Server nur die IP-Adresse und die Datenbankverbindungsinformationen kennen und ändern, die Ihnen zur Verfügung stehen sollten.

 / * Umgebungsvariablen * / switch ($ _SERVER ['SERVER_ADDR']) // local case '127.0.0.1': $ db ['expressionengine'] ['hostname'] = "localhost"; $ db ['expressionengine'] ['username'] = "root"; $ db ['expressionengine'] ['password'] = "Passwort"; $ db ['expressionengine'] ['database'] = "local-db"; brechen; // Staging-Fall '72 .10.54.22 ': $ db [' expressionengine '] [' hostname '] = "mysql.exampleserver.com"; $ db ['expressionengine'] ['username'] = "admin"; $ db ['expressionengine'] ['password'] = "Passwort"; $ db ['expressionengine'] ['database'] = "staging-db"; brechen; // Live-Fall '82 .335.65.67 ': $ db [' expressionengine '] [' hostname '] = "mysql.exampleserver.com"; $ db ['expressionengine'] ['username'] = "admin"; $ db ['expressionengine'] ['password'] = "Passwort"; $ db ['expressionengine'] ['database'] = "live-db"; brechen; 

An dieser Stelle möchte ich unterscheiden, was ich anrufe Umgebungsvariablen und universelle Variablen. Umgebungsvariablen sind in jeder Serverumgebung unterschiedlich. Universelle Variablen sind unabhängig vom Server, auf dem sich die Site befindet, gleich. Daher gehen sie außerhalb der IP-Switch / Case-Syntax. Dies sind Dinge wie Serverpfade und URLs zum Themes-Ordner, Vorlagenordner, CAPTCHAs, die Lizenznummer, im Wesentlichen alles außer den oben genannten Datenbankinformationen und der IP-Adresse (diese sind alle in der mitgelieferten Datei als Referenz angegeben)..

Haben Sie gehört, dass Serverpfade und URLs gleich bleiben, egal auf welchem ​​Server Sie sich befinden? Ja hast du. Solange die Ordnerstruktur Ihrer Site in jeder Instanz gleich bleibt (und wenn Sie sich einer Versionskontrolle bedienen, ist dies offensichtlich der Fall) config.php Diese Tutorials enthalten PHP-Variablen, um den Pfad und die URL des Root-Servers zu ermitteln und für Sie auszufüllen. Warum EE das nicht macht, um mit mir zu beginnen, verblüfft mich, aber ich schweife ab. Vergessen Sie nicht, den Serverpfad in den Ordner "Themes" zu ändern, wenn Sie Server migrieren, und verbringen Sie eine Stunde damit, herauszufinden, warum Sie einen leeren Bildschirm anstelle eines CP haben. Jeder aufgeregt noch?

 / * Universelle Variablen * / $ config ['app_version'] = "211"; $ config ['license_number'] = "0000-0000-0000-000000"; $ config ['debug'] = "1"; $ config ['install_lock'] = ""; $ config ['system_folder'] = "admin"; $ config ['doc_url'] = "http://expressionengine.com/user_guide/"; $ config ['is_system_on'] = "y"; $ config ['cookie_prefix'] = ""; $ config ['site_name'] = "Interaktive Codebasis für Flourish"; $ config ['allow_extensions'] = "y"; /* Allgemeines ----------------------------------------------- -------------------- * / $ config ['site_index'] = ""; $ config ['site_url'] = "http: //". $ _ SERVER ['HTTP_HOST']; $ config ['server_path'] = $ _SERVER ['DOCUMENT_ROOT']; $ config ['cp_url'] = $ config ['site_url']. "/". $ config ['system_folder']; / * Universal-Datenbankverbindungseinstellungen ------------------------------------------ ----------------------- * / $ active_group = 'expressionengine'; $ active_record = TRUE; $ db ['expressionengine'] ['dbdriver'] = "mysql"; $ db ['expressionengine'] ['dbprefix'] = "exp_"; $ db ['expressionengine'] ['pconnect'] = FALSE; $ db ['expressionengine'] ['swap_pre'] = "exp_"; $ db ['expressionengine'] ['db_debug'] = FALSE; $ db ['expressionengine'] ['cache_on'] = FALSE; $ db ['expressionengine'] ['autoinit'] = FALSE; $ db ['expressionengine'] ['char_set'] = "utf8"; $ db ['expressionengine'] ['dbcollat'] = "utf8_general_ci"; $ db ['expressionengine'] ['cachedir'] = $ config ['server_path']. $ config ['system_folder']. "/ expressionengine / cache / db_cache /"; / * Mitgliederverzeichnispfade und -URL --------------------------------------- ------------------------ * / $ config ['avatar_url'] = $ config ['site_url']. "/ uploads / system / avatars / "; $ config ['avatar_path'] = $ config ['server_path']. "/ uploads / system / avatars /"; $ config ['photo_url'] = $ config ['site_url']. "/ uploads / system / member_photos /"; $ config ['photo_path'] = $ config ['server_path']. "/ uploads / system / member_photos /"; $ config ['sig_img_url'] = $ config ['site_url']. "/ uploads / system / signature_attachments /"; $ config ['sig_img_path'] = $ config ['server_path']. "/ uploads / system / signature_attachments /"; $ config ['prv_msg_upload_path'] = $ config ['server_path']. "/ uploads / system / pm_attachments /"; / * Verschiedene Verzeichnispfade und URLs --------------------------------------- ------------------------ * / $ config ['theme_folder_url'] = $ config ['site_url']. "/ themes /"; $ config ['theme_folder_path'] = $ config ['server_path']. "/ themes /"; / * Vorlageneinstellungen ------------------------------------------ --------------------- * / $ config ['save_tmpl_files'] = "y"; $ config ['tmpl_file_basepath'] = $ config ['server_path']. "/ templates /"; $ config ['site_404'] = "404 / index"; $ config ['strict_urls'] = "n";

So installieren Sie den benutzerdefinierten config.php Datei:

  1. Benennen Sie Ihr bestehendes um config.php, befindet sich system / expressionengine / config / config.php, zu so etwas old-config.php und verschieben Sie es auf Ihren Desktop.
  2. Packe die config.php in diesem Tutorial enthalten und legen Sie es in system / expressionengine / config. Setzen Sie die Berechtigungen auf 400.
  3. Öffne dein neues config.php in Ihrem Code-Editor zusammen mit alte-database.php und old-config.php
  4. Kopieren Sie die Einstellungen aus den alten Dateien und fügen Sie sie in die neuen ein. Die Datei wurde kommentiert, damit Sie wissen, was Sie wo einfügen müssen.

Denken Sie daran, dass eine universelle Variable bei Bedarf zu einer Umgebungsvariablen werden kann. Nehmen wir an, Sie möchten Ihren Site-Namen automatisch basierend auf dem Server ändern, auf dem er sich befindet, sodass Sie auf einen Blick erkennen können, ob Sie die lokale, dev- oder Live-Version Ihrer Site betrachten. Löschen Sie einfach die Variable aus dem Bereich "universelle Variablen" und kopieren Sie sie in jeden IP-Fall, und weisen Sie ihnen einen beliebigen Wert zu.


Schritt 3: Hausreinigung

Seien wir ehrlich; Die Standardinstallation von ExpressionEngine enthält viele Dateien, die Sie nicht benötigen, insbesondere wenn Sie ein professioneller Entwickler sind, der nicht zum ersten Mal herumstochert. Dazu gehören die Themendateien für die Agile Records-Beispielsite, Smileys, Wiki-Motive und vieles mehr. Warum Ihre Website unnötig mästen? Setzen Sie EE auf eine Diät und löschen Sie all diese Sachen. Sie können sich jederzeit eine neue Kopie holen und sie in dem unwahrscheinlichen Fall wieder hinzufügen, wenn Sie es für ein Wiki, ein Forum oder eine andere Community-basierte Website benötigen. Löschen Sie nur das, was für Sie sinnvoll ist, aber ich habe ungefähr ein Dutzend EE-Standorte gemacht und davon noch nie etwas verwendet.

  • / themes / wiki_themes
  • / themes / site_themes / agile_records
  • / themes / profile_themes / agile_records
  • / images / smileys
  • / images / avatare

Schritt 4: Erstellen Sie eine Standardordnerstruktur auf oberster Ebene und eine .htaccess-Datei

Wie bei vielen Aufgaben in der Webentwicklung gibt es keinen richtigen Weg, um dies zu tun, aber wichtig ist, dass Sie einen Weg wählen und dabei bleiben. Manche Leute legen ihre statischen Asset-Dateien (Images, CSS, JS, SWF usw.) gerne in ein / themes / site_themes / beispielseite Mappe. Ich ziehe es vor, jeden Asset-Ordner auf der obersten Ebene zu platzieren, weil ich faul bin und nicht durch drei Ebenen von Unterordnern klicke, um während der Entwicklung auf diese Dateien zuzugreifen. Außerdem mag ich schöne kurze URLs in HTML und CSS. Jetzt, da ich mich an eine Standardstruktur gewöhnt habe, erstelle ich keine zusätzlichen Dateien oder Ordner auf oberster Ebene, es sei denn, dies ist absolut notwendig (Sie werden in einer Minute sehen, warum). So sieht meine Struktur auf oberster Ebene aus.

  • .htaccess - wird in einer Minute mehr erklären
  • System - bitte umbenennen
  • css
  • favicon.ico
  • fw - Dies ist eine Abkürzung für "Framework", z. meine CSS-Hintergrundbilder
  • Bilder - Nicht CMS-verwaltete Inhaltsbilder
  • index.php
  • js
  • robots.txt
  • Vorlagen
  • themen - CP- und Feldtyp-Themen
  • Uploads - wo alle von CMS verwalteten Dokumente und Bilder liegen

Jetzt komme ich zum Reden .htaccess. Für viele Entwickler ist das ein Rätsel, und ehrlich gesagt auch für mich, aber ich weiß genug, um damit das unschöne Bild zu entfernen index.php von den sonst schönen URLs von EE. Ich verwende eine Variante der Exclude-Methode aus dem ExpressionEngine-Wiki. Dies funktioniert in keinem Fall garantiert auf Ihrem Webhost, aber es funktioniert für MAMP Pro, HostGator und MediaTemple, sowohl (gs) als auch (dv). Es gelten die üblichen Vorbehalte, z. mod_rewrite muss in Apaches aktiviert sein http.conf usw. Wenn Sie diese Methode zum Entfernen verwenden index.php Wenn Sie Ihrer Site eine neue Datei oder einen Ordner auf oberster Ebene hinzufügen möchten (und ich meine eine "echte" Datei oder einen echten Ordner, nicht einen EE-Eintrag, eine Vorlage oder eine Vorlagengruppe), müssen Sie eine Ausnahme hinzufügen .htaccess Andernfalls kann auf diese Datei / diesen Ordner nicht zugegriffen werden.

 RewriteEngine On RewriteCond $ 1! ^ (Admin | css | fw | images | js | Vorlagen | Themen | Uploads | favicon \ .ico | robots \ .txt | index \ .php) [NC] RewriteRule ^ (. *) $ Index. php? / $ 1 [L] AddHandler php5-script .php 

So installieren Sie meine benutzerdefinierte .htaccess, die eingeschlossene Datei mit dem Namen löschen temp.htaccess in Ihren Ordner der obersten Ebene. Entfernen Sie den "Temp" -Teil des Dateinamens (alles vor dem Punkt). Ihr Betriebssystem warnt Sie möglicherweise, dass das Universum durch das Umbenennen der Datei zerstört wird. Ignorieren Sie dies und klicken Sie auf OK. Die Datei verschwindet möglicherweise, was in Ordnung ist .htaccess ist eine versteckte Datei. Wenn Sie es jetzt bearbeiten möchten, müssen versteckte Dateien in den Betriebssystemeinstellungen sichtbar sein.


Schritt 5: Installieren Sie Ihre Standard-Add-Ons und konfigurieren Sie sie

Nach der Entwicklung mehrerer EE-Standorte gibt es Add-Ons, ohne die ich nicht leben kann oder kann. Dies ist das Beste, was die EE-Entwicklergemeinde zu bieten hat, und sie haben die Ehre, in meiner Codebase installiert zu werden, so dass jede neue Site sie von Anfang an hat. Sie sind (und diese sind alle kostenlos):

  • Freeform von Solspace
  • Tauchstange von Pixel & Tonic
  • ED Image Resizer von Erskine Design
  • Low Seg2Cat von Lodewijk Schutte (Low)
  • Zugängliches CAPTCHA von Greg Salt (Purple Dogfish)
  • Character Limiter von EllisLab

Installieren Sie diese nicht nur, sondern konfigurieren Sie sie. Ich habe zum Beispiel alle meine E-Mail-Benachrichtigungsvorlagen für Freeform eingerichtet, zusätzliche benutzerdefinierte Formularfelder erstellt, die auf dem basieren, was ich normalerweise für ein Standard-Kontaktformular verwende, und ich habe eine Vorlage aufgerufen contact.html welches den Front-End-Formularcode enthält, einschließlich JavaScript-Validierung und einer Erfolgsmeldung. Selbst wenn ich ein oder zwei Felder hinzufügen oder den Formularcode in eine andere Vorlage verschieben muss, ist es eine Frage der Optimierung, nicht jedes Mal von Grund auf neu zu erstellen. TROCKEN. Ohne CSS-Styling ist dieses Formular sofort einsatzbereit.

Seien Sie auf der Suche nach einem weiteren Artikel von mir, sobald ich diese und ein paar kommerzielle Erweiterungen für EE2 ausführlicher bespreche.


Schritt 6: Einrichten der Mitgliedergruppe Ihres Kunden

Die unbegrenzte Zugriffsmöglichkeit auf meinen Kunden ist sowohl für mich als auch für mich unheimlich.

Dies ist eines der Dinge, die Sie wahrscheinlich vergessen, bis Sie mit der Site fast fertig sind, aber es muss nicht sein, wenn sie sich in Ihrer Codebase befindet. Das standardmäßige EE-Administratorkonto gehört zur Super Admins-Mitgliedergruppe, die notwendigerweise auf alles zugreifen kann. Für meinen Kunden und mich unbegrenzten Zugriff zu gewähren, ist beängstigend. Daher erstelle ich eine zweite Mitgliedergruppe namens Admins. Normalerweise warte ich, bis sie eine E-Mail-Adresse ausgewählt haben, bevor ich ihr Konto erstellen kann. Dies dauert jedoch nur ein paar Sekunden, nachdem Sie die Berechtigungen für die Mitgliedergruppen definiert haben.

In dieser Mitgliedergruppe habe ich jeglichen Zugriff auf die Vorlagen, die Site- und Mitgliederverwaltung, das Kommunikationsmodul und die Add-Ons deaktiviert. Die meisten Kunden müssen lediglich Inhalte erstellen und bearbeiten und möglicherweise ihre Freeform-Einsendungen anzeigen. Das ist es. Vereinfache ihr und dein Leben und nimm weg, was sie nicht brauchen. Ich musste das schon mal anpassen, aber ein Ausgangspunkt ist besser, als von vorne zu beginnen.


Schritt 7: Arbeiten mit Ihrer Codebase

Glückwunsch, Sie sollten jetzt einen weit überlegenen Ausgangspunkt für Ihr nächstes ExpressionEngine-Projekt haben. Damit Sie sie hinzufügen und wiederverwenden können, erstellen Sie ein neues Projekt in Ihrer Versionskontrolle und übergeben Sie Ihre angepasste ExpressionEngine-Codebase als Versionsnummer eins. Nachfolgend finden Sie einige Beispiele für häufig vorkommende Vorgänge, die Sie wahrscheinlich ausführen müssen, wenn Sie neue Projekte in der Pipeline haben (kann je nach Servereinrichtung variieren oder wenn Sie Git statt SVN verwenden)..

Erstellen Sie ein neues Projekt - 10 Minuten

  • Löschen Sie alle Caches Ihres Codebase-Projekts.
  • Datenbank exportieren und unter neuem Projektnamen mit PHPMyAdmin oder ähnlichem importieren.
  • SVN Exportiert eine Kopie Ihrer Codebase in den Arbeitskopienordner eines neuen SVN-Projekts. SEHR WICHTIG: Beachten Sie, dass ich den Export sagte, nicht die Kasse.
  • Legen Sie für die folgenden Ordner und deren Inhalt die Berechtigungen 777 fest:
    • / Vorlagen
    • / Uploads (oder wie auch immer Ihr Upload-Ordner genannt wird)
    • / system / expressionengine / cache / db_cache
  • Fügen Sie DB-Verbindungsinformationen für neue DB hinzu config.php. Ändern Sie den Site-Namen, die Lizenznummern und andere Einstellungen, die Sie ändern müssen.
  • Laden Sie Ihr Control Panel hoch und ändern Sie die Voreinstellungen für das Hochladen von Dateien. Diese werden in der Datenbank gespeichert und können aus irgendwelchen Gründen nicht in die Konfiguration eingefügt werden.
  • Verrückt werden.

Stellen Sie eine Site auf einem neuen Server bereit - 10 Minuten

  • Alle Caches löschen.
  • Exportieren und importieren Sie die Datenbank mit PHPMyAdmin oder ähnlichem.
  • Suchen Sie nach IP-Adresse und Datenbankinformationen und fügen Sie einen neuen IP-Fallabschnitt hinzu config.php.
  • Verpflichten config.php zu Ihrem Repository.
  • Checken Sie das Repository Ihrer Site in den Ordner public_html Ihres neuen Servers aus.
    • Wenn es sich um einen lokalen Server handelt, verwenden Sie Ihren SVN-Client.
    • Wenn es sich um einen Remote-Server handelt, verwenden Sie den SSH-Befehl svn checkout http://samplerepository.com/sampleproject/. Das Leerzeichen und der Punkt nach dem nachgestellten Schrägstrich checken den Inhalt des Ordners in den aktuellen Ordner. Andernfalls erhalten Sie public_html / sampleproject / index.php, wenn Sie den Punkt weglassen.
  • Legen Sie für die folgenden Ordner und deren Inhalt die Berechtigungen 777 fest:
    • / Vorlagen
    • / Uploads (oder wie auch immer Ihr Upload-Ordner genannt wird)
    • / system / expressionengine / cache / db_cache
  • Laden Sie Ihr Control Panel hoch und ändern Sie die Voreinstellungen für das Hochladen von Dateien.

Aktualisieren Sie eine Site auf einem vorhandenen Server - 1 bis 5 Minuten

  • Alle Caches löschen (nur wenn Sie Änderungen an der Datenbank vorgenommen haben).
  • Datenbank mit PHPMyAdmin oder ähnlichem exportieren und importieren (nur wenn Sie Änderungen an der Datenbank vorgenommen haben).
  • Führen Sie ein SVN-Update für Ihre Site-Kopie aus:
    • Wenn es sich um einen lokalen Server handelt, verwenden Sie Ihren SVN-Client.
    • Wenn es sich um einen Remote-Server handelt, verwenden Sie den SSH-Befehl svn update. Sie sollten die URL oder das Kennwort nicht erneut eingeben müssen.
  • Laden Sie Ihr Control Panel hoch und ändern Sie die Einstellungen für das Hochladen von Dateien (nur wenn Sie Änderungen an der Datenbank vorgenommen haben)..

Fazit: Aufenthalt in der TROCKENEN Wüste

Machen Sie sich bei der Gestaltung und Entwicklung der aufregenden ExpressionEngine-Websites in Ihrem Unternehmen Gedanken darüber, was Sie zu jeder Zeit tun. Einige Funktionen der Website sind auf Websites nahezu identisch. Sie benötigen lediglich einige geringfügige Markup-Anpassungen und ein CSS-Skin, um problemlos von einem zum anderen übertragen zu werden.

In Zukunft werden Mikroformate das Markup noch mehr standardisieren! Dies sind ideale Kandidaten für die Aufnahme in Ihre Codebase. Eines, das wir bereits besprochen haben, ist das allgegenwärtige Kontaktformular. Einige andere potenzielle "Standard" -Funktionalitäten (ich hatte mehrere Clients, die nach diesen Dingen fragen):

  • Blogs und die zugehörigen Kommentarformulare
  • Adress- oder V-Karten
  • News Release-Abschnitte
  • XML- oder Google-Sitemaps
  • Such- und Suchergebnisseiten
  • Gewohnheit Teilen Sie dieses! Gib 'den Code ein
  • Zeitpläne für Facebook oder Twitter

Theoretisch könnten Kanäle, Kategorien, benutzerdefinierte Feldgruppen und Vorlagen erstellt werden, die sofort einsatzbereit sind (ich weiß, dass ich das für viele dieser Fälle mache). Ihr Kunde hat immer noch den gleichen Wert, den Sie erhalten würden, wenn Sie diese Teile für Ihre Website von Hand gebaut hätten (wahrscheinlich mehr, da sie häufig verfeinert und getestet werden) und Sie weniger Arbeit erledigen, was bedeutet, dass Sie sich preisgünstiger machen können oder wenn Sie eine feste Gebühr verkaufen, berechnen Sie denselben Preis und machen mehr Gewinn. Denken Sie daran, Spaß zu haben und sich mit ExpressionEngine zu entwickeln!