<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss version="2.0">
	<channel>
		<title>AskName.Ru</title>
		<link>http://askname.ru/</link>
		<description>Сайт для начинающего веб-мастера. Все азы, которые нужно знать, чтобы успешно работать в сфере интернета</description>
		<pubDate>Fri, 24 Jun 2011 13:05:14 +0400</pubDate>
		<language>en-ru</language>
		<generator>MaxSite CMS (http://max-3000.com/)</generator>
		<copyright>Copyright 2012, http://askname.ru/</copyright>
				<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Asknameru" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="asknameru" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
			<title><![CDATA[И вновь 404 заголовки, а я же говорил!]]></title>
			<link>http://askname.ru/page/chaly_404</link>
			<guid>http://askname.ru/page/chaly_404</guid>
			<pubDate>Fri, 24 Jun 2011 13:05:14 +0400</pubDate>
			<category><![CDATA[Сайтостроительство]]></category>
			<description><![CDATA[
<p>Вновь всплыла на форуме Макса <a href="http://forum.max-3000.com/viewtopic.php?f=2&t=3464">тема о некорректной отдаче HTTP-заголовков</a>. Видимо в прошлый раз я недостаточно рассмотрел проблему и, как следствие, она не была решена.</p>
<p>Цитирую:</p>

<blockquote>У нас уже был случай, когда на странице пишется 404,<br>
 а в заголовке 200. По идее нужен контроль над отдачей заголовка.</blockquote>
Как выяснилось, существует загвоздка:</p>

<blockquote>На уровне системы нет такого контроля - она лишь послушно раскладывает <br>
адрес на сегменты. В других CMS этот процесс практически аналогичен - <br>
можно добавить произвольные get-параметры в адрес и получить эту же <br>
страницу.</blockquote>
Я вижу такой выход: по умолчанию система отдаёт 404. При подключении типов, если есть материал для отображения переопределяем на 200. Потом нужна <a href="http://askname.ru/page/check-user" class="perelink">проверка</a> на лишние сегменты. И нужно в тех плагинах, где идёт подключение на сегмент сделать переопределение заголовка на 200. </p>
<p>Максим предложил такое решение:</p>

<blockquote>Админ задаёт некий шаблон адреса, который считается верным, например:<br>

<blockquote>category/*<br>
category/*/next/*<br>
/next/*<br>
page/*</blockquote>
где / - разделитель сегментов, а * - произвольная часть сегмента. В этом примере адрес category/news будет валидным, а category/news/23 - нет.</p>
<p>То есть плагин при инициализации системы (хук init) проверяет текущий адрес на один из разрешенных шаблонов и если он соответствует любому варианту, то ничего не делает. Если же соответствия нет, переделывает type на page_404.</blockquote>Нулевая тестовая версия плагина была реализована мной. </p>
<p><a href="http://askname.ru/dc/L3NpdGUvYXNrbmFtZV9ydS91cGxvYWRzL21heHNpdGUtcGx1Z2lucy9jaGFseV80MDQuemlw" title="/site/askname_ru/uploads/maxsite-plugins/chaly_404.zip" >chaly_404.zip</a> <sup title="Количество переходов">36</sup></p>
<p>На мой взгляд данные меры недостаточны и следует ввести ещё ряд проверок на правильность сегмента. Нужно обсудить и обдумать предложения по совершенствованию плагина.</p>
<a href="http://askname.ru/page/chaly_404#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[Знакомство с Дебиан]]></title>
			<link>http://askname.ru/page/znakomstvo-s-debian</link>
			<guid>http://askname.ru/page/znakomstvo-s-debian</guid>
			<pubDate>Sat, 23 Apr 2011 22:04:39 +0400</pubDate>
			<category><![CDATA[Дебианство]]></category>
			<description><![CDATA[
<p>Это первая заметка, затрону тему того, где взять и как ставить.</p>
<p>Первое - брать нужно маленький образ, netinst. Такой образ занимает порядка 200 мегабайт и записывается на маленький CD-диск. Все дополнительные пакеты можно установить через Интернет. </p>
<p>Устанавливать же, на мой взгляд, нужно "пустую" версию системы, без серверов и программ. Лучше установить нужные позже, чем удалять лишние. Интерфейс установки графический и интуитивно-понятный. </p>
<p>Далее возникает вопрос, ставить ли графический стол? На мой взгляд необязательно. Лучше использовать программу putty и подключиться через протокол ssh.</p>
<a href="http://askname.ru/page/znakomstvo-s-debian#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[Критика Maxsite. Заблуждения]]></title>
			<link>http://askname.ru/page/kritika-maxsite-zabluzhdenija</link>
			<guid>http://askname.ru/page/kritika-maxsite-zabluzhdenija</guid>
			<pubDate>Wed, 14 Jul 2010 12:40:06 +0400</pubDate>
			<category><![CDATA[Сайтостроительство]]></category>
			<description><![CDATA[
<p>Данная заметка несколько не отвечает моим требованиям к собственным материалам, она родилась из темы на официальном форуме Maxsite CMS и переписывать поэтому я её не буду. Тема форума безосновательно критикует систему управления. Сделаю то, что умею делать достаточно хорошо - покажу в чём автор заблуждается. Давно работаю с ЦМС в том числе Макса. Тем более это кто-то сделать должен.</p>

<div style="margin-left: 40px;">Вывод? Да, в погоне за лучшим кодом и сериями серверного софта MaxSite CMS подходит все меньше и меньше под минимальные требования (не SQL&gt;4.0.хх  PHP&gt;4.хх,  а мы давай врубим SQL PHP версии не меньше 100хх? )</div>А почему вы не используете CGI или не пишите сайты на голом HTML? Думаю ответ очевиден. На сегодня нельзя сохранять всю линейку совместимости. У вас просто устаревший хостинг. Кроме того системные требования во многом диктует фреймворк. К плагинам это не относится, но авторы плагинов к разработчику ЦМС обычно отношения не имеют.</p>

<div style="margin-left: 40px;">Переделывая тему под себя, я проклял все! Потому что, оказывается, мне надо выучить ОСОБУЮ разметку в шаблонах MaxSite CMS, и на основе заготовки начать создавать свой.</div>Открою пару секретов - шаблон надо делать самому и не копаться в чужом коде. В системе аж три учебных шаблона, разного <a href="http://askname.ru/page/top-level-domain" class="perelink">уровня</a> сложности. Остальное делать задача других разработчиков. И самое интересное и важное! Особая разметка представляете PHP и HTML... И да. Чтобы сделать сайт их как-то надо выучить...</p>

<div style="margin-left: 40px;">Попробовав поискать готовые, я столкнулся с тем, что все шаблоны, как под копирку, повторяют один! Как будто нет другого дизайна, кроме поля текста и меню справа!</div>Плохо искали. Ну и снова совет - сделай сам на основе бесплатных. Логика там простейшая, почитай лекции Макса, посмотри готовые работы. Или можешь заказать, обычно это не сложно и не дорого. Например мне. Да это самореклама...</p>

<div style="margin-left: 40px;">Программисты, не надо человеку инструкцию, ему надо пример, который чуть переделать и он работает!</div>Обычно программированием занимаются программисты как ни странно. Пример который работает это вордпресс. Он коряв дыряв и не годится для серьёзных разработок. Но простому пользователю подойдёт. Нужно смотреть по месту что дешевле, сделать один раз оптимальный сайт или делать на том же вордпрессе самому и отдавать за выделенный сервер каждый месяц. Всё зависит от задач, которые будет решать сайт. Кстати проконсультироваться по этому вопросу можно обратиться ко мне. </p>

<div style="margin-left: 40px;">А куда? В виджет текста! А он один. А мне минимум на одно меню два разных таких виджета для нормального оформления нужно!</div>Вы не разобрались в работе виджетов - советую читать лекции и инструкции. Повторять как сюда не буду, обсуждалось несколько раз. Новички - пользуйтесь поиском а? Ну по хорошему просимо...</p>

<div style="margin-left: 40px;">Дизайн, людей, поддерживающих форум (ответы в виде, измени такой то код на такой то вообще не должны быть!!! Значит, продукт не сырой, а мокрющий :)и думать, как улучшить  MaxSite CMS. Потому что ВСЕ, ПРЕДЕЛ, ТУПИК, ПОТОЛОК кодинга для этой CMS!</div>На форуме тебе подскажут алгоритм, который поможет решить задачу, а дальше любой может засунуть в плагин его или внедрить как-то иначе... С такой гибкой системой предела в принципе нет. У меня дошло до того, что мне проще проверять простые алгоритмы на этой системе, настроенной определённым образом - хорошая оболочка для теста скриптов. Повторяю. Вы не разобрались в системе, а делаете вывод. Нехорошо!</p>

<div style="margin-left: 40px;">Тысячи уже таких, и тысячи проектов загинаются!Сила в красоте, в рекламе, в простоте установки! (WordPress то же..)</div>Просто разная целевая аудитория. Если сайт красив но не грузится он ничего не стоит. Про тысячи конечно преувеличение, про загибается тоже. Система заточена под разработчиков. Сделать нужно многое, но это не указанное вами. А например удобный мультизагрузчик файлов интегрированный в редактор (но не как в ВП!!).</p>

<div style="margin-left: 40px;">И наконец пожелание! Развивайтесь, учитесь программировать, повышайте квалификацию. Не нужно искать косяки в разработчиках плагинов и ЦМС. Перспективы у вас думаю есть, продолжайте работать и всё получится и код будет доставлять радость. Удачи!</div>
<a href="http://askname.ru/page/kritika-maxsite-zabluzhdenija#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[Быстрое создание сайта корпоративного уровня]]></title>
			<link>http://askname.ru/page/sozdanie-sajta-urssa-ru</link>
			<guid>http://askname.ru/page/sozdanie-sajta-urssa-ru</guid>
			<pubDate>Tue, 25 May 2010 22:08:52 +0400</pubDate>
			<category><![CDATA[Веб-мастерство]]></category>
			<description><![CDATA[
<p>Динамично развивающийся рынок диктует необходимость создания сайта как средства информирования и удержания целевой аудитории любой организации. Это также может быть собственный учёт, документооборот, иные Интернет-ресурсы. Для молодёжных организаций и общественных объединений сайт ещё более актуален, поскольку молодые люди привыкли получать всю информацию через Интернет. </p>
<p>В рамках настоящей работы создан и запущен в эксплуатацию сайт «Открой свои возможности», в настоящее <a href="http://askname.ru/page/time-blia" class="perelink">время</a> доступный в Интернете по адресу <a href="http://urssa.ru">UrSSA.ru</a>. Заказчиком данного проекта является Министерство по делам молодёжи УР и Республиканский совет студентов и аспирантов. Необходимо было получить работоспособный программный продукт в максимально короткие сроки. Ввиду того, что требования заказчика часто менялись и дополнялись, сформировать сводное техническое задание было практически невозможно.</p>
<p>В результате работы программиста, дизайнера и верстальщика был разработан удобный в использовании сайт со следующей функциональностью: центральное место занимает лента новостей с возможностью поиска по всем записям; пользователю дана возможность оставить своё мнение о новостях, проголосовать по предложенным вопросам и связаться с администрацией; материалы сайта доступны в виде ленты RSS. </p>
<p>Рассматривая техническую сторону вопроса, следует выделить систему управления содержанием сайта от отечественного разработчика – <a href="http://askname.ru/page/maxsite-cms-404-nevernye-zagolovki" class="perelink">MaxSite</a> CMS, как основное средство реализации проекта. Система реализована на CodeIgniter с поддержкой PHP и использует для хранения информации базу <a href="http://askname.ru/page/check-user" class="perelink">данных</a> MySQL. Выбранная платформа позволяет использовать и другие решения, например, MS SQL, Postgre, Oracle, SQLite. Необходимо добавить, что использовалось много сторонних расширений, автором написаны собственные.</p>
<p>Также требовалось учесть, что система управления сайтом «Открой свои возможности» должна быть простой. Обслуживание и развитие сайта предполагается силами студентов, обычно ещё не имеющих опыта работы с подобными системами.</p>
<p>Оценим временные затраты на создание описанного выше продукта. Наиболее ответственная часть работы – установка и настройка системы управления на сервере. Этот процесс занял около двух часов. Далее возникла создания графического шаблона будущего сайта. Дизайнеру потребовалось на это около пяти часов. Для оценки работы дизайнера необходимы специальные знания. Творческий процесс трудно лимитировать. Было решено считать такой результат вполне удовлетворительным в плане быстроты. Завершающий этап разработки сайта – вёрстка, программирование и «подгонка» шаблона под систему управления. В рамках <a href="http://askname.ru/page/hosting-etogo-sajta" class="perelink">этого</a> этапа был создан графический вывод данных, всё было «увязано» с системой управления. На это потребовалось приблизительно семь часов. В результате было выяснено, что в нашем случае создать нужный заказчику сайт при использовании типовых решений можно приблизительно за неделю. Данный подход позволяет заметно сократить время разработки. Следует отметить, что при использовании типовых свободно распространяемых решений профессиональному разработчику будет достаточно одних суток.</p>
<p>В настоящее время сайт полностью функционирует. Заказчик начал наполнять его необходимыми материалами. В перспективе предполагается увеличение сервисов сайта и продвижение его в поисковых системах. Также необходимо обратить внимание молодых разработчиков на необходимость утверждения точного технического задания при взаимоотношениях с заказчиком.</p>
<a href="http://askname.ru/page/sozdanie-sajta-urssa-ru#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[Подробнее о MultiMaxsite CMS]]></title>
			<link>http://askname.ru/page/podrobnee-o-multimaxsite-cms</link>
			<guid>http://askname.ru/page/podrobnee-o-multimaxsite-cms</guid>
			<pubDate>Wed, 17 Mar 2010 13:04:34 +0400</pubDate>
			<category><![CDATA[Сайтостроительство]]></category>
			<description><![CDATA[
<p>Столкнулся с тем, что не всегда понятно как и для чего создан данный хак. Это вообще свойственно разработчикам да и не только - для себя очевидно, расписать для людей лень. Каюсь и исправляю ошибку.</p>
<p>Итак. Для чего? Допустим мы хотим установить много копий <a href="http://askname.ru/page/maxsite-cms-404-nevernye-zagolovki" class="perelink">MaxSite</a> CMS. Разумеется хотим обойтись одной базой <a href="http://askname.ru/page/check-user" class="perelink">данных</a> и одной копией самой системы, <a href="http://askname.ru/page/top-level-domain" class="perelink">домены</a> привязываются к одной папке. Это удешевляет <a href="http://askname.ru/page/ucoz" class="perelink">хостинг</a> в принципе, но не снимает ограничений по нагрузке на него. </p>
<p>Устанавливая данный хак мы получаем: только одну копию Maxsite CMS на диске у хостера. Все домены линкуются к одной папке. В зависимости от доменного имени, идёт обращение к определённым таблицам в базе данных. Так как делается это на этапе до запуска самого движка, ни пользователь, ни администратор даже не заметят разницы работая с многосайтовой или обычной версией системы. </p>
<p>Что получается в базе данных? Макссайт создаёт около десятка таблиц для хранения данных одного <a href="http://askname.ru/page/otkrytie-sajta" class="perelink">сайта</a> вида mso_table. Многосайтовая версия в рамках одной же базы данных создаст n помноженное на дюжину таблиц, где n это количество сайтов. небольшое захламление получается, зато великая экономия... Опыт показывает, что одиннадцать сайтов нормально работают. Правда у них небольшая посещаемость...</p>
<p>По привязке доменов - можно использовать парковку к главному домену. Можно также привязывать и субдомены, проблем не будет.</p>
<p>Структура базы данных - используются префиксы вида railway$club_org_ru, если ваш <a href="http://askname.ru/page/what_is_domain" class="perelink">домен</a> это railway-club.org.ru. Такие косяки, позволяют добиться однозначного соответствия. У людей были проблемы, когда просто удалялись точки и тире из домена.</p>
<p>После запуска, нужно также создать папку для сайта в категории site, а в ней каталоги uploads, cache. Файл sitemap.xml для карты сайта. Права выставляются так же как и у стандартных каталогов. Это как правило (777). </p>
<p>Для работы в панели администратора переключить шаблон с дефалтного.</p>
<a href="http://askname.ru/page/podrobnee-o-multimaxsite-cms#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[Универсальная переадресация с/на WWW]]></title>
			<link>http://askname.ru/page/universalnaja-pereadresacija-sna-www</link>
			<guid>http://askname.ru/page/universalnaja-pereadresacija-sna-www</guid>
			<pubDate>Thu, 10 Dec 2009 03:49:00 +0400</pubDate>
			<category><![CDATA[Сайтостроительство]]></category>
			<description><![CDATA[
<p>В своих проектах использую чтобы избежать расклейки доменов типа www.rus.am c rus.am</p>
<p>Этот код помещаем в .htaccess </p>
<p># В переменную окружения %{ENV:PROTOCOL} помещаем протокол</p>
<p>RewriteRule ^(.*)$ - [E=PROTOCOL:http]</p>
<p>RewriteCond %{HTTPS} ^on$ [NC]</p>
<p>RewriteRule ^(.*)$ - [E=PROTOCOL:https]</p>
<p># Если нужно убираем www</p>
<p>RewriteCond %{SERVER_PORT} ^80$</p>
<p>RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]</p>
<p>RewriteRule ^(.*)$ %{ENV:PROTOCOL}://%1%{REQUEST_URI} [R=301,L]</p>
<p>RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]</p>
<p>RewriteRule ^(.*)$ %{ENV:PROTOCOL}://%1:%{SERVER_PORT}%{REQUEST_URI} [R=301,L]</p>
<p>Теперь у нас идёт правильная переадресация всех страниц с домена, на <a href="http://askname.ru/page/what_is_domain" class="perelink">домен</a> без www.</p>
<a href="http://askname.ru/page/universalnaja-pereadresacija-sna-www#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[Проверка регистрационных данных]]></title>
			<link>http://askname.ru/page/check-user</link>
			<guid>http://askname.ru/page/check-user</guid>
			<pubDate>Sat, 05 Dec 2009 22:11:22 +0400</pubDate>
			<category><![CDATA[Сайтостроительство]]></category>
			<description><![CDATA[
<p>Часть функций, их основа честно откуда-то спёрта. Мне не удалось разыскать источник поэтому выложу в открытый доступ. Функции для проверки регистрационных данных комъюзеров.</p>
<p>Функция проверки на существование мыла в таблице пользователей.</p>

<blockquote>function is_email_exists($email)<br>
{<br>
  $ret = false;<br>
  $CI = &amp;get_instance();<br>
 $CI-&gt;db-&gt;from('users');<br>
 $CI-&gt;db-&gt;select('users_email');<br>
 $CI-&gt;db-&gt;limit(1);<br>
 $CI-&gt;db-&gt;where( array('users_email' =&gt; $email));<br>
 $query = $CI-&gt;db-&gt;get();<br>
 if( $query-&gt;num_rows() )<br>
{<br>
  $row = $query-&gt;row();<br>
    if( $row-&gt;users_email == $email )   $ret = true;<br>
 }<br>
  return $ret;<br>
}</blockquote>

<p>Получение ИДа пользователя по его нику.</p>

<blockquote>function get_id_by_nik($name)<br>
{<br>
 $ret = true;  <br>
 $id = 0; <br>
 $CI = &amp;get_instance();<br>
 $CI-&gt;db-&gt;from('comusers');<br>
 $CI-&gt;db-&gt;select('comusers_id');<br>
 $CI-&gt;db-&gt;limit(1);<br>
 $CI-&gt;db-&gt;where( array('comusers_nik' =&gt; $name));<br>
 $query = $CI-&gt;db-&gt;get();<br>
 if( $query-&gt;num_rows() )<br>
 {<br>
  $row = $query-&gt;row();  <br>
  $id = $row-&gt;comusers_id;<br>
 } <br>
 return (int) $id;<br>
}</blockquote>
Проверка на существование логина юзера</p>

<blockquote>function is_users_login($login)<br>
{<br>
 $ret = true; <br>
 $CI = &amp;get_instance();<br>
 $CI-&gt;db-&gt;from('users');<br>
 $CI-&gt;db-&gt;select('users_login');<br>
 $CI-&gt;db-&gt;limit(1);<br>
 $CI-&gt;db-&gt;where( array('users_login' =&gt; $login));<br>
 $query = $CI-&gt;db-&gt;get();<br>
 if( $query-&gt;num_rows() )<br>
 {<br>
  $row = $query-&gt;row();  <br>
  if( $row-&gt;users_login == $login ) <br>
  {<br>
   $ret = false;<br>
  }<br>
  else <br>
  {<br>
   $ret = true;<br>
  }<br>
 } <br>
 return $ret;<br>
}</blockquote>
Проверка на существование ника пользователя</p>

<blockquote>function is_users_nik($login)<br>
{<br>
 $ret = true;  <br>
 $CI = &amp;get_instance();<br>
 $CI-&gt;db-&gt;from('users');<br>
 $CI-&gt;db-&gt;select('users_nik');<br>
 $CI-&gt;db-&gt;limit(1);<br>
 $CI-&gt;db-&gt;where( array('users_nik' =&gt; $login) );<br>
 $query = $CI-&gt;db-&gt;get();<br>
 if( $query-&gt;num_rows() )<br>
 {<br>
  $row = $query-&gt;row();  <br>
  if( $row-&gt;users_nik == $login ) <br>
  {<br>
   $ret = false;<br>
  }<br>
  else <br>
  {<br>
   $ret = true;<br>
  }<br>
 } <br>
 return $ret;<br>
}</blockquote>
Проверка на существование ника комъюзера</p>

<blockquote>function is_comusers_nik($login, $userid)<br>
{<br>
 $ret = true;  <br>
 $CI = &amp;get_instance();<br>
 $CI-&gt;db-&gt;from('comusers');<br>
 $CI-&gt;db-&gt;select('comusers_nik');<br>
 $CI-&gt;db-&gt;limit(1);<br>
 $CI-&gt;db-&gt;where( array('comusers_nik' =&gt; $login) );<br>
 $query = $CI-&gt;db-&gt;get();<br>
 if( $query-&gt;num_rows() )<br>
 {<br>
  $row = $query-&gt;row(); <br>
  if ( ( $row-&gt;comusers_nik == $login ) and <br>
       ( get_id_by_nik($row-&gt;comusers_nik) != $userid ) and ( $row-&gt;comusers_nik!='' ) )  <br>
  {<br>
   $ret = false;<br>
  }<br>
  else <br>
  {<br>
   $ret = true;<br>
  }<br>
 } <br>
 return $ret;<br>
}</blockquote>

<p>Функция, которую нужно вызывать в файле your-template/type/users-form.php вместо стандартной $res_post=mso_comuser_edit(); нужно выполнить присваивание $res_post=russ_mso_comuser_edit(); </p>

<blockquote>function russ_mso_comuser_edit($args = array())<br>
{<br>
 global $MSO;<br>
 if ( !isset($args['css_ok']) )  $args['css_ok'] = 'comment-ok';<br>
 if ( !isset($args['css_error']) ) $args['css_error'] = 'comment-error';<br>
 # id комюзера, который в сессии<br>
 if ( isset($MSO-&gt;data['session']['comuser']) and $MSO-&gt;data['session']['comuser'] )<br>
   $id_session = $MSO-&gt;data['session']['comuser']['comusers_id'];<br>
 else $id_session = false;<br>
 if ( $post = mso_check_post(array('f_session_id', 'f_submit', 'f_comusers_activate_key')) ) // это активация<br>
 {<br>
  # защита рефера<br>
  mso_checkreferer();<br>
  # защита сессии - если не нужно закомментировать строчку!<br>
  if ($MSO-&gt;data['session']['session_id'] != $post['f_session_id']) mso_redirect();<br>
  // получаем номер юзера id из f_submit[]<br>
  $id = (int) mso_array_get_key($post['f_submit']);<br>
  if (!$id) return '<div class="' . $args['css_error']. '">'. t('Ошибочный номер пользователя'). '</div>';<br>
  # проверяем id в сессии с сабмитом <br>
  if ($id != $id_session) <br>
   return '<div class="' . $args['css_error']. '">'. t('Ошибочный номер пользователя'). '</div>';<br>
   <br>
  $f_comusers_activate_key = trim($post['f_comusers_activate_key']);<br>
  if (!$f_comusers_activate_key) return '<div class="' . $args['css_error']. '">'. t('Неверный (пустой) ключ'). '</div>';<br>
  // нужно проверить если у указанного комюзера не равные ключи<br>
  // если они равны, то ничего не делаем<br>
  $CI = &amp; get_instance();<br>
  $CI-&gt;db-&gt;select('comusers_activate_string, comusers_activate_key');<br>
  $CI-&gt;db-&gt;from('comusers');<br>
  $CI-&gt;db-&gt;where('comusers_id', $id);<br>
  $CI-&gt;db-&gt;limit(1);<br>
  $query = $CI-&gt;db-&gt;get();<br>
  if ($query-&gt;num_rows() &gt; 0)<br>
  {<br>
   $comuser = $query-&gt;result_array(); // данные комюзера<br>
   if ($comuser[0]['comusers_activate_string'] == $comuser[0]['comusers_activate_key'])<br>
   {<br>
    // уже равны, активация не требуется<br>
    return '<div class="' . $args['css_ok']. '">'. t('Активация уже выполнена'). '</div>';<br>
   }<br>
   else<br>
   {<br>
    // ключи в базе не равны<br>
    // сверяем с переданным ключом из формы<br>
    if ($f_comusers_activate_key == $comuser[0]['comusers_activate_key'])<br>
    {<br>
     // верный ключ - обновляем в базе<br>
     $CI-&gt;db-&gt;where('comusers_id', $id);<br>
     $res = ($CI-&gt;db-&gt;update('comusers',<br>
        array ('comusers_activate_string' =&gt; $f_comusers_activate_key  ) )) ? '1' : '0';<br>
     $CI-&gt;db-&gt;cache_delete_all();<br>
     if ($res)<br>
      return '<div class="' . $args['css_ok']. '">'. t('Активация выполнена!'). '</div>';<br>
     else<br>
      return '<div class="' . $args['css_error']. '">'. t('Ошибка БД при добавления ключа активации'). '</div>';<br>
    }<br>
    else<br>
    {<br>
     return '<div class="' . $args['css_error']. '">'. t('Ошибочный ключ активации'). '</div>';<br>
    }<br>
   }<br>
  }<br>
  else // вообще нет такого комюзера<br>
   return '<div class="' . $args['css_error']. '">'. t('Ошибочный номер пользователя'). '</div>';<br>
 }<br>
 elseif ( $post = mso_check_post(array('flogin_session_id', 'flogin_submit', 'flogin_user', 'flogin_password',<br>
     'flogin_redirect')) )<br>
 {<br>
  // логинимся через стандартную _mso_login()<br>
  _mso_login();<br>
  return;<br>
 }<br>
 <br>
 // это форма?<br>
 elseif ( $post = mso_check_post(array('f_session_id', 'f_submit', 'f_comusers_email', 'f_comusers_password',<br>
     'f_comusers_nik', 'f_comusers_url', 'f_comusers_icq', 'f_comusers_msn', 'f_comusers_jaber',<br>
     'f_comusers_date_birth',  'f_comusers_description', 'f_comusers_avatar_url')) ) // это <a href="http://askname.ru/page/obnovlenie-cms-ucoz" class="perelink">обновление</a> формы<br>
 {<br>
  if (!is_login_comuser())<br>
   return '<div class="' . $args['css_error']. '">'. t('Ошибочные данные пользователя'). '</div>';<br>
   <br>
  # защита рефера<br>
  mso_checkreferer();<br>
  # защита сессии - если не нужно закомментировать строчку!<br>
  if ($MSO-&gt;data['session']['session_id'] != $post['f_session_id']) mso_redirect();<br>
  // получаем номер юзера id из f_submit[]<br>
  $id = (int) mso_array_get_key($post['f_submit']);<br>
  if (!$id) return '<div class="' . $args['css_error']. '">'. t('Ошибочный номер пользователя'). '</div>';<br>
  # проверяем id в сессии с сабмитом <br>
  if ($id != $id_session) <br>
   return '<div class="' . $args['css_error']. '">'. t('Ошибочный номер пользователя'). '</div>';<br>
  <br>
  <br>
  $f_comusers_email = trim($post['f_comusers_email']);<br>
  $f_comusers_password = trim($post['f_comusers_password']);<br>
  if (!$f_comusers_email or !$f_comusers_password)<br>
   return '<div class="' . $args['css_error']. '">'. t('Необходимо указать email и пароль'). '</div>';<br>
  <br>
  // проверим есть ли такой комюзер<br>
  $CI = &amp; get_instance();<br>
  $CI-&gt;db-&gt;select('*');<br>
  $CI-&gt;db-&gt;from('comusers');<br>
  <br>
  # CodeIgniter экранирует where, даже когда только условия в полях<br>
  $CI-&gt;db-&gt;where('comusers_activate_string=comusers_activate_key', '', false); // активация должна уже быть<br>
  <br>
  $CI-&gt;db-&gt;where(array('comusers_id'=&gt;$id,<br>
       'comusers_email'=&gt;$f_comusers_email,<br>
       'comusers_password'=&gt;$f_comusers_password <br>
       ));<br>
  $CI-&gt;db-&gt;limit(1);<br>
  $query = $CI-&gt;db-&gt;get();<br>
  if ($query-&gt;num_rows() &gt; 0)<br>
  {   <br>
   // все ок - логин пароль верные<br>
   $comuser = $query-&gt;result_array(); // данные комюзера<br>
   $f_comusers_avatar_url = mso_strip($post['f_comusers_avatar_url'], false,<br>
    array('\\', '|', '?', '%', '*', '`'));<br>
   $allowed_ext = array('gif', 'jpg', 'jpeg', 'png'); // разрешенные типы<br>
   $ext = strtolower(str_replace('.', '', strrchr($f_comusers_avatar_url, '.'))); // расширение файла<br>
   if ( !in_array($ext, $allowed_ext) ) $f_comusers_avatar_url = ''; // запрещенный тип файла<br>
   <br>
   if (!isset($post['f_comusers_notify'])) $post['f_comusers_notify'] = 0;<br>
   <br>
  if ( !( is_users_login($post['f_comusers_nik']) and is_comusers_nik($post['f_comusers_nik'], $id) and is_users_nik($post['f_comusers_nik']) ) )<br>
   return '<div class="' . $args['css_error']. '">'. t('Необходимо указать правильный ник'). '</div>';<br>
   $upd_date = array (<br>
    'comusers_nik' =&gt; strip_tags($post['f_comusers_nik']),<br>
    'comusers_url' =&gt; strip_tags($post['f_comusers_url']),<br>
    'comusers_icq' =&gt; strip_tags($post['f_comusers_icq']),<br>
    'comusers_msn' =&gt; strip_tags($post['f_comusers_msn']),<br>
    'comusers_jaber' =&gt; strip_tags($post['f_comusers_jaber']),<br>
    'comusers_date_birth' =&gt; strip_tags($post['f_comusers_date_birth']),<br>
    'comusers_description' =&gt; strip_tags($post['f_comusers_description']),<br>
    'comusers_avatar_url' =&gt; $f_comusers_avatar_url,<br>
    'comusers_notify' =&gt; $post['f_comusers_notify'],<br>
    <br>
    );<br>
    <br>
   # pr($upd_date );<br>
   $CI-&gt;db-&gt;where('comusers_id', $id);<br>
   $res = ($CI-&gt;db-&gt;update('comusers', $upd_date )) ? '1' : '0';<br>
   $CI-&gt;db-&gt;cache_delete_all();<br>
   // mso_flush_cache(); // сбросим кэш<br>
   <br>
   if ($res)<br>
    return '<div class="' . $args['css_ok']. '">'. t('Обновление выполнено!'). '</div>';<br>
   else<br>
    return '<div class="' . $args['css_error']. '">'. t('Ошибка БД при обновлении'). '</div>';<br>
  }<br>
  else return '<div class="' . $args['css_error']. '">'. t('Ошибочный email и пароль'). '</div>';<br>
 } // обновление формы<br>
}</blockquote>
Изменений минимум, но они касаются именно проверок. При обновлении Максом данной функции следует вносить изменения и в эту. На данный момент она предназначена для версии 0.34. Хотя не думаю, что будут изменения в будущем.</p>
<a href="http://askname.ru/page/check-user#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[МаксМногосайт v. 0.2]]></title>
			<link>http://askname.ru/page/maksmnogosajt-v-02</link>
			<guid>http://askname.ru/page/maksmnogosajt-v-02</guid>
			<pubDate>Wed, 18 Nov 2009 23:14:42 +0400</pubDate>
			<category><![CDATA[Сайтостроительство]]></category>
			<description><![CDATA[
<p>Приветствую! Много времени прошло с публикации первой части многосайтового расширения для <a href="http://askname.ru/page/maxsite-cms-404-nevernye-zagolovki" class="perelink">MaxSite</a> CMS. Думаю интересно оно осталось только мне, что в принципе неудивительно. В любом случае решил выложить следующую версию. Основные изменения связаны с изменениями самой MaxSite. Кроме того, перенёс папки с сайтами (шаблонами) в отдельную директорию в корне. </p>
<p>Для установки:</p>

<ul><li>Изменить настройки в /application/config/database.php - настройки базы данных.</li><li>Изменить настройки в /application/maxsite/mso-config.php - секретная фраза.</li><li>В папке (папках) вида /site/domain_ru/ поставить разрешения на запись в каталогах uploads, cache и файле sitemap.xml</li><li>По необходимости добавить из последней сборки шаблон default.</li><li>Устанавливать всегда поверх сборки. Перезаписывается плагин xml_sitemap (что плохо, не спорю)</li><li>Совсем забыл! Хотя из исходников всё очевидно, но всё же. Структура базы <a href="http://askname.ru/page/check-user" class="perelink">данных</a> - используются префиксы вида railway$club_org_ru, если ваш <a href="http://askname.ru/page/what_is_domain" class="perelink">домен</a> это railway-club.org.ru. Такие косяки, позволяют добиться однозначного соответствия. У людей были проблемы, когда просто удалялись точки и тире из домена.</li></ul>В общем планирую заняться плотнее. Так редко выходят обновления, ибо до выхода версии 0.35 меня устраивала старая сборка. Теперь она не работает. А эта вроде бы работает только с 0.35...</li>
<p>Прямая ссылка на скачивание <a href="http://askname.ru/dc/L3NpdGUvYXNrbmFtZV9ydS91cGxvYWRzL211bHRpbWF4L211bHRpXzBfMi56aXA=" title="/site/askname_ru/uploads/multimax/multi_0_2.zip" >multi_maxsite_0_2.zip</a> <sup title="Количество переходов">44</sup></p>
<a href="http://askname.ru/page/maksmnogosajt-v-02#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[Закладочник на Jquery для MaxSite CMS]]></title>
			<link>http://askname.ru/page/bookmarks_jquery</link>
			<guid>http://askname.ru/page/bookmarks_jquery</guid>
			<pubDate>Mon, 17 Aug 2009 12:29:55 +0400</pubDate>
			<category><![CDATA[Сайтостроительство]]></category>
			<description><![CDATA[
<p>Приветствую! Создал свой первый плагин для MaxSite CMS. Он генерирует список ссылок для добавления страницы в <a href="http://askname.ru/page/socialnye-zakladki" class="perelink">социальные</a> сервисы, закладки.  К слову для MaxSite уже создано два подобных плагина. Это стандартный addzakl и недавно представленный плагин от Алексея (http://driverlab.ru). Собственно очень даже неплохие и даже отличные простые решения. Чем они меня не устраивают? Да ничем. Но есть красивое решение для создания таких кнопок от dimox'a (http://dimox.name). Дмитрий использует библиотеку Jquery. Я взял за основу данный скрипт, адаптировал его к MaxSite и добавил администраторские возможности из скрипта Алексея. То что получилось можно взять по нижеследующей ссылке, а также оценить в работе на этом сайте.</p>
<p><a href="http://askname.ru/dc/L3NpdGUvYXNrbmFtZV9ydS91cGxvYWRzL21heHNpdGUtcGx1Z2lucy9ib29rbWFya3NfanF1ZXJ5LnppcA==" title="/site/askname_ru/uploads/maxsite-plugins/bookmarks_jquery.zip" >bookmarks_jquery.zip</a> <sup title="Количество переходов">12</sup></p>
<p>Сегодня, 22 августа случайно обнаружил несовместимость данного плагина с lightbox'ом и colorbox'ом. Выглядит таким образом: меню плагина не раскрывается, галерея не выводит окна с картинкой. В общем если поставить разом - убивают друг друга.:) Решил найти проблему. Отключал по очереди вызовы некоторых процедур в этом плагине. Помогает только полное удаление файла jqsocial.js. Ошибка нашлась неожиданно и совершенно случайно. Файрбаг зафиксировал такое вот дело:</p>
<p>При включённом lightbox'e: <span style="font-weight: bold;">$ is not a function $('div.gallery a').lightBox({</span></p>
<p>При включённом colorbox'e: <span style="font-weight: bold;">$ is not a function $(".gallery,.slideshow").find("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.png']...</span></p>
<p>Что с этим счастьем делать не знаю, по идее ошибка у разработчиков lightbox'ов, без них ошибок не наблюдается.</p>
<p>В любом случае разбираться самостоятельно не буду... Толку не будет. Даже не могу понять где искать ошибки. Однако если добрые люди подскажут, что нужно сделать и переделать, чтобы ошибки не возникали - всегда готов.</p>
<a href="http://askname.ru/page/bookmarks_jquery#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[Наркотики vkontakte]]></title>
			<link>http://askname.ru/page/narkotiki-vkontakte</link>
			<guid>http://askname.ru/page/narkotiki-vkontakte</guid>
			<pubDate>Sat, 04 Jul 2009 11:50:43 +0400</pubDate>
			<category><![CDATA[Словоблудие]]></category>
			<description><![CDATA[

<p style="text-align: right;">Хуже обезьяны с гранатой может быть только куча обезьян с гранатами и часовым механизмом (habrahabr)</p>

<p style="text-align: left;">Приветствую, товарищи! Поводом написать на этом сайте, и видимо создать отдельную рубрику явилось ещё одно одиозное допущение владельцев социальной сети <span style="font-weight: bold;">vkontakte</span>. На этот раз <a href="http://askname.ru/page/porno-vkontakte" class="perelink">реклама</a> наркотиков. <span style="font-weight: bold;">Наркотики</span> особого рода, музыка, воздействующая на психику и вызывающая состояние, заданное её создателями. Судя по тому какой размах приобрела акция, наркотики работают. И работают хорошо. Ещё раз стоит задуматься, чем занимается этот мудак Дуров? Похоже полёживает на лазурном берегу... Данная социалка постепенно становится злом и угрозой обществу. Хоть и в отсутствии контроля есть плюсы, но надо бы думать головой, что рекламируешь на сайте. Дуров со своей командой модераторов облажался в очередной раз.</p><div style="text-align: left;">А вот и собственно фотки, доказывающие преступление Дурова:</p>
<p><a target="_blank" href="/site/askname_ru/uploads/vkontakte/vk_nark_1.png"><img src="/site/askname_ru/uploads/vkontakte/vk_nark_1.gif"></a><a target="_blank" href="/site/askname_ru/uploads/vkontakte/vk_nark_2.png"><img src="/site/askname_ru/uploads/vkontakte/vk_nark_2.gif"></a><a target="_blank" href="/site/askname_ru/uploads/vkontakte/vk_nark_3.png"><img src="/site/askname_ru/uploads/vkontakte/vk_nark_3.gif"></a></p>
<p>А это фотки того <a href="http://askname.ru/page/otkrytie-sajta" class="perelink">сайта</a> на который ведёт ссылка с рекламируемой группы:</p>
<p><a target="_blank" href="/site/askname_ru/uploads/vkontakte/vk_nark_site_1.png"><img src="/site/askname_ru/uploads/vkontakte/vk_nark_site_1.gif"></a><a target="_blank" href="/site/askname_ru/uploads/vkontakte/vk_nark_site_2.png"><img src="/site/askname_ru/uploads/vkontakte/vk_nark_site_2.gif"></a></p>
<p>И конечно же, в конце <a href="http://askname.ru/page/hosting-etogo-sajta" class="perelink">этого</a> разоблачения, призыв: веб-мастера, будьте сознательнее, не нужно пытаться заработать всё и сразу, все ваши поступки до конца дней будут висеть на вашей совести.</div>
<a href="http://askname.ru/page/narkotiki-vkontakte#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[Любезность Яндекса]]></title>
			<link>http://askname.ru/page/ljubeznost-jandeksa</link>
			<guid>http://askname.ru/page/ljubeznost-jandeksa</guid>
			<pubDate>Sat, 23 May 2009 13:14:08 +0400</pubDate>
			<category><![CDATA[Словоблудие]]></category>
			<description><![CDATA[
<p>Приветствую! Вчера произошло <a href="http://askname.ru/page/obnovlenie-cms-ucoz" class="perelink">обновление</a> индекса цитирования Яндекса. Советую посмотреть, кто ещё <a href="http://askname.ru/page/hosting-etogo-sajta" class="perelink">этого</a> не сделал, показатели сайтов. </p>
<p>У&nbsp; меня вот личная радость: этот сайт схватил индекс цитирования 10. Мало, согласен. Но ведь и кроме небольшого прогона по социальным закладкам работы не проводилось. Так что я в принципе доволен. Остальные мои сайты не изменились... Жаль конечно, но уже давно ясно, что Яндекс видит не хорошие сайты, а оптимизированные.</p>
<p>Надеюсь на понимание, скорее всего я не смогу заниматься вплотную этим сайтом. Есть большое количество важных дел.&nbsp; Думаю вернусь не раньше чем через месяц. </p>
<p>Спасибо за внимание.</p>
<a href="http://askname.ru/page/ljubeznost-jandeksa#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[МаксМногосайт v. 0.1]]></title>
			<link>http://askname.ru/page/maksmnogosajt-v-01</link>
			<guid>http://askname.ru/page/maksmnogosajt-v-01</guid>
			<pubDate>Thu, 14 May 2009 20:00:31 +0400</pubDate>
			<category><![CDATA[Сайтостроительство]]></category>
			<description><![CDATA[
<p>А вот и обещанная ссылка на скачивание.</p>
<p>Ни в коем случае не ставьте сразу на рабочий сайт! Я конечно всё протестировал, но лучше проверьте как заработает.</p>
<p>Наипервейшая и наипростейшая версия. Надеюсь будет развиваться... Есть к чему стремиться! Качайте! Ах да - на винде не тестировал.</p>
<a href="http://askname.ru/page/maksmnogosajt-v-01#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[Вводная МаксМногосайт]]></title>
			<link>http://askname.ru/page/vvodnaja</link>
			<guid>http://askname.ru/page/vvodnaja</guid>
			<pubDate>Thu, 14 May 2009 19:57:23 +0400</pubDate>
			<category><![CDATA[Сайтостроительство]]></category>
			<description><![CDATA[
<p>Приветствую друзья!</p>
<p>Вот наконец дошли руки собрать воедино то, о чём я давно уже рассказывал. А именно многосайтовую модификацию для <a href="http://askname.ru/page/maxsite-cms-404-nevernye-zagolovki" class="perelink">MaxSite</a> CMS. В следующей заметке будет дана ссылка на скачивание, а сейчас хочу рассказать о некоторых особенностях модификации. </p>

<ul><li>Первое, оно же главное: всё сделано в наиболее упрощённом виде. Как уже говорил, для того, чтобы обновления самой системы, по возможности, не затрагивали модификацию.</li><li>Второе: небольшое количество файлов в скачанном архиве. Следует из <a href="http://askname.ru/page/top-level-domain" class="perelink">первого</a> пункта. Разброс по папкам для наиболее простой установки. Вы просто копируете файлы в корень <a href="http://askname.ru/page/otkrytie-sajta" class="perelink">сайта</a> и наслаждаетесь эффектом.</li><li>Третье: в файлах по паре строк добавленного кода. Истина в простоте ;-) Действительно, всё очень просто!</li></ul>Значит так! Раз всё просто, зачем я выкладываю модификацию? Не всем это кажется простым. Да и это небольшой костыль, который позволит экономить <a href="http://askname.ru/page/time-blia" class="perelink">время</a> на <a href="http://askname.ru/page/obnovlenie-cms-ucoz" class="perelink">обновление</a> системы.</li>
<p>Из недостатков:</p>

<ul><li>База <a href="http://askname.ru/page/check-user" class="perelink">данных</a> засоряется! Многовато записей, дублируется кое-что. Да и не уверен что даже 20+ сайтов оно потянет... хотя кто знает?</li><li>Изменены файлы плагина xml-sitemap. Теперь карта сайта расположена не в корне, а в шаблоне. Соответственно права на запись надо выставить вручную...</li><li>Общий доступ к upload</li><li>Общие ушки. Даже не знаю недостаток ли...</li></ul>Вот так! Инструкция:</li>

<ul><li>Распаковываем на сервер MaxSite CMS</li><li>Качаем самый новый архив с модификацией.</li><li>Распаковываем в корень сайта с заменой существующих файлов.</li><li>Прописываем логин-пароль к базе в соответствующем файле. (application\config\database.php)</li><li>Берём нужный шаблон для сайта. Папку переименовываем&nbsp; так: наш сайт site.ru, папка site_ru</li><li>В папку копируем sitemap.xml. Ставим права на запись.</li></ul>Всё должно заработать. Устанавливаем MaxSite CMS. Как сделать с уже работающим сайтом расскажу, если потребуется. Напутствие: не стоит делать с рабочим сайтом, если не уверены как и почему это работает. Сначала поэкспериментируйте. А то потом будут каменты: почему мой блог лежит и т.д. :) Позже будут более совершенные версии. И ещё: претензии к модификации буду нещадно удалять, а вот здоровая <a href="http://askname.ru/page/kritika-maxsite-zabluzhdenija" class="perelink">критика</a> очень даже привтествуется. Надеюсь хоть кто-то обратит внимание на данное решение.</p>
<a href="http://askname.ru/page/vvodnaja#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[С Днём Победы!]]></title>
			<link>http://askname.ru/page/s-dnjom-pobedy</link>
			<guid>http://askname.ru/page/s-dnjom-pobedy</guid>
			<pubDate>Fri, 08 May 2009 21:21:16 +0400</pubDate>
			<category><![CDATA[Словоблудие]]></category>
			<description><![CDATA[
<p>Вот он пришёл! День Великой Победы! </p>
<p>Поздравляю ветеранов и тружеников тыла. Ваши свершения останутся в нашей памяти навсегда. Это Победа справедливости и вашей Силы Духа над злом и бесчеловечностью фашизма! Низкий поклон! </p>
<p>Конечно лично ветераны данную заметку не прочитают, но я уверен, Отечественная война коснулась каждой семьи на нашей Родине и призываю вас, дорогие читатели, посвятить Девятое Мая памяти наших дедов, не заниматься бесполезной суетой, вроде заработка в сети или оптимизации скриптов, а почтить память людей, защищавших нашу Родину и давших нам свободу и возможность жить на своей земле, в своей стране.</p>
<a href="http://askname.ru/page/s-dnjom-pobedy#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[МногоСайтовый  MaxSite: sitemap]]></title>
			<link>http://askname.ru/page/mnogosajtovyj-maxsite-sitemap</link>
			<guid>http://askname.ru/page/mnogosajtovyj-maxsite-sitemap</guid>
			<pubDate>Fri, 01 May 2009 13:49:53 +0400</pubDate>
			<category><![CDATA[Сайтостроительство]]></category>
			<description><![CDATA[
<p>Приветствую! Вчера под конец дня у меня родилась идея. Всё по теме <a href="http://askname.ru/page/maxsite-cms-404-nevernye-zagolovki" class="perelink">MaxSite</a> <span style="font-weight: bold;">МногоСайт</span>. А именно о вынесении в папку шаблона файла sitemap.xml. Как это было реализовано я сейчас и напишу.</p>
<p>Я решил воспользоваться уже известной мне схемой: через наш любимый Mod <a href="http://askname.ru/page/nemnogo-o-mod-rewrite" class="perelink">Rewrite</a> ;-) - прописываем в .htaccess такую строчку:</p>

<ul><li><span style="text-decoration: line-through;">RewriteRule ^sitemap.xml$ http://%{HTTP_HOST}/sitemap.php</span>&nbsp;</li><li>RewriteRule ^sitemap.xml$ /sitemap.php</li></ul>И ещё изменить </li>

<ul><li>RewriteCond $1 !^(index\.php|uploads|robots\.txt|favicon\.ico)</li></ul>На</li>

<ul><li>RewriteCond $1 !^(index\.php|uploads|robots\.txt|sitemap\.xml|favicon\.ico)</li></ul>Это перенаправление с sitemap.xml на sitemap.php. Как и с robots.txt идея та же. Нужно перенаправить поисковик со статического файла на файл скрипта, который успешно и динамически сформирует нам нужную структуру.</li>
<p>Сам файл выглядит похитрее, чем robots.php:</p>

<ul><li>&lt;?php</li><li>$hostway=str_replace('.','_',$_SERVER['HTTP_HOST']);</li><li>$hostway='./application/maxsite/templates/'.$hostway.'/sitemap.xml';</li><li>header("Content-type: application/xml");</li><li>echo file_get_contents&#40;$hostway&#41;;</li><li>?&gt;</li></ul>Сначала мы берём строчку с хостом <a href="http://askname.ru/page/otkrytie-sajta" class="perelink">сайта</a> и заменяем точку на символ подчёркивания. Затем формируем путь к шаблону. <span style="font-weight: bold;">Заметьте: папку шаблона придётся переименовать примерно в такую - askname_ru</span>. Можно конечно сделать хитрый скрипт, дабы избежать этого... Но мне лень да и смысла не вижу... При смене шаблона просто переименовываем папку и все дела. После формирования пути отправим заголовок, что тип страницы - xml. Мы ведь карту сайта формируем да? :-) Ну и наконец выводим то, что лежит у нас по адресу тырыпыры/шаблон/sitemap.xml.</li>
<p>Итак, основная часть готова и нам нужно лишь слегка подправить плагин формирования карты сайта, чтобы файл сливался куда нам нужно. Собственно я сделал так:</p>

<ul><li>$hostway=str_replace('.','_',$_SERVER['HTTP_HOST']);</li><li>$hostway='/application/maxsite/templates/'.$hostway.'/sitemap.xml';</li><li>$fn = realpath(dirname(FCPATH)).$hostway;</li></ul>Это нужно вписать вместо оператора присваивания переменной $fn. По умолчанию она сливает файл в корень. После этих преобразований, можно отказаться от идеи отдельной папки для каждого сайта и делать по принципу: <span style="font-weight: bold;">один сайт - один шаблон</span>.</li>
<p>Ну вот пожалуй и всё. Хочу так же обрадовать: скоро выпущу дополнение для преобразования в многосайтовую систему. Думаю это нужно сделать, по структуре будет примерно так: ставите MaxSite, поверх льёте мои труды и на выходе у вас многосайтовая система. Наверное за выходные сделаю пробную бету ;-)</p>
<a href="http://askname.ru/page/mnogosajtovyj-maxsite-sitemap#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[MaxSite МногоСайт? Продолжение...]]></title>
			<link>http://askname.ru/page/maxsite-mnogosajt-prodolzhenie</link>
			<guid>http://askname.ru/page/maxsite-mnogosajt-prodolzhenie</guid>
			<pubDate>Thu, 30 Apr 2009 19:49:28 +0400</pubDate>
			<category><![CDATA[Сайтостроительство]]></category>
			<description><![CDATA[
<p>Приветствую!</p>
<p>Сегодня расскажу о некоторых подробностях превращения <span style="font-weight: bold;">MaxSite</span> CMS в многосайтовую систему. Собственно продолжу рассказ.</p>
<p>Мои попытки сделать общую админ-панель провалились даже не начавшись. Плохо ли, хорошо ли... Решил не заморачиваться, когда понял, что практической пользы и удобства минимум, а кроить систему придётся основательнее чем думал ранее.</p>
<p>Итак, сегодня расскажу, как сделать скрипты для динамического вывода файлов <span style="font-weight: bold;">sitemap.xml и robots.txt</span>, первый - карта сайта, второй - инструкции индексации.</p>
<p>Начну, пожалуй с sitemap.xml: поначалу долго мучался как сделать, потом допёрло: создаём в корневой директории папку, в ней ещё одну с названием сайта. Будет что-то типа http://AskName.ru/folder/AskName.ru/ В неё засовываем наш sitemap.xml. Далее нам нужно подправить плагин Макса (путь на <a href="http://askname.ru/page/about" class="perelink">сайте</a> /application/maxsite/plugins/xml_sitemap/index.php). В самом конце файла меняем строчку:</p>

<ul><li>$fn = realpath(dirname(FCPATH)).'/sitemap.xml';</li></ul>На такую:</li>

<ul><li>$fn=realpath(dirname(FCPATH)).'/folder/'.$_SERVER['HTTP_HOST'].'/sitemap.xml';</li></ul>После <a href="http://askname.ru/page/hosting-etogo-sajta" class="perelink">этого</a> ваш sitemap.xml будет лежать по примерно такому адресу: http://AskName.ru/folder/AskName.ru/</li>
<p>Как вариант можно сделать с помощью Mod <a href="http://askname.ru/page/nemnogo-o-mod-rewrite" class="perelink">Rewrite</a> перенаправления так, чтобы поисковик думал, что он лежит в корневой папке сервера, но я пошёл по другому пути и поэтому мы рассмотрим способ динамического создания файла robots.txt</p>
<p>В корневой директории нужно создать файл robots.php, так как нам нет смысла делать разные robots.txt для каждого <a href="http://askname.ru/page/otkrytie-sajta" class="perelink">сайта</a> (движок то один), имеет смысл воспользоваться моим простеньким кодом, вот он:</p>

<ul><li>&lt;?php</li><li>echo 'User-agent: *</li><li>Disallow: /system$</li><li>Disallow: /users$</li><li>Disallow: /admin$</li><li>Disallow: /login$</li><li>Disallow: /tag$</li><li>Disallow: /feed$</li><li>Host: '.$_SERVER['HTTP_HOST'].'</li><li>Sitemap: http://'.$_SERVER['HTTP_HOST'].'/folder/'.$_SERVER['HTTP_HOST'].'/sitemap.xml';</li><li>?&gt;</li></ul>Отличаться у разных сайтов будут только директивы Host и Sitemap. Так и должно быть. Данный пример проходит проверку на правильность в яндексе. Но для того, чтобы robots.php отдавался по запросу robots.txt, нужно сделать следующее - прописать в .htaccess перенаправление:</li>

<ul><li>RewriteRule ^robots.txt$ http://%{HTTP_HOST}/robots.php</li></ul>В принципе абсолютно простое решение, возможно не такое совершеннои и идеальное, но свою задачу оно выполняет: сделать многосайтовую <span style="font-weight: bold;">MaxSite CMS</span> с минимальными исправлениями кода, с целью упрощения обновления системы, и как мне кажется я справился с задачей блестяще. Надеюсь знающие люди дадут оценку такому решению. </li>
<p>Существует ещё одна идея - можно sitemap.xml запихать в файлы шаблона. Технически легко осуществимо... Как то не подумал сначала. Завтра попробую сделать. В любом случае это решается простой правкой пары-тройки строк. На сегодня всё.</p>
<a href="http://askname.ru/page/maxsite-mnogosajt-prodolzhenie#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[MaxSite МногоСайт?]]></title>
			<link>http://askname.ru/page/maxsite-mnogosajt</link>
			<guid>http://askname.ru/page/maxsite-mnogosajt</guid>
			<pubDate>Tue, 21 Apr 2009 19:23:40 +0400</pubDate>
			<category><![CDATA[Сайтостроительство]]></category>
			<description><![CDATA[
<p>Здравствуйте друзья!</p>
<p>Недавно у меня родилось множество идей по созданию качественных сайтов. Причём все как-то разом, не к месту и не ко времени...&nbsp; Однако родились и теперь терзают неокрепший ум:) К делу - мы ж все люди ленивые, а я, наверное, самый ленивый из всех... Чтобы не следить за обновлениями системы управления сайтами, обновлять не несколько систем, а&nbsp; один раз, решил написать расширение для моей любимой системы. Для <span style="font-weight: bold;">MaxSite</span>. Тут возникают закономерные вопросы: не проще ли взять многопользовательский вордпресс или тот же би2, альтернатив множество... Однако, мне кажется, что за системой Макса будущее, при всех её недоработках, да и патриотизм сыграл некоторую роль. </p>
<p>Итак, была идея сделать действительно сервис блогов, но это трудно для меня... и пока я решил попробовать избавиться хотя-бы от проблемы обновления десятка одинаковых систем, вариант <a href="http://askname.ru/page/hosting-etogo-sajta" class="perelink">этого</a> я вам и предоставляю:</p>
<p>Для начала нам нужно <span style="font-weight: bold;">добиться использования одной базы данных</span>. Экономика должна быть экономной! Для этого мы внесём некоторые поправки в файл /application/config/database.php:</p>

<div style="margin-left: 40px;"><ul><li>$pref=$_SERVER["HTTP_HOST"];</li><li>$pref=str_replace("www.","",$pref);</li><li>$pref=str_replace(".","",$pref);</li><li>$pref=str_replace("-","",$pref);</li><li>$db['default']['dbprefix']=$pref."_";</li></ul></div>Здесь мы формируем префикс в базе <a href="http://askname.ru/page/check-user" class="perelink">данных</a> и он будет отличаться для каждого домена. В принципе этого достаточно, однако стоит воспользоваться ещё одним кодом, а именно редиректом через .<span style="font-weight: bold;">htaccess</span> на адрес без www. В принципе не обязательно, но лучше создать в корневой папке файл .htaccess и внести в него такие строки:</li>

<div style="margin-left: 40px;"><ul><li>RewriteRule ^(.*)$ - [E=PROTOCOL:http]</li><li>RewriteCond %{HTTPS} ^on$ [NC]</li><li>RewriteRule ^(.*)$ - [E=PROTOCOL:https]</li><li>RewriteCond %{SERVER_PORT} ^80$</li><li>RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]</li><li>RewriteRule ^(.*)$ %{ENV:PROTOCOL}://%1%{REQUEST_URI} [R=301,L]</li><li>RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]</li><li>RewriteRule ^(.*)$ %{ENV:PROTOCOL}://%1:%{SERVER_PORT}%{REQUEST_URI} [R=301,L]</li></ul></div>Говорю честно: код упёрт с одного из форумов, причём достаточно давно. Его преимущество в отличие от обычного редиректа в том, что он универсален - смело кидайте в корень и для всех сайтов он будет работать.</li>
<p>В принципе эти два пункта у себя я реализовал, сейчас будет работа по созданию <span style="font-weight: bold;">robots.txt</span>, оригинального для каждого сайта, а также <span style="font-weight: bold;">xml-sitemap</span>, карты сайта. Без этих пунктов о многосайтовости и говорить не стоит:) А об этом я <span style="font-weight: bold;">напишу</span> только тогда, <span style="font-weight: bold;">когда</span> сделаю сам и <span style="font-weight: bold;">оно корректно заработает</span>, хотя наброски у меня уже есть;-)</p>
<p>Первый Постовой:</p>
<p>Стоит почитать <a href="http://blogantona.ru">блог Антона</a></p>
<a href="http://askname.ru/page/maxsite-mnogosajt#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[Социальные закладки]]></title>
			<link>http://askname.ru/page/socialnye-zakladki</link>
			<guid>http://askname.ru/page/socialnye-zakladki</guid>
			<pubDate>Mon, 20 Apr 2009 17:19:32 +0400</pubDate>
			<category><![CDATA[Веб-мастерство]]></category>
			<description><![CDATA[
<p>Приветствую друзья! </p>
<p>Хочу рассказать, о моих попытках прогнать этот сайт по модным ныне социальным серверам закладок...&nbsp; Честно говоря, результат меня не впечатлил.</p>
<p>Воспользовался я сервисом easu.ru прорекламированному на сёрче, много положительных отзывов... Сервис автоматически прогнал главную страницу по некоторому количеству закладочников, прошло некоторое время, но количество обратных ссылок ни с Яндекса, ни с Гугла не увеличилось. Посещаемость также не пошла вверх. В связи с этими фактами у меня возникло сомение в целесообразности прогона по закладкам. Может стоит по-старинке по каталогам? Доверие к прогону по закладкам у меня несколько подорвано... Далее попробовал сам вручную погонять, ещё пару сервисов привлёк, результата опять нет.</p>
<p>Может быть прошло слишком мало времени? Или я что-то сделал не так? В любом случае не особо и расстроился:) Этот сайт пока раскручивать активно не планируется, есть другие проекты.</p>
<p>Как итог, хочу отметить: раскруткой <a href="http://askname.ru/page/otkrytie-sajta" class="perelink">сайта</a> надо заниматься комплексно, похоже если прогонять только по закладкам толку не будет.</p>
<a href="http://askname.ru/page/socialnye-zakladki#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[Немного о Mod Rewrite]]></title>
			<link>http://askname.ru/page/nemnogo-o-mod-rewrite</link>
			<guid>http://askname.ru/page/nemnogo-o-mod-rewrite</guid>
			<pubDate>Sat, 18 Apr 2009 22:38:56 +0400</pubDate>
			<category><![CDATA[Сайтостроительство]]></category>
			<description><![CDATA[

<div style="text-align: right;">Думать одно, а говорить другое - это типичный симптом</p>
<p>раздвоения личности (Неизвестный)</div>Приветствую друзья! Давно не писал я на этом сайте, пора это исправлять! Сегодня расскажу про некоторые особенности формирования URL в современных системах управления контентом.&nbsp; Приступим.</p>
<p>Каждый раз вы видите в интернете ссылки типа такой:&nbsp; http://askname.ru/page/maxsite-cms-404-nevernye-zagolovki Интересный адрес, не правда ли?:) На первый взгляд кажется, что действительно существует на сервере папка page, подпапка maxsite-cms-404-nevernye-zagolovki, в ней файл index.html... Конечно не исключено, что так и есть, но чаще всего это не так! Здесь и вылезает загадочный модуль <span style="font-weight: bold;">Mod Rewrite</span>. Поставляется он в комплекте с программным обеспечением Apache, хотя есть аналоги под другие http-сервера. В принципе его <span style="font-weight: bold;">цель</span> одна - <span style="font-weight: bold;">перенаправить запрос</span> на какой-либо скрипт. То есть, к примеру, вы набираете в строке браузера вышеуказанный URL а Mod Rewrite переадресует запрос на файл index.php, который разбирает и обрабатывает его. Без него URL представлял бы собой нечто такое: http://askname.ru/index.php?dir=game/assault.url&amp;scr=next&amp;sess=1 Это, так называемый, динамический URL. Как видно, скрыты передаваемые параметры. Зачем? Разница вроде невелика... Для людей особой разницы нет. Хотя на самом деле здесь проскальзывает значимость <a href="http://askname.ru/page/top-level-domain" class="perelink">первого</a> варианта для поисковиков. Если гугл как-то научился справляться с URL с параметрами, то яндекс, мягко говоря, на этом глючит. Есть опыт. </p>
<p>Итак, я подхожу к тому, что Mod Rewrite важен для любого оптимизатора! Это действительно так, ведь с помощью него можно перенаправлять не только запросы пользователей, но и поисковых ботов;-) А уж обладая некоторыми навыками, можно очень многое наворотить. Неспроста все лучшие системы управления контентом используют данную возможность, кто-то в качестве одной из настроек, а <span style="font-weight: bold;">MaxSite CMS</span> вообще <span style="font-weight: bold;">изначально построена под Mod Rewrite</span>.</p>
<p>Собственно, я долго не писал ещё по причине изучения данного инструмента. Вскоре начну выкладывать свои наработки в этой области. Но уже сейчас скажу: <span style="font-weight: bold;">изучайте</span>! <span style="font-weight: bold;">Незаменимый инструмент</span> для веб-мастера!</p>
<a href="http://askname.ru/page/nemnogo-o-mod-rewrite#comments"> Обсудить</a>]]></description>
		</item>
				<item>
			<title><![CDATA[Maxsite CMS 404 Неверные заголовки]]></title>
			<link>http://askname.ru/page/maxsite-cms-404-nevernye-zagolovki</link>
			<guid>http://askname.ru/page/maxsite-cms-404-nevernye-zagolovki</guid>
			<pubDate>Sun, 12 Apr 2009 18:47:57 +0400</pubDate>
			<category><![CDATA[Сайтостроительство]]></category>
			<description><![CDATA[
<p>Здравствуйте друзья!</p>
<p>Совершенно неожиданное развитие получила тема <span style="font-weight: bold;">Maxsite CMS</span> на моём сайте... Как я уже писал, сайт построен на ней и ни на что другое менять пока не собирался. В принципе и сейчас не собираюсь, однако хочу предупредить вас, если собираетесь её использовать, необходимо провести небольшую ревизию стандартного шаблона. Или того который будете использовать вы, ибо большая часть копируется из стандартного. Так вот - недавно обнаружил <span style="font-weight: bold;">несоответствие заголовков</span>, отдаваемых сервером - <span style="font-weight: bold;">HTTP HEADER</span>. На несуществующей странице, рубрике, теге, а может и других типах страниц отдаётся код 200 - страница существует, при этом на самом <a href="http://askname.ru/page/about" class="perelink">сайте</a> исправно выводится сообщение "ничего не найдено". По этому поводу я писал Максу, и вот что наша переписка с Гугла, которая позже была удалена (точнее спрятана - ссылка у меня осталась и она рабочая):</p>
<p><big><span style="text-decoration: underline;"><span style="font-weight: bold;">UmFal</span> Mar 10, 2009:</span></big></p>

<div style="margin-left: 40px;"><b>Какие действия приводят к появлению ошибки?</b> 1. ввод несуществующей рубрики в строке браузера</p>
<p><b>Какой результат? Что отображается?</b> на сайте 404 - правильно, но HTTP заголовок. там 200 - норма. думаю нужно проверить и другие типы. обнаружилось случайно. Яндекс проиндексировал мне тестовую рубрику. вот адресок для примера: http://askname.ru/category/456 версия системы - 0.29</div><big><span style="text-decoration: underline;"><span style="font-weight: bold;">Мах</span> Mar 10, 2009:</span></big></p>

<div style="margin-left: 40px;">Если нарушены ссылки, то выводится надпись «Извините, ничего не найдено». Для неё отдается тот же хидер, что и для нормальной страницы (200). Я не вижу здесь проблемы, потому что система не генерирует «пустых» ссылок, то есть никто не будет ссылаться на несуществующую страницу. В принципе если строго нужен header-404, то решается это сразу же после получения $pages.</p>

<pre>...
$pages = askname_ru_get_pages(...);
if (!$pages) header('HTTP/1.0 404 Not Found');
...</pre>
<p>то есть до любого вывода в браузер. Если же страница вообще не определена по типу данных, то выводится как положено 404-header. Он указывается прямо в шаблонном page_404.php.</div><big><span style="text-decoration: underline;"><span style="font-weight: bold;">UmFal</span> Mar 10, 2009:</span></big></p>

<div style="margin-left: 40px;">спасибо за быстрый ответ. просто столкнулся с ситуацией что яндекс проиндексировал страницу, которой сейчас не существует, но заголовок отдаётся 200. Мне казалось, что если страница не найдена она не должна индексироваться, и выдавать себя за существующую. К примеру конкуренты могут проиндексировать вручную ошибочные страницы, а Я забанит за дублированный контент. так что думаю стоит при обновлении внести </p>

<pre>$pages = askname_ru_get_pages(...);
if (!$pages) header('HTTP/1.0 404 Not Found');</pre>
<p>в дефалтные настройки. Может я чего то недопонимаю, но у себя сделаю так. Мусор в индексе <a href="http://askname.ru/page/ljubeznost-jandeksa" class="perelink">яндекса</a> плодить не будем ;-)</div>
<p><big><span style="text-decoration: underline;">Больше ответов я не получал...</span></big></p>
<p>Итак, недавно у меня всё-же дошли руки всё проверить и исправить. Вышла версия 30, затем 31 <span style="font-weight: bold;">Maxsite CMS</span>. И как я увидел, ничего так и не было исправлено! Как я убедился, не только рубрики <span style="font-weight: bold;">страдают</span> этим, но и <span style="font-weight: bold;">все остальные типы</span>...</p>
<p>Вам, друзья, такой совет - если будете использовать систему, впишите в файлы типов в шаблоне (находятся в ваш_шаблон/type) перед выводом ошибки на страницу ещё и оператор:</p>

<pre style="margin-left: 40px;">header('HTTP/1.0 404 Not Found');</pre>
<p>Зачем так надо сделать написано в переписке: <span style="font-weight: bold;">Дабы избежать</span> дублирования контента и<span style="font-weight: bold;"> пессимизации Яндексом</span>. Однако <span style="font-weight: bold;">хотелось бы услышать мнение людей более близких к сео</span>, чем я. Думаю моя позиция правильнее, чем у Макса</p>
<p>Как говорится, доверяй да проверяй!</p>
<p>Спасибо! На этом всё.</p>
<a href="http://askname.ru/page/maxsite-cms-404-nevernye-zagolovki#comments"> Обсудить</a>]]></description>
		</item>
			</channel>
</rss>

