Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
rusldv
6 лет назад

MyLuxe Framework: Разработка CMS для Golos

Разработка CMS для Golos. Архитектура и понятие Framework


Введение

CMS - это система управления контентом, которая используется для построения сайтов и управления его содержимым (текстами и другим медиаконтентом).
Framework - дословно Каркас. Набор сценариев на языке программирования, которые упрощают разработку сложных проектов по принципу "Зачем изобретать велосипед".
Фреймворк содержит набор готовых решений для програмиста.

Сегодня я расскажу о абсолютно новом проекте, разработку которого я начал год назад. Идея проекта предполагает создание бесплатной отечественной (в смысле что комментарии на
русском =)) CMS, которая бы не уступала по функционалу современным платным решениям в WEB.
Затем, после появления Голоса, я задумался о внедрении в ее состав, программного кода, позволяющего взаимодействовать с подобными блокчейн-технологиями.
Как основные рассматриваю Биткоин, Ethereum и Голос.

Как и в случае с моим курсом по созданию соцсети на PHP, мы будем подробно изучать код этой системы, что полезно как для изучения программированию на PHP, так и для знакомства с
этой системой для разработки компонентов под нее.

Стоит также отметить, что это второй подобный проект, которым я занимался в смысле разработки фреймворка. Первый по принципу ннапоминал YiiFramework, но после разработке
основной части системы, я начал замечать, что написанные мною скрипты генерации компонентов (в частности страниц, состоящих из 3 частей - модели, вида и контроллера) весьма
сложны для понимания, и при внесении изменений могуд давать сбой.

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

Назмание для своего проекта я придумал: MyLuxe Framework. Давайте разбираться с ним :)

Структура проекта MyLuxe Framework

Все ядро системы лежит в папке myluxe.

Здесь разработчику наиболее интересен файл start.php - он подключается в начале любой страницы вашего проекта (если вам конечно нужен функционал MyLuxe):

<?php require_once $_SERVER['DOCUMENT_ROOT'].'/myluxe/start.php'; ?>

Таким способом мы можем подключать этот файл в любом файле нашего проекта, и естественно в index.php в корне сайта. Посмотрим, что в нем содержится:

Файл myluxe/start.php

<?php 
    //print '<p>Я файл старт. Я подключаю все библиотеки и компоненты main и admin, создаю переменную $pdo</p>';

    /* Этот файл подключается в начале всех страниц MyLuxe */

    /* Подключаем библиотеки с функциями для компонентов */
    // Функции обеспечивают работу с запросами, БД и файловой системой
    require_once $_SERVER['DOCUMENT_ROOT'].'/myluxe/lib/data_functions.php';

    // Функции для работы с компонентами из других компонентов или файлов-страниц сайта
    require_once $_SERVER['DOCUMENT_ROOT'].'/myluxe/lib/that_functions.php';

    // Функции используемые внутри разрабатываемого компонента
    require_once $_SERVER['DOCUMENT_ROOT'].'/myluxe/lib/this_functions.php';

    // Настраиваем кодировку для работы с MySQL-запросами
    $pdo = data_mysql_init();
    $pdo->exec('SET NAMES utf8');

    /* Подключаем основные компоненты */
    // Подключаем компонент main - содержит основные сведения о сайте и используется другими компонентами
    // that_add('main'); // deactivate template
    // Шапка страницы
    that_add('head');
    // Выводит панель администратора отображает список компонентов и позволяет с ними работать
    that_add('admin');

Как видите, я постарался документировать код, чтобы по нему можно было изучать Framework.
В начале подключаются три файла-библиотеки из директории lib (мы их обязательно рассмотрим подробно по мере изучения).
Затем мы устанавливаем соединение с базой данных, вызывая data_mysql_init() для получения объекта PDO, с помощью которого мы и будем посылать запросы к БД.

Префикс data_ показывает, что данная функция находится в библиотечном файле data_functions.php, который мы подключили ранее.
Затем мы выполняем запрос к базе данных, чтобы установить подходящую нам кодировку: $pdo->exec('SET NAMES utf8');.

С помощью that_add('componentname'); мы подключаем компоненты, в данном случае нам нужны head и admin, которые используются на всех страницах сайта.

Первый запуск CMS

Мы можем просто скопировать папку myluxe в директорию с нашим сайтам, например в моем случае amlx.loc/www/myluxe.
Затем в корневой (amlx.loc/www) создать index.php и подключить start.php как показано выше, однако мы получим исключение:

Дело в том, что в start.php как видно мы делаем запрос к базе данных, однако, у нас еще не создан файл настроек для этого - myluxe/config.ini.
Поэтому наш драйвер, вызываемый посредством data_mysql_init() не знает как и куда подключаться к БД.

для решения этой задачи, как и в любой другой CMS есть два способа:

В ручную создать или отредактировать файл config.ini

Внутри конфига должно содержится, что-то вроде, следующего:

[database]
driver = mysql
host = localhost
schema = amlx
user = amlx
password = amlx
prefix = mlx2_

driver - это драйвер базы данных, к которой мы хотим использовать - чаще всего это MySQL или SQLite.
host - хост, на котором наша база данных (в нашем случае на том же, что и PHP-cgi).
schema - это имя базы данных
user - имя пользователя БД
password - пароль для доступа к базе данных
prefix - проефикс с которого будут начинаться имена всеч таблиц, генерируемые нашей CMS

Если необходимая БД у вас создана, то вы можете создать такой файл config.ini самостоятельно и загрузить (сохранить) его в директорию myluxe.

Воспользоваться скриптом инициализации системы /install/

Для пользователей часто более наглядно воспользоваться специальным интерфейсом, для первичной настройки системы.
В MyLuxe в корневой дирректосрии (там, где index.php) имеется папка с такими скриптами: install.
Таким образом, для настройки системы можно перейти по ссылке http://sitename.loc/inslall и задать конфигурацию, выполнив несколько простых шагов.


В следующей статье мы рассмотрим файлы и скрипты из директории install, задающие конфигурацию системы при установке.
9
2.356 GOLOS
На Golos с November 2016
Комментарии (1)
Сортировать по:
Сначала старые