CMS rendszer készítése PHP nyelven 1.

| | , , ,

2 és fél éves bejegyzésmentes időszak után egy hosszabb lélegzetvételű cikksorozatba kezdenék, ezzel pótolva az elmúlt időszakot (és talán beindítva az oldalt). A sorozat első tagjaként felvázolnám, hogy nagyjából mi is lenne a célom ezzel a cikksorozattal, valamint szót ejtek a CMS fejlesztésének legelső lépéseiről (aki nem tudná, hogy egy CMS mire való, annak javaslom a Wikipedia ide vonatkozó szócikkét).

Mint minden nagyobb lélegzetvételű rendszer, program készítése előtt, egy CMS készítésekor is szükség van specifikációra. A specifikáció fejlesztési modelltől függően kezdetben lehet bővebb, vagy szűkebb szavú. Én nem vagyok híve a "sokat tervezek, majd egyben lekódolok mindent" elvnek, így a CMS tervezésekor a specifikáció csak egy képlékeny vázlat, ami a fejlesztés során többször változik. Ennek megfelelően a cikksorozat egy folyamatosan bővülő CMS fejlesztését mutatja be a kezdeti lépésektől a "kulcsra kész" állapotig, beleértve a programozást, tervezést, design megvalósítást.

Első lépés: A specifikálás

Mivel hosszútávon a célom egy komplex, jól bővíthető, konfigurálható és nem utolsó sorban jól skálázható WCMS készítése, így kezdeti specifikációnak indítsunk az alábbiakkal:

  • moduláris felépítés
  • minden állítható legyen admin felületről, a kódhoz csak fejlesztés során kelljen kézzel hozzányúlni
  • skálázható legyen a CMS: a fontosabb részek (adatbázis, megjelenítés) külön rétegekben helyezkedjenek el, a rétegek egymás között egy jól definiált API-n keresztül kommunikáljanak
  • bővíthetőség: rendelkezzen egy jól definiált plugin API-val

Mint látható, maga a specifikáció elég tömör, viszont ennyi bőven elég egy XP típusú programozáshoz. Mivel a kezdeti feltételek megvannak, így kezdődhet a specifikáció alapján a tervezés.

Második lépés: A tervezés

A kezdeti tervek a megvalósításra hasonlóan egyszerűek, mint a specifikáció:

  • egy index.php fájl lesz az, ami kiszolgálja az oldalt
  • egy .MAINTENANCE fájllal a gyökérben jelezzük, hogy karbantartás üzemmódban vagyunk
  • a karbantartási üzemmódhoz hasonlóan egy .DEBUG fájllal jelezzük, hogy fejlesztés üzemmódban vagyunk
  • a karbantartás jelző maintenance.html elkészítése
  • alap könyvtárstruktúra elkészítése: themes; uploads; logs; js; functions -> admin, ajax, database, request, security; checksums; configs

Harmadik fázis: Az első fájlok létrehozása

A fejlesztéshez létrehozzuk a tervezés során meghatározott könyvtárstruktúrát az index.php, maintenance.html, .DEBUG, .MAINTENANCE fájlokkal együtt az alábbiak szerint:

/
│
├─themes
│
├─uploads
│
├─logs
│
├─js
│
├─functions
│  │
│  ├─admin
│  │
│  ├─ajax
│  │
│  ├─database
│  │
│  ├─request
│  │
│  └─security
│
├─checksums
│
├─configs
│
├─.DEBUG
│
├─.MAINTENANCE
│
├─maintenance.html
│
└─index.php

A .DEBUG, illetve .MAINTENANCE fájlok egyszerű szöveges fájlok, tartalmuk nincs, ennek következtében mindegy hogy milyen karakterkódolásúak, mivel csak a létezőségüket fogjuk vizsgálni.

A maintenance.html tartalma jelenleg az alábbi egyszerű html kód lesz utf-8-as kódolásban, BOM nélkül:

html5<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  </head>
  <body>
    <p>Site is under maintenance...</p>
  </body>
</html>

A későbbiekben ezt majd még szépítjük, viszont jelenleg a funkcionalitás a fő szempont, aminek ez az alap HTML5-ös fájl meg is felel.

Következzen az index.php, ami az egész CMS lelke lesz, az összes html kérést ez dolgozza fel, éppen ezért alkalmas lesz a karbantartás és fejlesztés módok kezelésére.

A tartalma pedig az alábbi lesz, amit később részletezek:

php<?php
if(file_exists(".MAINTENANCE")){
  include("maintenance.html");
  exit(0);
}

if(file_exists('.DEBUG')){
  error_reporting(E_ALL | E_STRICT);
  ini_set('display_errors','On');
}
else{
  error_reporting(0);
  ini_set('display_errors','Off');
}
?>

A fenti kód működése nagyon egyszerű. Először megvizsgáljuk a file_exists függvénnyel, hogy létezik-e a .MAINTENANCE fájl. Ha létezik, akkor az include segítségével betöltjük a maintenance.html fájlunk tartalmát és az exit(0)-val megszakítjuk a kódunk futását, így gyakorlatilag kiírattuk a maintenance.html tartalmát.

Következő lépésben megnézzük, hogy a .DEBUG fájlunk létezik-e. Ha létezik, akkor bekapcsoljuk a php hibakijelzését, ha nem, akkor minden hibajelzést kikapcsolunk.

Ezzel végeztünk is az első résszel, a következő részben tovább finomítjuk a kódot, specifikációt kibővítjük és megoldjuk azt is, hogy a site administrátora karbantartás üzemmódban is elérjen minden funkciót.

A cikkben található könyvtárstruktúra és vonatkozó fájlok megtalálhatók a cms-1.zip fájlban

A cikksorozat további részei

CMS rendszer készítése PHP nyelven 2.

CMS specifikáció

Folyamatosan bővülő CMS specifikáció

0 hozzászólás

Még nem érkezett hozzászólás...

Hozzászólás küldéshez jelentkezz be!

Download Vivaldi Today!

Hasznos oldalak, linkek

tutorial.hu

Honlapkészítés, weboldal készítés kapcsán hasznos leírások


WebPillangó

Webprogramozás és grafika, photoshop leírások és kiegészítők


Blogom

blog.fefy.info bejegyzések

Apró szösszenetek egy informatikus életéből

Valid XHTML1.0 | valid CSS | 100% tableless
© 2011 - 2017 fefy.info | Az oldal betöltődési ideje: 438ms