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

Membangun CMS: phpPress

Scroll to top
Read Time: 16 mins

Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)

Di tutorial sebelumnya, saya telah menunjukkan cara membuat sistem pengelolaan konten (CMS) sistem file flat menggunakan Go, Node.js, dan Ruby.

Dalam tutorial ini, saya akan mengambil model desain yang sama dan membangun server dengan menggunakan PHP. Karena PHP bukanlah server dengan sendirinya, tapi biasanya dipasangkan dengan server web Apache, saya akan menunjukkan cara menyiapkan server web Apache di dalam sistem virtual Vagrant.

Pengaturan dan Memuat Perpustakaan

Untuk memulai, Anda harus menginstal PHP di sistem Anda. Pergi ke situs PHP dan download versi untuk sistem Anda. Sebagian besar distribusi Linux dan semua sistem Mac OS X telah diinstal PHP.

Selanjutnya, instal Composer, manajer paket untuk PHP yang mirip dengan npm untuk Node.js. Untuk menginstal Composer, ketik berikut ini di terminal:

Dengan Composer terinstal, selanjutnya adalah menginstal perpustakaan untuk server. Pertama, buatlah sebuah direktori untuk proyek dengan file dari Membangun CMS: Struktur and Styling atau ekstrak download untuk tutorial ini. Setelah diatur, masuklah ke direktori dan ketik:

Baris-baris ini menginstal empat perpustakaan yang membentuk server: Slim Router adalah perpustakaan routing untuk memproses permintaan server yang masuk, Parsedown menerjemahkan Markdown ke HTML, Handlebars adalah perpustakaan template, dan Jade Library adalah bentuk singkatan pendek dari HTML yang saya gunakan untuk membuat halaman indeks untuk posting.

Membuat index.php

Di bagian atas direktori proyek, buat file index.php. Server Apache mengharapkan halaman utama situs agar memiliki nama ini. Dalam file ini, letakkan kode berikut ini:

Pernyataan require memungkinkan PHP tahu cara memuat berbagai perpustakaan yang terinstal dengan Composer. Kemudian Anda memberitahu PHP untuk menggunakan perpustakaan LightnCandy dan Jade.

Selanjutnya, Anda mengatur router Slim dengan membuat instance dari objek aplikasi Slim dan menyetel penangan kesalahan. Dengan mengatur penangan kesalahan, Anda tidak akan pernah mendapatkan informasi debug saat terjadi kesalahan. Karena itu, saat pengembangan, Anda perlu unset penangan kesalahan. Tapi untuk produksi, komentari baris terakhir dengan unset.

Bagian kode selanjutnya adalah pembuatan tabel hash $parts untuk menyimpan potongan informasi yang digunakan dalam template. Program kemudian menambahkan semuanya di direktori parts dari situs ke tabel hash. Dengan begitu, Anda bisa membuat potongan yang dapat digunakan kembali untuk ditambahkan ke halaman manapun.

Fungsi SetBasicHeader() menetapkan header yang dikembalikan untuk semua halaman. Ini mengatur fungsi kontrol cache dan nama server. Jika Anda membutuhkan lebih banyak informasi header, ini adalah tempat dimana Anda akan mengaturnya.

Tabel hash $shcodes berisi semua fungsi shortcode untuk memproses item di halaman web. Fungsi yang saya tulis di sini sederhana, tapi bisa lebih kompleks jika dibutuhkan. Ini memberi cara untuk menyematkan kode dinamis ke dalam halaman web Anda.

Fungsi processShortCodes() akan menemukan, mengeksekusi, dan memasukkan hasil shortcode. Fungsi ini menemukan semua shortcode dalam sebuah halaman dengan memanggil dirinya secara rekursif pada konten yang terlampir dan bagian halaman lainnya.

Sebuah shortcode memiliki sintaks berikut:

name adalah nama shortcode, arg adalah argumen yang dikirimkan ke shortcode, dan contents adalah bagian dari halaman yang dilampirkan shortcode. Tanda -[ dan ]- bertindak seperti < dan > dalam HTML.

Bagian selanjutnya berisi fungsi pembantu untuk menambahkan pembantu ke mesin template Handlebars. Fungsi pembantu adalah save, date, dan cdate. Fungsi save mengambil nama dan beberapa teks. Dimana saja nama yang diberikan ada di makro, teks yang diberikan akan menggantikannya. Fungsi tanggal mengambil tanggal sekarang dan memformatnya sesuai dengan string format yang diberikan. Fungsi cdate mengambil tanggal dan format string. Ini akan menempatkan tanggal yang diberikan ke format yang diberikan.

Fungsi selanjutnya adalah ProcessPage(). Fungsi ini mengambil tata letak untuk halaman dan isi dari halaman. Yang akan menggabungkan mereka menggunakan mesin template LightnCandy Handlebars. Halaman yang dihasilkan kemudian mencari shortcode. Halaman yang dihasilkan setelah itu dijalankan melalui LightnCandy lagi. Browser menerima output dari LightnCandy.

Fungsi page() menentukan halaman yang akan dikirim ke pengguna. Fungsi menerima alamat halaman dari router dan memanggil ProcessPage() untuk membuat halaman.

Fungsi posts() berfungsi seperti fungsi page() untuk konten posting. Router mengirimkan jenis posting, blog, dan nilai alamat halaman dari rute. Fungsi ini kemudian menggunakan ProcessPage() untuk membuat halaman dikembalikan.

Fungsi figurePage() mendapatkan konten halaman yang benar berdasarkan nama yang diberikan. Fungsi akan mencari file dengan ekstensi .html. Jika ada, ia membacanya dan mengirimkannya ke rutinitas pemanggilan.

Selanjutnya, fungsinya mencari ekstensi .md. Jika ada, ia membacanya, mengubah Markdown menjadi HTML, dan mengembalikannya ke rutinitas pemanggilan. Selanjutnya, fungsi melihat apakah ada salah satu dengan ekstensi .amber. Jika ada, ia membacanya, mengubah sintaks Jade menjadi HTML, dan mengembalikannya ke fungsi pemanggilan.

Fungsi rute ini memetakan halaman utama atau beranda untuk situs web. Ini akan menjalankan semua permintaan ke nama domain dengan atau tanpa '/'.

Definisi rute ini memetakan permintaan spesifik: /favicon.ico. Ini memberi favicon untuk situs web. Ini mengembalikan gambar "/images/favicon.ico" di direktori situs.

Rute ini mendapatkan style sheet yang dikompilasi dan mengembalikannya ke pemohon. Style sheet yang dikompilasi selalu "/css/final/final.css".

Rute ini selalu mengembalikan file JavaScript terkompilasi yang ditemukan di "/js/final/final.js".

Rute ini mengolah semua permintaan untuk gambar. {image} memberitahu kode router untuk memberi nama gambar pada fungsinya. Panggilan ke fungsi $request->getAttribute() mengambil nilainya.

Rute ini mendapatkan semua permintaan video dan mengirimnya ke browser.

Rute ini mengembalikan daftar entri blog dan ringkasannya. Variabel {blog} akan menjadi nama blog yang mana untuk mencantumkan entri.

Rute ini mendapat entri blog tersendiri. {blog} adalah nama blog, dan {post} adalah entri blog untuk mendapatkan.

Permintaan router news bekerja seperti permintaan router blog.

Ini adalah rute halaman umum. Semua permintaan yang tidak sesuai dengan permintaan sebelumnya akan memicu permintaan ini.

Potongan kode terakhir ini memulai server. Fungsi ini akan melakukan semua pengolahan untuk permintaannya. Setelah pengembalian, interpreter PHP akan mengakhiri dan menutup koneksi ke browser pengguna.

Server PHP ini bekerja sama sekali berbeda dari server lain dalam seri ini. Rutinitas ini dimulai dan berakhir untuk setiap permintaan, sementara server lainnya terus memproses permintaannya. Oleh karena itu, server PHP ini membutuhkan waktu lebih lama untuk memproses permintaan karena rutinitas bongkar muat.

Menjalankan Server

Sekarang untuk mengatur server. Salah satu cara termudah untuk mendapatkan stack Apache dan PHP adalah dengan menggunakan Vagrant. Untuk menginstal di Mac, gunakan Homebrew dengan perintah ini:

Jika Anda memiliki sistem Windows atau Linux, gunakan installer dari situs web Vagrant. Situs ini juga memiliki installer mandiri untuk Mac, namun dengan menginstal Homebrew, Anda bisa mendapatkan pembaruan otomatis dengan menjalankan:

Setelah terinstal, buatlah sebuah file bernama Vagrant di direktori project. Dalam file ini, letakkan kode berikut ini:

Ini adalah file konfigurasi Vagrant. Ini memberitahu Vagrant box mesin virtual apa yang untuk membangun, skrip yang menjalankan untuk menyiapkan box untuk server Anda, port apa di mesin virtual untuk memetakan ke port di komputer utama Anda, dan folder untuk disinkronkan ke folder /vagrant di Mesin virtual. Anda perlu mengatur path lengkap ke direktori di komputer Anda bukannya /full/path/to/code/directory.

Selanjutnya, buat file bootstrap.sh dan tambahkan skrip ini ke sana:

Skrip ini akan dimuat di web server Apache dan mengkonfigurasinya. Dengan Apache telah dikonfigurasi, kemudian menginstal PHP versi 5, mengatur direktori root untuk server, dan meluncurkan service Apache. Semua ini akan mengkonfigurasi mesin virtual sesuai kebutuhan untuk proyek ini dan memiliki direktori root dari server yang mendapatkan file dari direktori proyek Anda. Setiap hasil edit yang Anda buat di direktori proyek Anda langsung tersedia ke server.

Dalam direktori proyek, buatlah sebuah file bernama .htaccess dan letakkan kode ini:

Ini memberitahu server Apache bagaimana menangani permintaan untuk situs ini dan untuk caching permintaan secara otomatis. File index.php mendapatkan setiap permintaan ke server.

Menjalankan Server

Untuk memulai server, jalankan perintah berikut di direktori proyek:

Ini akan mendownload mesin virtual jika belum ada di sistem Anda, menjalankan skrip provisioning, dan meluncurkan server. Untuk melihat situsnya, buka browser Anda ke http://localhost:8080.

phpPress Main PagephpPress Main PagephpPress Main Page
Halaman Utama phpPress

Browser harus menampilkan halaman di atas. Server sekarang online dan siap untuk penambahan Anda.

Jika situs web tidak dapat dilihat, Anda harus memeriksa perizinan untuk semua file di situs. OS X sering membuat mereka hanya bisa dibaca. Anda perlu menjadikannya terbaca di dunia dengan perintah berikut di direktori proyek:

Itu akan memastikan bahwa server Apache di mesin virtual mampu membaca file-nya.

Untuk menghentikan server, jalankan perintah berikut di direktori proyek:

Untuk mempelajari lebih lanjut tentang penggunaan Vagrant, bacalah Dokumentasi Vagrant. Anda juga bisa melihat banyak tutorial Vagrant di Envato Tuts+. Saya menggunakan alat Hobo untuk membuat file Vagrant saya. Ini adalah alat yang hebat untuk mengonfigurasi, menjalankan, dan mengelola sistem Vagrant di OS X.

Kesimpulan

Sekarang setelah Anda tahu bagaimana membangun sebuah web server sederhana namun kuat dengan menggunakan bahasa PHP, saatnya bagi Anda untuk bereksperimen. Buat halaman baru, posting, bagian yang dapat disematkan, dan shortcode. Platform sederhana ini jauh lebih cepat daripada menggunakan WordPress, dan ini benar-benar terkendali.

Berbeda dengan server web lainnya di seri ini, CMS berbasis PHP ini dapat berjalan di akun shared hosting manapun. Saya menggunakannya untuk situs web pelayanan saya di Dreamhost. Saya belum mengoptimalkan gambarnya, tapi itu masih cukup bagus. Ceritakan tentang server Anda di komentar di bawah ini.

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
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.