Ке?блог
Блог о интересном
Мой первый самописный движок для сайта
Не каждый может похвастаться тем что он может написать сайт с нуля))), имеется ввиду все кроме шаблона(стиля оформления) сайта. До недавнего времени со мной все было именно так)), пока у меня не появилась необходимость написать сайт самому))
Причиной написания движка для сайта послужила моя практика в колледже, мне необходимо было написать либо программу, либо сайт для своего предприятия на котором собсно я и по идее прохожу стажеровку.
Мой руководитель по практике сказал мне что сайт с использованием готового движка со стандартными шаблонами не прокатит, его никто не оценит и не примут, типа такой сайт не сможет сделать только полный дебил учась на такой специальности, поэтому она сказала что мне нужно написать сайт с нуля с использованием html, css, javascript, php, а также с использованием базы данных.
Я уже делал сайт по заданию преподавателей на этой же практике, но чисто на html и css, на который я содрал дизайн с какого то другого сайта предварительно почистив его от мусора, лишнего кода в прочего.
Для выполнения этого задания я использовал все этот же шаблон, он мне чем то приглянулся, такой простенький и без излишеств.
Для начала я его поделил на 3 части head, body, footer, но в дальнейшем мне пришлось поделить его на 7 частей, просто так удобнее вставлять его в основной файл движка по кускам в нужных местах. Я даже полагаю что именно так и делается повсеместно в различных cms это облегчает основной файл движка и разделяет шаблон от кода.
При написании движка я использовал нерациональные подходы для средних и
больших сайтов, так как передо мной не стояло задачи сделать крупный
портал, а всего лишь нужно написать сайт визитку для предприятия.
В качестве базы данных я как и всегда выбрал способ хранения в файлах, а конкретнее я сделал хранение всех данных в 1 файле.
Кстати доработать движок совсем несложно чтобы можно было выбирать между блоговым видом и со статической главной страницей))
В начале я написал что мне нужно было использовать на своем сайте javascript, я это тоже сделал))), оч интересным и совершенно бестолковым способом))), но ведь для меня было главное все технически реализовать, я это и сделал, а именно для всех обычных страниц сайта я подставляю текст и заголовок статьи через javascript, который генерируется с помощью php))).
Ведь действительно ж нафига обычному сайту подставлять через javascript текст в страницу, а мне вот захотелось выпендриться)))
Далее приведу листинг единственного файла с кодом:
Свой движок сайта на php в связке с MySql, для начинающих
Среди обычных пользователей различных CMS, есть те, у которых есть желание создать свою собственную CMS. Одним из таких пользователей был я.
В конце декабря я загорелся желанием сделать что то свое, при очень малом знании языков. И теперь, я хочу помочь рядовому пользователю несколько освоится в связке php и MySql, и в том, как можно написать свой сайт.
Во первых, мы должны понять, что у нас будет за сайт, и какова будет его структура.
У меня была идея фикс — истории из игр, чтобы любой пользователь мог их добавлять и выводились они постранично из БД MySql.
И так, сначала разметим структуру страницы. Для меня это было:
Header
Menu
Content
Sidebar
Footer
Header — шапка сайта;
Menu — соответственно меню;
Content — содержимое страниц в моем случае истории, но содержимым может быть все, что угодно;
Sidebar — боковая колонка, где находились новости и лучшие истории;
Footer — нижняя часть сайта (подвал) с копирайтом.
Также, нельзя забывать о подключении к базе данных — ведь страницы у нас динамические, и всю информацию мы будем брать оттуда, поэтому нам понадобится еще пара вещей — файл с конфигом, а также файл, который будет подключать нас к базе данных.
После этого, я создал 6 пустых php: index.php, config.php, connect.php, header.php, menu.php, content.php, sidebar.php и footer.php.
Забыл отметить, что для удобства редактирование кода стоит скачать программу Notepad++ — русская версия в ней есть.
Итак, начнем с простого. Для начала, в файл index.php добавим вот этот код:
Тэгами мы открываем и закрываем наш код (вместо
Строим свою CMS на PHP и MySQL. Часть 1
Задача построения системы управления содержанием (CMS) может привести в замешательство новичка разработчика PHP. Но не так страшен черт, как его малюют! В данной серии уроков мы построим простую, но полностью работоспособную систему с нуля.
В ходе процесса вы научитесь создавать базы и таблицы MySQL, работать с объектами, константами, включениями, сессиями и прочими инструментами PHP. Кроме того мы покажем, как отделять логику приложения от презентации и сделать код PHP более безопасным. А также вам откроется многое другое, полезное в деле создания собственной системы мечты.
Вы можете посмотреть работу готового приложения на странице демонстрации (с целью безопасности включен режим «только чтение», так что добавлять, изменять и удалять статьи не получится). Также можно скачать полный код PHP нашей меленькой CMS с переведенными комментариями.
Примечание: для изучения материалов уроков потребуется веб сервер Apache с установленным модулем PHP и сервер MySQL. Для работы на локальном компьютере можно воспользоваться одним из инструментов веб разработчика: XAMPP (на английском языке), Denwer, Open server или другим.
Функционал нашей CMS
Первым делом надо точно определиться, что будет делать наша CMS. Итак, вот список функций:
Каждая статья имеет собственный заголовок, резюме и дату публикации.
Планирование работ
Для создания нашей CMS нужно сделать следующие шаги
Примечание: на страницах уроков приводится код для нашей CMS готовый к копированию в ваши текстовые файлы. Если у вас нет желания создавать файлы самостоятельно, то можно скачать архив с исходниками, в котором содержатся все нужные папки и файлы.
Шаг 1. Создаем базу данных
На первом шаге нужно создать базу данных MySQL для хранения содержания. Можно сделать так:
Запускаем программу клиент mysql Открываем окно терминала и набираем команду
После запроса введите пароль для доступа к MySQL.
Создаем базу данных После метки mysql> вводим:
create database cms;
Выходим из программы клиента mysql После метки mysql> вводим:
Теперь у нас есть пустая база данных, в которой можно размещать таблицы и содержание.
Для решения такой задачи также можно воспользоваться инструментами для администрирования баз данных, таким как phpMyAdmin, cPanel или Plesk (если они установлены на вашем сервере). В некоторых случаях использование подобных инструментов является единственным доступным для пользователя инструментом для работы с базами данных (ситуация зависит от правил, установленных на вашем хостинге).
Шаг 2. Создаем таблицу articles
Создадим схему таблицы. Схема таблицы описывает типы данных, которые могут содержаться в таблице и информацию о ней.
Создаем текстовой файл tables.sql на жестком диске и добавляем в него следующий код:
Разберем выше приведенный код
Также можно воспользоваться инструментами для администрирования баз данных, таким как phpMyAdmin, cPanel или Plesk (если они установлены на вашем сервере).
Шаг 3. Создаем файл конфигурации
Теперь у нас есть база данных и мы готовы разрабатывать код PHP. Начнем с создания файла конфигурации для хранения различных установок для нашей CMS. Данный файл будет использоваться остальными скриптами нашей системы.
Первым делом создаем папку cms в папке веб сервера. Она будет содержать все файлы нашей CMS.
В папке cms создаем файл config.php и копируем в него следующий код:
Разберем код подробно:
Замечание о безопасности
В реальных проектах лучше помещать config.php где-нибудь за пределами корневого каталога веб сайта, так как в файле содержатся имена и пароли. Обычно код PHP невозможно просмотреть в браузере, но иногда из-за неправильной конфигурации веб сервера код становится доступным. Вы можете использовать функцию hash() для хэширования паролей и хранить в config.php хэши, вместо текстовых паролей. Затем при регистрации пользователя можно опять воспользоваться функцией hash() для кодирования введенного пароля и сравнения результата с сохраненным в config.php хэшем.
Движок для сайта своими руками. Часть вторая
В прошлый раз мы рассмотрели способ организации «базы данных» без собственно самой базы данных. Сегодня продолжим тему создания «без-mysql’ного» сайтового движка разговором об каталогах, файлах и include’ах. Также будет немного теории и практики о собственно работе такого двигателя.
Основные принципы организации работы
Несложно догадаться, что организация устройства движка зависит от многих факторов, изменяющихся в каждом конкретном примере сайта. Это и предполагаемая структура информации, и особенности хостинга, на котором размещён сайт (наличие-отстутствие таких средств как php, ssi, доступность каких-либо баз данных, и т. п.), и не в меньшей степени при разработке устройства будущего движка нужно учитывать дизайн сайта, то есть структуру самих страниц.
Собственно, одной из целей создания движка для сайта есть как раз организация удобной работы по обновлению материалов, и, как предусловие, практически полное отделение дизайна сайта от собственно его полезного содержания (во загнул ). Но в любом случае, будущий дизайн надо учитивать, каким образом — об этом немного позже.
Итак, само слово «разделение» подразумевает уже, как минимум, разделение страницы сайта на два файла — с шаблоном дизайна (который может быть общим для нескольких страниц) и файла с самим контентом, то есть информацией.
Кроме этих двух файлов нам понадобиться ещё один, включаемый во все динамические страницы (имеются ввиду страницы, содержащие php-код). В этом файле мы будем хранить все общие функции движка (собственно, их можно назвать «ядром»), а также определим некоторые полезные глобальные константы.
Основной задачей функций ядра будет чтение файлов с текстами статей, картинками или иными материлами сайта, а также вывод этого контента в нужной форме на экран. Третью функцию — ввод данных — мы не рассматриваем, так как способ хранения данных (файлы с разделителями) позволяет вводить информацию при помощи стандартных средств (любимого текстового редактора, например).
А под фразой «учитывать дизайн», высказанной немного выше, имелось ввиду создание системы шаблонов, или, проще говоря, набора оформлений разных страниц (html-файлов, по сути), где места под изменяемое содержание (заголовки, меню, тексты — всё, что генерируется динамически) оставлены пустыми. Подставлятся они будут «на лету» при обращении пользователя к определенной странице. Получается даже дополнительный выигрыш — кроме всего прочего, уменьшаеться объём хранимых на сервере файлов, так как оформление страниц не повторяется в каждом файле, а хранится в одном месте. Про удобство при возможном желании изменения дизайна, я думаю, и говорить не надо.
Итак, вернемся к собственно организации нашей системы. Основной принцип, который будет использоваться в нашем примере — это одноуровневость разделов. Но не волнуйтесь — это лишь для упрощения примеров. Если для вас это слишком серъёзное ограничение — просто придется подождать следующего выпуска, в котором мы поищем обходные пути.
Итак, у нас имеются каталоги, каждый из которых является разделом сайта (естественно, кроме служебных каталогов, таких, как “images”).
Это значит, что в каждом таком каталоге должен лежать так называемый «индексный файл» — страница, которая загружается по умолчанию при таком обращении к разделу: http://site.com/razdel. Имя этого файла (или возможные имена) вам нужно узнать у вашего хостера. Чаще всего это такие имена, как “index.html”, “index.php” и т. п. — расширение зависит от используемого серверного языка.
Значит, с именами файлов разобрались. Но что же нам положить в эти файлы? Вот теперь-то мы и переходим собственно к основной части сегодняшнего разговора.
В самом начале файла стоит вставить код включения ядра движка. Подобное обращение на языке php выглядит следующим образом:
В этом файле содержатся те самые функции чтения-вывода, описанные в прошлой статье. Таким образом, они теперь становяться доступными для использования.
В этом же файле стоит описать ещё некоторые полезные функции. Например, функция непосредственного получения какого-либо файла в виде строки (может пригодится):
Ещё одной полезностью может оказаться функция для организации простейшей новостной системы. Но, не смотря на простоту реализации, она имеет достачно удобные фичи, такие как вывод в любом месте страницы блока с указанным количеством последних новостей и возможность организации архива новостей.
Суть её работы сводится к следуещему. Имеется текстовый файл с новостями, разделенными символом перевода строки (словом, каждая новость — в новой строке). Каждая строка разделена символом вертикальной черты («|») на два поля: дату и, собственно, саму новость.
Опредилив функцию новостной системы в нашем включамом файле («ядре»), мы получаем возможность на любой странице получить нужное количество последних новостей. Первым параметром передаётся часть пути, указывающая на размещение файла с новостями. Количество выводимых новостей, как вы уже догадались, задаётся вторым, необязательным, параметром.
Вот моя реализация функции новостной системы:
Что ж, на сегодня пока что всё. Продолжение следует…
Как создать движок для сайта
У меня часто спрашивают: «Как создать свой собственный движок для сайта, например, как Joomla, DLE, WordPress и другие«. Многие, конечно, спросят: «А зачем, ведь есть, например, Joomla?«. На этот вопрос я уже отвечал в этой статье: joomla vs сайт с нуля. И если Вы приняли решение о создании своего движка для сайта, то читайте дальше.
Первым делом я Вас заранее предупреждаю, что даже создание простого движка требует очень много времени и сил, но зато через этот очень-очень интересный процесс Вы получите колоссальный опыт. Чтобы Вы лучше поняли, давайте распишу всё по пунктам:
Всё, движок для сайта создан! Я понимаю, что многие из Вас сейчас сидят в шоке, не понимая, как это всё реализовать. Это действительно сложно для начинающего, поэтому сначала Вам надо набраться опыта в простых вещах. А вот дальше уже реализовать подобные вещи. Если остались какие-то вопросы, то Вы можете задать их в комментариях. А в следующей статье я расскажу, как создаётся Admin-панель для сайта, так что подписывайтесь, чтобы не пропустить.
Пример создания реального движка с нуля можно посмотреть в этом курсе: http://srs.myrusakov.ru/php
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Комментарии ( 46 ):
Не совсем понял два момента: 1. «В этих файлах-шаблонизаторах поставьте <элемент_шаблона>» Куда именно нужно писать <элемент шаблона>. В начале tpl файла? или в названии? 2. Также не совсем разобрался, где хранить набор классов используемых в движке, а значит и на сайте? В отдельных файлах и выводить через include?
1. В самих файлах должны располагаться эти элементы, прямо в тексте. 2. В отдельных файлах лучше храните, а подключать необходимые классы лучше через require_once.
Здравствуйте, Михаил. У меня к вам один вопрос: в каком расширении хранить главный шаблон сайта?