Applicare il principio DRY per creare siti Web con ExpressionEngine 2

ExpressionEngine 2 è un meraviglioso sistema di gestione dei contenuti e probabilmente il CMS più adatto ai progettisti, utilizzato da molti nomi noti, come A List Apart, Andy Clarke e Veerle Pieters. Ironia della sorte, tuttavia, la configurazione di default non è adatta per l'uso in un flusso di lavoro di sviluppo web professionale, che di solito coinvolge più siti, server e sviluppatori.

Questo tutorial ti mostrerà come personalizzare ExpressionEngine 2 in modo che tu possa iniziare a lavorare con un punto di partenza solido ma flessibile che possa essere facilmente implementato in più ambienti in pochi minuti.


Panoramica

Non sono un programmatore. Tuttavia, il mantra di programmazione non ripeterti, o il principio ASCIUTTO per quegli amanti degli acronimi tra noi, ha davvero iniziato a risuonare dentro di me, diventando sempre più coinvolto sia nello sviluppo del web che nella gestione della mia attività. In effetti, DRY è un buon consiglio per vivere la tua vita in generale. Ripetere su se stessi costa più tempo in anticipo, e potenzialmente molto di più lungo la strada se si deve tornare indietro e fare lo stesso cambiamento in più punti.

Inoltre è un ostacolo per la crescita personale perché se stai facendo qualcosa che hai già fatto, non stai imparando qualcosa di nuovo. La cosa migliore è identificare quei luoghi in cui ti ripeti e trovare un sistema per standardizzare quell'attività o parte di dati.


Un po 'di storia

Quando ho iniziato a lavorare con ExpressionEngine un anno e mezzo fa, si trattava di un progetto unico e io ero un designer alle prime armi. Inutile dire che la mentalità di DRY era la cosa più lontana dalla mia mente. Stavo canticchiando felicemente con le ambientazioni, come dettato dalla situazione, non documentando nulla e divertendomi con campi personalizzati e gruppi di template, quelle cose che fanno di EE il sogno di un designer che diventa realtà. Era un po 'come il mio primo appuntamento con il software. Alla fine, mi è piaciuto così tanto EE che ho deciso di diventare esclusivo e "sposarlo" come mio CMS di scelta per tutti i progetti futuri.

Dopo circa il terzo o il quarto sito, tuttavia, ho iniziato a vedere difetti nella nostra relazione (come è probabile che accada quando hai veramente familiarità con qualcosa) e mi sono frustrato nel fare attività umili e ripetitive legate alla distribuzione e alla gestione di EE. Ciò era particolarmente evidente con alcuni progetti in corso che richiedevano aggiornamenti settimanali due o tre volte, dallo sviluppo alla messa in scena ai server live. È arrivato al punto che stavo spendendo quasi tanto tempo nella gestione delle implementazioni come in realtà stavo codificando.


La soluzione

Non contento di perdere denaro e schiavizzare la noiosa fatica, ho cercato di mettere ordine nel caos.

Quello che segue è il frutto del lavoro mio e degli altri, una guida per applicare il principio ASCIUTTO allo sviluppo e alla distribuzione di siti con EE.

Ti guida attraverso il modo in cui ho ottimizzato e personalizzato la configurazione floscia e insensata di ExpressionEngine 2 in un ambiente di lavoro snello ed efficiente che elimina quasi tutte le ripetizioni dal lavorare con EE. Nello specifico, queste modifiche:

  • Fornire un punto di partenza con tutti i componenti aggiuntivi comunemente utilizzati installati e le impostazioni attivate in modo da non eseguire l'installazione guidata e ripartire da zero ogni volta.
  • Integra EE con un sistema di controllo versione a tua scelta per una rapida implementazione su più server Web o workstation degli sviluppatori e una facile gestione del codice. La mia esperienza è con SVN ma tutti i principi si applicano anche a Git.
  • Centralizza tutte le impostazioni e configurazioni per facilitare la migrazione da un server a un altro, quindi lanciare e spingere gli aggiornamenti è un gioco da ragazzi piuttosto che un mal di testa.

Questo è stato uno sforzo piuttosto grande e non avrei potuto farlo da solo. Un grande ringraziamento va alle seguenti persone, che mi hanno aiutato a sapere se lo sapevano o no:

  • Tony Chester di OnWired e Casey Reid di Clearfire Studios, per avermi fatto andare nella giusta direzione.
  • Jamie Pittock di Erskine Design e il suo fantastico discorso al EECI 2010, per aver scoperto un sacco di questa roba in EE 1 e mi ha ispirato a farlo funzionare in EE 2.
  • Jeff Freeman di Futurity Web Design per avermi aiutato con un po 'di PHP per farlo accadere (come ho detto, non sono un programmatore).

Passaggio 1: download e installazione

Per motivi di sanità mentale, procurati una copia aggiornata dell'ultima build di EE 2 prima di fare tutto questo. Scarica e installa normalmente, preferibilmente su un server locale, poiché farai molte modifiche ai file. Lasciare i modelli Agile Records quando richiesto.

Prendi i file di esempio inclusi in questo tutorial. Non devi ancora fare nulla con loro, ma tienili a portata di mano.


Passo 2: Versare la zuppa di config

Se hai mai dovuto migrare ExpressionEngine da un server a un altro, sai che questa operazione non è un'impresa facile; in effetti, è un completo incubo se non sei preparato. Molto di ciò deriva dal fatto che ExpressionEngine memorizza variabili di configurazione e percorsi del server durante tutta la creazione, al punto che è difficile rintracciarli tutti e regolarli quando si spostano i server.

Kenn Wilson di Corvid Works riassume in inglese migliore del mio:

"Questo è ciò che rende Expression Engine così imprevedibile: il passaggio da un server a un altro, ad esempio dallo sviluppo alla produzione, richiede l'aggiornamento di questo URL e informazioni sul percorso in circa una dozzina di posizioni. È goffo, dispendioso in termini di tempo e soggetto a errori ".

Ha ragione. Fortunatamente, c'è un altro modo. Piuttosto che modificare tutte quelle variabili in una dozzina di punti nel pannello di controllo e probabilmente dimenticarne alcuni, puoi consolidarli in un unico posto: i file di configurazione. Esatto, tutti quei campi sono sparpagliati su dozzine di pagine nella tua mappa CP su un paio di file PHP. Per impostazione predefinita, ExpressionEngine memorizza le informazioni di configurazione di cui dovrai preoccuparti in due file. Questi sono:

  • Sistema / ExpressionEngine / config / config.php
  • Sistema / ExpressionEngine / config / database.php

Ditching database.php

Come puoi immaginare, database.php memorizza le informazioni di connessione al database MySQL. Suppongo che EllisLab prenda la posizione che è più facile trovare le informazioni del DB se è nel proprio file con nome appropriato, ma ho intenzione di discutere il contrario. Questo è ASCIUTTO, dannazione! Preferirei aprire un file e modificare le mie impostazioni da un posto, non da due, quindi l'ho eliminato database.php del tutto. Beh, non proprio, ma ho preso tutte le impostazioni del database da esso e spostarle in config.php con un po 'di PHP.

 

Rinomina il tuo esistente database.php file per qualcosa di simile old-database.php e spostalo sul desktop, poiché avrai bisogno delle impostazioni di connessione più tardi. Sostituirlo con il database.php incluso in questo tutorial e impostare le autorizzazioni su 400 come indicato.

Congratulazioni. Non avrai mai bisogno di preoccuparti database.php ancora.

Consolidamento di config.php

Ora che database.php sta dicendo a ExpressionEngine di cercare le informazioni sulla connessione del database in config.php dobbiamo metterlo effettivamente lì, ma c'è un problema. Quando EE passa da un server a un altro, le impostazioni di connessione del database devono essere modificate per riflettere il nuovo ambiente del server. Se vogliamo sviluppare e distribuire EE con un sistema di controllo della versione (e credetemi, lo facciamo), ogni volta che distribuiamo una copia funzionante su un nuovo server, dovremmo scaricare una copia del config.php, modifica le impostazioni del database in modo che siano corrette per quel server, esegui il backup FTP sul server e assicurati di dire al nostro controllo della versione di ignorarlo quando emettiamo un commit o un aggiornamento. Nella migliore delle ipotesi, avremmo un file di configurazione separato, non controllato da versione per ogni server aggiuntivo su cui risiede il sito. Per me (e sono un one-man show) questo è:

  • Il server locale di iMac
  • Il server locale di Macbook Pro
  • server di gestione temporanea
  • server live

Aggiungi un altro paio di sviluppatori se lavori in un'agenzia e stai guardando molti di questi buggers che corrono in giro. Quindi cosa succede quando è necessario modificare un'altra variabile di configurazione, come il numero di licenza? Scrivi a te stesso e agli altri sviluppatori una copia di questo file e lo carichi su tutti i server uno per uno? ASCIUTTO, amici miei, ASCIUTTO. L'unica risposta logica è una singola versione controllata config.php file che può ospitare tutti gli ambienti server.

Sciocchezze, si potrebbe dire, ma grazie ad un ingegnoso PHP è davvero possibile. Come puoi vedere nell'esempio seguente, la sintassi del caso PHP cerca un indirizzo IP e serve le impostazioni del database appropriate basate su quell'IP. Ora le uniche cose che devi sapere e modificare quando si distribuiscono su un nuovo server sono l'indirizzo IP e le informazioni di connessione al database, che dovrebbero essere prontamente disponibili.

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

A questo punto voglio distinguere tra ciò che chiamo variabili ambientali e variabili universali. Le variabili ambientali sono diverse su ciascun ambiente server. Le variabili universali sono le stesse indipendentemente dal server su cui risiede il sito, quindi vanno oltre la sintassi switch / caso IP. Questi sono cose come i percorsi del server e gli URL della cartella temi, della cartella modello, CAPTCHA, il numero di licenza, in pratica qualsiasi cosa oltre alle informazioni di database e all'indirizzo IP menzionati sopra (questi sono tutti commentati nel file incluso come riferimento).

Mi hai sentito dire che i percorsi dei server e gli URL rimangono gli stessi indipendentemente dal server in cui ti trovi? Sì, l'hai fatto. Finché la struttura delle cartelle del tuo sito rimane la stessa in ogni istanza (e se sei sul controllo della versione ovviamente lo sarà), l'abitudine config.php incluso in questo tutorial usa le variabili PHP per rilevare il percorso e l'URL del root server e riempirli per te. Perché EE non lo fa per cominciare a sconcertarmi, ma sto divagando. Non dovrai più dimenticare di cambiare il percorso del server nella tua cartella dei temi quando esegui la migrazione dei server e impiegando un'ora a capire perché hai una schermata vuota invece di un CP. Qualcuno eccitato ancora?

 / * Universal Variables * / $ config ['app_version'] = "211"; $ config ['license_number'] = "0000-0000-0000-0000"; $ 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'] = "Flourish Interactive Codebase"; $ config ['allow_extensions'] = "y"; / * Generale ----------------------------------------------- -------------------- * / $ 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']; / * Impostazioni di connessione del database universale -------------------------------------------- ----------------------- * / $ 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 /"; / * Percorsi directory e URL dei membri ------------------------------------------- ------------------------ * / $ 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 /"; / * Percorsi di directory e URL diversi ------------------------------------------- ------------------------ * / $ config ['theme_folder_url'] = $ config ['site_url']. "/ themes /"; $ config ['theme_folder_path'] = $ config ['server_path']. "/ themes /"; / * Preferenze modelli ---------------------------------------------- --------------------- * / $ config ['save_tmpl_files'] = "y"; $ config ['tmpl_file_basepath'] = $ config ['server_path']. "/ templates /"; $ config ['site_404'] = "404 / index"; $ config ['strict_urls'] = "n";

Per installare l'abitudine config.php file:

  1. Rinomina il tuo esistente config.php, situato in Sistema / ExpressionEngine / config / config.php, a qualcosa di simile old-config.php e spostarlo sul desktop.
  2. Prendi il config.php incluso in questo tutorial e rilasciarlo in Sistema / ExpressionEngine / config. Imposta le autorizzazioni su 400.
  3. Apri il tuo nuovo config.php nel tuo editor di codice, insieme a old-database.php e old-config.php
  4. Copia e incolla le impostazioni dai vecchi file a quelli nuovi. Il file è stato commentato in modo da sapere cosa mettere dove.

Tieni presente che una variabile universale può diventare una variabile ambientale se ne hai bisogno. Supponiamo che tu voglia cambiare automaticamente il nome del tuo sito in base al server su cui si trova, in modo che tu possa capire a colpo d'occhio se stai guardando la versione locale, dev o live del tuo sito. Basta eliminare la variabile dall'area "variabili universali" e copiarla in ogni caso IP, assegnandole il valore desiderato.


Passaggio 3: Pulizia della casa

Affrontiamolo; l'installazione predefinita di ExpressionEngine include un sacco di file che non ti servono, soprattutto se sei uno sviluppatore professionista che non spunta in giro per la prima volta. Questi includono i file del tema per il sito di esempio di Agile Records, le emoticon, i temi wiki e molto altro. Perché ingrassare inutilmente il tuo sito? Metti a dieta EE e cancella tutte queste cose, puoi sempre prenderne una nuova copia e aggiungerla di nuovo nell'improbabile caso in cui ne hai bisogno per un wiki, forum o altro sito basato sulla comunità. Elimina solo ciò che ha senso per te, ma ho fatto circa una dozzina di siti EE e non ne ho mai usato nessuno.

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

Passaggio 4: creare una struttura di cartelle di livello principale standard e un file .htaccess

Come molti compiti nello sviluppo web, non c'è un modo giusto per farlo, ma ciò che è importante è scegliere un modo e attenersi ad esso. Ad alcune persone piace mettere i loro file di risorse statiche (immagini, css, js, swf, ecc.) In a / themes / site_themes / examplesite cartella. Preferisco mettere ogni cartella di asset al primo livello perché sono pigro e non mi piace fare clic su tre livelli di sottocartelle per accedere a questi file durante lo sviluppo, inoltre mi piacciono gli URL corti e piacevoli nel mio HTML e CSS. Ora che mi sono abituato a una struttura standard, non creo file o cartelle di livello superiore aggiuntivi a meno che non sia assolutamente necessario (vedrai perché in un minuto). Ecco come appare la mia struttura di alto livello.

  • .htaccess - spiegherò di più in un minuto
  • sistema - rinominalo per favore
  • css
  • favicon.ico
  • fw - questo è l'abbreviazione di "framework", ad es. le mie immagini di sfondo CSS
  • immagini - immagini di contenuti non gestiti da CMS
  • index.php
  • js
  • robots.txt
  • modelli
  • temi - Temi CP e tipo fieldtype
  • uploads - dove vanno tutti i documenti e le immagini gestiti da CMS

Ora vado in giro a parlare .htaccess. È un mistero per molti sviluppatori e francamente lo è anche per me, ma so abbastanza per usarlo per rimuovere quell'antiquario index.php dagli URL altrimenti graziosi di EE. Uso una variante del metodo exclude da ExpressionEngine Wiki. Questo non è in alcun modo garantito per funzionare sul tuo host web, ma ha funzionato per me su MAMP Pro, HostGator e MediaTemple, entrambi (gs) e (dv). Si applicano i normali avvertimenti, ad es. mod_rewrite deve essere abilitato in Apache http.conf ecc. Se stai usando questo metodo di rimozione index.php e desidero aggiungere un nuovo file o cartella di primo livello al tuo sito (e intendo un file o una cartella "reale", non una voce EE, un modello o un gruppo di modelli), dovrai aggiungere un'eccezione .htaccess altrimenti quel file / cartella sarà inaccessibile.

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

Per installare la mia abitudine .htaccess, rilascia il file incluso denominato temp.htaccess nella tua cartella di primo livello. Rimuovere la parte "temp" del nome file (tutto prima del punto). Il tuo sistema operativo potrebbe avvisarti che la rinomina del file distruggerà l'universo. Ignora questo e premi OK. Il file potrebbe scomparire, il che va bene perché .htaccess è un file nascosto. Ora se vuoi modificarlo, devi avere i file nascosti visibili nelle impostazioni del tuo sistema operativo.


Passaggio 5: installa i componenti aggiuntivi predefiniti e configali

Dopo aver sviluppato diversi siti EE, ci sono componenti aggiuntivi che non sono disposto o non posso vivere senza. Questi sono i migliori che la comunità di sviluppo di EE ha da offrire e hanno l'onore di essere installati nella mia base di codice in modo che ogni nuovo sito li abbia fin dall'inizio. Sono (e questi sono tutti gratuiti):

  • Freeform di Solspace
  • Dive Bar di Pixel & Tonic
  • ED Image Resizer di Erskine Design
  • Seg2Cat basso di Lodewijk Schutte (basso)
  • CAPTCHA accessibile di Greg Salt (Purple Dogfish)
  • Character Limiter di EllisLab

Non limitarti a installarli, configurali. Ad esempio, ho configurato tutti i miei modelli di notifica e-mail per Freeform, creato campi aggiuntivi per moduli personalizzati basati su ciò che di solito uso per un modulo di contatto standard e ho un modello chiamato contact.html che contiene il codice del modulo front-end, compresa la convalida JavaScript e un messaggio di successo. Anche se ho bisogno di aggiungere un campo o due, o spostare quel codice modulo in un modello diverso, si tratta di una messa a punto, non la creazione da zero ogni volta. ASCIUTTO. Meno lo stile CSS, quella forma è pronta per essere utilizzata.

State alla ricerca di un altro articolo da parte mia nel momento in cui discuterò questi e un paio di add-on commerciali per EE2 in modo più dettagliato.


Passaggio 6: impostare il gruppo di membri del cliente

Dare accesso illimitato al mio cliente è spaventoso sia per loro che per me.

Questa è una di quelle cose che probabilmente dimenticherete di fare fino a che non avrete quasi finito con il sito, ma non è necessario che sia nella vostra base di codice. L'account amministratore EE predefinito appartiene al gruppo di membri Super Admins, che ha necessariamente accesso a tutto. Dare accesso illimitato al mio cliente è spaventoso sia per loro che per me, quindi creo un secondo gruppo di membri chiamato Admins. Di solito attendo fino a quando non hanno scelto un indirizzo e-mail prima di rendere effettivo il loro account, ma ci vogliono solo pochi secondi dopo aver definito le autorizzazioni del gruppo membro.

In questo gruppo di membri ho disattivato tutti gli accessi ai modelli, all'amministrazione di siti e membri, al modulo di comunicazione e ai componenti aggiuntivi. Tutto ciò che la maggior parte dei clienti deve fare è creare e modificare i contenuti e magari visualizzare le loro presentazioni in forma libera. Questo è tutto. Semplifica la loro vita e la tua e porta via ciò di cui non hanno bisogno. Ancora una volta, ho dovuto modificare questo prima, ma un punto di partenza è meglio che partire da zero.


Step 7: Lavorare con il Codebase

Congratulazioni, ora dovresti avere un punto di partenza di gran lunga superiore per il tuo prossimo progetto ExpressionEngine. Affinché sia ​​possibile aggiungerlo e riutilizzarlo, creare un nuovo progetto nel controllo della versione e commettere il codice personalizzato ExpressionEngine come versione numero uno. Di seguito sono riportati alcuni esempi di operazioni comuni che probabilmente dovrai eseguire una volta che avrai nuovi progetti nella pipeline (potrebbero variare in base all'impostazione del server o se stai utilizzando Git anziché SVN).

Crea un nuovo progetto - 10 minuti

  • Cancella tutte le cache del tuo progetto di base di codice.
  • Esporta database e importa sotto il nuovo nome del progetto usando PHPMyAdmin o simile.
  • SVN esporta una copia del codice base nella cartella di lavoro di un nuovo progetto SVN. MOLTO IMPORTANTE: nota che ho detto esportazione, non checkout.
  • Imposta le seguenti cartelle e il loro contenuto in permessi 777:
    • / templates
    • / uploads (o qualunque sia il nome della tua cartella di caricamento)
    • / System / ExpressionEngine / cache / db_cache
  • Aggiungi informazioni di connessione DB per il nuovo DB a config.php. Cambia il nome del sito, i numeri di licenza e qualsiasi altra preferenza che devi modificare.
  • Carica il pannello di controllo e modifica le preferenze di caricamento del file. Questi sono memorizzati nel database e non possono essere messi nella configurazione per un motivo un po 'asinino.
  • Andare fuori di testa.

Distribuire un sito su un nuovo server: 10 minuti

  • Cancella tutte le cache.
  • Esporta e importa il database usando PHPMyAdmin o simili.
  • Trova l'indirizzo IP e le informazioni sul database e aggiungi una nuova sezione del caso IP a config.php.
  • Commettere config.php al tuo repository.
  • Controlla il repository del tuo sito nella cartella public_html del tuo nuovo server.
    • Se si tratta di un server locale, utilizzare il client SVN.
    • Se si tratta di un server remoto, utilizzare il comando SSH svn checkout http://samplerepository.com/sampleproject/. Lo spazio e il punto dopo la barra finale controllano il contenuto della cartella nella cartella corrente, altrimenti otterrete public_html / sampleproject / index.php se si omette il punto.
  • Imposta le seguenti cartelle e il loro contenuto in permessi 777:
    • / templates
    • / uploads (o qualunque sia il nome della tua cartella di caricamento)
    • / System / ExpressionEngine / cache / db_cache
  • Carica il pannello di controllo e modifica le preferenze di caricamento del file.

Aggiorna un sito su un server esistente: da 1 a 5 minuti

  • Cancella tutte le cache (solo se hai apportato modifiche al database).
  • Esporta e importa il database usando PHPMyAdmin o simile (solo se hai apportato modifiche al database).
  • Esegui un aggiornamento SVN sulla copia del tuo sito:
    • Se si tratta di un server locale, utilizzare il client SVN.
    • Se si tratta di un server remoto, utilizzare il comando SSH svn update. Non è necessario reinserire l'URL o la password.
  • Carica il pannello di controllo e modifica le preferenze di caricamento del file (solo se hai apportato modifiche al database).

Conclusione - Soggiornare nel deserto ASCIUTTO

Mentre svolgi la tua attività di progettazione e sviluppo di siti web ExpressionEngine di spicco, mantieniti mentalmente consapevole di ciò che fai in ogni momento, da una prospettiva di funzionalità generale. Alcune funzionalità del sito web sono quasi identiche su tutti i siti, hanno solo bisogno di alcune piccole modifiche al markup e una "skin" CSS per trasferire facilmente da uno all'altro.

In futuro, i microformati standardizzeranno ulteriormente il markup! Questi sono candidati ideali per l'inclusione nel codice base. Di cui abbiamo già discusso è il modulo di contatto onnipresente. Alcune altre potenziali funzionalità "standard" (ho avuto più client per chiedere queste cose):

  • Blog e le loro forme di commento associate
  • Indirizzo o v card
  • Sezioni di rilascio di notizie
  • Sitemap XML o "Google"
  • Cerca e cerca le pagine dei risultati
  • Condividi personalizzato questo! digita il codice
  • Timeline di Facebook o Twitter

Potresti teoricamente avere canali, categorie, gruppi di campi personalizzati e modelli costruiti e pronti a partire (lo so che lo faccio per molti di questi). Il tuo cliente ha ancora lo stesso valore che avrebbe se costruisci questi pezzi per il loro sito (probabilmente più perché saranno raffinati e testati più spesso) e lavori meno, il che significa che puoi valutare te stesso in modo più competitivo , o se vendi una commissione fissa, carica lo stesso prezzo e ottieni maggiori profitti. Ricordati di divertirti e divertiti a sviluppare con ExpressionEngine!