Как уже упоминалось в статье Общие вопросы проектирования CMS, в качестве фреймворка для реализации движка CMS мы будем использовать CodeIgniter. О его приемуществах и недостатках можно почитать на бескрайних просторах интернета. Мне же лично он нравится прежде всего своей простотой, гибкостью использования, хорошей документированностью, быстрой скоростью работы, элементарной установкой на сервер и т.д. В настоящей статье рассматривается вопрос установки фреймворка для работы двух приложений на одном ядре, а также некоторые подготовительные действия для дальнейшего разворачивания системы управления контентом.
Основные вводные.
- Используем шаблон проектирования Модель-Отображение-Контроллер.
- Модель будет представлять из себя класс, с набором методов, которые содержат запросы для работы с базой данных.
- Отображение содержит HTML-код, по возможности с минимальным количеством PHP. Никаких SMARTY, а также других шаблонизаторов не используем.
- Контроллер - координатор приложения, выступаещий в роли посредника между Моделью, Отображением, и другими ресурсами, необходимыми для того чтобы по HTTP запросу сформировать веб-страницу.
Установка CodeIgniter.
Для установки CodeIgniter на сервер и создания необходимой нам конфигурации фреймворка, нам необходимо проделать следующие предварительные манипуляции:
- Распаковать архив с дистрибутивом, последнюю версию можно скачать здесь: http://codeigniter.com/downloads/.
- Загрузить папки и файлы CodeIgniter на сервер. Файл index.php должен оказаться в корне.
- Поскольку у нас предполагается в наличии административная часть и собственно сам сайт, и эти две части связаны между собой только посредством базы данных, то наряду с файлом index.php в корне необходимо создать файл admin.php, который будет точкой входа в админку (его содержимое - аналогично содержимому файла index.php.
- В директории "application" необходимо создать две поддиректории: "site", где будут располагаться файлы и папки для работы сайта и "admin", для работы админки. Соответственно в эти директории необходимо скопировать все папки и файлы из "application". Теперь, файл index.php будет работать с папкой "application/site", а файл admin.php с папкой "application/admin". Единственное, надо не забыть это указать в файле admin.php и в соответствующей строке написать: $application_folder = "application/admin"; то же самое необходимо сделать в файле index.php: $application_folder = "application/site"; .
- Дальше будем работать с админкой, поэтому, необходимо открыть файл application/admin/config/config.php и установить наш корневой URL.
- Для установки настроек базы данных - открываем файл application/admin/config/database.php и производим соответствующие манипуляции.
- В файле application/admin/config/routes.php прописываем контроллер по умолчанию: $route['default_controller'] = "main";.
Проверяем работоспособность.
- Для проверки работоспособности нашей системы создадим первый файл контроллера в папке admin - main.php, например следующего содержания с выводом в браузер традиционного 'Hello World!':
class Main extends Controller { function index() { echo 'Hello World!'; } }
- Теперь зайдем на наш сайт, используя такой адрес:
www.my-site.ru/admin.php
- В результате должны получить:
Hello World!
Установка библиотек и расширений.
В папке application/admin/libraries/ создадим следующие файлы:
- MY_Controller.php - расширение главного контроллера.
- MY_Model.php - расширение главной модели.
- Session.php - библиотека Native Session, которую можно скачать здесь: http://cocodeigniter.com/wiki/Native_session/
- User.php - библиотека работы с правами пользователей.
Содержимое файлов (кроме файла Session.php) будет раскрыто в следующих постах, здесь осветим только их основное назначение:
- MY_Controller.php - служит для инициализации основных переменных, также содержит некотроые часто используемые методы в работе системы управления контентом. Да, и каждый контроллер админки будет теперь являться дочерним по отношению к MY_Controller (статья Расширяем класс гланого контроллера).
- MY_Model.php - в расширении главной модели будут содержаться наиболее часто используемые методы для работы с базой данных.
- User.php - предназначен для проверки доступа пользователя к админке и разграничению прав доступа к основным операциям с содержимым.
Структура каталогов:
- В папке application/admin/controllers создадим папку page, где будут сожержаться контроллеры, отвечающие за работу с данными админки - новости, события, настройки и т.д. Идея заключается в том, чтобы при клике на ссылке основного меню подключался соответствующий контроллер.
- В папке application/admin/models также создадим папку page, где будут содержаться модели.
- И в папке application/admin/views создаем папки: page - где будут лежать подпапки с представлениями для соответствующих страниц; block - с представлениями повторяющихся блоков; templates - где будут содержаться шаблоны оформления нашей системы управления (их может быть несколько, в соответствии с количеством тем оформления).
Ну, будем считать, что в основном проведена подготовка к использованию CodeIgniter для решения наших задач. В ближайших статьях будут рассмотрены вопросы по загрузке страниц админки с помощью AJAX и сделана первая страница для формирования основного меню админки.