Core CMS adalah arsitekturnya. Seperti motherboard komputer, ini adalah komponen yang paling penting, tanpanya CPU, RAM, Screen dan komponen lainnya tidak akan bisa saling berkomunikasi. Core CMS adalah “tulang punggung” CMS itu sendiri. Ia menghubungkan koneksi ke database, interaksi browser, dan plugin secara bersama-sama.

1.1. Area Privat dan Area Publik pada CMS

CMS terdiri dari area manajemen (area admin) dan area yang bisa dilihat oleh publik (front-end).

Front-end

Pada website yang tidak berbasis CMS, ketika kamu meminta  sesuatu dari web server melalui sebuah URL, web server akan mencari jika file yang diminta tersedia, dan jika ya, web server akan memberikannya. Sangat simpel.

Dalam CMS, definisi halaman web mungkin sedikit kabur. Bayangkan Anda berada di bagian berita dari situs di http://example.com/news, dan ini menunjukkan sebuah gambaran dari semua potongan berita di website. Hal ini dapat didefinisikan sebagai halaman.

Sekarang katakanlah Anda “filter” berita. Katakanlah ada 60 item berita, dan hanya 20 berita yang ditampilkan pada tiap halaman. Untuk melihat 20 berikutnya, Anda mungkin menuju ke /news?page = 2.

Dalam CMS, URL /news dan /news?page=2 mungkin tidak sesuai persis dengan dua file di server.

Karena CMS didukung basis data, tidak perlu untuk memiliki file sumber fisik yang terpisah untuk setiap halaman. Misalnya, tidak perlu untuk memiliki sebuah file /news sama sekali jika isi halaman dapat dilayani melalui file root /index.php sebagai gantinya.

Ketika kita membuat halaman baru di area administrasi, ada pilihan menulis sebuah file fisik yang sesuai dengannya, atau hanya menyimpannya dalam database.

CMS seharusnya hanya dapat menulis ke file yang berada di ruang web publik dalam situasi yang ketat.

Alih-alih membuat halaman web sebagai file, lebih baik menggunakan “controller” untuk membaca dari database, berdasarkan URL itu. Hal ini mengurangi kebutuhan CMS untuk memiliki izin write pada bagian yang terlihat publik dari web kita, sehingga meningkatkan keamanan.

Ada pola pemrograman populer disebut MVC (Model-View-Controller). Dalam MVC, sebuah “controller” dikirimi permintaan. Permintaan ini kemudian diurai oleh controller, dan “model” apapun yang diperlukan diinisialisasi dan dijalankan dengan data yang disediakan. Ketika model selesai, data kembali dilewatkan melalui “view” untuk merender halaman web, yang kemudian dikembalikan kepada pemohon.

Versi CMS ini adalah: Website ini mengirimkan permintaan HTTP. Permintaan ini diurai oleh mesin CMS, dan plugin yang diperlukan diciptakan dan dijalankan dengan parameter HTTP. Kemudian plugin selesai, mereka mengembalikan hasil mereka ke CMS, yang kemudian membuat hasil web menggunakan template HTML, dan mengirimkan hasilnya kembali ke browser.

Dalam contoh nyata : CMS meminta /news?page=2 . CMS menyadari /news menggunakan plugin “news” dan memulainya, dengan melewatkan parameter “page = 2”.

Plugin meraih informasi yang dibutuhkan dari database dan mengirimkan hasilnya kembali ke CMS. CMS kemudian membuat HTML dengan melewatkan ke template, dan mengirimkan kembali ke browser.

Hal ini, singkatnya, adalah persis bagaimana sisi publik (front-end) dari CMS kami akan bekerja.

Jadi, untuk menulis ulang proses yang sebenarnya, di sini adalah apa yang CMS lakukan ketika menerima permintaan dari browser:

  1. Web server mengirim permintaan ke CMS
  2. CMS memilah request kedalam komponennya –  halaman yang di minta dan parameternya.
  3. Halaman di dapat dari database atau cache.
  4. Jika halaman menggunakan suatu plugin, kemudian plugin tersebut dijalankan, melewatkannya ke konten halaman dan parameternya.
  5. Data yang dihasilkan kemudian di render menjadi sebuah halaman HTML melalui template.
  6. Browser kemudian dikirimi HTML yang dihasilkan.

Area Admin

Ada sejumlah cara administrasi database CMS bisa dilakukan:

  1. Halaman bisa diedit “di tempat”. Ini berarti bahwa admin akan login ke sisi publik dari situs, dan disajikan dengan pandangan yang hanya sedikit berbeda dari pembaca normal. Hal ini akan memungkinkan admin untuk menambah atau mengedit halaman, semua dari front-end.
  2. Administrasi dapat dilakukan dari domain yang sama sekali terpisah (admin.example.com, misalnya), untuk memungkinkan administrasi diisolasi dari situs web buat umum.
  3. Administrasi dapat dilakukan dari sebuah direktori dalam situs ini, dilindungi sedemikian rupa sehingga hanya log-in pengguna dengan akses yang benar dapat memasuki salah satu halamannya.
  4. Situs dapat diadministrasikan dari program eksternal khusus, seperti program yang berjalan di desktop administrator.

Metode yang paling populer yang dipilih untuk CMS adalah administrasi situs dari direktori dilindungi dalam aplikasi (opsi 3 dalam daftar sebelumnya).

Pemilihan metode yang kamu gunakan adalah terserah padamu. Tidak ada standar tunggal yang menyatakan Anda harus melakukannya dengan cara tertentu. Aku memilih pada pilihan ke 3 karena menurut pendapat saya, ia memiliki sejumlah keunggulan dibandingkan yang lain:

  1. Mengupgrade dan menginstal area front-end dan admin keduanya dilakukan sebagai satu bagian dari upgrade /instalasi perangkat lunak tunggal. Dalam opsi 2 dan 4, admin area benar-benar terpisah dari front-end, dan upgrade akan perlu dikoordinasikan.
  2. Menjaga admin area terpisah dari front-end memungkinkan Anda untuk memiliki struktur navigasi atau tata letak halaman yang tidak tergantung pada desain template front-end.
  3. Karena admin area berada dalam struktur direktori dari situs itu sendiri, dapat diakses dari mana saja asalkan website itu sendiri dapat diakses. Ini berarti Anda dapat mengurus website Anda dari mana saja asalkan Anda memiliki akses internet.

Untuk konsistensi, meskipun memungkinkan untuk menulis beberapa metode administrasi, seperti administrasi jarak jauh melalui API RPC serta lokal dengan wilayah administrasi berbasis direktori, masuk akal untuk berkonsentrasi pada satu metode. Hal ini memungkinkan Anda untuk mengembangkan fitur baru lebih cepat, karena Anda tidak perlu menulis fungsi administrasi dua kali atau lebih, dan juga menghilangkan masalah di mana perubahan API mungkin diperbaiki di satu tempat tetapi tidak di tempat lain.

Advertisements

About phpgeek programmer

pemimpi yang berharap menjadi the best programmer di zamannya

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s