7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. PHP

Menerapkan prinsip DY untuk membangun website dengan ExpressionEngine 2

Read Time: 17 mins

Indonesian (Bahasa Indonesia) translation by Dika Budiaji (you can also view the original English article)

ExpressionEngine 2 adalah sebuah sistem manajemen konten yang luar biasa dan bisa dibilang paling desain-friendly CMS di luar sana, yang digunakan oleh banyak nama-nama terkenal, seperti A List Apart, Andy Clarke dan Veerle Pieters. Ironisnya, namun, konfigurasi default buruk cocok untuk digunakan dalam profesional web alur kerja pengembangan, yang biasanya melibatkan beberapa situs, server, dan pengembang.

Tutorial ini akan menunjukkan kepada Anda bagaimana untuk menyesuaikan ExpressionEngine 2 sehingga Anda dapat menekan tanah berjalan dengan batu kokoh namun fleksibel titik awal yang dapat dengan mudah menyebar ke beberapa environment dalam hitungan menit.


Ikhtisar

Aku bukan seorang programmer. Namun, mantra pemrograman don't repeat yourself, atau prinsip DRY untuk pecinta akronim tersebut antara kita, telah benar-benar mulai beresonansi dalam diri saya karena saya mendapatkan lebih terlibat dengan pengembangan web dan menjalankan bisnis saya sendiri. Pada kenyataannya, DRY adalah nasihat yang baik untuk menghidupi kehidupan Anda secara umum. Mengulangi sendiri biaya lebih banyak waktu di depan, dan berpotensi banyak lagi di jalan jika Anda harus kembali dan mengubahnya di banyak tempat.

Plus it's penghalang untuk pertumbuhan pribadi karena jika Anda melakukan sesuatu yang telah Anda lakukan, Anda tidak belajar sesuatu yang baru. Apa lebih baik adalah untuk mengidentifikasi tempat-tempat di mana Anda mengulangi diri dan datang dengan sebuah sistem untuk membakukan bahwa tugas atau bagian dari data.


Sedikit sejarah

Ketika saya pertama mulai bekerja dengan ExpressionEngine setengah tahun yang lalu, proyek kali dan aku seorang pemula desainer. Tak perlu dikatakan, mentalitas DRY adalah hal terjauh dari pikiran saya. Saya adalah bahagia bersenandung sepanjang, penyia-waktu dengan pengaturan sebagai situasi didikte, tidak mendokumentasikan apa pun dan memiliki ledakan dengan bidang kustom dan kelompok template, hal-hal yang membuat EE seorang desainer mimpi yang menjadi kenyataan. Itu adalah semacam seperti kencan pertama saya dengan perangkat lunak. Pada akhirnya, aku menyukai EE begitu banyak bahwa saya memutuskan untuk mendapatkan eksklusif dan "menikah" itu sebagai CMS pilihan untuk semua proyek-proyek masa depan saya.

Setelah tentang situs ketiga atau keempat, namun, aku mulai melihat kekurangan dalam hubungan kita (seperti bertanggung jawab untuk terjadi ketika Anda benar-benar mendapatkan akrab dengan sesuatu) dan mendapatkan frustrasi melakukan tugas-tugas yang berulang-ulang, kasar, berkaitan dengan menjalankan dan mengelola EE. Ini adalah terutama terlihat dengan beberapa proyek yang sedang berlangsung yang diperlukan dua kali atau tiga kali mingguan pembaharuan dari pengembangan untuk pementasan ke live server. Itu sampai ke titik bahwa saya menghabiskan waktu hampir sama mengelola deployment seperti aku benar-benar mengkode.


Solusi

Tidak puas untuk kehilangan uang dan budak jauhnya di membosankan membosankan, saya berusaha untuk membereskan kekacauan.

Berikut ini adalah buah dari saya dan orang lain tenaga kerja, sebuah panduan untuk menerapkan prinsip DY untuk mengembangkan dan menggunakan situs dengan EE.

Ini menuntun Anda melalui bagaimana saya men-tweak dan mengkustom konfigurasi ExpressionEngine 2’s flabby, tidak masuk akal ExpressionEngine 2 menjadi ramping, efisien pekerja keras yang mengambil hampir semua pengulangan dari bekerja dengan EE. Secara khusus, modifikasi ini akan:

  • Memberikan titik awal dengan semua addons sering digunakan yang diinstal dan pengaturan dihidupkan sehingga Anda tidak menjalankan wizard penginstalan dan mulai dari awal setiap waktu.
  • Mengintegrasikan EE dengan sistem kontrol versi pilihan Anda untuk rapid deployment ke beberapa server web developer workstation dan mudah manajemen kode. Pengalaman saya dengan SVN tetapi semua prinsip-prinsip yang berlaku ke Git juga.
  • Memusatkan semua pengaturan dan konfigurasi untuk memfasilitasi mudah migrasi dari satu server ke yang lain, sehingga meluncurkan dan mendorong pembaruan yang menang lebih daripada sakit kepala.

Ini telah menjadi usaha yang agak besar dan saya tidak bisa melakukannya sendiri. Banyak terima kasih pergi ke orang-orang berikut, yang membantu saya apakah mereka tahu atau tidak:


Langkah 1: Download dan instalasi

Untuk kewarasan Anda demi mendapatkan salinan terbaru membangun 2 EE sebelum Anda melakukan hal ini. Download dan instal seperti biasa, sebaiknya pada server lokal, seperti yang Anda akan membuat banyak perubahan ke file. Biarkan template Agile catatan bila diminta.

Ambil contoh file yang disertakan dengan tutorial ini. Anda tidak perlu melakukan apa-apa dengan mereka dulu, tetapi menjaga mereka berguna.


Langkah 2: Mencurahkan Config sup

Jika Anda pernah harus memigrasi ExpressionEngine dari satu server ke yang lain, Anda tahu bahwa tugas ini adalah tidak mudah; pada kenyataannya, itu adalah mimpi buruk lengkap jika Anda tidak siap. Banyak hal ini berasal dari fakta bahwa ExpressionEngine toko variabel config dan server path seluruh pembuatan, ke titik bahwa sangat sulit untuk melacak mereka semua turun dan menyesuaikan mereka ketika Anda memindahkan server.

Kenn Wilson karya Corvid Works merangkum di Inggris lebih baik daripada saya:

"Ini adalah apa yang membuat Expression Engine jadi unportable-pindah dari satu server ke yang lain, mengatakan dari pengembangan produksi, memerlukan memperbarui informasi ini URL dan path di tempat-tempat secara harfiah sekitar selusin. It's kikuk, memakan waktu, dan rawan kesalahan. "

Dia memang benar. Untungnya, ada cara lain. Daripada mengedit semua variabel-variabel di selusin tempat di panel kontrol dan mungkin lupa beberapa, Anda dapat menggabungkan mereka dalam satu tempat — file config. That's right, semua bidang tersebar lebih dari puluhan halaman di peta CP Anda ke beberapa file PHP. Secara default, ExpressionEngine menyimpan informasi konfigurasi yang Anda akan perlu khawatir tentang dalam dua file. Ini adalah:

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

Membolos database.php

Seperti yang Anda bayangkan, database.php menyimpan informasi koneksi database MySQL. Saya kira EllisLab mengambil posisi yang lebih mudah untuk menemukan informasi yang DB jika di dalamnya memiliki sendiri aptly bernama file, tapi saya akan berpendapat sebaliknya. Ini adalah DRY, sialan! Saya agak membuka satu file dan mengedit setelan dari satu tempat, bukan dua, jadi aku pergi dengan database.php sama sekali. Yah, tidak cukup, tapi aku mengambil semua pengaturan database dari itu dan memindahkan mereka ke config.php dengan sedikit PHP.

Mengubah nama file database.php yang ada sesuatu seperti old-database.php dan memindahkannya ke desktop Anda, karena Anda akan memerlukan pengaturan sambungan yang kemudian. Menggantinya dengan database.php yang termasuk dalam tutorial ini dan mengatur perizinan ke 400 seperti yang ditunjukkan.

Selamat. Anda tidak perlu khawatir tentang database.php lagi.

Mengkonsolidasikan config.php

Sekarang bahwa database.php mengatakan kepada ExpressionEngine untuk mencari database sambungan info di config.php kita perlu untuk benar-benar meletakkannya sana, tapi ada adalah masalah. Ketika EE bergerak dari satu server ke yang lain, pengaturan koneksi database perlu mengubah untuk mencerminkan environment server baru. Jika kita ingin mengembangkan dan menyebarkan EE dengan sistem kontrol versi (dan percayalah, kita lakukan), maka setiap kali kita menggunakan copy pekerjaan ke server baru, kita akan perlu untuk men-download salinan config.php, mengedit pengaturan database jadi mereka benar untuk server , FTP itu kembali ke server, dan pastikan untuk memberitahu kami versi kontrol untuk mengabaikannya ketika kami menerbitkan komit atau update. Di kasus terbaik skenario, kita akan memiliki file terpisah, bebas konfigurasi dikendalikan versi untuk setiap server tambahan yang berada situs. Bagi saya (dan aku one-man show) itu:

  • iMac's server lokal
  • MacBook Pro server lokal
  • staging server
  • Live server

Tambahkan lain beberapa pengembang jika Anda bekerja di sebuah agensi dan Anda sedang melihat banyak pengacau ini berkeliaran. Jadi apa yang terjadi ketika Anda perlu untuk mengubah variabel config yang lain, seperti nomor lisensi? Apakah Anda email sendiri dan pengembang lainnya salinan file ini dan meng-upload ke semua server satu? DRY, teman-teman, DRT. Jawabannya hanya logis adalah file config.php terkontrol versi tunggal, yang dapat menampung semua server lingkungan.

Omong kosong, Anda mungkin berkata, tetapi berkat beberapa PHP pintar memang mungkin. Seperti yang Anda lihat dalam contoh di bawah, sintaks kasus PHP mencari alamat IP, dan menyajikan setting database yang sesuai berbasis IP itu. Sekarang satu-satunya hal Anda perlu tahu dan berubah ketika Anda dikirimkan ke server baru adalah alamat IP dan informasi koneksi database, yang harus tersedia untuk Anda.

Pada titik ini saya ingin membedakan antara apa yang saya sebut variable environment dan universal variable. Variabel lingkungan berbeda pada setiap server lingkungan. Universal variabel yang sama tidak peduli yang server situs berada di, jadi mereka pergi di luar IP switch/case sintaks. Ini adalah hal-hal seperti path server dan URL ke folder tema, template folder, CAPTCHA, nomor lisensi, pada dasarnya apa-apa selain informasi database tersebut dan alamat IP (ini adalah semua berkomentar dalam file yang disertakan untuk referensi).

Apakah Anda mendengar saya mengatakan bahwa server jalan dan URL tetap sama pun apa server Anda? Ya Anda lakukan. Selama struktur folder situs Anda tetap sama dalam setiap contoh (dan jika Anda berada di kontrol versi jelas akan), config.php kustom yang termasuk dalam tutorial ini menggunakan variabel PHP untuk mendeteksi URL dan path server akar dan mengisi mereka untuk Anda. Mengapa EE tidak melakukan ini untuk mulai dengan membingungkan saya, tapi saya ngelantur. Tidak ada lagi lupa untuk mengubah server path ke folder tema saat memigrasi server dan menghabiskan satu jam mencari tahu mengapa Anda memiliki layar kosong daripada CP. sudah bersemangat belum?

Untuk menginstal file config.php kustom:

  1. Mengubah nama config.php Anda yang sudah ada, terletak di system/expressionengine/config/config.php, untuk sesuatu seperti old-config.php dan memindahkannya ke desktop Anda.
  2. Ambil config.php yang ada dalam tutorial ini dan menjatuhkannya ke dalam sistem/expressionengine/config. Mengatur perizinan ke 400.
  3. Membuka config.php baru Anda di editor kode Anda, bersama dengan old-database.php dan old-config.php
  4. Copy dan paste pengaturan dari file lama ke yang baru. File telah berkomentar sehingga Anda tahu apa yang harus dimasukkan di mana.

Perlu diingat bahwa variabel universal dapat menjadi sebuah variabel environment jika Anda memerlukannya untuk. Katakanlah bahwa Anda ingin mengubah nama situs Anda secara otomatis berdasarkan server di, sehingga Anda dapat memberitahu sekilas jika Anda mencari di setempat, dev atau versi live dari situs Anda. Hanya menghapus variabel dari daerah "universal variabel" dan menyalinnya ke dalam setiap kasus IP, menetapkan nilai berapa pun yang Anda inginkan.


Langkah 3: Membersihkan rumah

Mari kita hadapi itu; penginstalan default ExpressionEngine mencakup banyak file Anda yang tidak perlu, terutama jika Anda seorang pengembang profesional yang tidak mengaduk untuk pertama kalinya. Ini termasuk file tema untuk catatan Agile contoh situs, Smiley, tema wiki, dan banyak lagi. Mengapa menggemukkan situs Anda dengan yang tidak perlu? EE mengenakan diet dan menghapus semua hal ini, Anda selalu dapat mengambil salinan baru dan menambahkannya kembali di seandainya Anda memerlukannya untuk wiki, forum atau situs lain berbasis community. Menghapus hanya apa masuk akal bagi Anda, tapi aku sudah dilakukan tentang selusin EE situs dan tidak pernah menggunakan semua itu.

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

Step 4: Membuat struktur Folder tingkat-atas standar dan .htaccess File

Seperti banyak tugas dalam pengembangan web, tidak ada satu cara tepat untuk pergi tentang hal ini, tapi apa yang penting adalah bahwa Anda memilih cara dan menaatinya. Beberapa orang ingin meletakkan file statis aset mereka (gambar, css, js, swf, dll) dalam suatu folder /themes/site_themes/examplesite. Saya lebih suka menaruh setiap folder aset di top level karena aku malas dan tidak suka untuk mengklik melalui tiga tingkat subfolder untuk mengakses file-file ini selama pengembangan, ditambah aku suka URL pendek yang bagus dalam HTML dan CSS. Sekarang bahwa aku sudah terbiasa untuk struktur standar, aku tidak membyat tambahan top level file atau folder kecuali mutlak diperlukan (Anda akan melihat mengapa dalam satu menit). Ini adalah apa yang tampak seperti top level struktur saya.

  • .htaccess – akan menjelaskan lebih lanjut dalam satu menit
  • system-mengubah nama ini silahkan
  • css
  • favicon.ico
  • fw – ini adalah singkatan "framework" misalnya CSS latar belakang gambar
  • images-gambar bebas dikelola CMS konten
  • index.php
  • js
  • robots.txt
  • template
  • themes - CP dan fieldtype
  • upload-dimana semua dikelola CMS docs dan image pergi

Sekarang saya mendapatkan sekitar untuk berbicara tentang .htaccess. Itu adalah sebuah misteri bagi banyak pengembang dan terus terang itu adalah untuk saya juga, tapi aku tahu cukup untuk menggunakannya untuk menghilangkan index.php tak sedap dipandang itu dari EE's URL jika tidak cantik. Saya menggunakan varian dari metode pengecualian dari ExpressionEngine Wiki. Ini dalam ada cara dijamin untuk bekerja pada host web Anda, tapi itu bekerja bagi saya pada MAMP Pro, HostGator dan MediaTemple, keduanya (gs) dan (dv). Peringatan yang biasa berlaku, misalnya mod_rewrite harus diaktifkan di Apache http.conf dll. Jika Anda menggunakan metode ini menghilangkan index.php dan ingin menambahkan baru atas tingkat file atau folder ke situs Anda (dan maksudku "nyata" file atau folder, tidak EE entri, template atau template kelompok), Anda akan perlu untuk menambahkan pengecualian di .htaccess atau lain file/folder itu akan inac cessible.

Untuk menginstal .htaccess kustom saya, masukan file bernama temp.htaccess ke dalam folder top level. Hapus bagian "temp" nama file (semua sebelum periode). Sistem operasi Anda mungkin memperingatkan Anda bahwa mengubah nama file yang akan menghancurkan alam semesta. Mengabaikan hal ini dan tekan OK. File mungkin hilang, mana baik karena .htaccess adalah file tersembunyi. Sekarang jika Anda ingin mengedit, Anda akan perlu untuk memiliki tersembunyi file dapat terlihat dalam pengaturan OS Anda.


Langkah 5: Menginstal Pengaya Default Anda dan mengkonfigurasi mereka

Setelah mengembangkan beberapa situs EE, ada Pengaya yang saya mau atau tidak bisa hidup tanpa. Ini adalah yang terbaik EE development community harus menawarkan dan mereka memiliki kehormatan sedang dipasang di saya kode sehingga setiap situs baru telah mereka dari get-pergi. Mereka (dan ini semua gratis):

Jangan hanya menginstal, mengkonfigurasi mereka. Sebagai contoh, saya telah membuat semua email pemberitahuan template saya untuk Freeform, menciptakan kolom form kustom tambahan berdasarkan apa yang biasanya saya gunakan untuk form kontak standar, dan aku punya template bernama contact.html yang memiliki ujung depan bentuk kode di dalamnya, termasuk JavaScript validasi dan pesan sukses. Bahkan jika saya perlu menambahkan sebuah field atau dua, atau langkah yang membentuk kode ke template yang berbeda, itu adalah masalah tweaker, tidak menciptakan dari awal setiap waktu. DRY. Minus CSS styling, form siap untuk pergi secara default.

Segera di lookout untuk artikel lain oleh saya seperti yang saya membahas ini dan beberapa komersial Pengaya untuk EE2 secara lebih rinci.


Langkah 6: Mengatur Client Member Grup

Memberikan akses tak terbatas ke klien saya menakutkan bagi mereka dan saya.

Ini adalah salah satu dari hal-hal yang Anda mungkin lupa untuk melakukan sampai Anda hampir selesai dengan situs, tapi itu tidak perlu lagi jika itu adalah dalam basis kode Anda. Akun administrator default EE milik kelompok anggota admin Super, yang selalu memiliki akses ke segala sesuatu. Memberikan akses tak terbatas ke klien saya menakutkan bagi mereka dan saya, jadi saya membuat anggota kelompok kedua dinamai admin. Saya biasanya menunggu sampai mereka telah memilih alamat email sebelum aku benar-benar membuat account mereka, tetapi yang hanya membutuhkan waktu beberapa detik setelah Anda memiliki anggota kelompok izin yang ditentukan.

Dalam kelompok anggota ini saya telah dimatikan semua akses ke template, situs dan anggota administrasi, komunikasi, dan Pengaya. Semua yang kebanyakan klien perlu lakukan adalah membuat dan mengedit konten, dan mungkin melihat Freeform submission mereka. Thats it. Menyederhanakan kehidupan mereka dan Anda dan mengambil apa yang mereka tidak perlu. Sekali lagi, aku harus men-tweak ini sebelumnya, tetapi titik awal lebih baik daripada memulai dari awal.


Langkah 7: Bekerja dengan basis kode Anda

Selamat, Anda sekarang harus memiliki jauh lebih unggul dari titik awal untuk proyek ExpressionEngine berikutnya. Sehingga Anda dapat menambahkan untuk itu dan menggunakannya, membuat proyek baru dalam kontrol versi dan komit Anda disesuaikan ExpressionEngine basis kode sebagai versi nomor satu. Berikut adalah contoh dari beberapa operasi umum yang Anda mungkin perlu lakukan setelah Anda punya proyek baru (dapat bervariasi tergantung pada server setup, atau jika Anda menggunakan Git bukan SVN).

Membuat proyek baru - 10 menit

  • Membersihkan semua cache proyek basis kode Anda.
  • Database ekspor dan impor di bawah proyek baru nama menggunakan PHPMyAdmin atau serupa.
  • SVN ekspor salinan Anda kode untuk folder copy pekerjaan proyek SVN baru. SANGAT penting: Perhatikan bahwa saya mengatakan ekspor, bukan checkout.
  • Mengatur folder berikut dan isinya ke izin 777:
    • /templates
    • /uploads (atau apa pun Anda meng-upload folder dinamai)
    • /system/expressionengine/cache/db_cache
  • Menambah informasi sambungan DB untuk DB baru config.php. Mengubah nama situs, nomor lisensi dan preferensi lain yang Anda perlu untuk mengubah.
  • Muat panel kontrol Anda dan mengubah preferensi upload file. Ini disimpan dalam database dan tidak dapat dimasukkan dalam konfigurasi untuk beberapa alasan bodoh.
  • Pergi.

Deploy sebuah situs ke Server baru - 10 menit

  • Membersihkan semua cache.
  • Ekspor dan impor database menggunakan PHPMyAdmin atau serupa.
  • Menemukan IP alamat dan database info dan menambah bagian kasus IP baru config.php.
  • Commit config.php ke repositori Anda.
  • Memeriksa repositori situs Anda ke folder public_html server baru.
    • Jika server lokal menggunakan SVN klien Anda.
    • Jika remote server menggunakan SSH command svn checkout http://samplerepository.com/sampleproject/. space dan dot setelah akhiran garis miring memeriksa isi folder untuk folder saat ini, jika tidak Anda akan mendapatkan public_html/sampleproject/index.php jika Anda meninggalkan dot.
  • Mengatur folder berikut dan isinya ke izin 777:
    • /templates
    • /uploads (atau apa pun upload folder dinamai)
    • /system/expressionengine/cache/db_cache
  • Load panel kontrol Anda dan mengubah preferensi upload file.

Memperbarui situs ke Server yang ada - 1 untuk 5 menit

  • Membersihkan semua cache (hanya jika Anda membuat perubahan ke database).
  • Ekspor dan impor database menggunakan PHPMyAdmin atau serupa (hanya jika Anda membuat perubahan ke database).
  • Jalankan SVN update pada copy situs Anda:
    • Jika server lokal menggunakan SVN klien Anda.
    • Jika remote server menggunakan SSH command svn update. Anda tidak perlu memasukkan kembali URL atau sandi.
  • Load panel kontrol Anda dan mengubah preferensi upload file (hanya jika Anda membuat perubahan ke database).

Kesimpulan - Sojourning di gurun DRY

Ketika Anda pergi tentang bisnis Anda merancang dan mengembangkan ExpressionEngine website, menjaga diri mental menyadari apa yang Anda lakukan sepanjang waktu, dari perspektif fungsi gambaran besar. Beberapa potongan fungsionalitas situs web hampir identik di seluruh situs, mereka hanya membutuhkan beberapa tweak kecil markup dan CSS "skin" dengan mudah mentransfer dari satu ke yang lain.

Di masa depan, microformats akan membakukan markup bahkan lebih! Ini adalah calon yang ideal untuk dimasukkan dalam basis kode Anda. Salah satu yang kita sudah bahas adalah form kontak di mana-mana. Beberapa lain potensi "standar" fungsi (saya punya beberapa klien meminta hal-hal ini):

  • Blog dan form komentar terkait
  • Alamat atau v kartu
  • Bagian rilis berita
  • Sitemap XML atau "Google"
  • Penelusuran dan laman hasil telusur
  • Custom Share ini! jenis kode
  • Timeline Facebook atau Twitter

Anda bisa secara teoritis memiliki channel, kategori, bidang kustom kelompok dan template dibangun keluar dan siap untuk dipakai (saya tahu saya lakukan untuk banyak ini). Klien Anda masih mendapatkan jumlah nilai yang mereka akan jika Anda tangan-dibangun potongan-potongan ini untuk situs mereka (boleh dibilang lebih karena mereka akan dimurnikan dan diuji lebih sering) yang sama dan Anda melakukan sedikit pekerjaan, berarti Anda dapat harga diri lebih kompetitif, atau jika Anda menjual tetap biaya, biaya yang sama harga dan mengubah lebih banyak keuntungan. Ingat untuk bersenang-senang dan menikmati pengembangan dengan ExpressionEngine!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Scroll to top
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.