Aplicați principiul DRY pentru a construi site-uri Web cu ExpressionEngine 2

ExpressionEngine 2 este un sistem minunat de gestionare a conținutului și, fără îndoială, cel mai prietenos designer CMS, utilizat de numeroase nume cunoscute, cum ar fi A List Apart, Andy Clarke și Veerle Pieters. Cu toate acestea, în mod ironic, configurația implicită nu este potrivită pentru a fi utilizată într-un flux de lucru profesionist de dezvoltare web, care de obicei implică mai multe site-uri, servere și dezvoltatori.

Acest tutorial vă va arăta cum să personalizați ExpressionEngine 2 astfel încât să puteți atinge terenul care rulează cu un punct de pornire rigid, dar flexibil, care se poate desfășura cu ușurință în mai multe medii în câteva minute.


Prezentare generală

Nu sunt programator. Cu toate acestea, mantra de programare nu te repeta, sau principiul DRY pentru acei iubitori de acronime printre noi, a început să rezoneze cu adevărat în interiorul meu, deoarece mă implic mai mult atât cu dezvoltarea web-ului, cât și cu propria mea afacere. De fapt, DRY este un sfat bun pentru a-ți trăi viața în general. Repetați-vă costurile mai mult timp în față și, eventual, mult mai mult pe drum, dacă trebuie să vă întoarceți și să faceți aceeași schimbare în mai multe locuri.

În plus, este un obstacol în calea dezvoltării personale, deoarece dacă faceți ceva ce ați făcut deja, nu învățați ceva nou. Ce este mai bine este să identificați acele locuri în care vă repetați și să veniți cu un sistem care să standardizeze acea sarcină sau o bucată de date.


O mică istorie

Când am început să lucrez cu ExpressionEngine cu un an și jumătate în urmă, a fost un proiect unic și eram un designer novice. Inutil să spun că mentalitatea DRY a fost cel mai îndepărtat lucru din mintea mea. Am fost fericit plâns de-a lungul timpului, mușcat cu setări ca situația dictat, nu documentarea nimic și având o explozie cu domenii personalizate și grupuri de șablon, acele lucruri care fac din EE un vis de designer devenit realitate. Era cam la fel ca primul meu contact cu software-ul. În cele din urmă, mi-a plăcut EE atât de mult încât am decis să obțin exclusivitate și să "mărturisesc" acest lucru ca și CMS de alegere pentru toate proiectele viitoare.

După aproximativ al treilea sau al patrulea site, însă, am început să văd defectele în relația noastră (așa cum este posibil să se întâmple atunci când într-adevăr vă familiarizați cu ceva) și a fost frustrat în a face sarcinile meniale și repetitive legate de implementarea și gestionarea EE. Acest lucru a fost evident în special în cazul unor proiecte în curs de desfășurare, care au necesitat actualizări de două ori trei ori pe săptămână, de la dezvoltare până la servere live. A ajuns la punctul în care am petrecut aproape același timp cu gestionarea implementărilor, așa cum am codificat de fapt.


Soluția

Nu e mulțumit să pierd bani și să scape la o nebunie plictisitoare, am căutat să ordonez mizeria.

Ceea ce urmează este rodul muncii mele și al altora, un ghid pentru aplicarea principiului DRY în dezvoltarea și desfășurarea de situri cu EE.

Vă umblu prin modul în care am modificat și personalizat configurația falsă, nonsensicală a ExpressionEngine 2, într-un cărucior de lucru eficient, care necesită aproape toată repetarea de a lucra cu EE. În mod specific, aceste modificări vor:

  • Asigurați-vă un punct de pornire cu toate addonurile utilizate în mod obișnuit și setările activate, astfel încât să nu rulați expertul de instalare și să începeți de la zero de fiecare dată.
  • Integrați EE cu un sistem de control al versiunii la alegere pentru o implementare rapidă pe mai multe servere de web sau stații de lucru pentru dezvoltatori și o gestionare ușoară a codului. Experiența mea este cu SVN, dar toate principiile se aplică și lui Git.
  • Centralizați toate setările și configurațiile pentru a facilita migrarea ușoară de la un server la altul, astfel încât lansarea și împingerea actualizărilor este mai degrabă un cinch decât o durere de cap.

Acesta a fost un efort destul de mare și nu aș fi putut să o fac singură. Multe mulțumiri se îndreaptă către următorii oameni care m-au ajutat dacă știau sau nu:

  • Tony Chester de pe OnWired și Casey Reid din studiourile Clearfire, pentru că mă aduc în direcția corectă.
  • Jamie Pittock de la Erskine Design și discursul lui minunat de la EECI 2010, pentru că am descoperit o mulțime de lucruri în EE 1 și m-am inspirat să-l fac în EE 2.
  • Jeff Freeman de Futurity Web Design pentru a mă ajuta cu un pic de PHP pentru a face acest lucru (așa cum am spus, nu sunt un programator).

Pasul 1: descărcare și instalare

Din motive de sănătate, primești o copie nouă a celei mai recente versiuni a EE 2 înainte să faci asta. Descărcați și instalați ca de obicei, de preferință pe un server local, deoarece veți face multe schimbări în fișiere. Lăsați șabloanele Agile Records când vi se solicită.

Luați fișierele de exemplu care sunt incluse în acest tutorial. Încă nu trebuie să faceți nimic cu ei, ci să-i păstrați la îndemână.


Pasul 2: Turnarea supa de config

Dacă ați avut vreodată să migrați ExpressionEngine de la un server la altul, știți că această sarcină nu este o operație ușoară; de fapt, este un coșmar complet dacă nu sunteți pregătiți. O mulțime de acest lucru rezultă din faptul că ExpressionEngine stochează variabilele de configurare și căile serverului de-a lungul creației, până la punctul în care este dificil să le urmăriți toate în jos și să le ajustați atunci când mutați serverele.

Kenn Wilson de la Corvid Works îl însumează în engleză mai bună decât a mea:

"Aceasta este ceea ce face Expression Engine atât de neimprovizibil - se deplasează de la un server la altul, de la dezvoltare la producție, necesită actualizarea acestei adrese URL și a informațiilor despre cale în aproape aproximativ zece locuri. Este greoi, consumatoare de timp și greșită. "

E pe drumul cel bun. Din fericire, există o altă cale. În loc să editați toate aceste variabile într-o duzină de locuri din panoul de control și, probabil, să uitați unele, le puteți consolida într-un singur loc - fișierele de configurare. Așa este, toate acele domenii împrăștiate pe zeci de pagini din harta dvs. CP la câteva fișiere PHP. În mod implicit, ExpressionEngine stochează informațiile de configurare pe care va trebui să vă faceți griji în două fișiere. Acestea sunt:

  • Sistem / ExpressionEngine / config / config.php
  • Sistem / ExpressionEngine / config / database.php

Scăderea bazei de date

Așa cum vă puteți imagina, database.php stochează informațiile despre conexiunea bazei de date MySQL. Presupun că EllisLab consideră că este mai ușor să găsești informațiile despre DB, dacă e în fișierul propriu numit, dar voi argumenta contrariul. Acesta este DRY, naibii! Prefer să deschid un fișier și să-mi editez setările dintr-un loc, nu două, așa că am făcut-o database.php cu totul. Ei bine, nu chiar, dar am luat toate setările bazei de date de la ea și le mutați config.php cu un pic PHP.

 

Redenumiți-vă existența database.php fișier la ceva de genul în vârstă de database.php și mutați-o pe desktop, deoarece veți avea nevoie de setările de conectare mai târziu. Înlocuiți-l cu database.php inclus în acest tutorial și setați permisiunile la 400 așa cum este indicat.

Felicitări. Nu va trebui niciodată să vă faceți griji database.php din nou.

Consolidarea config.php

Acum că database.php îi spune ExpressionEngine să caute informații despre conexiunea bazei de date în config.php trebuie să-l punem acolo, dar există o problemă. Când EE se deplasează de la un server la altul, setările de conexiune la baza de date trebuie să se schimbe pentru a reflecta noul mediu de servere. Dacă vrem să dezvoltăm și să implementăm EE cu un sistem de control al versiunii (și să aibă încredere în mine, o facem), atunci de fiecare dată când implementăm o copie de lucru pe un nou server, trebuie să descărcăm o copie a config.php, modificați setările bazei de date, astfel încât acestea să fie corecte pentru acel server, să-l returnați pe serverul FTP și asigurați-vă că spuneți controlului versiunii noastre să îl ignorați când emitem o comitere sau o actualizare. În cel mai bun scenariu, vom avea un fișier de configurare separat, care nu este controlat de versiune pentru fiecare server suplimentar pe care se află site-ul. Pentru mine (și eu sunt un show un om), care este:

  • serverul local al iMac
  • Serverul local Macbook Pro
  • server de staționare
  • server live

Adăugați un alt cuplu de dezvoltatori dacă lucrați la o agenție și căutați la mulți dintre acești bugeri care rulează în jur. Deci, ce se întâmplă când trebuie să modificați o altă variabilă config, cum ar fi numărul licenței? Trimiteți-vă e-mail-ului și altor dezvoltatori o copie a acestui fișier și încărcați-l pe toate serverele unul câte unul? DRY, prietenii mei, DRY. Singurul răspuns logic este o singură versiune controlată config.php fișier care poate găzdui toate mediile serverului.

Prostii, ai putea spune, dar datorită unor PHP inteligenți este cu adevărat posibil. După cum puteți vedea în exemplul de mai jos, sintaxa cazului PHP caută o adresă IP și servește setările corespunzătoare ale bazei de date pe baza acelei IP. Acum, singurele lucruri pe care trebuie să le cunoașteți și să le modificați atunci când implementați la un nou server sunt adresa IP și informațiile despre conexiunea bazei de date, care ar trebui să vă fie disponibile imediat.

 / * Variabile de mediu * / comutator ($ _SERVER ['SERVER_ADDR']) // caz local '127.0.0.1': $ db ['expressionengine'] ['hostname'] = "localhost"; $ db ['expressionengine'] ['nume de utilizator'] = "root"; $ db ['expressionengine'] ['parola'] = "parola"; $ db ['expressionengine'] ['baza de date'] = "local-db"; pauză; // staging case '72 .10.54.22 ': $ db [' expressionengine '] [' hostname '] = "mysql.exampleserver.com"; $ db ['expressionengine'] ['nume utilizator'] = "admin"; $ db ['expressionengine'] ['parola'] = "parola"; $ db ['expressionengine'] ['baza de date'] = "staging-db"; pauză; // caseta live '82 .335.65.67 ': $ db [' expressionengine '] [' hostname '] = "mysql.exampleserver.com"; $ db ['expressionengine'] ['nume utilizator'] = "admin"; $ db ['expressionengine'] ['parola'] = "parola"; $ db ['expressionengine'] ['baza de date'] = "live-db"; pauză; 

În acest moment vreau să disting între ceea ce eu numesc variabilele de mediu și variabilele universale. Variabilele de mediu sunt diferite pentru fiecare mediu de server. Variabilele universale sunt aceleași indiferent de serverul pe care se află site-ul, astfel încât acestea se află în afara sintaxei switch / case IP. Acestea sunt lucruri precum căile serverului și adresele URL la dosarul temelor, dosarul șablonului, CAPTCHA, numărul licenței, în esență, în afară de informațiile despre baza de date menționate mai sus și de adresa IP (acestea sunt toate comentate în fișierul inclus pentru referință).

M-ai auzit spunând că căile serverului și adresele URL rămân aceleași, indiferent de serverul pe care te ocupi? Da ai făcut. Atâta timp cât structura de directoare a site-ului dvs. rămâne aceeași în fiecare instanță (și dacă aveți controlul versiunii, va fi evident), personalizarea config.php inclus în acest tutorial folosește variabilele PHP pentru a detecta calea serverului rădăcină și URL-ul și pentru a le completa pentru tine. De ce EE nu face acest lucru pentru a începe cu baffles mine, dar eu devin. Nu mai uitați să schimbați calea serverului în folderul temelor când migrați serverele și petreceți o oră estimând de ce aveți un ecran gol în locul unui CP. Oricine a excitat încă?

 / * Variabilele universale * / $ 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'] = "Dezvoltarea unei baze de date interactive"; $ config ['permis_extensii'] = "y"; / * Generalități ----------------------------------------------- -------------------- * / $ 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']; / * Setări pentru conexiunea bazei de date universale -------------------------------------------- ----------------------- * / $ active_group = 'Expresie motorină'; $ 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 /"; / * Căi și url-uri ale directorilor de membri ------------------------------------------- ------------------------ * / $ config ['avatar_url'] = $ config ['site_url']. "/ uploads / system / avatare / „; $ config ['avatar_path'] = $ config ['server_path']. "/ uploads / system / avatare /"; $ 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 /"; / * Căi și urluri de directoare diferite ------------------------------------------- ------------------------ * / $ config ['theme_folder_url'] = $ config ['site_url']. "/ teme /"; $ config ['theme_folder_path'] = $ config ['server_path']. "/ teme /"; / * Preferințe șabloane ---------------------------------------------- --------------------- * / $ config ['save_tmpl_files'] = "y"; $ config ['tmpl_file_basepath'] = $ config ['server_path']. "/ șabloane /"; $ config ['site_404'] = "404 / index"; $ config ['strict_urls'] = "n";

Pentru a instala personalizat config.php fişier:

  1. Redenumiți-vă existența config.php, situat la Sistem / ExpressionEngine / config / config.php, la ceva asemănător vechi-config.php și mutați-l pe desktop.
  2. Prindeți config.php incluse în acest tutorial și aruncați-o în Sistem / ExpressionEngine / config. Setați permisiunile la 400.
  3. Deschide-ți noul config.php în editorul de cod, împreună cu în vârstă de database.php și vechi-config.php
  4. Copiați și inserați setările din fișierele vechi în cea nouă. Fișierul a fost comentat, astfel încât să știți ce să amplasați.

Rețineți că o variabilă universală poate deveni o variabilă de mediu dacă aveți nevoie de ea. Să presupunem că doriți să schimbați numele site-ului în mod automat pe baza serverului pe care îl utilizați, astfel încât să puteți afla dintr-o privire dacă vă uitați la versiunea locală, dev sau live a site-ului dvs. Ștergeți doar variabila din zona "variabilelor universale" și copiați-o în fiecare caz IP, atribuindu-i valoarea dorită.


Pasul 3: Casa de curățenie

Hai sa recunoastem; instalarea implicită a programului ExpressionEngine include o mulțime de fișiere de care nu aveți nevoie, mai ales dacă sunteți un dezvoltator profesionist care nu se străduiește pentru prima dată. Acestea includ fișierele tematice pentru site-ul exemplu Agile Records, smileys, teme wiki și multe altele. De ce să îngrășați site-ul în mod inutil? Puneți EE pe o dietă și ștergeți toate aceste lucruri, puteți oricând să luați o copie proaspătă și să o adăugați înapoi în cazul puțin probabil de care aveți nevoie pentru un wiki, un forum sau alt site bazat pe comunitate. Ștergeți numai ceea ce are sens pentru dvs., dar am făcut aproximativ o duzină de site-uri EE și nu am folosit niciodată.

  • / teme / wiki_themes
  • / teme / site_themes / agile_records
  • / teme / profile_themes / agile_records
  • / images / Emoticoane
  • / imagini / avatare

Pasul 4: Creați o structură standard a dosarului de nivel superior și fișierul .htaccess

Ca multe sarcini în dezvoltarea web-ului, nu există nici o cale corectă de a face acest lucru, dar ceea ce este important este să alegeți un mod și să vă lipiți de el. Unii oameni preferă să-și pună fișierele de materiale statice (imagini, css, js, swf etc.) într-un / teme / site_themes / examplesite pliant. Prefer sa plasez fiecare dosar de activ pe nivel superior pentru ca sunt lenes si nu imi place sa fac clic pe trei niveluri de subfoldere pentru a accesa aceste fisiere in timpul dezvoltarii, plus imi plac URL-urile frumoase in HTML si CSS. Acum, când m-am obișnuit cu o structură standard, nu creez fișiere sau dosare suplimentare la nivel superior decât dacă este absolut necesar (veți vedea de ce într-un minut). Aceasta este structura mea de nivel superior.

  • .htaccess - va explica mai mult într-un minut
  • sistem - redenumiți acest lucru, vă rog
  • css
  • favicon.ico
  • fw - acest lucru este scurt pentru "cadru" de ex. imaginile de fundal CSS
  • imagini - non-CMS-imagini de conținut gestionate
  • index.php
  • js
  • robots.txt
  • template-uri
  • tematică - CP și teme de tip camp
  • încărcări - unde toate documentele și imaginile gestionate de CMS merg

Acum mă înțeleg .htaccess. Este un mister pentru mulți dezvoltatori și sincer este și pentru mine, dar știu suficient ca să-l folosească pentru a elimina acel inger index.php de la alte URL-uri destul de frumoase ale EE. Folosesc o variantă a metodei exclude din Wiki-ul ExpressionEngine. Acest lucru nu este în nici un fel garantat pentru a lucra la gazda dvs. web, dar a lucrat pentru mine pe MAMP Pro, HostGator și MediaTemple, ambele (gs) și (dv). Se aplică restricțiile obișnuite, de ex. mod_rewrite trebuie să fie activată în Apache http.conf etc Dacă utilizați această metodă de eliminare index.php și doriți să adăugați un nou fișier sau un dosar de nivel superior la site-ul dvs. (și vreau să spun un fișier sau un dosar "real", nu o intrare EE, un șablon sau un grup de șabloane), va trebui să adăugați o excepție în .htaccess altfel acest fișier / dosar va fi inaccesibil.

 RewriteEngine pe RewriteCond $ 1! ^ (Admin | css | fw | imagini | js | tematici | teme | încărcări | favicon \ .ico | roboți \ .txt | index \ .php) [NC] RewriteRule ^ (. *) $ Index. php? / $ 1 [L] AddHandler php5-script .php 

Pentru a instala personalizarea mea .htaccess, abandonați fișierul inclus temp.htaccess în dosarul dvs. de nivel superior. Eliminați partea "temp" a numelui fișierului (totul înainte de perioada). Sistemul dvs. de operare vă poate avertiza că redenumirea fișierului va distruge universul. Ignorați acest lucru și apăsați OK. Fișierul ar putea să dispară, ceea ce este bine pentru că .htaccess este un fișier ascuns. Acum, dacă doriți să o editați, va fi necesar ca fișierele ascunse să fie vizibile în setările sistemului dvs. de operare.


Pasul 5: Instalați-vă add-on-urile implicite și configurați-le

După ce am dezvoltat mai multe site-uri pentru EE, există programe de completare pe care nu vreau sau nu le pot trăi fără. Acestea sunt cele mai bune comunități de dezvoltare a EE și au onoarea de a fi instalate în baza mea de cod, astfel încât fiecare site nou să le aibă de la început. Ei sunt (și toți aceștia sunt liberi):

  • Formular gratuit de către Solspace
  • Dive Bar de Pixel & Tonic
  • ED Image Resizer de Erskine Design
  • Low Seg2Cat de Lodewijk Schutte (scăzut)
  • CAPTCHA accesibilă de Greg Salt (Purple Dogfish)
  • Limitatorul de caractere de către EllisLab

Nu instalați doar acestea, configurați-le. De exemplu, am creat toate șabloanele de notificare prin e-mail pentru Freeform, am creat câmpuri personalizate de formular personalizat pe baza celor pe care le folosesc de obicei pentru un formular standard de contact și am un șablon numit contact.html care are codul din capătul din față, inclusiv validarea JavaScript și un mesaj de succes. Chiar dacă trebuie să adaug un câmp sau două sau să muiesc acel cod într-un alt șablon, este o chestiune de tweaking, nu de a crea de la zero de fiecare dată. USCAT. Minus CSS stil, acest formular este gata să iasă din cutie.

Fiți în căutarea unui alt articol de către mine cât de curând discutăm aceste și câteva extensii comerciale pentru EE2 în detaliu.


Pasul 6: Configurați grupul de membri al clientului

Acordarea unui acces nelimitat la clientul meu este înfricoșător atât pentru mine, cât și pentru mine.

Acesta este unul dintre acele lucruri pe care probabil uitați să le faceți până când ați terminat aproape cu site-ul, dar nu trebuie să fie dacă este în codul dvs. de bază. Contul de administrator EE implicit aparține grupului de membri Super Admins, care are în mod necesar acces la toate. Acordarea unui acces nelimitat la clientul meu este înfricoșătoare atât pentru mine, cât și pentru mine, așa că am creat un al doilea grup de membri numit Admins. De obicei, aștept până când am selectat o adresă de e-mail înainte de a-mi face efectiv contul, dar acest lucru durează doar câteva secunde după ce ați definit permisiunile grupului de membri.

În acest grup de membri am oprit toate accesul la șabloane, site-ul și administrarea membrilor, modulul de comunicații și suplimentele. Tot ceea ce majoritatea clienților trebuie să facă este să creeze și să editeze conținut și poate să vizualizeze prezentările lor gratuite. Asta e. Simplificați-le viața și a voastră și luați ceea ce nu au nevoie. Din nou, a trebuit să modific acest lucru înainte, dar un punct de plecare este mai bun decât pornirea de la zero.


Pasul 7: Lucrul cu codul dvs. de bază

Felicitări, acum ar trebui să aveți un punct de plecare superior pentru următorul proiect ExpressionEngine. Ca să puteți adăuga și să o reutilizați, creați un nou proiect în controlul versiunii dvs. și comiteți codul de expresie personalizat ExpressionEngine ca versiunea numărul unu. Mai jos sunt exemple de operații comune pe care probabil că trebuie să le faceți după ce ați primit noi proiecte în curs (pot varia în funcție de configurarea serverului sau dacă utilizați Git în loc de SVN).

Creați un nou proiect - 10 minute

  • Ștergeți toate cache-urile din proiectul dvs. de bază de coduri.
  • Exportați baza de date și importați sub nou nume de proiect folosind PHPMyAdmin sau similar.
  • SVN exporta o copie a codului dvs. în dosarul de copie de lucru al unui nou proiect SVN. FOARTE IMPORTANT: Rețineți că am spus de export, nu de checkout.
  • Setați următoarele foldere și conținutul acestora la permisiunile 777:
    • / template-uri
    • / încărcări (sau oricare ar fi numele dosarului de încărcare)
    • / Sistem / ExpressionEngine / cache / db_cache
  • Adăugați informații despre conexiunea DB pentru noul DB la config.php. Modificați numele site-ului, numerele de licență și orice alte preferințe pe care trebuie să le modificați.
  • Încărcați panoul de control și schimbați preferințele de încărcare a fișierelor. Acestea sunt stocate în baza de date și nu pot fi puse în config pentru un motiv asinine.
  • A înnebuni.

Implementați un site pe un nou server - 10 minute

  • Șterge toate cache-urile.
  • Exportați și importați baza de date utilizând PHPMyAdmin sau similar.
  • Găsiți adresa IP și informațiile despre baza de date și adăugați o secțiune de caz IP config.php.
  • comite config.php la depozit.
  • Consultați depozitul site-ului dvs. în folderul public_html al noului dvs. server.
    • Dacă este un server local, utilizați clientul dvs. SVN.
    • Dacă este un server la distanță, utilizați comanda SSH svn checkout http://samplerepository.com/sampleproject/. Spațiul și punctul după slash-ul final verifică conținutul dosarului în dosarul curent, altfel veți obține public_html / sampleproject / index.php dacă renunți la punctul.
  • Setați următoarele foldere și conținutul acestora la permisiunile 777:
    • / template-uri
    • / încărcări (sau oricare ar fi numele dosarului de încărcare)
    • / Sistem / ExpressionEngine / cache / db_cache
  • Încărcați panoul de control și schimbați preferințele de încărcare a fișierelor.

Actualizați un site pe un server existent - 1 până la 5 minute

  • Ștergeți toate cache-urile (numai dacă ați făcut modificări în baza de date).
  • Exportați și importați baza de date utilizând PHPMyAdmin sau similar (numai dacă ați făcut modificări în baza de date).
  • Rulați o actualizare SVN pe site-ul dvs. copie:
    • Dacă este un server local, utilizați clientul dvs. SVN.
    • Dacă este un server la distanță, utilizați actualizarea svn comanda SSH. Nu trebuie să reintroduceți adresa URL sau parola.
  • Încărcați panoul de control și schimbați preferințele de încărcare a fișierelor (numai dacă ați făcut modificări în baza de date).

Concluzie - Ajutor în deșertul DRY

Pe măsură ce lucrați în legătură cu proiectarea afacerii dvs. și cu dezvoltarea site-urilor web de tip ExpressionEngine, păstrați-vă conștiința mentală despre ceea ce faceți în orice moment, dintr-o perspectivă de ansamblu asupra funcționalității. Unele fragmente de funcționalități ale site-ului web sunt aproape identice pe site-uri, au nevoie doar de mici modificări ale marcajelor și de "piele" CSS pentru a transfera cu ușurință de la unul la altul.

În viitor, microformatele vor standardiza marcarea chiar mai mult! Acestea sunt candidați ideali pentru includerea în codul dumneavoastră. Unul despre care am discutat deja este forma de contact omniprezentă. Alte funcționalități potențiale "standard" (le-am cerut mai multor clienți pentru aceste lucruri):

  • Blogurile și formularele de comentarii asociate acestora
  • Adresă sau cărți v
  • Știri secțiuni de presă
  • Fișierele sitemap XML sau "Google"
  • Pagini de căutare și de căutare
  • Personalizați-vă acest lucru! tip de cod
  • Termenii Facebook sau Twitter

Ar putea teoretic să aveți canale, categorii, grupuri de câmpuri personalizate și șabloane construite și gata de plecare (știu că fac pentru multe dintre acestea). Clientul dvs. obține în continuare aceeași valoare pe care o va avea dacă ați construit manual aceste piese pentru site-ul lor (probabil mai mult, deoarece acestea vor fi rafinate și testate mai des) și faceți mai puțină muncă, ceea ce înseamnă că vă puteți prețui mai competitiv , sau dacă vindeți o taxă fixă, percepeți același preț și transformați mai mult un profit. Amintiți-vă să vă distrați și să vă bucurați de dezvoltarea cu ExpressionEngine!

Cod