<MyRusakov.ru />

Создание Интернет-магазина на PHP и MySQL

Создание Интернет-магазина на PHP и MySQL

Видеокурс "Создание Интернет-магазина на PHP и MySQL" - это уникальный курс по созданию Интернет-магазина с нуля. Особенностью данного курса является то, что создание идёт с самого начала, то есть от идеи. Далее создаётся дизайн всех необходимых страниц, после делается их вёрстка. Затем создаётся движок на PHP и MySQL, после делается Admin-панель и, наконец, готовый сайт размещается в Интернете.

Адрес созданного в этом курсе сайта: http://storedvd.ru

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

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Как создать движок для сайта

Как создать движок для сайта

У меня часто спрашивают: "Как создать свой собственный движок для сайта, например, как Joomla, DLE, WordPress и другие". Многие, конечно, спросят: "А зачем, ведь есть, например, Joomla?". На этот вопрос я уже отвечал в этой статье: joomla vs сайт с нуля. И если Вы приняли решение о создании своего движка для сайта, то читайте дальше.

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

  1. Сверстайте все страницы сайта. Здесь совсем необязательно рисовать какой-то дизайн - это можно сделать потом. Вы должны просто чётко нарисовать структуру внешнего вида: где будет лого, где меню, сколько колонок у Вас будет, что будет в подвале и так далее. Это всё можно будет потом поменять, но начальном этапе Вам просто нужно отлаживать движок, поэтому самый элементарный внешний вид всё равно потребуется.
  2. Создайте все таблицы для базы данных. В этом пункте необходимо понять, какие таблицы Вам потребуется и какие там будут поля. Например, таблица со статьями, с пользователями, с разделами сайта и так далее. Ничего страшного не будет, если Вы что-то забудете. Но этот пункт надо выполнить максимально хорошо, потому что после этого внутренняя структура движка станет намного понятнее.
  3. Теперь Вам необходимо создать набор классов (да, советую использовать объектно-ориентированное программирование, поверьте - так будет намного проще), каждый из которых отвечает за определённую часть. Например, класс по работе с базой данных, класс по управлению пользователями и так далее. Обратите внимание, что один класс не должен реализовывать задачи, которые по смыслу относятся к другим. Например, не надо соединяться с базой данных в классе пользователя. А надо создать объект базы данных в классе пользователя и им манипулировать. В каждом классе Вы должны написать все методы, которые Вам потребуются. Например, метод получения логина пользователя по его id или метод изменения e-mail пользователя и так далее. Также наверняка Вам потребуется какой-нибудь глобальный абстрактный класс, в котором будут содержаться методы, общие для всех других. Например, очень полезный метод - это получения значения некоего поля, по известному имени и значению другого поля. Например, мы знаем e-mail пользователя, и хотим узнать его логин. Такой метод легко данную задачу решит.
  4. Разбейте Ваш шаблон на составные части и отправьте их в отдельные файлы с расширением tpl. Делается это так: копируете какую-то отдельную часть (например, форму авторизации, часть, где выводятся статьи, меню и другие) и вставляете в отдельный файл tpl. В результате, у Вас появится большое количество файлов-шаблонизаторов. В этих файлах-шаблонизаторах поставьте {элемент_шаблона}. Например, там где должно быть имя пользователя поставьте {username}. Там, где должен быть заголовок статьи, поставьте {article_title}. Аналогичным образом Вам надо исправить каждый файл tpl.
  5. Дальше создайте класс, который будет работать с файлами-шаблонами. В задачу этого класса будет входить работа с основными другими классами (например, классом пользователей), а также подстановка соответствующих данных в файлы-шаблоны вместо {элемент}. Например, вместо {username} этот класс должен будет подставить имя пользователя. Разумеется, здесь будет очень много методов, каждый из которых выполняет свою функцию.
  6. Выводите все элементы на страницах сайта, используя класс созданный в предыдущем пункте, собирая тем самым страницы по кирпичикам.
  7. И, наконец, внешний вид сайта - он же дизайн. Исправляйте файлы tpl (оставляя {элементы}), добавляйте CSS-файлы и JavaScript. А функциональность трогать уже не надо (если Вы всё сделали правильно, конечно).

Всё, движок для сайта создан! Я понимаю, что многие из Вас сейчас сидят в шоке, не понимая, как это всё реализовать. Это действительно сложно для начинающего, поэтому сначала Вам надо набраться опыта в простых вещах. А вот дальше уже реализовать подобные вещи. Если остались какие-то вопросы, то Вы можете задать их в комментариях. А в следующей статье я расскажу, как создаётся Admin-панель для сайта, так что подписывайтесь, чтобы не пропустить.

Пример создания реального движка с нуля можно посмотреть в этом курсе: http://srs.myrusakov.ru/php

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (44):

razo razo 29.05.2011 12:53:00

хороший статья

Ответить

ArturPanteleev ArturPanteleev 30.01.2012 12:13:14

Не совсем понял два момента: 1. "В этих файлах-шаблонизаторах поставьте {элемент_шаблона}" Куда именно нужно писать {элемент шаблона}. В начале tpl файла? или в названии? 2. Также не совсем разобрался, где хранить набор классов используемых в движке, а значит и на сайте? В отдельных файлах и выводить через include?

Ответить

Admin Admin 30.01.2012 13:28:53

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

Ответить

ArturPanteleev ArturPanteleev 30.01.2012 15:01:09

Спасибо

Ответить

danil_tsedilin danil_tsedilin 10.09.2012 04:56:45

Что касается второго пунка посоветую функциию __autoload() - но у неё существует недостаток, в случае определения __autoload() - её нельзя переопределить Данный недостаток обещали исправить в php 5.3 но до сих пор ситуация остается не изменной. Но можно исправить с помощью спец. класса описывают его в книге "PHP 5 - Котеров Дмитрий, Костарев Алексей" - Таким образом данный класс неплохо ляжет за основу движка!

Ответить

morozov-semen morozov-semen 18.02.2012 22:33:38

Здравствуйте, Михаил. У меня к вам один вопрос: в каком расширении хранить главный шаблон сайта?

Ответить

Admin Admin 18.02.2012 22:38:11

В tpl.

Ответить

morozov-semen morozov-semen 18.02.2012 23:02:54

Огромное спасибо

Ответить

WarpY WarpY 11.05.2012 19:06:02

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

Ответить

Admin Admin 11.05.2012 19:07:30

Подойдёт, данный способ универсален.

Ответить

screnginer screnginer 04.06.2014 20:02:14

Михаил, в целом все достаточно понятно, но что должно быть в глобальном классе? Можете подробнее объяснить?

Ответить

bo4kov bo4kov 11.06.2012 11:25:37

А для создания социальной сети обязательно нужно создавать движок сайта? Движок и админ-панель это одно и тоже, или нет?

Ответить

Admin Admin 11.06.2012 11:31:32

Без движка вряд ли что-то получится. Движок и админ-панель - это единое целое.

Ответить

bo4kov bo4kov 11.06.2012 11:36:50

С помощью каких программ создавать движок и шаблон и вообще весь функционал сайта?

Ответить

Admin Admin 11.06.2012 11:40:52

С помощью HTML, CSS, JS, PHP, MySQL. Всё это нужно знать отлично, если не знаете - изучайте. Можете купить несколько книг по каждому языку (в принципе, любые подойдут), либо можете приобрести мой курс по этим темам: http://srs.myrusakov.ru/kurs

Ответить

bo4kov bo4kov 11.06.2012 12:05:07

почему почти все кода начинаются с этой строчки: "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">"

Ответить

Admin Admin 11.06.2012 12:07:15

Потому что это doctype: http://myrusakov.ru/html-doctype.html

Ответить

ArturPanteleev ArturPanteleev 04.07.2012 20:37:42

При разработке движка задумался вот о чем: Создал шаблон в котором есть переменные: $content, $left_block и т.д которые отвечают за вывод содержимого в соответствующих блоках. Остальные страницы сайта содержат лишь присвоение этим переменным значений(то есть содержимого) и require шаблона. Хотелось бы добавлять информацию только в базу данных, и чтобы оттуда и генерировались страницы, то есть не создавая отдельных html файлов для каждой страницы. Но вот чего я не понял, как сгенерировать url для таких страниц и как такие страницы будут индексироваться поисковиками если физически их как бы не существует, а создаются они только при выполнении определенного запроса к базе данных?

Ответить

Admin Admin 05.07.2012 00:08:01

Для этого существуют GET-параметры, которые меняются от страницы к странице. И для поисковых систем каждый новый параметр (либо его новое значение) - это новая страница.

Ответить

ArturPanteleev ArturPanteleev 05.07.2012 07:03:08

http://myrusakov.ru/?view=article&id=271 вот пример из вашей статьи про чпу вижу что тут через get передается view и id. Я так понял для всех статей на сайте у вас имеется маска, в которую подставляются эти параметры. А если я не хочу использовать такую маску, а захочу допустим делать ссылки такими: http://myrusakov.ru/articles/1 где в ссылку подставляется id из базы данных без get параметра. Будет ли такая страница индексировтаься?

Ответить

Admin Admin 05.07.2012 09:56:53

Будет. Любое изменение в url - это новая страница.

Ответить

ArturPanteleev ArturPanteleev 09.07.2012 15:22:45

В статье вы советутете создавать объект базы данных в каком либо классе и уже с его помощью оперировать с данными. Я так и делал, но когда классов стало несколько(страница, пользователь, менеджер модулей и т.д) я решил создать один объект базы данных и вставлять и передавать его через конструктор каждому классу. Однако при попытки обратиться к методам этого объекта вылазеет вот что Call to a member function select() on a non-object in Z:\home\tuner\www\class\page.php on line 21 select это метод класса базы данных вопрос, можно ли как то передавать в конструктор одних классов объеты других и полноценно их использовать?

Ответить

Admin Admin 09.07.2012 15:33:11

Всё правильно Вы делаете, но нужно сохранять объект базы данных в поле класса: $this->db = $db. И затем оперировать именно $this->db в остальных методах класса. А переменная $db берётся из конструктора.

Ответить

ArturPanteleev ArturPanteleev 09.07.2012 15:37:19

Отлично!

Ответить

malina95 malina95 23.07.2012 23:54:09

Я кстати давно хотел сказать что новая версия денвера которую можно скачать в данный момент имеет проблемы с дальше перечисленными переменными: require_once ,require ,include...А в старой версии без красивого оформления которую я беру с вашего видеокурса всё работает нормально: тоесть если я пишу переменные в новой версии то у меня сразу куча ошибок с ними, а в старой всё ок...С чем это может быть связано? Подскажите если знаете.

Ответить

Admin Admin 24.07.2012 00:19:55

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

Ответить

malina95 malina95 24.07.2012 18:05:47

То просто я их так называю мне так понятней...А про переопределение функций можете поподробней рассказать?

Ответить

Admin Admin 24.07.2012 23:33:45

Называть надо как правильно. Один и тот же php скрипт может быть включен и выполнен более одного раза при неправильном использовании, из-за этого могут всплывать ошибки.

Ответить

malina95 malina95 25.07.2012 02:10:15

Спасибо

Ответить

foton36 foton36 10.11.2012 17:46:51

Вот объяснил так объяснил!!! Прям содись и создавай свою CMS. Всё есть. УчитеЛ, а почему свою CMS не сделал? Джумла всёже лучше?

Ответить

Admin Admin 10.11.2012 21:27:55

Вы находитесь на сайте, который написан полностью с нуля, по сути это и есть своя CMS. А от Joomla я давным-давно отказался, оставив лишь дизайн (даже вёрстку переделал), который планирую в будущем тоже сменить.

Ответить

василий василий 30.07.2013 21:56:54

Я ещё никогда не занимался программированием и вообще чем нибудь подобным. Однако загорелся идеей создать соцсеть. Ради этого я готов на всё. Может ли мне помочь ваш сайт???

Ответить

Admin Admin 31.07.2013 15:22:56

Конечно, заодно можете посмотреть бесплатные видеоуроки по html и php.

Ответить

krasnodar123rus krasnodar123rus 24.08.2013 01:29:07

Здравствуйте Михаил!!! Я хотел уточнить можно ли создать движок как в Одноклассников?! и как лучше начать ?! не могли бы мне подсказать и помощь.

Ответить

Admin Admin 24.08.2013 16:23:12

Про это я писал тут http://myrusakov.ru/php-create-social.html

Ответить

prog prog 05.09.2013 18:57:41

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

Ответить

Admin Admin 05.09.2013 21:50:46

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

Ответить

prog prog 11.09.2013 19:57:36

С помощью JavaScript можно ли установить видеоплеер на PHP сайт, потом сделать в главной странице сайта превью на всех ссылок видеороликов.Как можно это реализовать.

Ответить

Admin Admin 12.09.2013 20:14:41

Нужно просто скрипт плеера установить.

Ответить

Alexey0112358 Alexey0112358 04.10.2013 14:07:11

Михаил! Подскажите, пожалуйста, как лучше создать класс для работы с базой данных при написании движка с ООП. У меня есть две базы данных, в одной - таблица с 2 полями, в другой - с 3. Я создаю метод класса, который создает новую запись в балице. Надо сделать его унниверсальным insert($array_of_arguments){})? Или можно для каждой таблицы свой(insertInUsers($a, $b){} и indertInReg($b, $c, $h){})? Если точнее, надо создавать один класс для работы с любой базой данных(что намного сложнее) или можно несколько для каждой базы данных?

Ответить

Admin Admin 04.10.2013 17:16:19

http://myrusakov.ru/php-db-class.html

Ответить

Джонни Джонни 10.01.2014 12:40:45

Тут и ежу понятно, что разработка самописного движка работа очень непростая. И тьма-тьмущая для 91% этой сферы. Большинство использует готовые решения и становится задротом той или иной популярной системы управления. А многие и вовсе не удосуживаются даже на верстку, занимаясь лишь насадкой шаблона на движок. Интересно мнение автора, на сколько сложно новичку без образования, освоить php, MySQL, phpmyadmin, к тому же еще смочь применить эти знания для написания своего движка? У меня например за 3,5 года работы в сфере веб-разработок, особых шагов в познании вышеуказанных языков, сделать не получилось.

Ответить

ScarEngineer ScarEngineer 14.06.2014 14:41:14

Я за полтора года неплохо освоил РНР(ООП), mysql, шаблоны проектирования использую. Мне 17 =)

Ответить

anonim09 anonim09 22.12.2014 15:17:30

Концепция MVC здесь подойдёт: "навязывает" некие правила(что хорошо)

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.