مجموعه آموزشی پی استور - https://programstore.ir

آموزش ساخت cms با php | آموزش ایجاد پایگاه داده و فایل های مقالات

در این مقاله سعی داریم به طور کلی به آموزش ساخت cms با php بپردازیم.  سیستم‌های مدیریت محتوا مختلفی در دنیا وجود دارند که استفاده کردن از آن ها می‌تواند تا حد بسیار زیادی استفاده و ایجاد سایت مورد نظر را ساده کند. استفاده از سایت‌ها می‌تواند به رشد هر چه سریع‌تر کسب‌وکارهای مختلف کمک کند. برخی از افراد موافق نیستند که از سیستم‌های مدیریت محتوا آماده در سایت خودشان استفاده کنند و همیشه علاقه‌مند هستند که از یک سیستم مدیریت محتوا جدید خودشان تولید کنند. یا برخی دیگر این کار را به یک برنامه‌نویس ارجاع می‌دهند.

از این رو بازار کدنویسی سیستم‌های مدیریت محتوا اختصاصی بسیار داغ است و افراد زیادی از این بازار برای کسب درآمد خودشان استفاده می‌کنند. اگر شما هم علاقه‌مند به کدنویسی در زبان پی اچ پی و همچنین نوشتن یک سیستم مدیریت محتوا هستید در این مقاله با ما همراه باشید. در مقاله آموزش ساخت cms با php  قصد داریم به طور کلی به نحوه کدنویسی در این سیستم‌ها بپردازیم. قطعا کدنویسی یک سیستم مدیریت محتوا می‌تواند کار بسیار هیجان‌انگیز و جذابی باشد. اگر شما هم به این موضوع علاقه‌مند هستید این مطلب را همراه با ما دنبال کنید. قبل از اینکه به سراغ آموزش ساخت cms با php برویم در صورتی که به زبان برنامه نوسی PHP آشنایی کافی ندارید میتوانید برای یادگیری این زبان برنامه نویسی از آموزش برنامه نویسی پی اچ پی PHP فرادرس استفاده کنید.

سیستم مدیریت محتوا چیست؟

یک سیستم مدیریت محتوا (CMS) یک برنامه وب است که برای نظارت بر محتوا با وظایفی مانند ایجاد، تغییر و حذف محتوا توسط کاربران مختلف برای نمایش به کاربران نهایی استفاده می‌شود. یک CMS معمولاً دارای دو بخش مهم است: برنامه مدیریت محتوا (CMA)، به عنوان رابط کاربری جلویی که به مشتری، حتی با مهارت محدود، اجازه می‌دهد بدون واسطه‌گری مدیر وب‌سایت، محتوا را از یک سایت اضافه، تغییر دهد و حذف کند. همچنین یک برنامه تحویل محتوا (CDA)، که substance را جمع می‌کند و سایت را به روز نگه می‌دارد نیز بخشی از cms به حساب می‌آید.

بسیاری از سازمان‌ها از سیستم‌های مدیریت محتوا در وب‌سایت‌های خود برای توزیع محتوایی که مرتبط با کسب‌وکارشان است، استفاده می‌کنند. معروف‌ترین سیستم مدیریت محتوا در دنیا وردپرس است که افراد زیادی از آن استفاده می‌کنند. سیستم‌های مدیریت محتوا معمولا احتیاج به یک نرم‌افزار مدیریت پایگاه داده مانند مای اس کیو ال دارند که می‌تواند به آن‌ها در مدیریت پایگاه داده کمک کند. قطعا وظیفه سیستم مدیریت محتوا مدیریت کردن پایگاه داده نیست و تنها به ثبت اطلاعات در پایگاه داده می‌پردازد.

معمولا افرادی درخواست CMSهای اختصاصی را می‌دهند که صاحب یک شرکت یا یک کسب‌وکار بزرگ هستند. به طور کلی داشتن یک وب‌سایت باعث افزایش فروش و معرفی برند شما به سایرین می‌شود. اگر بودجه زیادی را برای این کار کنار گذاشته‌ای قطعا بهتر است که از cms اختصاصی استفاده کنید. استفاده کردن از سی ام اس‌های اختصاصی می‌تواند مزایا مختلفی را برای شما در برداشته باشد.

شروع آموزش ساخت cms با php

برای ساختن یک سی ام اس اختصاصی قطعا باید مراحل متعددی را طی کنید. گذراندن هر کدام از این مراحل کاملا وابسته به ساختاری است که خودتان برای سی ام اس مورد نظر قصد دارید ایجاد کنید. برای ساختن یک سی ام اس ساده باید مراحل زیر را طی کنید:

شروع ساخت cms با php

مرحله اول ایجاد پایگاه داده Mysql

  1. ترمینال ویندوز را باز کنید و کد زیر را تایپ کنید.
    mysql -u username -p
  2. حالا دیتابیس مورد نظر شما ایجاد شده است.
  3. به Mysql بروید و در قسمت Prompt کد زیر را تایپ کنید.
    create database cms;
  4. حال باید از Mysql خارج شوید. برای این کار کافی است که exit را تایپ کنید.

ایجاد جداول پایگاه داده

بعد از طی کردن مراحل بالا شما یک پایگاه داده جدید و خالی ایجاد کرده‌اید. این پایگاه داده درون خود هیچ جدولی ندارد و نیاز است که در آن یک سری جدول را قرار دهید. از این جداول برای ذخیره‌سازی داده‌های مربوط به سایت استفاده خواهیم کرد. ایجاد صحیح این جداول و همچنین توجه به معماری پایگاه‌داده اهمیت بسیار زیادی دارد و می‌تواند در عملکرد سایت شما تاثیرگذار باشد. همچنین شما باید با توجه به کاربرد سایت مورد نظر و همچنین عمکلرد آن جداول مورد نیاز خودتان را ایجاد کنید. به طور کلی ایجاد جدول‌های پایگاه داده برای یک سیستم مدیریتم محتوا به شکل زیر صورت می‌گیرد.

DROP TABLE IF EXISTS articles;
CREATE TABLE articles
(
id              smallint unsigned NOT NULL auto_increment,
publicationDate date NOT NULL,                # When the article was published
title           varchar(255) NOT NULL,        # Full title of the article
summary         text NOT NULL,                # A short summary of the article
content         mediumtext NOT NULL,          # The HTML content of the article
PRIMARY KEY     (id)
);

همانطور که می‌‌دانید از زبان اس کیو ال برای کدنویسی در دیتابیس استفاده می‌شود. در ادامه می‌توانید توضیحاتی را در رابطه با کد بالا مشاهده کنید:

از آنجایی که ما طرح جدول خود را ساخته‌ایم، باید آن را در MySQL قرار دهیم تا جدول واقعی را بسازیم. برای انجام این کار، یک پنجره ترمینال باز کنید و پوشه حاوی فایل tables.sql خود را تغییر دهید:

mysql -u username -p cms < tables.sql

ایجاد فایل پیکربندی

تا این بخش از مقاله آموزش ساخت cms با php یک دیتابیس برای سیستم مدیریت محتوا مورد نظر خودمان ایجاد کردیم. حال که پایگاه داده را به درستی ایجاد کردید بهتر است که شروع به نوشتن کد پی اچ پی کنید. برای انجام این کار یک پوشه با نام config.php ایجاد کنید. سپس باید کدهای زیر را درون آن قرار دهید:

<?php
ini_set( "display_errors", true );
date_default_timezone_set( "Australia/Sydney" );
// http://www.php.net/manual/en/timezones.php
define( "DB_DSN", "mysql:host=localhost;dbname=cms" );
define( "DB_USERNAME", "username" );
define( "DB_PASSWORD", "password" );
define( "CLASS_PATH", "classes" );
define( "TEMPLATE_PATH", "templates" );
define( "HOMEPAGE_NUM_ARTICLES", 5 );
define( "ADMIN_USERNAME", "admin" );
define( "ADMIN_PASSWORD", "mypass" );
require( CLASS_PATH . "/Article.php" );
function handleException( $exception ) {
echo "Sorry, a problem occurred. Please try later.";
error_log( $exception->getMessage() );
}
set_exception_handler( 'handleException' );
?>

به طور کلی کد بالا در رابطه با نمایش خطاها و همچنین کنترل آن‌ها است. البته تنظیمات دیگری هم برای کنترل کردن بخش‌های مختلف در آن قرار داده شده است.

ایجاد فایل پیکربندی

ایجاد فایل مقالات

کلاس Article از جمله کلاس‌های ضروری برای هر مقاله‌ای است. هر وب‌سایتی باید بتواند که مقالات خود را از پایگاه داده واکشی کند. از این رو باید یک کلاس برای این کار ایجاد شود. پس از ساخت این کلاس، ایجاد، به روز رسانی، بازیابی و حذف مقالات برای سایر محتویات CMS ما ساده خواهد بود. در پوشه cms یک پوشه classes ایجاد کنید. در آن پوشه classes یک فایل جدید به نام Article.php ایجاد کنید. شما باید در پوشه مقالات سایت خودتان کدهای زیر را کپی کنید.

<?php
/**
* Class to handle articles
*/
class Article
{
  // Properties
/**
* @var int The article ID from the database
*/
public $id = null;

/**
* @var int When the article was published
*/
public $publicationDate = null;

/**
* @var string Full title of the article
*/

public $title = null;

/**
* @var string A short summary of the article
*/

public $summary = null;

/**
* @var string The HTML content of the article
*/
public $content = null;
/**
* Sets the object's properties using the values in the supplied array
* @param assoc The property values
*/

public function __construct( $data=array() ) {

if ( isset( $data['id'] ) ) $this->id = (int) $data['id'];
if ( isset( $data['publicationDate'] ) ) $this->publicationDate = (int) $data['publicationDate'];
if ( isset( $data['title'] ) ) $this->title = preg_replace ( "/[^\.\,\-\_\'\"\@\?\!\:\$ a-zA-Z0-9()]/", "", $data['title'] );
if ( isset( $data['summary'] ) ) $this->summary = preg_replace ( "/[^\.\,\-\_\'\"\@\?\!\:\$ a-zA-Z0-9()]/", "", $data['summary'] );
if ( isset( $data['content'] ) ) $this->content = $data['content'];

/**
* Sets the object's properties using the edit form post values in the supplied array
*
* @param assoc The form post values
*/
public function storeFormValues ( $params ) {

// Store all the parameters

$this->__construct( $params );

// Parse and store the publication date

if ( isset($params['publicationDate']) ) {
$publicationDate = explode ( '-', $params['publicationDate'] );
if ( count($publicationDate) == 3 ) {
list ( $y, $m, $d ) = $publicationDate;
$this->publicationDate = mktime ( 0, 0, 0, $m, $d, $y );
}
}
}
/**
* Returns an Article object matching the given article ID
*
* @param int The article ID
* @return Article|false The article object, or false if the record was not found or there was a problem
*/

public static function getById( $id ) {
$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$sql = "SELECT *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM articles WHERE id=:id";
$st = $conn->prepare( $sql );
$st->bindValue( ":id", $id, PDO::PARAM_INT );
$st->execute();
$row = $st->fetch();
$conn = null;
if ( $row ) return new Article( $row );
}
/**
* Returns all (or a range of) Article objects in the DB
* @param int Optional The number of rows to return (default=all)
* @return Array|false A two-element array : results => array, a list of Article objects; totalRows => Total number of articles
*/

public static function getList( $numRows=1000000 ) {
$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$sql = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(publicationDate) AS publicationDate FROM articles
ORDER BY publicationDate DESC LIMIT :numRows";
$st = $conn->prepare( $sql );
$st->bindValue( ":numRows", $numRows, PDO::PARAM_INT );
$st->execute();
$list = array();
while ( $row = $st->fetch() ) {
$article = new Article( $row );
$list[] = $article;
}
// Now get the total number of articles that matched the criteria
$sql = "SELECT FOUND_ROWS() AS totalRows";
$totalRows = $conn->query( $sql )->fetch();
$conn = null;
return ( array ( "results" => $list, "totalRows" => $totalRows[0] ) );
}
/**
* Inserts the current Article object into the database, and sets its ID property.
*/
public function insert() {
// Does the Article object already have an ID?
if ( !is_null( $this->id ) ) trigger_error ( "Article::insert(): Attempt to insert an Article object that already has its ID property set (to $this->id).", E_USER_ERROR );
// Insert the Article
$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$sql = "INSERT INTO articles ( publicationDate, title, summary, content ) VALUES ( FROM_UNIXTIME(:publicationDate), :title, :summary, :content )";
$st = $conn->prepare ( $sql );
$st->bindValue( ":publicationDate", $this->publicationDate, PDO::PARAM_INT );
$st->bindValue( ":title", $this->title, PDO::PARAM_STR );
$st->bindValue( ":summary", $this->summary, PDO::PARAM_STR );
$st->bindValue( ":content", $this->content, PDO::PARAM_STR );
$st->execute();
$this->id = $conn->lastInsertId();
$conn = null;
}

/**
* Updates the current Article object in the database.
*/

public function update() {

// Does the Article object have an ID?

if ( is_null( $this->id ) ) trigger_error ( "Article::update(): Attempt to update an Article object that does not have its ID property set.", E_USER_ERROR );
// Update the Article
$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$sql = "UPDATE articles SET publicationDate=FROM_UNIXTIME(:publicationDate), title=:title, summary=:summary, content=:content WHERE id=:id";
$st = $conn->prepare ( $sql );
$st->bindValue( ":publicationDate", $this->publicationDate, PDO::PARAM_INT );
$st->bindValue( ":title", $this->title, PDO::PARAM_STR );
$st->bindValue( ":summary", $this->summary, PDO::PARAM_STR );
$st->bindValue( ":content", $this->content, PDO::PARAM_STR );
$st->bindValue( ":id", $this->id, PDO::PARAM_INT );
$st->execute();
$conn = null;
}

/**
* Deletes the current Article object from the database.
*/

public function delete() {

// Does the Article object have an ID?

if ( is_null( $this->id ) ) trigger_error ( "Article::delete(): Attempt to delete an Article object that does not have its ID property set.", E_USER_ERROR );

// Delete the Article

$conn = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );

$st = $conn->prepare ( "DELETE FROM articles WHERE id=:id LIMIT 1" );
$st->bindValue( ":id", $this->id, PDO::PARAM_INT );
$st->execute();
$conn = null;
}
}
?>

ایجاد کردن فایل index.php

حال که به طور کلی فایل‌های مختلف سی ام اس را ایجاد کرده‌ایم وقت آن رسیده است که فایل‌ index.php ایجاد کنیم. این در حقیقت اسکریپتی است که نمایش صفحات جلویی وب سایت را کنترل می کند. این فایل را نیز در پوشه سیستم مدیریت محتوا خودتان ایجاد کنید. همچنین می‌توانید از کدهای زیر برای آن استفاده کنید.

<?php
require( "config.php" );

$action = isset( $_GET['action'] ) ? $_GET['action'] : "";
switch ( $action ) {

case 'archive':
archive();
break;
case 'viewArticle':
viewArticle();
break;
default:
homepage();
}

function archive() {
$results = array();
$data = Article::getList();
$results['articles'] = $data['results'];
$results['totalRows'] = $data['totalRows'];
$results['pageTitle'] = "Article Archive | Widget News";
require( TEMPLATE_PATH . "/archive.php" );
}

function viewArticle() {
if ( !isset($_GET["articleId"]) || !$_GET["articleId"] ) {
homepage();
return;
}

$results = array();
$results['article'] = Article::getById( (int)$_GET["articleId"] );
$results['pageTitle'] = $results['article']->title . " | Widget News";
require( TEMPLATE_PATH . "/viewArticle.php" );
}

function homepage() {
$results = array();
$data = Article::getList( HOMEPAGE_NUM_ARTICLES );
$results['articles'] = $data['results'];
$results['totalRows'] = $data['totalRows'];
$results['pageTitle'] = "Widget News";
require( TEMPLATE_PATH . "/homepage.php" );
}
?>

بقیه کار باید چگونه صورت بگیرد؟

آموزش ساخت cms با php

در مقاله آموزش ساخت cms با php  سعی شد به طور کلی شما را با کدهایی آشنا کنیم که می‌توانید با استفاده از آن‌ها اقدام به ایجاد بخش‌های مختلفی مانند صفحه مقالات و آرشیو کنید. قطعا برای ایجاد یک سی ام اس راه درازی را در پیش  دارید و باید به مباحث مختلفی تسلط داشته باشید. این مباحث می‌تواند شامل کدها و موارد مختلفی شود. اگر علاقه‌مند به یادگیری چنین کارهایی هستید به شما پیشنهاد می‌کنم که از فیلم آموزشی برای یادگیری خودتان استفاده کنید. یادگیری برنامه‌نویسی بسیار آسان است اما به شرط آن که اساتید خبره‌ای را داشته باشید.

سخن آخر در آموزش ساخت cms با php

مقاله آموزش ساخت cms با php به طور کلی یک کمک بزرگ برای افرادی بود که قصد دارند وارد حوزه کدنویسی به زبان پی اچ پی و البته تولید سی ام اس‌های حرفه‌ای شوند. اگر شما هم چنین قصدی را دارید پیشنهاد می‌کنم که حتما سری به فرادرس بزنید. فرادرس که یکی از بهترین مرجع‌های آموزشی در ایران است و می‌تواند یک راهنمای جامع در این حوزه برای شما باشد. اگر از مطالعه این مقاله لذت بردید در بخش نظرات انتقادها و پیشنهادهای خودتان را با ما در میان بگذارید. شاد و موفق و پیروز باشید.