<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DimoninG.ru &#187; Движки, CMS</title>
	<atom:link href="http://dimoning.ru/category/dev/cms-dev/feed" rel="self" type="application/rss+xml" />
	<link>http://dimoning.ru</link>
	<description>программирование сайтов и скриптов</description>
	<lastBuildDate>Fri, 13 Jan 2012 22:38:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Умный сайт: что мы там последнее читали?.. Закладки на сайте.</title>
		<link>http://dimoning.ru/umnyiy-sayt-chto-myi-tam-poslednee-chitali-zakladki-na-sayte.html</link>
		<comments>http://dimoning.ru/umnyiy-sayt-chto-myi-tam-poslednee-chitali-zakladki-na-sayte.html#comments</comments>
		<pubDate>Fri, 24 Apr 2009 04:15:32 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[Движки, CMS]]></category>
		<category><![CDATA[Общее]]></category>
		<category><![CDATA[Общие советы]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=1046</guid>
		<description><![CDATA[Пришла в голову оригинальная идея. Даже не одна, две пришли. Нигде такого еще не видел. Не буду тянуть кота за и так уже растянутые постоянным упоминанием &#60;подставить слово&#62;, перейду к сути.
1. Читая чужой блог, мы листаем посты, ходим по страницам, по категориям, жмем на теги. Иногда мы проделываем довольно длинный пусть по сайту. И, например, [...]]]></description>
			<content:encoded><![CDATA[<p>Пришла в голову оригинальная идея. Даже не одна, две пришли. Нигде такого еще не видел. Не буду тянуть кота за и так уже растянутые постоянным упоминанием &lt;подставить слово&gt;, перейду к сути.</p>
<p><strong>1.</strong> Читая чужой блог, мы листаем посты, ходим по страницам, по категориям, жмем на теги. Иногда мы проделываем довольно длинный пусть по сайту. И, например, страшно нам блог понравился. На следующий день мы открываем этот же блог и хотим продолжить чтение, но&#8230; не помним где мы остановились. Судорожно ищем место, не находим. Читать уже знакомые заголовки, когда ищешь что-то новенькое раздражает неимоверно. Листать страницы по 5 постов на каждой раздражает еще больше (ну почему нельзя было сделать по 20 постов хотя бы?!).</p>
<p>А почему бы автору блога не сделать следующее?</p>
<p>Например, где-то вверху есть галочка &laquo;Запомнить, что я читал последним&raquo;. При нажатии на нее пользователь может покинуть сайт, а при повторном открытии браузера (хоть через год) он попадет на ту самую страницу, которую читал последней.</p>
<p>Девид Блейн, остановись, демон! Как это?! А очень просто. Когда пользователь жмет галочку, то на сайте врубается простой механизм: при переходе на очередную страницу пользователю записывается Cookie с URL или URI этой страницы. Когда пользователь заходит на сайт с другого сайта или из &laquo;чистого&raquo; браузера, мы проверяем реферер и если пользователь пришел не с нашего сайта, то делаем редирект на последний записанный URL. Конечно значение галочки &laquo;Запомнить, что я читал последним&raquo; тоже нужно записать в Cookie.</p>
<p>Или даже так: URL сохраняется в Cookie в любом случае, но если галочка не установлена, то редиректа не происходит (для того, чтобы всегда точно знать, что пользователь прочитал последним).</p>
<p><strong>2.</strong> Еще более глобальная система закладок. Причем индивидуальная для каждого пользователя и, понятное дело, доступная без регистрации (я вообще регистрации ненавижу).</p>
<p>Скажем, в боковой колонке есть блок под названием &laquo;Вот это я читал&raquo;, а в постах под заголовком есть ссылка &laquo;Запомнить этот пост&raquo;. Когда пользователь жмет на &laquo;запомнить&raquo;, то в блоке появляется ссылка на этот пост. Ну и, скажем, запомнить можно сколько угодно постов.</p>
<p>Реализация тоже простая. Для этого тоже достаточно одной только Cookie. Правда записывать туда придется уже не URI, а ID поста из базы данных, т.к. мы должны иметь возможность отобразить заголовок поста в блоке. В Cookie же можно просто записывать ID через запятую, а при неободимости разбивать строку через &laquo;разделитель &laquo;запятая&raquo;" функцией explode и считывать все, что нам нужно из БД.</p>
<p>Да, почему я не назвал это &laquo;Закладками&raquo; и &laquo;Добавить в закладки&raquo;. Потому, что, очевидно, пользователи будут путать это с закладками браузера, а нужно сделать так, чтобы даже никаких ассоциаций в эту сторону не появлялось.</p>
<p>Эпилог. Вторая идея &#8211; это продолжение первой. И, к сожалению, на мой взгляд она немного сомнительна. Ее можно использовать, например, в инернет-магазинах в качестве функции а-ля &laquo;сравнить товары&raquo; или &laquo;отобрать понравившиеся&raquo;. Но&#8230; Сами понимаете. А вот первая, я считаю, вполне себе идеища и достойна реализации. Она помогает и пользователю и повышает крутость ресурса в глазах пользователя (&laquo;- Толян, смотри, какая там прикольная фишка!&raquo;). Главное, дать пользователю выбор, сохранять или не сохранять страницу последнего посещения.</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/umnyiy-sayt-chto-myi-tam-poslednee-chitali-zakladki-na-sayte.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>title / description / keywords &#8211; универсальная система для сайта</title>
		<link>http://dimoning.ru/title-description-keywords-universalnaya-sistema-dlya-sayta.html</link>
		<comments>http://dimoning.ru/title-description-keywords-universalnaya-sistema-dlya-sayta.html#comments</comments>
		<pubDate>Wed, 15 Apr 2009 02:29:25 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[Движки, CMS]]></category>
		<category><![CDATA[Общее]]></category>
		<category><![CDATA[на PHP]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=1030</guid>
		<description><![CDATA[В последнем моем проекте было разработано довольно много разнообразных модулей (таких как опросы, новости, партнерские программы, разнообразная статистика, партнерские материалы, товары разных типов, да и просто страницы меню).
Возник вопрос о том, что для каждой страницы надо как-то задавать title, description и keywords (для SEO). Нужно было быстро реализовать это решение.
Обычно в таких случаях разработчики добавляют [...]]]></description>
			<content:encoded><![CDATA[<p>В последнем моем проекте было разработано довольно много разнообразных модулей (таких как опросы, новости, партнерские программы, разнообразная статистика, партнерские материалы, товары разных типов, да и просто страницы меню).</p>
<p>Возник вопрос о том, что для каждой страницы надо как-то задавать title, description и keywords (для SEO). Нужно было быстро реализовать это решение.</p>
<p>Обычно в таких случаях разработчики добавляют новые поля в базу данных для всех этих модулей, меняют скрипты (запросы в базы данных) и вообще перерабатывают пол-движка. Понятно, подводный камень в этом случае в том, что очень легко что-то пропустить, забыть подправить какой-то запрос и получить в релизе ошибки. А если, например, эти таблицы используют какие-то другие скрипты, то они могут внешне работать без ошибок, но фактически коверкать все данные (например, подсчитывать совершенно неверную статистику).</p>
<p>За 0.0141 секунды раздумий я придумал следующую систему, которая позволяет не перерабатывать весь движок.</p>
<p>Понятно, что каждая страница сайта имеет свой URL. URI &#8211; это тот же URL, только без домена. Его можно получить из переменной $_SERVER["REQUEST_URI"]. Понятно, что для каждой страницы URI свой собственный (иначе это уже одна и та же страница).</p>
<p>И возникает очень простая система. Создаем таблицу в БД с полями &laquo;title, key, descr, uri&raquo;. В том месте, где должны выводиться title, description и keywords пишем что-то вроде:</p>
<p>&lt;?php<br />
$uri = $_SERVER["REQUEST_URI"];<br />
if ($uri == &laquo;/index.php&raquo;) $uri = &laquo;/&raquo;;<br />
$q = mysql_query (&laquo;SELECT * FROM table WHERE uri=&#8217;$uri&#8217;;&raquo;);<br />
if (mysql_num_rows ($q) &gt; 0){<br />
$str = mysql_fetch_array ($q);<br />
$t = $str['title']; $k = $str['key']; $d = $str['descr'];<br />
}<br />
?&gt;<br />
&lt;meta name=&raquo;keywords&raquo; content=&raquo;&lt;?php echo $k; ?&gt;&raquo; /&gt;<br />
&lt;meta name=&raquo;description&raquo; content=&raquo;&lt;?php echo $d; ?&gt;&raquo; /&gt;<br />
&lt;title&gt;&lt;?php echo $t; ?&gt;&lt;/title&gt;</p>
<p>Понятно, что в таблицу записывается заголовок, описание и ключевики для того адреса, для которого мы хотим задать их. И работать это будет для всех страниц, которые обрабатывает движок (то есть в данном случае &#8211; для всего сайта вообще). А администратор получает возможность задавать заголовки, ключи и описание даже для тех страниц, которые в ТЗ не предусмотрены, плюс в следующих модулях не нужно будет реализовывать &laquo;внутреннюю&raquo; поддержку title, keywords и description.</p>
<p>Конечно, не забудьте о безопасности! Проверяйте это выражение перед передачей его в базу. Обычно оно проверяется очень просто &#8211; нельзя использовать никакие символы, кроме слеша, точки, букв и цифр.</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/title-description-keywords-universalnaya-sistema-dlya-sayta.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Как я делал портал на Joomla и Drupal или что нужно знать для создания сайта</title>
		<link>http://dimoning.ru/o-standartnih-drizhkah.html</link>
		<comments>http://dimoning.ru/o-standartnih-drizhkah.html#comments</comments>
		<pubDate>Wed, 21 Jan 2009 09:39:32 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[Движки, CMS]]></category>
		<category><![CDATA[Общее]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=855</guid>
		<description><![CDATA[Всю свою интернет-девелоперскую жизнь я писал собственные решения для всех случаев. Нужно голосование на сайт? Пишу. Нужен блок новостей? Пишу. Сайты тоже писал с нуля. Готовые движки я использовал только для сателлитов, при этом не заботясь качеством получающегося сайта вообще никак или для заказчиков, если они упорно не хотели делать сайт на моей разработке. Но [...]]]></description>
			<content:encoded><![CDATA[<p>Всю свою интернет-девелоперскую жизнь я писал собственные решения для всех случаев. Нужно голосование на сайт? Пишу. Нужен блок новостей? Пишу. Сайты тоже писал с нуля. Готовые движки я использовал только для сателлитов, при этом не заботясь качеством получающегося сайта вообще никак или для заказчиков, если они упорно не хотели делать сайт на моей разработке. Но недавно я решил сделать портал, а чтобы сэкономить время я решил поставить его на один какой-нибудь готовый двиг.</p>
<p>Считается, что готовые движки экономят время на разработку сайта. Так ли это на самом деле?</p>
<p><span id="more-855"></span><strong>Сначала я поставил Drupal.</strong> Чего я не понял сразу &#8211; как добавлять статьи по категориям. То есть какое-то меню на сайте есть, а вот как привязать туда статьи, сделать подменю и т.п. не понял. Разбирался долго, выяснилось, что существует какая-то таксономия (или как ее), как она работает я до конца не вьехал, убив на это дня 2. Всем, кто скажет, &laquo;да это же просто, а ты лох&raquo; &#8211; засуньте свое мнение подальше. Для человека, первый раз попробовшего разобраться в друпале странно даже то, что администрирование происходит прямо на сайте, а ссылки на разные настройки и модули появляются прямо в меню сайта, если зайти под администратором.</p>
<p>Хотя вру, кое-как мне удалось привязать статьи. Даже предположим, что мне это удалось хорошо и все стало понятно. Едем дальше: документация для разработчика. По движку нет документации! Как и что работает приходится узнавать из гугла, причем никто из &laquo;гуру друпала&raquo;, мудаки, подробно объяснять не хочет. Зато они направо и налево орут, какой друпал крутой. Выходит, чтобы разобраться в движке, нужно в нем самом и ковыряться. Это, мягко говоря, гораздо дольше, чем написать свой движок для сайта. Кстати, отзывы о книгах а-ля &laquo;Drupal for idiots&raquo; тоже не вдохновляют &#8211; не хочется полдня искать книгу, потратить рублей 600 на нее, а потом понять, что она не поможет. Большинство мнений за то, что в подобных книгах далеко не исчерпывающая, а иногда и вовсе неверная, информация. Что вряд ли поможет понять движок.</p>
<p>Теперь о шаблонах. Для старта не хочется заказывать дизайн, поэтому было бы логично поискать стандартный шаблон. По аналогии с WordPress&#8217;ом первым делом я полез на официальный сайт. Где ничерта не нашел. Вернее нашел штук 50 отвратительнейших шаблонов. Все усложняется еще и тем, что есть две версии-ветки друпала &#8211; пятая и шестая. Понятное дело, если шаблон для пятой, то для шестой он не подойдет. А брать пятую версию как-то не хочется, она же старая и не поддерживаемая разработчиками.</p>
<p>Еще я сюда бы присовокупил медлительность и моральную устарелость кода.</p>
<p>Итог для друпала: сложно, непонятно, без документации, без нормальных шаблонов. Для новичка вообще кромешный ад.</p>
<p><strong>Следующей я установил Joomla.</strong> Расстрою наперед &#8211; после этого я ничего не устанавливал, т.к. бесплатные портальные движки на этом заканчиваются (делать портал на какой-нибудь SimpleCMS или DLE &#8211; бред). Немного уточню, я установил не Joomla, а Joostina (<a href="http://dimoning.ru/r.php?url=http://www.joostina.ru" target="_blank">joostina.ru</a>), один из уже многочисленных &laquo;детей&raquo; Joomla.</p>
<p>Здесь все намного лучше, чем в предыдущем варианте. Как добавлять материалы понятно сразу, админка вообще куда более понятная, не запутанная и даже приятная.</p>
<p>С шаблонами лучше раз в -цать точно, есть много сайтов, где можно найти шаблон на любой вкус. Справедливости ради добавлю, что многие шаблоны не работают (опять же &#8211; много версия джумлы), но хотя бы найти то, что нравится уже гораздо легче.</p>
<p>С документацией тоже лучше. Ее мало, но есть хотя бы какие-то внятные статьи о том, как и что работает. Например, несколько статей с джумлы.ру позволили мне написать собственный модуль, а до этого я джумлой не пользовался вообще.</p>
<p>Слава богу, разрабы джумлы используют возможности актуальных версий PHP: код не процедурный (как в друпале), используются классы и всякие другие модные штуки. Это облегчает восприятие (во всяком случае мне) и читаемость кода. Книг по джумле, правда, я не видел.</p>
<p>Итог для джумлы: жить будет, попытаться что-то сделать на ней действительно можно. Не факт, что получится (см. ниже).</p>
<p><strong>А можно ли сделать сайт, ничего в сайтостроении не понимая?</strong></p>
<p>В общем-то, как я понимаю, на это и нацелены готовые движки, да? Ну друпал я выкидываю в помойку сразу, даже рассматривать не буду. Это ж надо додуматься &#8211; необходимо искать и самому прикручивать модули для того, чтобы просто начать добавлять статьи. А вот на джумле остановлюсь подробнее (заодно как пример будет).</p>
<p>Максимум, что получится сделать, ничего ни в чем не понимая, это шаблонный сайт. Скорее всего он будет довольно страшным и организованным не так, как хочется. Например, я хочу, чтобы на главной выводились ссылки на последние статьи, а в шаблоне, который мне понравился, на главной вообще ничего не выводится. Нужно же лезть в код, что-то там писать. А как писать, если не понимаешь даже словосочетания &laquo;лезть в код&raquo;?</p>
<p>Не разбираясь в сайтах, сложно сделать и операции попроще, например заменить лого на свое или раскрасить ссылки по-другому.</p>
<p>Получается, что не являясь девелопером сделать нормальный сайт и на готовом движке тоже нельзя. А являясь девелопером, скорее всего, использовать готовый двиг и не захочется.</p>
<p><strong>Я не разработчик, но сайт сделать очень хочется!</strong></p>
<p>Хотя есть промежуточный этап. Вот, что надо знать для того, чтобы сделать относительно норальный сайт-портал (или сайт-не-портал):</p>
<ul>
<li>Знать, как &laquo;работает интернет&raquo;: что такое хостинг, что такое домен, как из связать (DNS)</li>
<li>Как загружать файлы по FTP</li>
<li>Что такое MySQL (не как с ней работать, а что это)</li>
<li>Основы HTML</li>
<li>Основы CSS</li>
<li>Основы Photoshop или другого графического редактора</li>
<li>[не обязательно, но очень поможет] Основы PHP</li>
</ul>
<p>Таким образомы, появляется возможность: купить домен и хостинг, загрузить файло на сервер (FTP), нормально установить любой готовый движок (понадобится знание о MySQL), загрузить любой понравившийся шаблон (опять FTP), подредактировать его по-мелочи (HTML + CSS), подредактировать графику (Photoshop). Честно говоря, вообще, не знаю, чем может помочь знание ОСНОВ PHP, ведь без серьезной работы с ним сделать что-то умное не получится, даже исправить ошибки на сайте. Но для общего развития и для большей уверенности в своих силах не помешает.</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/o-standartnih-drizhkah.html/feed</wfw:commentRss>
		<slash:comments>74</slash:comments>
		</item>
		<item>
		<title>Как создать СДЛ самому, часть 1: о шаблонах, встроенных дизайнах и шаблонизаторах</title>
		<link>http://dimoning.ru/kak-sozdat-sdl-samomu-chast-1-o-shablonah-vstroennyih-dizaynah-i-shablonizatorah.html</link>
		<comments>http://dimoning.ru/kak-sozdat-sdl-samomu-chast-1-o-shablonah-vstroennyih-dizaynah-i-shablonizatorah.html#comments</comments>
		<pubDate>Sun, 23 Nov 2008 21:41:10 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[Движки, CMS]]></category>
		<category><![CDATA[Общее]]></category>
		<category><![CDATA[на PHP]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=712</guid>
		<description><![CDATA[Я решил опять перейти на программистскую тематику, но писать для &#171;обычных людей&#187;. Не секрет, что для создания хорошего сайта (в основном СДЛ, но не обязательно), приходится писать к нему CMS на заказ. В основном это не дешевле 400$, поэтому для начинающего манимейкера невозможно.
Будет несколько частей, сколько &#8211; я не знаю. Если что-то хочется узнать или [...]]]></description>
			<content:encoded><![CDATA[<p>Я решил опять перейти на программистскую тематику, но писать для &laquo;обычных людей&raquo;. Не секрет, что для создания хорошего сайта (в основном СДЛ, но не обязательно), приходится писать к нему CMS на заказ. В основном это не дешевле 400$, поэтому для начинающего манимейкера невозможно.</p>
<p>Будет несколько частей, сколько &#8211; я не знаю. Если что-то хочется узнать или спросить &#8211; всегда пожалуйста.</p>
<p>Если до сих пор непонятно, что я буду вещать, поясняю: как &laquo;по кубикам&raquo; написать CMS портального типа, не зная программирования. Как сделать голосование, блоги пользователей, регистрацию пользователей, каталоги и прочее, прочее, прочее. Похоже, можно делать неограниченное количество таких постов.</p>
<p><span id="more-712"></span></p>
<p>Это первая часть, поэтому несколько моментов: я учту, что заботиться о безопасности скриптов нужно сразу, по совету умных людей (простите, уже запамятовал, с кем спорили), писать будем на PHP, и все-таки необходимо знать хотя бы основы программирования на PHP. Если непонятно, что читать, см. один из старых постов: <a href="http://dimoning.ru/vyigodno-li-byit-programmistom.html" target="_blank">Как стать программистом</a>.</p>
<p>На серию статей планы наполеоновские:</p>
<p>1. Шаблоны. (этот урок)<br />
2. Движок для вывода статических страниц.<br />
3. Прикрутить Smarty.<br />
4. Авторизацию пользователей.<br />
5. Опросы.</p>
<p>Осталось писать регулярно. Итак, к уроку.</p>
<p><strong>Шаблоны или встроенный дизайн?</strong></p>
<p>Когда Вы пишите сайт, всегда есть внешняя сторона происходящего &#8211; то, что видит пользователь, дизайн и оформление. Предположим, что дизайнер нарисовал картинку, верстальщик разрезал ее и отдал нам HTML-страницу. А нам нужно встроить ее в движок и выводить информацию (из базы данных или еще откуда-то) согласно этому оформлению.</p>
<p>Если отбросить детали, то есть 2 способа обработки дизайна (форматирования вывода данных). Первый &#8211; это встроенный в движок дизайн. Второй &#8211; шаблонизатор (и шаблон дизайна).</p>
<p><strong><em>Встроенный дизайн.</em></strong></p>
<p>Этот способ проще реализовать, но сложнее эксплуатировать. Больше того, если позже этим сайтом будет заниматься человек, не знакомый с программированием, такой способ может доставить ему некоторые сложности, когда он захочет что-то поменять. А перетянуть весь дизайн может быть сложно даже программисту, ранее не знакомому с этим движком.</p>
<p>Итак, к сути. Например, у нас есть какое-то оформление а-ля &lt;div id=&#8217;aaa&#8217;&gt;&lt;/div&gt;, а между &lt;div&gt; нам нужно вывести какую-то информацию. Тогда в этом случае, мы просто выводим ее с помощью операторов PHP прямо в файле сценария *.php: &lt;div id=&#8217;aaa&#8217;&gt;&lt;?php echo $a; ?&gt;&lt;/a&gt;</p>
<p>Получается, что если у нас 30 разных файлов, то в них по кускам везде появляется оформление (HTML). И поменять его или найти именно тот сценарий, куда закралась ошибка оформления становится сложно.</p>
<p><strong>Шаблонный дизайн.</strong></p>
<p>При этом весь дизайн оформляется в виде отдельного файла с HTML-разметкой, куда вставляются метки для вывода информации. Часто файл с дизайном имеет расширение *.tpl, и его содержимое похоже на такое: &lt;div id=&#8217;aaa&#8217;&gt;{title}&lt;/div&gt;. Потом PHP-сценарий должен обработать этот файл, считать его содержимое, заменить &laquo;метки&raquo; (для примера здесь {title}) на реальную информацию и вывести все это пользователю.</p>
<p>Все распространяемые CMS поддерживают шаблонный дизайн, что обеспечивает возможность создавать для них темы оформления. Тогда их нужно просто залить в отдельный каталог и включить через админку. Как видите &#8211; и править их легче, все в одном файле, наглядно и понятно.</p>
<p><strong>Шаблонизаторы.</strong></p>
<p>Обычно так называются скрипты (модули движка), обрабатывающие эти самые шаблоны из предыдущего пункта. Очень хороший пример такого шаблона &#8211; <a href="http://dimoning.ru/r.php?url=http://www.smarty.net/manual/ru/" target="_blank">Smarty</a>, очень рекомендую к рассмотрению и изучению. Хороший пример собственно написанного шаблонизатора &#8211; это DLE.</p>
<p>Часто программисты не пишут свой шаблонизатор, а встраивают в свой движок Smarty. Я думаю, что это лучший выход, т.к.:</p>
<p>1) Уже все написано, не тратится время на создание шаблонизатора;<br />
2) Он работает быстро. Если новичек попробует написать свой шаблонизатор, он, возможно, будет работать медленнее;<br />
3) Он бесплатно распространяется и бить Вас за это не будут;<br />
4) Очень важно, что другой разработчик сразу будет знать как работать с ним.</p>
<p>Конечно, этот пост кажется совсем не для новичков :) Но это первое, на что мы наткнемся на &laquo;практических занятиях&raquo;, т.к. оформление (вывод) информации в браузер есть даже в самом минималистическом скрипте.</p>
<p>В следующий раз попробуем написать костяк движка, чтобы он мог выводить статические страницы, шаблон будет встроенный (см. 1 пункт).</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/kak-sozdat-sdl-samomu-chast-1-o-shablonah-vstroennyih-dizaynah-i-shablonizatorah.html/feed</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Как написать свой движок блога, часть 2. Авторизация в админке.</title>
		<link>http://dimoning.ru/kak-napisat-svoy-dvizhok-bloga-2.html</link>
		<comments>http://dimoning.ru/kak-napisat-svoy-dvizhok-bloga-2.html#comments</comments>
		<pubDate>Fri, 22 Aug 2008 17:39:18 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[Движки, CMS]]></category>
		<category><![CDATA[Общие советы]]></category>
		<category><![CDATA[на PHP]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=387</guid>
		<description><![CDATA[Спонсор поста: грузчики
Пришло время второй части саги о создании собственного движка блога.
Первая часть здесь. Но перед этим пара слов на отвлеченную тему.
В предыдущем посте я просил помочь моей супер-черепахе на домик для нее, и уже через несколько часов откликнулся замечательный человек &#8211; Илья, пожертвовал в фонд 70 рублей. Он по &#171;призванию&#187; СЕОшник и недавно открыл [...]]]></description>
			<content:encoded><![CDATA[<p>Спонсор поста: <a href="http://www.vash-gruzchik.ru">грузчики</a></p>
<p>Пришло время второй части саги о создании собственного движка блога.</p>
<p><a href="http://dimoning.ru/kak-napisat-svoy-dvizhok-bloga-1.html" target="_blank">Первая часть здесь</a>. Но перед этим пара слов на отвлеченную тему.</p>
<blockquote><p>В предыдущем посте я просил <a href="http://dimoning.ru/plan-zahvata-mira-2-bosonogiy-pravitel.html" target="_blank">помочь моей супер-черепахе на домик для нее</a>, и уже через несколько часов откликнулся замечательный человек &#8211; Илья, пожертвовал в фонд 70 рублей. Он по &laquo;призванию&raquo; СЕОшник и недавно открыл свой блог, который обещает быть очень неплохим: <a href="http://seoinsoul.ru/" target="_blank">SEO in Soul.ru, Душевный Блог о SEO и Заработке</a>.</p></blockquote>
<p><strong>Теперь о создании своего движка блога.</strong> Я реализовал следующее: создание/редактирование/удаление постов, создание/редактирование/удаление категорий, написание комментариев и их редактирование через систему администрирования. Скачать то, что получилось можно по ссылке в конце поста (там пока что архив без редактирования комментариев из админки). Когда дойдем до безопасности, я залью этот движок на тестовый поддомен и можно будет посмотреть, что вышло. И опять эта статья обещает быть очень длинной. Боюсь, что придется ее разрезать еще на три части &#8211; авторизация в админке (эта статья), действия с постами и категориями, действия с комментариями и комментирование. А потом еще две части &#8211; вывод всего этого на сайт и безопасность движка. Пора писать книгу. (Если кого-то не устраивает такая &laquo;санта барбара&raquo; &#8211; пишите, буду делать статьи длиннее)</p>
<p><span id="more-387"></span></p>
<p>Для начала замечу, что все <em>GET-параметры передаются через .htaccess</em> и &laquo;откуда они берутся&raquo; вопрос не принимается :) Это я <a href="http://dimoning.ru/kak-napisat-svoy-dvizhok-bloga-1.html" target="_blank">объяснил в первой части</a>.</p>
<p><strong>Создание системы администрирования. </strong></p>
<p>Я вообще рекомендую всегда разрабатывать движок с админки, т.к. в ней частично или полностью реализован вывод данных, то есть фактически &#8211; пользовательская часть. Тогда создание пользовательской части пойдет быстрее, на мой взгляд. В общем, с админки и начнем.</p>
<p>Располагается она по адресу /vrotmnenogi-admin/, как заявлено в ТЗ (см. <a href="http://dimoning.ru/kak-napisat-svoy-dvizhok-bloga-1.html" target="_blank">первую часть</a>). Я довольно быстро раскаялся в своей дурацкой шутке, т.к. писать везде такой длинный адрес не особенно удобно :). Но от ТЗ мы не будем отступать принципиально, это полезный навык. Простите мне такой бред, я честно не хотел :lol:</p>
<p>Конечно, для начала нужно сделать в админке систему входа, чтобы кто попало не мог редактировать содержимое блога. Авторизация будет вполне обычная &#8211; через логин и пароль. Их md5-хеш будет сохраняться в Cookie и по нему пользователь будет проверяться каждый раз, когда что-то делает в админке.</p>
<blockquote><p>MD5 &#8211; в данном случае применяется как однонаправленный алгоритм шифрования строк произвольной длины и получения 128-битного хеша. Другими словами, если зашифровать любое слово этим алгоритмом, то обратно расшифровать его уже нельзя. Понятно, что для проверки нужно зашифровать введенный пользователем логин/пароль и сравнить его с уже имеющимся хешем. Если они совпадают, то пользователь ввел правильный логин/пароль.</p></blockquote>
<p>Храниться имя и пароль будут прямо в скрипте в виде переменных (файл /vrotmnenogi-admin/index.php, самый верх). Для еще большей путаницы мы будем добавлять в эту связку секретный ключ (произвольный набор символов), чтобы хакер совсем сломал голову, расшифровывая данный хеш.</p>
<p>Итак, как мы будем проверять вход? Для этого создан файл logintest.php, лежащий прямо в корне админки. Первой строкой в этом файле мы смотрим, не пытается ли пользователь залогиниться? Логин передается в переменной $_POST['login'] и если она не пуста, значит &#8211; пытается. Соответственно первым ветвлением IF мы проверяем, что он нам такого прислал и сравниваем с хешем строк пароля, логина и секретного ключа:</p>
<pre><code class="php">
if ($_POST['login']){
	if ($_POST['login'] == $admin_login &amp;&amp;
		$_POST['password'] == $admin_password){
		setcookie ("admin_login", $protection_combo,
                                 time() + 60*60*24*7);
		header ("location: /vrotmnenogi-admin/");
	}
}
</code></pre>
<p>Если проверка пройдена, то мы устанавливаем куки, в которую и записан этот хеш. Куки ставится на неделю и работает только для каталога /vrotmnenogi-admin/ нашего движка. И потом отправляем заголовок, который переадресовывает нас на главную страницу. То есть &#8211; для пользователя не видно, что выполняется какой-то скрипт, все происходит &laquo;мгновенно&raquo;.</p>
<p>Следующий блок в этом файле &#8211; это как раз вывод формы ввода логина и пароля. То есть, если не передано поле $_POST['login'] и данные в куки не совпадают с хешем (попытка взлома или просто нет куки &#8211; не залогинен), то выводится форма входа:</p>
<pre><code class="php">
// Проверка, введен ли пароль админа
if ($_COOKIE['admin_login'] != $protection_combo){
	?&gt;
	&lt;form action="./index.php" method="post"&gt;
		Логин: &lt;input name="login"&gt;&lt;br&gt;
		Пароль: &lt;input name="password" type="password"&gt;&lt;br&gt;
		&lt;input type="submit" value="Зайти на огонек"&gt;
	&lt;/form&gt;
	&lt;?php
	exit;
}
</code></pre>
<p>Кстати, обратите, пожалуйста внимание на то, что после вывода формы обязательно должна быть команда exit. Иначе после формы выведется сама админка. После нажатия кнопки &laquo;Войти&raquo; все данные как раз и проверяются блоком кода, описанным чуть выше.</p>
<p>Теперь выход. Тут все очень просто. В файле index.php я создал кнопку, при нажатии на которую выполняется скрипт logout.php. Кнопку назвал незатейливо &#8211; &laquo;Выйти&raquo; :)</p>
<pre><code class="html">&lt;form action="./logout.php" method="post"&gt;
	&lt;input type="submit" value="Выйти"&gt;
&lt;/form&gt;
</code></pre>
<p>Никакого криминала :) Ну и сам скрипт выхода. Он просто убивает куки с хешем логина, пароля и секретного ключа, из-за чего пользователь не пройдет проверку в файле logintest.php:</p>
<pre><code class="php">&lt;?php
setcookie ("admin_login", "");
header ("location: /vrotmnenogi-admin/");
?&gt;</code></pre>
<p>Убиваем куки (передав ей пустое значение) и отправляем пользователя на главную страницу. Вот так.</p>
<p>С админкой на этом все. Следующая статья в этой серии будет, как я и сказал, о постах и о категориях. Удачи!</p>
<p><strong><a href="http://dimoning.ru/wp-content/uploads/2008/08/dblog.rar" target="_blank">Скачать архив с движком </a><a href="http://dimoning.ru/wp-content/uploads/2008/08/dblog.rar">dblog</a>.</strong> Используйте как угодно, только название dblog остается за мной ;) В архиве, кстати, функционала больше, чем я здесь описал.</p>
<p>__________________________</p>
<p>Если никто не против, чуть-чуть личного. Заметил, что писать в блог для меня стало чем-то нужным. То есть меня мучает ощущение &laquo;надо бы написать в блог&raquo;. Приятное ощущение, что-то вроде тяги к наркотикам для наркоманов :lol: При этом, когда пишешь в блог, это ощущение на день-два отпускает. Мне страшно :shock:</p>
<p>Кстати, я вроде бы пошел на поправку (болел тут несколько дней). Моя девушка подарила мне забавную картинку :)</p>
<p><a href="http://dimoning.ru/wp-content/uploads/2008/08/1195678725_turkey.jpg"><img class="aligncenter size-medium wp-image-389" title="1195678725_turkey" src="http://dimoning.ru/wp-content/uploads/2008/08/1195678725_turkey-278x300.jpg" alt="" width="278" height="300" /></a></p>
<p>Спасибо ей большое, очень классно получилось : )))</p>
<p>А еще по поводу болезней. Трехчасовой рабочий день пишет в своем блоге <a href="http://3hours.biz/drugoy-vzglyad-na-len/" target="_blank">другой взгляд на лень</a> (медицинский, так сказать). После чего (по совету ТРД?) Кишиневский бомж проверяется у врача и у него <a href="http://homelessinchisinau.blogspot.com/2008/08/blog-post.html" target="_blank">находят опухоль щитовидной железы</a>.</p>
<p><strong>Дорогой Кишиневский бомж</strong>, во-первых: мы все с тобой, держись! А во-вторых, я спросил у знающих людей, говорят, что эти опухоли доброкачественные и с ними живет чуть ли не половина жителей Санкт-Петербурга и даже не знает об этом. Все будет хорошо ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/kak-napisat-svoy-dvizhok-bloga-2.html/feed</wfw:commentRss>
		<slash:comments>38</slash:comments>
		</item>
		<item>
		<title>Новый социальный движок BigStreet.</title>
		<link>http://dimoning.ru/bigstreet.html</link>
		<comments>http://dimoning.ru/bigstreet.html#comments</comments>
		<pubDate>Wed, 20 Aug 2008 10:20:59 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[Движки, CMS]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=356</guid>
		<description><![CDATA[Спонсор поста: каталог компаний 
Недавно я наткнулся на новый движок социальных сетей. Собственно, мне заказали его доработку и изменение (решил еще немного подработать фрилансером), и я стал в нем копаться и разбираться. Покопавшись достаточно долго, я понял, что этот движок достоин упоминания и большей популярности. Чуть-чуть увеличить популярность я ему сейчас помогу ;)
Официальный сайт движка [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-thumbnail wp-image-363 alignleft" title="logo" src="http://dimoning.ru/wp-content/uploads/2008/08/logo-150x74.gif" alt="" width="150" height="74" align=left style="padding: 10px;" />Спонсор поста: <a href="http://www.rus-firms.ru/" target="_blank">каталог компаний </a></p>
<p>Недавно я наткнулся на новый движок социальных сетей. Собственно, мне заказали его доработку и изменение (решил еще немного подработать фрилансером), и я стал в нем копаться и разбираться. Покопавшись достаточно долго, я понял, что этот движок достоин упоминания и б<strong>о</strong>льшей популярности. Чуть-чуть увеличить популярность я ему сейчас помогу ;)</p>
<p><a href="http://bigstreet.ru/pages/about/" target="_blank">Официальный сайт</a> движка BigStreet (Большая Улица). Вот что пишет на сайте его создатель: &laquo;Большая Улица это сайт разработки движка для организации социальных сетей и тематических сообществ.<br />
Здесь мы обсуждаем каким должен быть движок социальной сети и пишем его.&raquo;</p>
<p><span id="more-356"></span></p>
<p>Почему я решил упомянуть этот движок у себя? На это есть ряд причин.</p>
<p>1) BigStreet &#8211; движок новый и пока что не известный, а значит &#8211; скоро наберет популярность (т.к. сам по себе вполне неплох). Чем быстрее Вы узнаете о нем, тем лучше (во всех смыслах).</p>
<p>2) Движок OpenSource, то есть &#8211; пользователи сайта самостоятельно дорабатывают его, разбираются. В нем сейчас есть и ошибки и недоработки &#8211; просто рай для девелоперов-энтузиастов :)</p>
<p>3) Движок отлично показывает модель <a href="http://ru.wikipedia.org/wiki/Model-view-controller" target="_blank">MVC</a> (model-view-controller, модель-представление-контроллер). То есть &#8211; в нем очень сильно разделены такие части, как внешний вид, работа с базой, модули и прочее. ИМХО, реализация &laquo;модульности&raquo; очень неплохая. Подобного я не видел ни в DLE, ни в WordPress, ни в Joomla. Вроде бы &#8211; нигде не видел.</p>
<p>Последний пункт основной, почему я и рекомендую посмотреть на этот движок и программистам покопаться в его исходниках. Особенно &#8211; начинающим программистам.</p>
<p>Кстати, есть еще забавная вещь. Как работает движок знает только автор и никому не рассказывает. То есть у него нет времени написать документацию. :) У Вас есть реальный шанс приблизиться к статусу бога в плане понимания работы движка, без шуток.</p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/bigstreet.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Как написать свой движок блога, часть 1.</title>
		<link>http://dimoning.ru/kak-napisat-svoy-dvizhok-bloga-1.html</link>
		<comments>http://dimoning.ru/kak-napisat-svoy-dvizhok-bloga-1.html#comments</comments>
		<pubDate>Thu, 14 Aug 2008 08:32:20 +0000</pubDate>
		<dc:creator>DimoninG</dc:creator>
				<category><![CDATA[Движки, CMS]]></category>
		<category><![CDATA[Общие советы]]></category>
		<category><![CDATA[на PHP]]></category>

		<guid isPermaLink="false">http://dimoning.ru/?p=353</guid>
		<description><![CDATA[Спонсор поста: деревообрабатывающая промышленность, продажа леса
Вступление.
Собственный движок блога обладает многими преимуществами. В нем можно поменять вообще все, до мелочей и уйдет на это в 10 раз меньше времени, чем ковыряться в чужих движках, таких как WordPress или DLE (DLE особенно страшен в этом плане на мой взгляд). Для него легко поставить собственный дизайн. К нему [...]]]></description>
			<content:encoded><![CDATA[<p>Спонсор поста: <a href="http://www.woodsale.ru" target="_blank">деревообрабатывающая промышленность</a>, <a href="http://www.woodsale.ru/classifieds/" target="_blank">продажа леса</a></p>
<p><strong>Вступление.</strong></p>
<p>Собственный движок блога обладает многими преимуществами. В нем можно поменять вообще все, до мелочей и уйдет на это в 10 раз меньше времени, чем ковыряться в чужих движках, таких как WordPress или DLE (DLE особенно страшен в этом плане на мой взгляд). Для него легко поставить собственный дизайн. К нему легко прикрутить собственные другие наработки, например, портал, каталог статей и прочее.</p>
<p>Большим плюсом номер два я считаю невозможность взлома собственного движка. Ведь для взлома уникального, нигде больше не установленного движка хакеру придется поломать голову. А вот для стандартных движков обычно делают даже так называемые эксплойты &#8211; скрипт, запустив который, даже безмозглый 12летний идиот может получить пароли от админки Вашего блога.</p>
<p>Да, это палка о двух концах &#8211; если плохо написать движок с точки зрения безопасности, ломаться он будет довольно легко. Но я лично не собираюсь писать его плохо ;) А Вы?</p>
<p>Еще плюсы? Например, скорость работы. Тот же огромный и &laquo;тяжелый&raquo; WordPress будет работать в разы медленнее, чем заточенный под конкретные задачи собственный движок.</p>
<p>Я расскажу, как написать свой движок за пару часов. А если копировать код у меня из статьи &#8211; за 15 минут. А если сразу скачать исходник &#8211; за 30 секунд :)</p>
<p><span id="more-353"></span></p>
<p>(тут поясню: у меня блог на стандартном движке, т.к. я его веду уже больше полугода и мне не хочется возиться с переносом статей на собственный движок; жаль, что я не начал вести блог на своем движке с самого начала)</p>
<p><strong>Недостатки есть?</strong></p>
<p>Есть, не без этого. Главным недостатком своего движка и огромным плюсом для стандартных движков я считаю плагины. То есть для собственного движка их просто нет и быть не может, пока автор движка сам их не напишет. Например, в WordPress можно за 1 минуту установить плагин для вывода последних комментариев, вывода смайликов, голосования (и вообще чего угодно), а в своем блоге придется писать это все самому. И если вывод последних комментариев и смайликов &#8211; задача не сложная, то, например, с голосованием уже посложнее.</p>
<p><strong>Зачем Вам все это?</strong></p>
<p>В любом случае, даже если Вы выбираете стандартный движок, я все равно рекомендую прочитать статью &#8211; особенно начинающим программистам. Эта статья фактически описание создания несложной CMS, которую можно превратить из блога во что угодно ;)</p>
<p>И еще момент. После этого небольшого цикла статей я напишу, как сделать генератор сателлитов! И по плану &#8211; там как раз пригодится этот собственный движок ;) Запахло деньгами?</p>
<p><strong>Составляем ТЗ.</strong></p>
<p>(ТЗ &#8211; Техническое Задание, документ, по которому программист пишет программу, скрипт, сайт и т.п.)</p>
<p>Даже в таком несложном деле лучше составить небольшое ТЗ и не отходить от него в процессе разработки. Мы просто опишем, что хотим видеть в движке, а потом сделаем ровно так, как написали. Я считаю, что это полезная практика &#8211; иначе можно &laquo;расплыться&raquo; (захотеть сделать и то и се и пятое и десятое, в итоге не сделать ничего или сделать частично и плохо).</p>
<p>&laquo;Нужны возможности: 2* добавлять категории, редактировать их названия, вывод категорий по алфавиту, вложенность не нужна. Добавлять, редактировать или удалять посты. В посте есть заголовок и основной текст. Визуальный редактор не нужен, разрешить HTML-теги. 3* Возможность комментировать пост, вводя имя, почту, сайт и комментарий. Регистрация пользователей не нужна. Все адреса в виде ЧПУ (человеку понятный URL, а-ля dimoning.ru/hello.html). Категории открываются по адресам /category/catname/, где catname &#8211; имя категории. Посты открываются по адресам /postname.html, где postname &#8211; адес поста. Эти адреса тоже можно редактировать. *4 Прикрутить RSS последней версии протокола. Весь блог в кодировке UTF-8. Все изменения администратор вводит через админку по адресу /vrotmnenogi-admin/. Добавить постраничный вывод постов.&raquo;</p>
<p>Вот такое тех-задание. Сделаем четко по нему ;)</p>
<p>Я решил разделить создание собственного движка блога на четыре части &#8211; первая &#8211; это проектирование и еще три отмечены звездочками в ТЗ [сначала хотел 3 части, но эта статья уже вышла довольно большой, а для понимания читать большую статью, я думаю, тяжеловато]. У меня еще нет готового движка (на момент написания этих строк), поэтому исходник каждый раз будет все более дополняться.</p>
<p><strong>Начнем с начала.</strong></p>
<p>В начале работы я обычно прикидываю, какие мне нужны таблицы в базе данных и как их будет использовать движок. Например, здесь. Я перечислю поля и тип данных в них записываемый, а также объясню &#8211; для чего то или иное поле. Для простоты мы будем использовать только int и text.</p>
<p><em>Категории:</em><br />
id <em>(int auto increment)</em> | url <em>(text)</em> | title <em>(text)</em></p>
<p>id &#8211; уникальный, автоматически увеличивающийся при добавлении записи, идентификатор категории<br />
url &#8211; адрес категории, который будет подставляться /category/сюда/<br />
title &#8211; название категории, которое будет выводиться в браузер</p>
<p><em>Посты:</em><br />
id <em>(int auto increment)</em> | url <em>(text)</em> | title <em>(text)</em> | post <em>(text)</em> | dt <em>(datetime)</em></p>
<p>id &#8211; уникальный, автоматически увеличивающийся при добавлении записи, идентификатор поста<br />
url &#8211; адрес поста, который будет подставляться /сюда.html<br />
title &#8211; заголовок поста, выводится в браузер<br />
post &#8211; содержимое поста, выводится туда же<br />
dt &#8211; дата и время написания поста, проставляется автоматически и изменению не подлежит</p>
<p><em>Комментарии к постам:</em><br />
id <em>(int auto increment)</em> | post_id <em>(int)</em> | nick <em>(text)</em> | email <em>(text)</em> | site <em>(text)</em> | comment <em>(text)</em> | ip <em>(text)</em> | dt <em>(datetime)</em></p>
<p>В ТЗ ничего не сказано про запись IP комментатора, но я считаю, что это необходимо. Может помочь отловить злого спамера или забанить по IP. В общем, если &laquo;враг&raquo; появится, лучше знать про него как можно больше.</p>
<p>id &#8211; уникальный, автоматически увеличивающийся при добавлении записи, идентификатор комментария<br />
post_id &#8211; идентификатор поста, к которому написан комментарий<br />
nick &#8211; имя комментатора (никнейм)<br />
email &#8211; почта комментатора<br />
site &#8211; сайт комментатора<br />
comment &#8211; сам комментарий<br />
ip &#8211; IP-адрес комментатора<br />
dt &#8211; дата и время написания комментария. Так. Для протокола. :)</p>
<p>Знатоки из Что-Где-Когда, конечно, заметили бы, что IP адрес можно хранить в виде long-числа, а я храню его в виде текста. Я считаю, что так нагляднее и вообще редко храню его в виде числа. Говорят, что по использованию памяти это лучше, не знаю, я не замерял. Но знаю, что это хуже по производительности &#8211; нужно преобразовывать число в IP и обратно. Я так не делаю, в общем.</p>
<p><strong>С базой данных все. Теперь пара слов о ЧПУ.</strong></p>
<p>Из ТЗ видно, что должны быть ЧПУ (человеку понятный Url). Для этого нам нужно создать .htaccess, который мог бы разбирать адреса вида /category/name/ и /post.html и передавать в скрипт значения этих полей в виде переменных. Например, пусть имя категории передается в переменной category, а имя поста в переменной post из массива $_GET.</p>
<p>Заметьте, нужно предусмотреть и постраничный вывод! Лучше подумать об этом сразу. Я предлагаю сделать примерно так же, как сделано в WordPress. А именно, для категорий страницы показываются по адресу /category/name/page/1/, где 1 &#8211; номер страницы. А если категория не выбрана (главная страница), то адреса для вывода страниц будут иметь вид /page/1/ &#8211; прямо от корня.</p>
<p>И еще нужно предусмотреть зарезервированное имя для RSS. Я предлагаю сделать простой адрес: /rss.html, почему бы и нет?</p>
<p>Какой же .htaccess файл нам понадобится? Я бы сделал такой:</p>
<p>RewriteEngine On<br />
1 RewriteRule ^(rss).html$ rss.php [L]<br />
2 RewriteRule ^([A-Za-z0-9_]+).html$ index.php?post=$1 [L]<br />
3 RewriteRule ^(category)/([A-Za-z0-9_]+)/$ index.php?category=$2 [L]<br />
4 RewriteRule ^(category)/([A-Za-z0-9_]+)/(page)/([0-9+])/$ index.php?category=$2&amp;page=$4 [L]<br />
5 RewriteRule ^/(page)/([0-9+])/$ index.php?page=$2 [L]</p>
<p>Я пронумеровал строки. В рабочей версии нумерации, конечно, нет.</p>
<p>Строка 1. Перекидывает с rss.html на rss.php прозрачно для пользователя. В rss.php будет генерироваться сама RSS.</p>
<p>Строка 2. При открытии адреса вида /some.html передает все между слешем и .html в скрипт index.php в переменной $_GET['post'];</p>
<p>Строка 3. При открытии категорий (адрес вида /category/имя/) передает в скрипт index.php имя категории в перменной $_GET['category'];</p>
<p>Строка 4 и строка 5 &#8211; аналогичное действие, только для других видов URL.</p>
<p>Ключ L не позволяет серверу идти дальше по списку, если нужное нам совпадение с адресом найдено.</p>
<p>Между прочим, здесь есть еще один большой плюс: с помощью регулярных выражений мы задали конкретные символы, которые можно использовать в адресах. Если хакер попытается ввести в адрес не буквенно-цифровой символ, то сервер прервет запрос сразу же. То есть заботиться об этом в самом движке уже не надо.</p>
<p>На этом с &laquo;проектированием&raquo; покончено, ровно как и с первой частью. В следующей статье мы сделаем добавление категорий, их редактирование, вывод. Добавление постов, их редактирование и отображение.</p>
<p>Пока что все. Всем удачи и до связи :) <a href="http://feeds.feedburner.com/dimoning" target="_blank">Подписывайтесь на RSS</a>, а то что за дела ))) Я еще не набрал даже сотни подписчиков, жуть! ))</p>
<p>__________________________<br />
Посмеялся ))<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="src" value="http://www.youtube.com/v/uQrC_C6SexI&amp;hl=en&amp;fs=1" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/uQrC_C6SexI&amp;hl=en&amp;fs=1" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://dimoning.ru/kak-napisat-svoy-dvizhok-bloga-1.html/feed</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
	</channel>
</rss>

