Fuel CMS

На этой странице Я постараюсь объяснить, как работают модули Fuel CMS и для демонстрации напишу, как создать базовый модуль гостевой книги.

Оглавление:
  1. Модули Fuel CMS
  2. Создать модуль Fuel CMS
  3. Создать контроллер Fuel CMS
  4. Заключение

Озеро Самарцы - Отдых в Крыму для всей семьи!
Адрес: Россия, Республика Крым, Белогорский район, с. Зуя
http://samartsy.ru/

Модули Fuel CMS

Большая часть функций Fuel CMS, упаковывается в модулях. Модуль Fuel CMS содержит хотя бы одну модель с прилагаемой таблицей базы данных и может быть расширена с controllers (контроллерами) и отображением (views).

В структуре MVC, модели классов, которые определяют различные поля данных и используются для работы с данными, хранящимися в таблице. Для получения дополнительной информации о модели в CodeIgniter (это framework, на котором написана Fuel CMS) см. в документация фреймворка.

При установке Fuel CMS, стандартные модули включены по умолчанию. Например, система блога построена из трех модулей: сообщения, категории и авторы. Каждый из этих модулей имеет свою собственную таблицу в базе данных. В этой статье мы будем создавать наш собственный модуль гостевой книги Fuel CMS. Каждый может добавить новые комментарии и администратор может моделировать их через панель управления.

К началу

Создать модуль Fuel CMS

Сначала нужно создать папку в каталоге ./fuel/modules/guestbook. С этого момента, я буду ссылаться на этот каталог в качестве «guestbook folder».

Чтобы зарегистрировать модуль, откройте приложения application/config/MY_fuel_modules.php и добавьте следующий код:

<?php
$config['modules']['guestbook'] = array(
'model_name' => 'guestbookcomments_model',
'model_location' => 'guestbook'
);

Мы установили ключ model_name с именем файла модели (который мы создадим) и ключ model_location с именем нового каталога. Fuel CMS теперь будет искать модели в modules/guestbook/models. (См. инструкцию Fuel CMS, полный список параметров).

Далее, создайте таблицу гостевой книга в базу данных со следующими запросом SQL:

CREATE TABLE IF NOT EXISTS guestbook_comments (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
author VARCHAR(25) NULL NULL,
comment VARCHAR(100) NOT NULL,
`date` DATETIME NOT NULL,
visible ENUM('yes', 'no') NOT NULL DEFAULT 'yes',

PRIMARY KEY (id)
);

Цель каждой строки должна быть понятна, на основе имен, таблица, магазины, гостевая книга, комментарии с комментариями автора, название, дата, и есть ли записи visible, или нет (строка visible является особенной для Fuel CMS).

Теперь создадим класс модели, который будет своего рода проводником между PHP и базой данных. Открываем папку, гостевой книги и создайте новый каталог, с названием models. Затем в этот каталог нужно добавить файл модели guestbookcomments_model.php:

<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
require_once(FUEL_PATH . 'models/base_module_model.php');

class GuestbookComments_model extends Base_module_model
{
public function __construct()
{
parent::__construct('guestbook_comments');
}
}

class GuestbookComment_model extends Base_module_record
{
}

Это будет основой для нашего модуля. GuestbookComments_model расширяет класс Base_module_model, который будет обрабатывать наш список и управлять взаимодействием автоматически. Строка, передаваемая в основную конструкцию это имя таблицы базы данных, какая модель будет использоваться. GuestbookComment_modelрасширяет Base_module_record, которая обрабатывает работу с отдельными записями.

Что бы проверить работает или нет, в панели управления в подменю модулей выберите «Guestbook». Обычно там список комментариев, но у нас их, пока нет, поэтому список пуст, нажимаем на кнопку Create, чтобы добавить их.

Гостевая книга Fuel CMS
Модуль, Гостевая книга Fuel CMS

После перезагрузки списка, вы должны увидеть комментарий которые только что добавили. Со временем, список комментариев в гостевой книге увеличится, именно здесь вы будете контролировать комментарии гостевой книги, от спама и глупостей.

К началу

Создать контроллер Fuel CMS

Что бы не стать единственным человеком, который иметь возможность добавлять комментарии! Нам нужно создать контроллер для обработки общих действий.
Создайте каталог контроллера в папке гостевой книги, и поместите туда файл guestbook.php со следующим кодом:

<?php
class Guestbook extends CI_Controller
{
function view()
{
echo '<h1>Guestbook</h1>';
$this->load->module_model('guestbook', 'GuestbookComments_model');
$comments = $this->GuestbookComments_model->find_all();
foreach ($comments as $comment) {
echo '<h2>' . $comment->author . '</h2>';
echo $comment->comment;
}
}
}

Вы можете получить доступ к контроллеру действий, используя имя контроллера. Чтобы увидеть действия, набираем адрес в браузере http://localhost/guestbook/view (или как там у вас каталоги расположены).

Основной код использующийся в контроллере это CodeIgniter за исключением метода module_model(). Первый аргумент, имя каталога модулей, в нашем случае ‘guestbook’, а второй аргумент-это имя нашей модели класса, расширенный Base_module_model.

После регистрации нашей модели модуля, мы используем метод find_all(), и через петлю результатов для их отображения.
На самом деле, гостевая книга без опций, не годится, для добавления новых комментарий, не так ли? Если добавить новый метод в контроллер:

<?php
public function add()
{
$this->load->library(
'form_builder',
array(
'id'=>'addComment',
'form_attrs' => array(
'method' => 'post',
'action' => 'newcomment'
),
'submit_value' => 'Add new comment',
'textarea_rows' => '5',
'textarea_cols' => '28'
)
);

$fields = array(
'name' => array(
'label' => 'Full Name',
'required' => true
),
'comment' => array(
'type' => 'text',
'label' => 'Comment',
'required' => true
)
);
$this->form_builder->set_fields($fields);
echo $this->form_builder->render();
}

то перейдя по адресу http://localhost/guestbook/add и мы должны увидеть форму.

Мы использовали форму Fuel CMS form builder, чтобы было всё красиво, и избежать написания HTML. Сначала загрузили библиотеки form_builder, а затем передали его аргументы для определения свойств и элементов формы. Смотрите документацию.

Форма выбирает действие “newcomment”, поэтому мы должны добавить новый метод в контроллер для обработки заполнений формы:

<?php
public function newcomment()
{
$this->load->module_model('guestbook', 'GuestbookComments_model');
$comment = $this->GuestbookComments_model->create();
$comment->author = $this->input->post('name');
$comment->date = date('Y-m-d G:i:s');
$comment->comment = $this->input->post('comment');
$comment->save();

echo 'comment successfully added';
}
К началу

Заключение

Мы загрузили модель гостевой книги, назначили обработку входных данных формы, а затем сохранили их в базе данных. Наконец, сообщение о успешном добавлении комментария.

Fuel CMS не дает готовых решений, как это делают крупные платформы CMS, поэтому Fuel CMS больше подходит разработчикам. И хорошо что есть CodeIgniter framework для библиотеки Fuel CMS благодаря этому, проще сделать сайт.