Привет!
Решил написать движок блога под свои нужды, так как обычно в сети, кроме заезженного wordpress'a, ничего и нет.
У меня есть своя CMS, но меня, скажем так, попросили описать процесс, и я решил для особо жаждущих написать движок блога с самого нуля.
Первый урок будет маленький, потому как мне скоро на прием к врачу, по этому время ограничено.
Писать будем на PHP в качестве базы данных будет mySQL.
НАЧНЕМ!
Немного о том что должно получится в итоге.
* ЧПУ
* Визуальный редактор
* Посты по категориям
* Комментарии к постам
* Обратная связь
* Поиск
* Гибкая настройка дизайна
* RSS
* Своя страница для ошибок
* Ну и так далее ...
Думаю по ходу напишем и придумаем еще что нибудь.
Первое, что мы сделаем - определимся с основной структурой папок и файлов, создаем в папке www следующие папки и файлы:
Папки: include, lang, themes.
Файлы: index.php, .htaccess
Папка include - будет отвечать за подключаемые файлы.
Папка lang - будет отвечать за язык локализации.
Папка themes - будет отвечать за шаблон сайта.
Файлы index.php - это исполняемый файл, через него и будет все работать.
Файл .htaccess - пока буде почти пустой, но в дальнейшем мы его будем использовать.
Теперь по порядку, начнем с файла index.php, он будет выглядеть так:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<?php
// стартуем сессию
session_start();
// подключаем конфиг
include ('include/config.php');
// подключаем mysql конфиг
include ('include/mysql.php');
// режим отладки
ini_set ('display_errors', CONFIG_DISPLAY_ERRORS);
error_reporting(E_ALL);
// подключаем язык
include ('lang/'.CONFIG_LANG.'/lang.php');
// подключаем ядро
require ('include/core.php');
?>
|
session_start - инициализирует данные сессии, создаёт сессию (или продолжает текущую на основе session id, переданного через GET-переменную или куку).
ini_set - устанавливает значение опции конфигурации, устанавливает значение данной опции конфигурации, возвращает старое значение при успехе, FALSE при неудаче, опция конфигурации будет сохранять это новое значение в процессе выполнения скрипта и восстановится по окончании работы скрипта.
error_reporting - устанавливает, о каких ошибках PHP сообщается.
Файл .htaccess имеет такое содержание:
1
2
3
4
5
6
7
8
9
|
AddDefaultCharset utf8
DirectoryIndex index.php
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
|
На этом я пока остановлюсь, потому как это все файлы, которые есть в корне, а остальные мы затронем в следующей статье, чтобы не разрывать смысл.
ПРОДОЛЖЕНИЕ СЛЕДУЕТ!
Урок 2 / Урок 3
-
Пока пост ни о чем. То, что в index.php нужно инклюдать конфиг, язык и ядро и так понятно. Кстати локализацию лучше делать через gettext, благо в PHP это очень просто.
-
-
Для тех кто читает между строк повторю:
Первый урок будет маленький, потому как мне скоро на прием к врачу, по этому время ограничено.
-
-
Вы ведь не в бложек пишите. Можно было подготовить и написать больше.
-
Кстати, да. Дешевое оправдание, Минимал. Нефиг на больную голову умничать в теме, которой ты ниразу не компетентен.
-
-
Слыш ты, умник, ты что ли смотрю много компетентен?
Сказал бы что нибудь умное, а то все попка дура, да пока дурак :))))))
Если так любишь пипа умные вещи писать, напиши свою статейку мы обсудим.
P/S надеюсь ты понял почему так сказано?
-
Может прежде чем минусовать, дождемся второй части?!
-
Велосипеды не нужны, есть Symfony :)
-
-
если у этих велосипедов, не учли в конструкции педали, то далеко он не уедет.
-
-
Именно поэтому я рекомендую Symfony, подойдет под любую форму ноги .)
-
-
он хочет не подарить вам велосипед, а объяснить принцип работы изнутри, чтоб если у вас не заведеться, вы сами могли бы сменить колесо. (пока статья очень короткая, ждем продолжения)
-
-
Чтобы сменить колесо имеется вещь именуемая мануалом и тот самый гугл.
-
-
ну так зачем тебе читать и сидеть на этом сайте, все уже давно есть в гугле (включая вилинукс).
кстати примеры кода с объяснением мне всегда помогали понять те или иные функции лучше. и если понять эти статьи, то можно самому написать не только двиг для блога, а другие не сложные вещи для своих целей.
да че я тут доказываю, не нравится - не читай, а то я гляжу тебе так не понравилась статья, что ты все комменты прочитал, и не поленился ответить. если мне что-то не интересно, я не буду заходить даже в новость
-
И каких же педалей там нет? :) Плюс, ты же помнишь, что помимо Symfony имеются Kohana и Zend Framework. И чего тебе в них не хватает?
-
-
Слушай что ты все время демагогию разводишь?
Мы здесь про Symfony, Kohana или Zend Framework обсуждаем?
Если хочешь пофлеймыть создай ветку и там обсуждай у кого какие педали и рули.
-
Не делайте так, как на картинке на вашем сайте)
-
-
картинка не моя!
-
На картинке код какого-то шаблона WordPress :)
-
1] в сети кроме заезженного wordpress'a не чего и нет
MaxSite?
2] меня ... технично попросили
Я думал техничными бывают удары в боксе.
3] PHP, mySQL
как оригинально
4] скоро на прием к врачу
это связано с вашими пристрастиями в выборе ОС? :)
-
-
2] меня ... технично попросили
Я думал техничными бывают удары в боксе.
вот видимо именно так и попросили...
-
-
вот и я о том же :)
-
4] скоро на прием к врачу
это связано с вашими пристрастиями в выборе ОС? :)
а это, видимо, результат техничной просьбы =)
-
1) MaxSite?
ну если бы я стал перечислять все что движется в сети кроме wordpress'a,
список был бы большой.
2) Я думал техничными бывают удары в боксе.
техничными бывают не только удары, а еще много чего, хотя раз вы такой осведомленный про бокс, ведать уже все потерено
3) как оригинально
не как есть, предложи альтернативу
4) это связано с вашими пристрастиями в выборе ОС? :)
именно
-
-
1] я о том же: альтернатив полно, а в посте сказано обратное
2] тут вы со мной на "вы"
3] а вот тут уже на "ты". У вас и в коде так же?
PostgreSQL больше не альтернатива?
-
Было бы зачётно закодить бложек на си.
А вообще: Ruby, Python; PSQL, SQLite, redis. Всё это не так заезженно.
-
Плюсую. У самого основной блог (по Линуксу, кстати) на MaxSite. Уже года два как. Очень доволен движком! Шустрый, полно плагинов. Говорить, что кроме вордпресса ничего нет... Ну, это несерьёзно.
Есть альтернативы. И хорошие альтернативы.
Одно дело мотивировать свой порыв тем, что хочется показать, как эти самые ЦМС пишутся. Чисто для образовательных целей. А другое дело - нагло врать. Ну ладно, искажать действительность. Забрасывая помётом соседей сами чище не станете.
-
Статья ни о чем. Тот, кто не знаком с PHP, после прочтения сам ничего не сможет написать. А для знающих статья представляет сомнительный интерес.
Зачем в такой маленькой статье так много ошибок?
-
-
здоровая критика всегда приветствуется, это моя первая статейка, буду учитывать все пожелания, где ошибки указывайте, потому как пишу на скорую руку
-
-
Пишите больше или мало, но интересно
-
Зачем два конфига? Я вот после этого цикла статей на прошлых выходных призадумался и написал для себя набор классов, который должен будет мне помочь в будущем проще конфигурировать мои web-приложения.
PS: если сообществу будет интересно, могу чуть позже выложить.
-
-
Увы, сервер не отвечает.
-
А нет, прогрузился. Видимо проседает. Welinux-эффект?
-
-
хз, блог не мой, автору виднее :)
-
мне так удобнее, конфиги разные, и несут разные задачи
-
Закрывающий ?> в конце файла совсем не обязателен, мало того, на некоторых серверах из-за него возникают проблемы :\
-
-
Из-за него проблемы, если после него есть хотя бы один пробельный символ. Тогда при инклудах в выводе ВНЕЗАПНО оказываются пробелы, и ты долго не можешь понять, почему headers() и setcookie() не работают, ругаясь на то, что вывод тела документа уже начат вот там-то...
-
-
Так вопрос, зачем он нужен, если за пробелами следить приходится? :)
-
-
Действительно, в файлах с классами Я почти никогда его не закрываю.
Это даже просто удобнее.
-
Варианты ответа:
- Для красоты,
- для симметричности,
- ни для чего.
-
Всё-таки есть толк и в таких постах.
Лично Я про необязательность тега знал, но чтоб проблемы...
-
Хотелось бы больше конкретики, что данный блог будет "уметь" в итоге. Если не техническое задание, то хотя бы список его фунционала.
-
-
* ЧПУ
* Визуальный редактор
* Посты по категориям
* Комментарии к постам
* Обратная связь
* Поиск
* Гибкая настройка дизайна
* Ну и так далее ...
-
-
Стоило вам написать это в начале статьи. Ну и далее по пунктам идти, сообщать что будет в следующей статье, домашнее задание, может, дать какое-нибудь. Так интереснее и практически полезнее.
-
ЧПУ
Не силен в Web и в голову приходят только станки с ЧПУ. А вы что имеете в виду?
-
-
Человекопонятный URL
-
-
Ужас, что за сокращение :)
-
-
Не ЧПС, да.
-
зачем всем подряд устанавливать сессии? Это же в перспективе излишняя нагрузка на сервер.
-
Я смотрю это не то место, для адекватного общения на темы кроме линукса.
Из кучи комментов, которые выше я погу выделить только несколько штук по существу, а остальные написаны не от большого ума.
Смотрю не интересна тема. раз так, тогда продолжать не имеет смысла.
-
-
Не обращайте внимание на минусаторов. Как правило, люди, которые просто читают (с пользой для себя) не всегда комментируют пост. В отличие от. Продолжайте, пожалуйста.
Небольшая просьба: писать в будущем более полные статьи и расставлять ссылки между частями. Спасибо.
-
-
Спс, за реальное мнение!
-
Так и есть =)
-
а остальные написаны не от большого ума.
ты их не корми и не неужно так писать.
Тебе ведь не написали, что ты тормоз и пишешь херню?
Пиши, дальше, критику фиксируй.
Поверь тут есть очень шаристые в вебе люди.
-
-
ОК! буду отвечать только на адекватные комменты.
-
-
Договорились =)
А я и модеры присмотрим за агресивными, фанатичными и воздадим баны.
-
session_start, ini_set, error_reporting - стандартные функции языка?
-
-
session_start инициализирует данные сессии, создаёт сессию (или продолжает текущую на основе session id, переданного через GET-переменную или куку).
ini_set устанавливает значение опции конфигурации, устанавливает значение данной опции конфигурации, возвращает старое значение при успехе, FALSE при неудаче, опция конфигурации будет сохранять это новое значение в процессе выполнения скрипта и восстановится по окончании работы скрипта.
error_reporting устанавливает, о каких ошибках PHP сообщается,
-
-
Об этом я дагадался, но Вы не ответили на поставленный вопрос =)
Я просто когда-то учил php, знаю что значит include, require и т.д., но вот откуда по среди скрипта (когда ещё не был ни одного include) взялась функция session_start понять не могу
-
-
Я думал с ответа догадаешься, да это стандарт.
-
Да, стандартные.
-
Добавь, плз, эти пояснения в саму статью, после фраггмента кода. И в самое начало статьи перечисление той функциональности, которую планируешь реализовать в движке.
-
-
Добавил! в следующий раз учту.
-
Ответьте, пожалуйста, на мой комментарий.
Я до сих пор не понимаю, зачем всем подряд сессии ставить? В вашем движке вообще анонимные комменты можно будет оставлять? Имеется в виду как в WordPress: без регистрации.
-
-
-
Кстати да, что будет лучше, с регистрацией или без нее.
Я думал делать с регой, счас задумался а может ну ее.
-
-
а что если прикрутить авторизацию через openid, facebook и не знаю, чтонить рунетное.
-
-
Не рекомендую.
Будут регится с разных аккаунтов и писать хернб всякую или вообще напишут бота который будет постоянно спамить.
-
-
Вот так и загнётся openid.
-
Вы слишком много от парнишки требуете :) Он еще молод и не опытен. Ему еще детей рожать, а вы про openid :)
-
Рега нужна с верификацией по емейлу.
-
А почему без framework`а какого-нибудь?
-
-
Основной идеей есть сделать все самому, без навеса всякого лишнего, чтоб в дальнейшем код был читабелен, просто может случится так что человек не знает, этого фреймворка, придется разбираться, а тут код голяком все написано понятно.
-
-
Все равно, все пишется все на фреймверках на готовых или на собственных, большое количество основано на архитектуре MVC. Тогда надеюсь, после релиза движка, тоже самое будет с применением какого-нибудь.
-
Просто в итоге родиться ещё один фреймворк, похожий процетов на 80-90% на какой-либо из уже существующих. С готовым фреймворком тебе просто не придётся самому реализовывать кучу велосипедных деталей, а собрать велосипед из уже готовых. Вытачивать же детали самому «с нуля»... Ну и будут у тебя такие же детали, как у всех, только шестерёнки немного другого диаметра. Я это не от «большого ума» © пишу, а от опыта =) Столько раз уже такое проходил и со стороны видел...
-
То есть ты все-таки настаиваешь на том, что надо писать свое чудо-юдо, а не пользоваться продуктом квалифицированных специалистов?
-
-
Как ты называешь ква-квалифицированные специалисты, они такие же как и мы ;)))))
-
ИМХО, если обучать, то лучше именно с нуля, чтобы люди в общем и целом стали представлять, что такое CMS и как оно работает изнутри. А потом уже можно и в сторону фреймворков смотреть.
-
-
угу, я согласен, я ниже так и написал, точнее выше вашего коммента, что надеюсь ТС, напишет уроки, тоже самое но с применением фреймверка
-
согласен все именно так и планируется
-
Для обучения — да, это отдельная задача. Но в итоге всё равно будешь юзать фреймворк какой-нить, как только поток проектов появится...
-
Если будете пилить свой движок для блога и вообще
Немного о том что должно получится в итоге.
* ЧПУ
* Визуальный редактор
* Посты по категориям
* Комментарии к постам
* Обратная связь
* Поиск
* Гибкая настройка дизайна
* Ну и так далее ...
Обязательно делайте:
XML карту сайта
Страницу с 404 ошибкой и на ней выводите все страницы в виде дерева.
Желательно делайте:
RSS
управлялку постами и страницами - скрыть, убрать, запретить индексацию - дабы убрать дубли контента и/или усилить содержимое.
Если сделаете то, что написано выше, Ваш проект можно будет нормально продвигать =)
-
-
за карту спасибо, не учел,
по поводу 404 планировалось,
RSS будет.
+1
-
> Страницу с 404 ошибкой и на ней выводите все страницы в виде дерева.
Прям-таки все? Ссылка на карту сайта в человекопонятной форме (html, "в виде дерева") будет хуже? Разве поисковики посещают страницы ошибок (при условии правильного HTTP-кода, конечно)?
> управлялку постами и страницами
это Вы так админку окрестили? :)
-
-
Прям-таки все?
Лучше карту сайта прямо там.
Разве поисковики посещают страницы ошибок (при условии правильного HTTP-кода, конечно)?
Довольно часто происходит следующее.
Была целевая станица, её качали... статьями, блогами, ссылками, твитерами и проч проч.
Затем её убили.
Доказано на практике, что посетителе в таком случае находит глазами то, что ему нужно и тыкает туда.
Поисковикам тоже хорошо:
1. даже если страница перестала быть целевой то на новую её есть ссылка.
2. по адресу старой страницы есть тематический контент и ссылки на новые целевые страницы.
это Вы так админку окрестили? :)
Админка и пермишенс это разные вещи.
Если ты не шаришь то не нужно поучать и пытаться троллить.
-
-
Админка и пермишенс это разные вещи.
В одноюзерском блоге вполне могут быть одной сутью, но согласен.
-
-
пермишенл - права.
В данном случае я имел ввиду
управлялку постами и страницами - скрыть, убрать, запретить индексацию - дабы убрать дубли контента и/или усилить содержимое.
можно и этот мезанизм назвать пермишнс но применительно к контенту.
-
Была целевая станица. Затем её убили.
Мне кажется логичнее тупо редирект 301-й поставить, но не буду "поучать и пытаться троллить".
-
-
Мне кажется логичнее тупо редирект 301-й поставить
для продвижения как показывает практика так лучше не делать.
-
Отчего вы решили использовать MySQL? Он же явно теряет позиции. И если вы планируете разрабатывать нечто, что простоит хотя бы лет пять, то, имхо, как-то не разумно использовать именно этот сервер. Или вы не слышали ни о чем ином, или это все-таки поделка школьника, призвание которой быть никому не нужной?
Зачем вы используете сессии, мой "друг"? Мама разве не научила вас делать обертки? Хотя я кажется понимаю в чем проблема. Проблему проектирования быдлокодеры не изучают, считая, что любую задачу можно решить прямо в лоб без всяких лишних замарочек. Оставим этот грех на вашей совести.
И еще я имею три вопроса. Отчего error_reporting() идет после инклудов и старта сессии? Что с OOP? Я не имею ввиду написание классов вместо функции. Я имею ввиду то, как будет рождаться соединение с БД, как будет производиться вывод в браузер, и все-все остальное? Что с исключениями? Ну явно вы не планируете их использовать.
Резюме. Может тебе было бы лучше оставить это занятие и продолжать заниматься своим старым делом: дурить народ в своей студии, плодя говнокод мегабайтами? Гуру тоже мне...
-
-
ГЫ ГЫ и смех и грех :)))))
-
ты реально зае**, тебе задели твое эго? если ты в этом разбераешься, не задавай вопросы, чтоб подколоть человека, а напиши пример, как бы это сделал ты.
|
|
|
Последние посты
|
|
Последние комментарии
|
|
Изменения
|
|
Черновики (все)
|
|
Избранное (всё)
|
|
|