Делаем cms. Создание CMS этап проектирования. Что должна уметь CMS

Доброго времени суток, читатели сайт! 🙂

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

Если у вас ещё существуют определённые трудности в ответах на данные вопросы, рекомендую их срочно ликвидировать, ознакомившись с предыдущими публикациями.

Ну а для тех, кто уверен в своих намерениях, пришло время двигаться дальше 🙂

И сегодня мы с вами поговорим о такой вещи, как создание сайта на CMS , т.к. на сегодняшний день это один из самых простых и перспективных .

Он позволит сделать сайт любому желающему самостоятельно, быстро и без особых денежных затрат при запуске.

Процесс разработки сайта на CMS – это не хаотичное вождение курсором мышки по экрану монитора и щелканье клавиатурой 🙂 Он состоит из нескольких этапов, только последовательное выполнение которых приведёт вас к желаемому результату – собственному сайту!

Итак, поговорим о технических моментах создания сайта на CMS более подробно…

Создание сайта на CMS – этапы

Установка на компьютер

Для начала нам нужно скачать сам движок и установить его.

Тут есть два пути:

  1. Скопировать скачанный движок на сервер и установить его прямо там;
  2. Установить CMS на локальный веб-сервер, расположенный на вашем компьютере.

У каждого метода есть, как водится, свои плюсы и минусы.

При прямой установке CMS на сервер Вы сэкономите время на установку , которые незаменимы при разработке на локальном компьютере. Для работы с кодом движка в их административную часть часто встраивают редакторы кода, которые позволяют вносить правки прямо через Интернет.

К тому же, при правках в онлайн-режиме Вы не привязаны к компьютеру, на котором развёрнута локальная копия и имеется весь комплект необходимого программного обеспечения.

Но онлайн-редактирование является также и минусом, т.к. вы очень зависите от наличия Интернета. А его пропадание или сбои в работе во время внесения правок, особенно во время установки компонентов, приводит к потраченным нервам и времени 🙂

К тому же, далеко не во всех CMS есть встроенные редакторы кода. А если они и есть, то оставляют желать лучшего. Например, в OpenCart такого редактора по умолчанию нет. Он доступен при установке модуля CodeManager, но его функционал не совсем подходит для комфортной и продуктивной разработки.

А встроенный по умолчанию редактор кода в движок WordPress вообще отвратительный. После сохранения изменений в файл невозможно вернуть изменения. Нет автоматического форматирования кода, подсветки синтаксиса. Дальше можно не продолжать 🙂

Вот в такой ситуации при создании сайта на CMS Вам может понадобиться второй подход к установке движка – на локальный компьютер. Он работает в случае выбора любого и является универсальным.

При внесении правок на уже запущенный ресурс работа с локальной копией также имеет массу преимуществ по сравнению с удалённым редактированием. Т.к. при какой-то неудаче во время редактирования онлайн для восстановления работы сайта потребуется определённое время, которое ресурс будет недоступен. И Вы потеряете пользователей, трафик и место в поисковой выдаче сайтов, роботы которых не смогут индексировать недоступный ресурс.

Для восстановления работы Вам необходима будет актуальная резервная копия сайта (бэкап), которая не всегда хранится у хостинг-провайдера, а если и есть, то не всегда свежая. При работе с локальной копией такие проблемы Вам будут незнакомы, т.к. Вы не будете вносить правки прямо на сайт, и он всегда будет работать.

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

Одно из главных достоинств данного метода в том, что при установке CMS на локальный компьютер, Вы имеете возможность работать без привязки к наличию сети Интернет.

Лично мне эта особенность очень помогла, когда я подрабатывал фрилансом, работая на заводе. Покрытия Интернет у нас вообще не было, даже для служебных целей.

Можно было пробиться в сеть, используя телефон в качестве модема, но с такой скоростью даже обычный сайт грузился порядка 5 минут. Да и то только там, где сигнал пробивался 🙂

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

Установка шаблона

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

Если Вы создаёте новостной сайт, портал или блог, то оформление не так критично. Если же Вам необходимо создать Интернет-магазин или, ещё лучше, игровой сайт, то графическое оформление должно стоять на одном из первых мест при проектировке ресурса.

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

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

Поэтому установкам шаблонов для конкретных движков будут посвящены отдельные статьи, затрагивающие все нюансы этого процесса.

Установка модулей

Такой же неотъемлемый этап создания сайта на CMS, как и установка шаблона. Несмотря на хорошие базовые возможности движка, его функционала явно недостаточно.

Если взять в качестве примера упоминаемый ранее OpenCart, то по умолчанию в нём нет способа оплаты через WebMoney и Яндекс.Деньги. В вариантах доставки нет различных курьерских служб. И так далее… В случае бесплатных продуктов данное явление встречается сплошь и рядом.

С дело обстоит немного лучше, но всё равно нет-нет, да и выскочит недоработка разработчиков. К тому же, часть базового функционала может не удовлетворить. По этой причине необходимо дополнять магазин различными модулями.

По поводу самого процесса установки модулей при создании сайта на CMS можно сказать, что дела обстоят 1-в-1 с шаблонами. Найти — легко, а установить – сложно 🙂

Поэтому в уроках по созданию ресурсов на базе различных движков мы будем выделять данному вопросу отдельную статью.

Перенос на хостинг

Данный этап разработки сайтов на CMS является частным минусом развёртывания локальной копии у себя на компьютере. Но не нужно его бояться, т.к. ничего страшного из себя он не представляет 🙂

Всё, что Вам потребуется – это имя пользователя и пароль вашей учётной записи на сервере хостинг-провайдера, а также программа для переноса файлов.

Одной из самых распространённых является FileZilla, которой пользуюсь я лично и рекомендую Вам.

Наполнение сайта

Этот этап является завершающим при создании сайта на CMS. Собственно говоря, он является плавным переходом от разработки веб-проекта к работе с ним. Т.к., вне зависимости от типа ресурса, для привлечения посетителей и увеличения заработка на нём на сайте нужно регулярно размещать тематическую информацию.

Новости, статьи, товары – чем их будет больше, тем успешнее у Вас будет сайт.

Все просто 🙂

Некоторым особняков в этом правиле стоит Интернет-магазин, т.к. товаров в нём может быть не одна тысяча. Поэтому для наполнения такого типа ресурса используют специальные технологии и программы, о которых мы обязательно поговорим в будущем.

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

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

Оставляйте в комментариях свои мнения и пожелания по поводу прочитанного. Делитесь записью со своими друзьями в социальных сетях с помощью кнопочек под статьёй, мне будет очень приятно 🙂

Также подписывайтесь на новости сайта, которые будут приходить Вам на e-mail, чтобы быть в курсе новых статей и новостей блога.

Всем удачи! 🙂

P.S. : если вам нужен сайт либо необходимо внести правки на существующий, но для этого нет времени и желания, могу предложить свои услуги.

Более 5 лет опыта профессиональной разработки сайтов. Работа с PHP , OpenCart , WordPress , Laravel ,

Здравствуй мой юный кодер, сегодня МЫ с тобой начнем писать свою простенькую CMS.
Итак, с чего начнем…естественно с проектирования. Что должна уметь/иметь не крутая, простенькая CMS? Этот вопрос достаточно сложный, т.к. любая CMS, даже самая простая, пишется под конкретные нужды: электронный магазин, программерский сайт, новостной сайт, галерея(хотя, в принципе, галерея- это не совсем CMS) и т.д. В этой статье мы рассмотрим второй вариант. Что же должна уметь такая CMS? Думаю все со мной согласятся, что:

1) Админку:)
2) Возможность управления новостями, статьями, загрузками, ссылками
3) Функцию регистрации пользователей
Это тот минимум с которым должна уметь оперировать наша CMS. К дополнительным фичам я отнесу:
1) Динамически создаваемые страницы, т.е. в админке можно запросто ввести содержимое новой страницы. Например: сделать магазин uin’ов на сайте или страницу повествующую о истории вашего проекта и т.п.
2) Комментарии к новостям. Это отдельный пункт, т.к. это довольно таки опасная вещь из-за того, что нужно применять специальные фильтры и спам- детекторы, иначе если вас кто-то очень сильно не любит и у него есть мозг/деньги(или что хуже всего, когда у него есть и то и другое:)) то он, в лучшем случае, может просто забить вашу БД мусором, в худшем он получит полный контроль над сайтом…Мы еще вернемся к этому вопросу;)
3) Возможность создания динамически создаваемых менюшек, их перестановка в различные области сайта.
4) Форма обратной связи с админами(Опасность та же, что и для пункта №2).
Ну вот и все, что я планирую(пока что) тебе объяснить.

Сначала организуем структуру директорий будущего сайта:
/DocumentRoot
/AdminPanel # Корневая директория админки
/Sources # Скрипты админки
/HTML # Собственно сам хтмл админских страниц управления
/Sources # Скрипты CMS
/HTML # Хтмл
/Images # Картинки
/Downloads # Директория хранящая в себе файлы доступные для скачивания
/Config # Файлы конфигурации CMS, например содержащие логин и пароль доступа к MySQL

Теперь что касается навигации по сайту. Навигация будет производится с помощью ссылок(ога, самому смешно:)) типа you_site.com/index.php?act=art&mod=idx. Параметр art характеризует какой раздел сайта мы хотим просмотреть, а параметр mod отвечает за подраздел который мы хотим просмотреть. Вот таблица соответсвия этих параметров:
act=art&mod=idx # Просмотр категорий статей
art=art&mod=cat # Просмотр конкретной категории. Как CMS будет узнавать какую категорию мы хотим просмотреть я объясню чуть позже:)
art=art&mod=art # Просмотр конкретной статьи

Act=dwn&mod=idx # Просмотр категорий статей
art=dwn&mod=cat # Просмотр конкретной категории. Как CMS будет узнавать какую категорию мы хотим просмотреть я объясню чуть позже:)
art=dwn&mod=dwn # Просмотр конкретной статьи

Act=users # Просмотр зарегистрировавшихся пользователей
act=users&mod=profile # Просмотр профайла юзера
art=art&mod=reg # Регистрация юзера

Это пока далеко не все варианты, в дальнейшем мы научим “понимать” CMS и другие параметры. Ну а теперь перейдем непосредственно к программированию. Создадим в корневой папке файл index.php именно через этот скрипт пользователь будет путешествовать по сайту, все остальное кроме картинок должно быть запрещено для просмотра(и не только скрипты но и файлы конфигурации, ХТМЛ)

Код файла index.php:

Require_once(‘config/database.php’); // Загружаем скрипт соединяющийся с БД
require_once(‘sources/session.php’); // Скрипт управления сеансами пользователей
require_once(‘config/config.php’); // Файл конфигурации
require_once(‘sources/check.php’); // Проверяет получаемые из URL’a параметры
require_once(‘sources/links’); // Отвечает за ссылки для навигации по сайту

$act=check_act(&$debug); // Функция проверки переменной $act, находится в файле check.php
[email protected]$_GET[‘mod’]; // Получаем переменную $mod
$site_links=get_links($mysql_tables); // Получаем массив ссылок
switch ($act)
{
case ‘idx’: //если посетитель просматривает главную страницу сайта
require_once(‘sources/news.php’); // Загружаем скрипт новостей
$site_news=get_news($mysql_tables); // Получаем массив новостей
require_once(‘HTML/index.htm’);// Загружаем ХТМЛ страницы
break;
}
?>

Код файла database.php:

$mysql_login=’root’; //Логин для доступа к серверу БД
$mysql_pass=’’; // Пароль
$mysql_host=’localhost’; // Хост на котором висит MySQL
$mysql_database=’MyCMS’; // Имя БД

$mysql_tables[‘news’]=’news’; // Таблица новостей
$mysql_tables[‘articles’]=’articles’; // Таблица статей
$mysql_tables[‘art_categ’]=’art_categ’; // Таблица категорий статей
$mysql_tables[‘downloads’]=’downloads’; // Таблица загрузок
$mysql_tables[‘dwn_categ’]=’dwn_categ’; // Таблица категорий загрузок
$mysql_tables[‘links’]=’links’; // таблица ссылок
$mysql_tables[‘users’]=’users’; // Таблица пользователей
?>

Код файла session.php:

@session_start();

If([email protected]$_SESSION["group_id"])//Если пользователь только что зашел
{
$_SESSION["user"]="Гость";
$_SESSION["id"]=0;
$_SESSION["group_id"]=-1;
$_SESSION["last_click"]=$time;
}

If(@$_SESSION["group_id"]<>"")//если посетитель не гость
{
$_SESSION["last_click"]=$time;//в дальнейшем нам это понадобиться для учета онлайн- пользователей на сайте
}

Код файла check.php:

Function check_act(&$debug)//Функция проверки переменной act
{
[email protected]$_GET["act"];
if($act<>"idx")
{
$act=$debug["indx_act"];//Задаем дефолтное значение
}
return $act;
}

Код файла config.php:

//Установки управления исправлением ошибок:
$debug["indx_act"]="idx";// Если главный скрипт получит не правильное значение переменнной act то он задаст ей это значение

Код файла links.php:

Function get_links(&$table)
{
$query="SELECT position FROM $table";
$result=mysql_query($query);
$rows=mysql_num_rows($result);
for ($i=0; $i<$rows; $i++)
{
$sort_array[$i]=mysql_result($result, $i);
}
sort($sort_array);
for ($j=0; $j<$rows; $j++)
{
$pos=$sort_array[$j];
$query="SELECT * FROM $table WHERE position="$pos"";
$result=mysql_query($query);
$tmp_arr=mysql_fetch_array($result);
$links[$j]["name"]=$tmp_arr["name"];
$links[$j]["link"]=$tmp_arr["link"];
}
$links["rows"]=$rows-1;
return $links;
}

Вот в принципе уже и мини двиган получился:) Теперь давайте разберем код некоторых файлов, чтобы я вам пояснил механизм работы. Итак для чего я проверяю переменную $act спросите вы? А представьте себе что кто-то захочет в url’e ее поменять? После этого скрипт может работать не стабильно и вполне реальна порча данных и т.п. Конечно в данном примере это играет, мягко говоря, второстепенную роль, но запомните, что нужно проверять абсолютно все что может изменить пользователь(лучше даже проверять то что он в принципе и не может изменять). Если же у переменной какое-то левое значение то мы ей присваиваем дефолтное значение и тем самым обламываем вредных киддисов:)

Теперь разберем самый сложный из этих простых скриптиков- links.php. Я думаю, что читатель этой статьи уже сталкивался с управлением каким- либо движком сайта и наверняка догадался почему этот скрипт настолько сложен(для начинающих конечно). Управление ссылками на навигационной панели сайта заключается не только в том, чтобы их добавлять и удалять, а еще, как минимум, в том чтобы изменять их позицию, т.е. вы сначала добавили ссылки на раздел статей, а потом вспомнили, что забыли добавить раздел “Главная”- ссылку на главную страницу, но ведь эта ссылка должна по традиции идти первой…вот тут- то и пригодится управление позициями. Вы просто добавляете ссылку на главную страницу, а потом нажимаете на что-то похожее на “Вверх” или “Поднять” и т.п. Но мы пока не будем в этой части касаться админки, а пока рассмотрим скрипт- клиент. Сначала мы просто выбираем все записи из таблицы и заносим значения поля ‘position’ каждой записи в массив. Затем мы сортируем их по возрастающей, то есть: 0, 1, 2 и т.д. Это позволяет нам потом выполнять в цикле SQL запросы типа: $query="SELECT * FROM $table WHERE position="$pos""; Таким образом мы выбираем из таблицы записи у которых поле ’position’ равно значению переменной $pos, что и дает нам возможность управления позициями ссылок. Здесь мы в цикле, начиная с ключа со значением 0 присваивать имя ссылки и, собственно, саму ссылку. Все что нам потом понадобится чтобы вывести ссылки на свет юзеровский- это написать в хтмл файле index.htm такой скрипт:

For(i=0;$i<$site_links[‘size’];$i++)
{
echo "{$site_links[$i]["name"]}";
}

Вот собственно и все. Кстати, некоторые люди которые читают сейчас эту статью, наверное, возмутяться: “А почему в запросе не использовать конструкцию ORDER BY и не использовать связанные таблицы? Ведь это упростит задачу!”. Дело в том, что стиль написания моих скриптов заключается в том чтобы максимально увеличить их переносимость, т.е. я никогда не использую сложные запросы, связанные таблицы и т.д. Конечно, все это плохо сказывается на скорости работы скриптов и их сопровождении(слишком не понятный код), и если нужно добиться максимальной производительности в ущерб переносимости, то я использую все эти средства, но зато еще ни один мой скрипт при переезде не просто с одной версии MySQL на другую, а с одной платформы и/или типа веб серверов и серверов БД не выдал ни одной ошибки или предупреждения:) Каждый волен делать так как он хочет, ведь на то оно и программирование: возможных решений задачи, столько же сколько и людей пытающихся ее решить;)

P.S. Если что-то не понятно или ты нашел(а) неточности/ошибки в статье- меня всегда можно найти на нашем

Задача построения системы управления содержанием (CMS) может привести в замешательство новичка разработчика PHP. Но не так страшен черт, как его малюют! В данной серии уроков мы построим простую, но полностью работоспособную систему с нуля.

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

Вы можете посмотреть работу готового приложения на странице демонстрации (с целью безопасности включен режим "только чтение", так что добавлять, изменять и удалять статьи не получится). Также можно скачать полный код PHP нашей меленькой CMS с переведенными комментариями.

Примечание: для изучения материалов уроков потребуется веб сервер Apache с установленным модулем PHP и сервер MySQL. Для работы на локальном компьютере можно воспользоваться одним из инструментов веб разработчика: XAMPP (на английском языке), Denwer , Open server или другим.

Замечание о безопасности

В реальных проектах лучше помещать config.php где-нибудь за пределами корневого каталога веб сайта, так как в файле содержатся имена и пароли. Обычно код PHP невозможно просмотреть в браузере, но иногда из-за неправильной конфигурации веб сервера код становится доступным. Вы можете использовать функцию hash() для хэширования паролей и хранить в config.php хэши, вместо текстовых паролей. Затем при регистрации пользователя можно опять воспользоваться функцией hash() для кодирования введенного пароля и сравнения результата с сохраненным в config.php хэшем.

В следующем уроке мы построим основной класс нашего приложения - Article.

Один из самых простых при этом достаточно эффективный способ создания сайта, это создание сайта на готовом CMS. Так как в интернете огромное изобилие всевозможных бесплатных решений для данного вопроса вам не придется тратить лишние деньги на покупку ненужных вам скриптов и подобного. Все предельно просто и понятно.

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

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

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

Я попытаюсь вам описать как можно подробнее все основные плюс и минусы данного варианта создания сайта:

  1. Трудозатратнось. Средняя так как в конечном итоге в делаете все сами и соответственно изучать материал вам придется самостоятельно, и выполнять всю работу. Безусловным плюсом могу здесь обозначить наличие несложных инструкций, написанных изначально для людей мало разбирающихся в веб программировании и соответственно сами CMS административные панели написаны с учетом этого.
  2. Качество. Безусловно, качество остается на высшем уровне, так как сам код пишут профессионалы и соответственно они знают что делают. Но существуют такой отрицательный момент, что в итоге вы ограничиваетесь рамками возможностей конкретного CMS и не всегда есть возможность реализовать вашу задумку как вы хотите, без соответственных и достаточно хороших знаний веб программирования, но и с ними не всегда все получается.
  3. Финансовые затраты. Этот момент безусловно приятный финансовых затрат у вас ни будет ни каких, так как все бесплатно и уроки и инструкции и конечно сами CMS. Так, что ваш кошелек не пострадает.
  4. Перспективы развития. Да, безусловно они есть, но как я уже говорил они будут ограничены рамками обновления и создания плагинов к выбранному вами CMS. И если вы захотите в кардинально что-то изменить, то возможно вам придется менять весь CMS на другой, поэтому прежде чем остановить свой выбор на конкретном варианте узнайте все возможности у выбираемх вами CMS и подумайте наперед, что вы хотите увидеть на своем сайте в будущем и какие он функции должен выполнять.

Для того чтобы приступить к изучению и созданию сайта на CMS для вас созданы, информационные раздел по разным CMS с подробными уроками по их изучению:


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

  1. Обычный сайт визитка, просто подбираем нужный шаблон пишем текст и все.
  2. Достаточно качественный Блог, для реализации данной функции вам потребуется несколько дополнительных компонентов но это не проблема.
  3. Интернет-магазин практически любого объема и сложности.
  4. Сайт каталог или файловый архив.
  5. Портал - реализуется как с помощью стандартных возможностей Joomla
  6. Сайт галерея создание мощной галереи изображений или видео, для этого у Joomla достаточно расширений
  7. 7. Сайт для общения между людьми - для Joomla существует огромное количество компонентов и модулей, специально созданных для реализации общения между посетителями сайта.

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

Какие сайты вы можете сделать на основе данного CMS:

  1. Блог это безусловно первое и основное направление для которого был создан этот движок.
  2. Создание обычного статического сайта, в принципе это могут любые CMS
  3. Сайт объявлений
  4. Каталог статей
  5. Сайт фотогалерею
  6. Форум

(наведите курсор мыши на урок, чтобы смотреть детально)

Часть 1

{ Написание собственного фреймворка }

Длительность: более 4 часов
Список уроков первой части:

1. Вступление
В первом уроке курса разбираются организационные моменты, рассматривается структура курса, разбирается необходимый минимум знаний, который требуется для успешного изучения курса. Также дается перечень необходимого программного обеспечения (сервер, редактор, версия PHP и т.д.).

2. Структура приложения
В этом уроке рассматривается структура создаваемого фреймворка, а также создаются необходимые папки и файлы для дальнейшей работы – это директории ядра, библиотек, контроллеров, моделей, видов и публичной части приложения.

3. Конфигурация приложения
В данном уроке начинается написание кода. В частности, создается единая точка входа для приложения и перенаправляются все запросы на нее, а уже фронт-контроллер приложения будет обрабатывать поступающие запросы.

4. Класс Реестр
В этом уроке пишется полезный класс, который предоставит глобальный объект. Используя данный объект, можно будет записать в него любые данные, которые будут доступны из любой точки нашего приложения.

5. Класс обработки ошибок
Еще один полезный класс, который необходим в любом веб-приложении, это класс для работы с ошибками. Этот класс позволит логгировать возникающие ошибки, а также не показывать их на экране в режиме production.

6-7. Класс Маршрутизатор
Следующая пара уроков будет отведена под написание ключевого класса практически любого веб-приложения, реализующего паттерн MVC.

Речь идет о классе Маршрутизаторе (Router). С помощью данного класса будем понимать, какую именно страницу запросил пользователь и перенаправим запрос на соответствующие контроллер и экшен.

8. Базовый контроллер
В этом уроке создается еще один ключевой класс ядра фреймворка – класс Контроллер.

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

9-10. Класс View
Еще одним компонентом архитектуры MVC является вид (представление). Этот урок посвящен написанию базового класса View, задача которого – отрисовать для пользователя запрошенную страничку. В уроке рассматрвиается, как отделить вид от шаблона, а также в чем разница между ними.

11. Класс Модель
Последним ключевым компонентом архитектурного паттерна MVC – является Модель (Model). Задача модели – непосредственная работа с данными, в частности, предоставлением нужного набора данных по запросу контроллера.

12. ORM RedBeanPHP
Работа модели часто предполагает работу с БД. Соответственно, приходится писать SQL-запросы или же нужно позаботиться о наличии соответствующего класса-билдера, который будет писать такие запросы за нас. В уроке рассматривается второй вариант и подключается замечательная библиотека RedBeanPHP, с помощью которой значительно упрощается дальнейшая работа.

Цели и задачи данного раздела

Первая часть курса посвящена написанию фреймворка с нуля.

В результате создается ядро, набор инструментов, которые облегчат дальнейшую работу и благодаря которым появится возможность в дальнейшем создавать на написанной платформе различные веб-приложения.

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

Часть 2

{ Написание пользовательской части CMS интернет-магазина }

Длительность: более 13 часов
Список уроков второй части:

1. Перенос шаблона в структуру CMS
Чтобы создаваемый интернет-магазин имел приличный вид, был подобран бесплатный шаблон, который интегрируется в структуру фреймворка и создаваемого в курсе движка. Причем, сделать это будет достаточно просто.

2. Структура БД
Второй урок текущей части курса целиком и полностью посвящен разбору архитектуры БД. Здесь создаются основные необходимые таблицы в БД, а также рассматривается их структура для того, чтобы четко представлять, для чего нужна та или иная таблица.

3. Вывод брендов
С этого урока непосредственно начинается работа с кодом CMS и реализуется одна из простейших задач – вывод брендов.

4. Популярные товары
Классическим функционалом любого современного интернет-магазина является вывод различных акционных категорий товара. Это могут быть популярные товары, новинки, распродажа и т.п. В этом уроке реализуется вывод популярных товаров на главную страницу сайта.

5-6. Виджет выбора валют
Полезным и практически обязательным функционалом для многих интернет-магазинов может быть возможность выбора валюты, в которой должны показываться цены товаров и в которой можно купить сам товар. В следующих двух уроках создается виджет выбора валют, с помощью которого пользователь сможет выбирать валюту из списка предлагаемых. Также в дальнейшем реализуется возможность в админке добавлять новые валюты.

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

8-10. Виджет категорий
Следующие три урока выделины для написания еще одного виджета – виджета категорий. Данный виджет реализуется достаточно универсальным, с тем, чтобы использовать его не только в пользовательской части сайта, но и в будущей админке. Созданный виджет будет строить и выводить меню категорий по заданному шаблону. При этом данное меню будет поддерживать неограниченный уровень вложенности категорий.

11-17. Карточка товара
Одна из наиболее важных и объемных частей курса – карточка товара.

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

Функционала достаточно много и его реализация показывается сразу в семи уроках.

18-22. Корзина
Неотъемлемым атрибутом любого интернет-магазина является корзина. Собственно, без корзины сайт просто перестает быть интернет-магазином и превратиться в обычный каталог товаров.

В следующих пяти уроках разрабатывается функционал корзины. Товар можно добавить в корзину из любого места сайта, где есть блок товара или его карточка. Это может быть непосредственно просматриваемый товар или товар в выбранной категории. Также это может быть товар модулей, связанных или же просмотренных товаров. Добавление товара в корзину будет происходить асинхронно, т.е. без перезагрузки страницы.

23-24. Поиск
В уроках 23 и 24 показана реализация поиска по товарам. Это также важный функционал для любого сайта, особенно интернет-магазина.

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

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

26. Класс Pagination
В одной категории в магазине могут находиться сотни и тысячи товаров. Конечно же, выбирать их все для показа на одной странице – не очень хорошая идея. В этом случае принято выводить товары порционно, разбивая их по страницам. Для этого в данном уроке будет написан класс постраничной навигации.

27-31. Регистрация
Еще один достаточно объемный функционал, который реализуется, - регистрация пользователей.

Данная возможность особенно полезна для постоянных покупателей, поскольку избавляет их от постоянного ввода одних и тех же данных при оформлении заказа. В следующих пяти уроках создается возможность регистрации в CMS. Попутно рассматривается валидация данных.

32-35. Оформление заказа
Еще четыре урока посвящены вопросам оформления заказа. Здесь не только будет реализован функционал сохранения заказа и его данных в БД, но и будет реализован функционал отправки уведомления о новом заказе менеджеру сайта, а также будет отправляться письмо с деталями заказа самому покупателю. Для этого будет использоваться уже готовый популярный класс Swift Mailer.

36-40. Фильтры
Последняя объемная и достаточно интересная тема – фильтры. Этому вопросу отведено сразу пять относительно больших урока. Фильтры – очень удобны для пользователя и помогают покупателю в поиске нужных товаров на сайте.

Это будут последние уроки пользовательской части сайта.

Цели и задачи данного раздела

Итак, в первой части показано написание собственного фреймворка – это ядро, на базе которого будет создаваться система управления контентом (CMS) для нашего интернет-магазина.

Во второй части курса урок за уроком создается пользовательская часть сайта с достаточно обширным набором функционала.

Часть 3

{ Написание администраторской части CMS интернет-магазина }

Длительность: более 11 часов
Список уроков третьей части:

1. Шаблон AdminLTE
Первый урок третьей части посвящен основам работы с популярным шаблоном для бэкенда – AdminLTE. В данном уроке скачивается и установливается этот шаблон, а также создается необходимая структура для работы администраторской части CMS.

2. Авторизация администратора
В этом уроке дорабатывается механизм авторизации, который уже имеется, он был написан в уроках пользовательской части сайта.

В этом уроке добавляется несложная система с проверкой дополнительно роли пользователя, с тем чтобы пускать в админку только пользователей с соответствующими правами доступа.

3. Виджеты главной страницы
Шаблон AdminLTE из коробки предлагает много замечательных компонентов, расширяющих возможности CSS фреймворка Bootstrap. Одним из таких компонентов являются небольшие симпатичные блоки-виджеты, которые идеально вписываются в главную страницу админки.

В этом уроке добавляются именно такие. В них будет выводиться основная информация и предоставляться быстрый доступ к ней: заказы, товары, категории и пользователи.

4. Список заказов
В этом уроке реализуется функционал просмотра списка заказов с возможностью детального просмотра выбранного заказа или его удаления при необходимости.

5-6. Обработка заказа
В следующей паре уроков добавляется возможность детального просмотра заказа и изменения его статуса. В деталях заказа менеджер сможет увидеть, как основную информацию по заказу и покупателю, так и расширенную.

7-11. Управление категориями
Пять уроков, с седьмого по одиннадцатый, отведено под реализацию функционала управления категориями. Реализуется функционал, предоставляющий менеджеру возможность создания новых категорий, редактирования существующих, а также их удаления. Кроме этого, добавляется обязательная проверка наличия в категории товаров или вложенных категорий, с тем чтобы избежать случайного удаления не пустой категории.

12. Управление кэшем
Создаваемая в курсе CMS поддерживает механизм кэширования данных. Например, можно кэшировать категории и фильтры. Однако, вместе с тем, периодически могут изменяться, к примеру, существующие категории. Соответственно, необходимо дать администратору сайта возможность перестраивать кэш категорий, удаляя текущий. Эта возможность и будет реализована в текущем уроке.

13-16. Управление пользователями
Четыре урока работы с админской частью сайта отведено под работу с пользователями. Показана реализация стандартного функционала управления пользователями: редактирование профиля и создание новых пользователей. При этом менеджер может создавать как обычного пользователя, так и нового администратора.

17-27. Управление товарами
Основной и наиболее объемный функционал администраторской части – это, конечно же, управление товарами. Именно поэтому на реализацию этого функционала отведено больше всего уроков – одиннадцать уроков.

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

28-30. Управление фильтрами
В следующих трех уроках показана реализация функционала управления фильтрами. Добавляется возможность управления группами фильтров и непосредственно самими атрибутами, которые в последующем можно будет присваивать товарам.

31-32. Управление валютами
В последних двух уроках реализуется механизм управления валютами. Администратор сможет создавать новые валюты и редактировать существующие. Также администратор сможет назначать базовую валюту магазина.

Цели и задачи данного раздела

Итак, создание пользовательской часть интернет-магазина разобрано. Теперь пришла пора управлять всем этим функционалом. И для этого необходима админка.

Именно разработка администраторской часть CMS и показана в финальной части данного курса.