<?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>IPB &#124; WordPress &#124; IP.Board &#124; php-Fusion &#124; Invision Power Board &#187; IP.Board 3</title>
	<atom:link href="http://pronets.ru/category/ipboard-3/feed/" rel="self" type="application/rss+xml" />
	<link>http://pronets.ru</link>
	<description>Моды, Плагины, Форум IPB (IP.Board, Invision Power Board), Cms php-Fusion, Блог WordPress</description>
	<lastBuildDate>Thu, 04 Mar 2010 01:43:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Прочие возможности</title>
		<link>http://pronets.ru/prochie-vozmozhnosti/</link>
		<comments>http://pronets.ru/prochie-vozmozhnosti/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 22:09:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Возможности]]></category>
		<category><![CDATA[Прочие]]></category>
		<category><![CDATA[Прочие возможности]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=533</guid>
		<description><![CDATA[Какое-то время мы описывали большие изменения, которые вы увидите при выходе IP.Board 3. Вещи, вроде улучшенного управления BBКодами, системы хуков и плагинов, системы личного общения, к примеру, являются более интересными, нежели описание множества маленьких возможностей. Однако настал момент, когда необходимо уделить некоторое время для ознакомления с несколькими малыми улучшениями, которые добавлены в IP.Board 3 и [...]]]></description>
			<content:encoded><![CDATA[<p>Какое-то время мы описывали большие изменения, которые вы увидите при выходе <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3. Вещи, вроде улучшенного управления BBКодами, системы хуков и плагинов, системы личного общения, к примеру, являются более интересными, нежели описание множества маленьких возможностей. Однако настал момент, когда необходимо уделить некоторое время для ознакомления с несколькими малыми улучшениями, которые добавлены в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 и о которых мы еще не рассказывали.</p>
<p><span id="more-533"></span></p>
<h4>Минимальное количество сообщений для просмотра форума</h4>
<p> </p>
<p>Теперь вы можете настроить ваши форумы так, что доступ к ним будет только у пользователей, набравших определенное количество сообщений.</p>
<p> </p>
<h4>Минимальное количество сообщений для ответа в форум</h4>
<p> </p>
<p>Опция, аналогичная предыдущей — теперь вы сможете разрешить пользователям оставлять сообщения в конкретном форуме только после того, как они наберут необходимое количество сообщений.</p>
<p> </p>
<h4>Только авторы могут видеть свои темы</h4>
<p> </p>
<p>Довольно часто пользователи запрашивали такую возможность. Отныне вы вправе разрешить пользователям в определенном форуме видеть только созданные ими темы. Конечно же эти темы смогут видеть модераторы и администраторы. Данная опция позволит вам создавать форумы в стиле &#8220;help-desk&#8221; (форумы поддержки) без привлечения дополнительных приложений.</p>
<p> </p>
<h4>HTTPS форма входа</h4>
<p> </p>
<p>Появилась возможность привязать форму входа к <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">url</a> использующим https, осуществляется это простой настройкой в админцентре. Однако получение SSL сертификата для сервера и его установка на сервер все же остается вашей обязанностью.</p>
<p> </p>
<h4>&#8220;Режим производительности&#8221;</h4>
<p> </p>
<p>Мы работаем с несколькими крупными клиентами, которые обладают форумами, трафик на которых достаточно равномерен, однако временами бывают огромные всплески активности (например, связанные с какими-либо событиями). Во время данных всплесков часто бывает необходимо отключить не нужные опции для поддержания жизнеспособности сайта. Настройка режима производительности позволяет вам легко отключать множество опций, тем самым экономя ресурсы, одним кликом. Сама система запоминает значение настроек перед включением режима производительности, что позволяет вам вернуть систему в прежнее состояние при уменьшении активности отключив данный режим.</p>
<p> </p>
<h4>Регистрация &#8220;вопрос и ответ&#8221;</h4>
<p> </p>
<p>В третьей версии форума вам будет доступна возможность настройки вопросов и ответов на них, которые будут случайным образом выведены на странице регистрации, тем самым усилив защиту от автоматических регистраций.</p>
<p> </p>
<h4>Загрузка javascript файлов через Google</h4>
<p> </p>
<p>Google предоставляет сервис, позволяющий загружать файлы библиотек prototype и scriptaculous с их серверов. Тем самым разгрузив ваш сервер на 2 HTTP запроса, к тому же позволяя самим серверам гугла управлять правильными заголовками кеширования данных файлов.</p>
<p> </p>
<h4>Выбор стиля и языка для гостей</h4>
<p> </p>
<p>Отныне гости могут сменять стиль и язык интерфейса, если на вашем форуме их несколько. Стоит заметить что доступ к стилям может быть настроен для каждой группы, тем самым вы можете легко настраивать какие стили будут видны гостям, а какие нет.</p>
<p> </p>
<h4>Улучшение управления подпиской на тему/форум</h4>
<p> </p>
<p>Появилась возможность отписывать конкретных пользователей от всех форумов и тем (настройка доступна в админцентре на странице редактирования пользователя), а так же вы сможете отписывать всех пользователей от конкретных форумов.</p>
<p> </p>
<h4>Расширение управления &#8220;друзьями&#8221;</h4>
<p> </p>
<p>Теперь вы можете отключать возможность &#8220;друзья&#8221; на форуме полностью и индивидуально для групп пользователей (например отключить опцию у группы пользователей требующих активации email)</p>
<p> </p>
<h4>Скрыть информацию о последнем сообщении для форума</h4>
<p> </p>
<p>Если у вас есть форумы где различные группы пользователей имеют различные права доступа к просмотру тем, то бывает полезно скрыть информацию о последнем сообщении форума с главной страницы, теперь вы сможете сделать так.</p>
<p> </p>
<h4>Поля контактов &#8211; дополнительные поля профиля</h4>
<p> </p>
<p>Все поля контактов (yahoo, aim, msn, и прочее) теперь перенесены в дополнительные поля, что позволяет вам легко настраивать их в связи со своими потребностями (или просто удалить их). В дополнении к уже существующим полям мы добавили поля Jabber и Skype.</p>
<p> </p>
<h4>Настройка принудительной скрытности для групп</h4>
<p> </p>
<p>Если вам нужно, чтобы пользователи из групп (например, администраторы или забанненые пользователи) при логине отмечались, как скрытые то в версии 3 это будет возможно.</p>
<p> </p>
<h4>Премодерация сообщений от пользователей определенных групп</h4>
<p> </p>
<p>В новой версии появилась возможность настраивать группы так, чтобы сообщения от пользователей из этих групп на всех форумах премодерировались.</p>
<p> </p>
<h4>Настройки подписи для групп</h4>
<p> </p>
<p>Появилась возможность устанавливать максимальное количество изображений, строчек текста и размеры изображений в подписи для каждой группы пользователей.</p>
<p>Пожалуй это все, надеемся что вам понравились новые возможности форума.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/prochie-vozmozhnosti/" title="Прочие возможности" rel="tag nofollow">Прочие возможности</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/prochie/" title="Прочие" rel="tag nofollow">Прочие</a>, <a href="http://pronets.ru/tag/vozmozhnosti/" title="Возможности" rel="tag nofollow">Возможности</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/oshibki-bazyi-dannyih/" title="Ошибки базы данных (29/06/2008)">Ошибки базы данных</a> (0)</li>
	<li><a href="http://pronets.ru/obnovlenie-stilya/" title="Обновление стиля (04/06/2009)">Обновление стиля</a> (0)</li>
	<li><a href="http://pronets.ru/gid-po-css-ip-board-3-0-x/" title="Гид по CSS IP.Board 3.0.x (08/08/2009)">Гид по CSS IP.Board 3.0.x</a> (0)</li>
	<li><a href="http://pronets.ru/upravlenie-yazyikami/" title="Управление языками (04/06/2009)">Управление языками</a> (0)</li>
	<li><a href="http://pronets.ru/dizayn/" title="Дизайн (04/06/2009)">Дизайн</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/prochie-vozmozhnosti/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IP.Blog, IP.Gallery и IP.Downloads</title>
		<link>http://pronets.ru/ipblog-ipgallery-i-ipdownloads/</link>
		<comments>http://pronets.ru/ipblog-ipgallery-i-ipdownloads/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 22:06:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Blog]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IP.Downloads]]></category>
		<category><![CDATA[IP.Gallery]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=531</guid>
		<description><![CDATA[С грядущим IPB3 мы безусловно обновим и наши официальные компоненты для совместимости с новой архитектурой. Новые версии IP.Blog, IP.Gallery и IP.Downloads будут доступны почти сразу с IP.Board 3, чтобы вы смогли обновить сразу все вместе, не волнуясь о сроках выхода новых компонентов.

Мы работаем с командами нашего сообщества, чтобы помочь им выпустить совместимую с IPB3 версию [...]]]></description>
			<content:encoded><![CDATA[<p>С грядущим IPB3 мы безусловно обновим и наши официальные компоненты для совместимости с новой архитектурой. Новые версии IP.Blog, IP.Gallery и IP.Downloads будут доступны почти сразу с <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3, чтобы вы смогли обновить сразу все вместе, не волнуясь о сроках выхода новых компонентов.</p>
<p><span id="more-531"></span></p>
<p>Мы работаем с командами нашего сообщества, чтобы помочь им выпустить совместимую с IPB3 версию компонентов Tracker и Shoutbox максимально быстро. Их планируют выпустить очень скоро после выхода IPB3.Мы решили, что первоначально для такого большого обновления поработаем только для обеспечения совместимости между нашими компонентами. Мы проводим все наше время, сосредотачиваясь на самом <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>, чтобы гарантировать максимальную стабильность, учитывая тот факт, что применяется полностью новая платформа. Это означает, что вы не будете замечать сбои в работе с Blog, Gallery или Downloads обновлениями. Но наверняка заметите улучшенную интеграцию между компонентами и системой в целом. Некоторые примеры улучшений указаны ниже:</p>
<ul>
<li>Интегрированный поиск – одна поисковая форма будет искать везде;</li>
<li>Все кеши приложений управляются через общее окно управления кешем;</li>
<li>Шаблоны форума и всех компонентов управляются через единый;</li>
<li>Редактирование все настроек групп в одном месте для всех приложений;</li>
<li>Все права в приложениях управляются также из одного места;</li>
<li>Возможность показа галереи или блогов на главной странице форума через закладки.</li>
</ul>
<p>Вскоре после того, как будет выпущен и отлажен IPB3, как все основные ошибки будут исправлены и все компоненты будут стабильно работать, мы будем работать над большими обновлениями и компонентов. Сейчас мы еще обсуждаем, какие новые возможности требуются, какие улучшения необходимы. Мы подготовили небольшой список для обсуждения с вами, понравится ли вам или нет? Что вы думаете?</p>
<p> </p>
<h4>IP.Blog</h4>
<p> </p>
<ul>
<li>Групповой блог – блог, который может быть создан, принадлежав не конкретному пользователю, а скорее сайту (например, блог компании) или группе (например, блог разработчиков);</li>
<li>Настраиваемые пользователем заголовки;</li>
<li>RSS блогов – позволяет импортировать данные из удаленного блога в свой форумный;</li>
</ul>
<p> </p>
<h4>IP.Gallery</h4>
<p> </p>
<ul>
<li>Способность резать, вращать и динамически изменять размеры изображений. Использование Javascript для регенерации изображения через GD;</li>
<li>Улучшенное слайд-шоу. По типу Flickr, но полностью сделано на Javascript (flash не требуется) и немного проще;</li>
<li>Улучшенное управление альбомом, базированное на дружбе – например, разрешить только друзьям смотреть альбом, или разрешить друзьям публиковать картинки в ваш альбом;</li>
<li>Под-альбомы;</li>
<li>Теги картинок;</li>
<li>Исправленные картинки категорий/альбомов (как в <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a>);</li>
<li>Разрешение пользователям выбирать обложку альбома из изображений в нем.</li>
</ul>
<p> </p>
<h4>IP.Downloads</h4>
<p> </p>
<ul>
<li>Улучшенная поддержка записей файлов. В конечном счете задача стояла предоставить поддержку загрузки множества файлов в одну запись. Использование функцию внесенных файлов ломало запись на части и невозможнр было добавлять несколько скриншотов;</li>
<li>Поддержка «зеркал»</li>
<li>Возможность отключения версионного контроля файлов</li>
<li>Улучшенное управление категориями</li>
<li>Более надежный индикатор загрузки файла</li>
<li>Исправленные картинки категорий (как в <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a>);</li>
<li>Теги файлов;</li>
<li>Динамические и основанные на сессиях ссылки на скачивание (защита от хотлинка)</li>
</ul>
<p>Существует еще несколько идей, которые мы все еще обсуждаем. Окончательный список возможностей будет опубликован после выпуска <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.0.</p>
<p>Мы знаем, что многие из вас задавались вопросом, как быстро будут обновлены все официальные компоненты форума при выходе IPB3. Мы долгое время не публиковали никакой информации. Теперь мы надеемся, что представленная в этой статье информация поможем вам запланировать все нужные обновления и изменения.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/ipblog/" title="IP.Blog" rel="tag nofollow">IP.Blog</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/ipdownloads/" title="IP.Downloads" rel="tag nofollow">IP.Downloads</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/ipgallery/" title="IP.Gallery" rel="tag nofollow">IP.Gallery</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/reviziya-sistemyi-bbcode/" title="Ревизия системы BBCode (04/06/2009)">Ревизия системы BBCode</a> (0)</li>
	<li><a href="http://pronets.ru/sistema-zhalob-na-soobscheniya/" title="Система жалоб на сообщения (04/06/2009)">Система жалоб на сообщения</a> (0)</li>
	<li><a href="http://pronets.ru/faq-po-ipboard/" title="FAQ по IP.Board (05/07/2009)">FAQ по IP.Board</a> (0)</li>
	<li><a href="http://pronets.ru/ipb-ip-board-invision-power-board/" title="IPB, IP.Board, Invision Power Board (02/11/2009)">IPB, IP.Board, Invision Power Board</a> (0)</li>
	<li><a href="http://pronets.ru/esli-ne-rabotaet-ssyilka-udalit-ustanovlennyie-forumom-cookies/" title="Если не работает ссылка &#8220;Удалить установленные форумом cookies&#8221; (22/03/2009)">Если не работает ссылка &#8220;Удалить установленные форумом cookies&#8221;</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/ipblog-ipgallery-i-ipdownloads/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Упрощение администрирования</title>
		<link>http://pronets.ru/uproschenie-administrirovaniya/</link>
		<comments>http://pronets.ru/uproschenie-administrirovaniya/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 22:03:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Администратирование]]></category>
		<category><![CDATA[Администратирования]]></category>
		<category><![CDATA[Упрощение]]></category>
		<category><![CDATA[Упрощение администрирования]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=529</guid>
		<description><![CDATA[Администрирование — важная часть любого сайта. У вас должна быть возможность настраивать ваш сайт так, как вы хотите и, конечно, делать это максимально быстро. И это время увеличивается, как только вы устанавливаете дополнительные модули (такие как IP.Blog, IP.Gallery или IP.Downloads), которые интегрируются в тот же самый админцентр и добавляют новых сложностей администратору.
В IP.Board 3 мы [...]]]></description>
			<content:encoded><![CDATA[<p>Администрирование — важная часть любого сайта. У вас должна быть возможность настраивать ваш сайт так, как вы хотите и, конечно, делать это максимально быстро. И это время увеличивается, как только вы устанавливаете дополнительные модули (такие как IP.Blog, IP.Gallery или IP.Downloads), которые интегрируются в тот же самый админцентр и добавляют новых сложностей администратору.</p>
<p>В <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 мы внесли изменения в админцентр, чтобы упростить обычные администраторские действия и сделать работу с ним удобной и простой.</p>
<p><span id="more-529"></span></p>
<h4>Навигация</h4>
<p> </p>
<p>Навигация — очень хитрый элемент, грамотное построение которого требуется для успешного управления такими большими проектами, как форум <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>. Мы разбили навигацию на несколько частей, чтобы вам было удобнее находить необходимые вам вещи. Во-первых, каждое приложение указано в самом верху страницы, что позволяет легко попасть в те приложения, в которые вы хотите внести изменения (больше нет необходимости выбирать вкладку &#8220;Компоненты&#8221;, чтобы, например, изменить категории в IP.Gallery). Во-вторых, в левой колонке вы найдете раскрывающееся меню, которое ускоряет доступ к основным страницам приложения (как в <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 2). Для приложений, которые требуют этого, есть контекстные ссылки и табы, которые призваны на равне с основной рабочей областью сделать вашу работу более гибкой. Мы понимаем, что без скриншотов трудно представить новый админцентр, но основная цель была сохранить дружественный интерфейс, чтобы текущие администраторы легко разобрались в нем и начали эффективно использовать его новые возможности.</p>
<p> </p>
<h4>Поиск</h4>
<p> </p>
<p>Постоянная жалоба, которую мы слышим на протяжении нескольких лет, это частое возникновение у новых администраторов проблемы с определением местоположения возможности, которой они хотят воспользоваться (например, где изменить основные правила форума, или изменить возможность публикации HTML в сообщениях). Естественным решением данной проблемы является поиск, помогающий людям найти то, что они ищут, и который очень удобен для начинающих администраторов, как подсказка к определению местоположения возможности. Мы добавили &#8220;живой&#8221; поиск в админцентре, чтобы поиск нужного места занимал у вас минимум времени (и прежде чем вы спросите &#8211; да &#8220;живой&#8221; такой же как на apple.com). Поиск по настройкам уже работал в <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 2, но мы чувствовали, что он не достаточно хорош. Часто получалось, что опция, которую вы ищите, находится в редактировании групп пользователей, а не в настройках форума, по которым вы ищите.</p>
<p>И поэтому новый &#8220;живой&#8221; поиск ищет в настройках, на страницах и файлах помощи по админцентру. Мы также включили метод добавления ключевых слов к этим секциям, так что если мы заметим, что некоторые части админцентра пользователи ищут по определенным словам, то мы легко добавим их, чтобы поиск по данным словам выдавал именно те секции, которые и ищет пользователь.</p>
<p> </p>
<h4>Улучшенная интеграция</h4>
<p> </p>
<p>И хотя мы уже подробно описали данную вещь в наших предыдущих записях мы все же еще раз в рамкой этой записи кратко хотели бы описать улучшения админцентра, позволяющие пользователям получить более дружелюбный интерфейс вцелом. Например, настройки приложения могут оторажаться в настройках прав групп форума в нужной месте, вместо того, чтобы отображаться на независимой странице в самом приложении (страница &#8220;Настройки групп&#8221; в IP.Gallery &#8211; эти настройки теперь есть и при редактировании прав группы самого форума). Точно также, приложения имеют все возможности для редактирования страниц пользователей через админцентр, не требуя редактирования исходных файлов. Настройки каждого приложения все еще включены в группы настроек, как и в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2.</p>
<p> </p>
<h4>Настройка прав</h4>
<p> </p>
<p>Множество дополнительных приложений имеют матрицу прав — сетку из полей для установки &#8220;галочки&#8221;, которые контролируют те или иные права на действия в этом приложении. Эта система работает настолько хорошо, что мы улучшили подобную функциональность в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3, сделав ее еще более простой в использовании. При этом мы также создали простой метод обновления настроек для каждого приложения, задавая уровень прав. То есть, если вы хотите обновить права для пользователей группы &#8220;Неактивированные&#8221;, вы можете это настроить на одной странице для всех приложений сразу. Например, удалить права для календаря, права на форумы, доступ ко всей галерее, исключая необходимость заходить в каждое приложении для редактирования.</p>
<p>Соглашаясь с этим, многие пользователи были удивлены, как связаны права доступа и группы. Мы часто слышим от администраторов, что они создали новую группу и не знают, как установить права для нее. Чтобы сделать это легче к пониманию и управлению, добавляя новую группу, вам нужно задать права новой маски доступа (если вы хотите выбрать новые права, различные от других масок доступа). После того, как в сохраните новую группу, вы будете перемещены на страницу редактирования группы, где настраиваются глобальные права для нее. Вам больше не нужно сначала создавать маску, устанавливать все параметры прав доступа, а уже затем добавлять новую группу пользователей, выбирая маску. Теперь это можно сделать просто в одном месте.</p>
<p> </p>
<h4>Изменение шаблонов</h4>
<p> </p>
<p>Я еще не могу рассказать все детали относительно нового интерфейса редактора, но уже могу сообщить, что он полностью переработан. Мы много думали над способами облегчить редактирование шаблонов, CSS и макросов, чтобы помочь работе администраторов с их стилями, чтобы было проще. Некоторые изменения, которые могут быть вам интересны:</p>
<ul>
<li>Подсветка HTML синтаксиса, при редактировании шаблонов в АЦ;</li>
<li>Сжатые HTML шаблоны делают редактирование шаблонов намного легче, возможно отредактировать всю «страницу», не нуждаясь в редактировании восьми независимых шаблонов, которые собраны на одной;</li>
<li>Нет больше разницы между &#8220;Global board header и footer wrapper&#8221; зонами. Вместо этого мы сделали общий шаблон форума, включащий содержание зон global_board_header, global_board_footer, member_bar, navigation и других общих зон, отображаемые на одной странице;</li>
<li>AJAX CSS редактирование. Это было по специальному предложение от Rikki – очевидно, что неудобно, чтобы прокрутить довольно далеко вниз, отредактировать какой-то CSS параметр, сохранить страницу и оказаться в самом начале CSS списка.Сейчас, когда вы сохраняете CSS файл, используется AJAX для сохранения содержания, и страница не перегружается, таким образом вы не теряете место редактирования.</li>
</ul>
<p> </p>
<h4>Переработка содержимого</h4>
<p> </p>
<p>Помните все те прекрасные сортирующиеся выпадающие меню (на экране управления форумами). Или эти замечательные комбинации стрелок вверх/вниз (страница управления компонентами) Во временя <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2 они конечно удовлетворяли своей цели, но в IP.Board3 они уже устарели.</p>
<p>Теперь все функциональные возможности упорядочивания для всех наших приложений будут использовать drag-n-drop + AJAX. Хотите переместить форум в нужную категорию? Только вытащите его и переместите куда нужно.</p>
<p> </p>
<h4>В заключении</h4>
<p> </p>
<p>Мы думаем, что вы, открыв админцентр IPB3, найдете в нем простоту управления настройками форума. Однажды, мы запустим открытое тестирование новой версии и вы сможете высказать ваши мнения по поводу внесенных изменений, чтобы мы смогли их учесть и внести доработки.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/uproschenie/" title="Упрощение" rel="tag nofollow">Упрощение</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/administratirovaniya/" title="Администратирования" rel="tag nofollow">Администратирования</a>, <a href="http://pronets.ru/tag/administratirovanie/" title="Администратирование" rel="tag nofollow">Администратирование</a>, <a href="http://pronets.ru/tag/uproschenie-administrirovaniya/" title="Упрощение администрирования" rel="tag nofollow">Упрощение администрирования</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/css_classic/" title="Гид по CSS (Classic Skin) (25/07/2008)">Гид по CSS (Classic Skin)</a> (0)</li>
	<li><a href="http://pronets.ru/uluchshenie-yadra-sistemyi/" title="Улучшение ядра системы (04/06/2009)">Улучшение ядра системы</a> (0)</li>
	<li><a href="http://pronets.ru/tegi-shablonov-perezagruzka/" title="Теги шаблонов, перезагрузка (04/06/2009)">Теги шаблонов, перезагрузка</a> (0)</li>
	<li><a href="http://pronets.ru/obnovlenie-ipboard/" title="Обновление (upgrade) IP.Board (31/08/2008)">Обновление (upgrade) IP.Board</a> (0)</li>
	<li><a href="http://pronets.ru/obzor-mehanizma-pometki-prochitannosti-tem/" title="Обзор механизма пометки прочитанности тем (04/06/2009)">Обзор механизма пометки прочитанности тем</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/uproschenie-administrirovaniya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Улучшение ядра системы</title>
		<link>http://pronets.ru/uluchshenie-yadra-sistemyi/</link>
		<comments>http://pronets.ru/uluchshenie-yadra-sistemyi/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 21:59:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Система]]></category>
		<category><![CDATA[Системы]]></category>
		<category><![CDATA[Улучшение]]></category>
		<category><![CDATA[Улучшение ядра системы]]></category>
		<category><![CDATA[Ядро]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=527</guid>
		<description><![CDATA[В IP.Board 2, мы создали &#8220;ядро&#8221; классов, которые IP.Board использует, но которые сами по себе не завязаны на использование IP.Board. Набор классов ядра включает в себя классы работы с базой данных, загрузки файлов, работы с почтой, обработки и чтения RSS, разбора XML и поддержки нашего собственного формата XMLArchive.

Например, вы можете использовать &#8220;classUpload.php&#8221; и &#8220;classImage.php&#8221; в [...]]]></description>
			<content:encoded><![CDATA[<p>В <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2, мы создали &#8220;ядро&#8221; классов, которые <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> использует, но которые сами по себе не завязаны на использование <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>. Набор классов ядра включает в себя классы работы с базой данных, загрузки файлов, работы с почтой, обработки и чтения RSS, разбора XML и поддержки нашего собственного формата XMLArchive.<br />
<span id="more-527"></span></p>
<p>Например, вы можете использовать &#8220;classUpload.php&#8221; и &#8220;classImage.php&#8221; в ваших модификациях или расширениях для обработки загрузок файлов и генерации уменьшенных изображений через GD. И вам не нужно будет инициализировать реестр или делать что-то еще чтобы использовать данные классы, нужно просто подключить файл и начать использовать его.</p>
<p>Но, совершив прыжок и сделав PHP 5 необходимым требованием для работы системы, мы получили возможность реализовать несколько долгожданных улучшений. Перейдем к самым ярким моментам.</p>
<p><strong>Пользовательские поля</strong></p>
<p>Josh полностью переписал управление пользовательскими полями в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> и данный класс связывает всю эту работу воедино. Josh воспользовался фактически всеми новшествами PHP 5, включая абстрактные классы, интерфейсы и ArrayAccess для предоставления простого и ясного интерфейса, который может быть использован почти в любом проекте, так как класс не ограничен использованием только для пользовательских полей <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>.</p>
<p><strong>Диаграммы</strong></p>
<p>Remco расширил класс, теперь в нем есть поддержка новых диаграмм, таких как &#8220;funnel&#8221;, &#8220;bubble&#8221; и &#8220;radar&#8221; что позволит отображать данные более подходящим способом. Как разработчики <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.0.0, мы найдем хорошее применение данному классу в отчетах админцентра.</p>
<p><strong>GD и ImageMagick</strong></p>
<p>Brandon переписал наш класс для обработки изображений с помощью GD. А также создал класс для работы с imagemagick, что позволит использовать данную библиотеку тем клиентам, у которых она установлена. Обратите внимание на сколько просто стало изменять размеры изображений и добавлять watermark&#8217;и на них.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$image</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> classImageGd<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$image</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">init</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'image_path'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;/path/to/images/&quot;</span><span style="color: #339933;">,</span>
<span style="color: #0000ff;">'image_file'</span>    <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">&quot;image_filename.jpg&quot;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Устанавливаем максимальную ширину и высоту</span>
<span style="color: #000088;">$image</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">resizeImage</span><span style="color: #009900;">&#40;</span> <span style="color: #cc66cc;">600</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">480</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// Добавляем watermark</span>
<span style="color: #000088;">$image</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addWatermark</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;/path/to/watermark/trans.png&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$image</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">displayImage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong>Создание и разбор XML</strong></p>
<p>Во второй версии <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> у нас был класс разбирающий и создающий XML, но это был набор разрозненного PHP кода, реализующий примитивный обработчик XML и класс с ручным разбором для тех у кого XML обработчики отсутствовали. Надо признать что данный класс работал хорошо, но был очень требователен к памяти. К счастью, PHP 5 обладает намного лучшей родной поддержкой обработки XML, всю прелесть которой я почувствовал переписав данный класс.</p>
<p>В начале я обратил внимание на simpleXML, но он оказался действительно простым для наших нужд, так что я пошел дальше и воспользовался DOM методами. Это дало нам полный контроль над созданием и разбором XML документов.</p>
<p>Ну и конечно же код, на котором вы видете на сколько легко стало создавать XML документы:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$xml</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> classXML<span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'utf-8'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">newXMLDocument</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* Создаем новый корневой элемент */</span>
<span style="color: #000088;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addElement</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'productlist'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'myname'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'version'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'1.0'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">/* Добавляем потомка.... */</span>
<span style="color: #000088;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addElement</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'productgroup'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'productlist'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'thisgroup'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addElementAsRecord</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'productgroup'</span><span style="color: #339933;">,</span>
	<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'product'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'1.0'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'description'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Это не орандж-сода'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'title'</span>         <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Печеньки'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'room'</span>         <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'103'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'store'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addElementAsRecord</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'productgroup'</span><span style="color: #339933;">,</span>
	<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'product'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'id'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'2.0'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
	<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'description'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Куплен в трендовом магазине'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'title'</span>         <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'Тедди Бир'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'room'</span>         <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'104'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'store'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">2</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$xmlData</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetchDocument</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>Данный код породит следующий документ<span style="color: #339933;">:</span>
&nbsp;
<span style="color: #339933;">&lt;</span>productlist name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;myname&quot;</span> version<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;1.0&quot;</span><span style="color: #339933;">&gt;</span>
 <span style="color: #339933;">&lt;</span>productgroup name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;thisgroup&quot;</span><span style="color: #339933;">&gt;</span>
  <span style="color: #339933;">&lt;</span>product id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;1.0&quot;</span><span style="color: #339933;">&gt;</span>
   <span style="color: #339933;">&lt;</span>description<span style="color: #339933;">&gt;</span>Это не орандж<span style="color: #339933;">-</span>сода<span style="color: #339933;">&lt;/</span>description<span style="color: #339933;">&gt;</span>
   <span style="color: #339933;">&lt;</span>title<span style="color: #339933;">&gt;</span>Печеньки<span style="color: #339933;">&lt;/</span>title<span style="color: #339933;">&gt;</span>
   <span style="color: #339933;">&lt;</span>room store<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;1&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">103</span><span style="color: #339933;">&lt;/</span>room<span style="color: #339933;">&gt;</span>
  <span style="color: #339933;">&lt;/</span>product<span style="color: #339933;">&gt;</span>
  <span style="color: #339933;">&lt;</span>product id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;2.0&quot;</span><span style="color: #339933;">&gt;</span>
   <span style="color: #339933;">&lt;</span>description<span style="color: #339933;">&gt;</span>Куплен в трендовом магазине<span style="color: #339933;">&lt;/</span>description<span style="color: #339933;">&gt;</span>
   <span style="color: #339933;">&lt;</span>title<span style="color: #339933;">&gt;</span>Тедди Бир<span style="color: #339933;">&lt;/</span>title<span style="color: #339933;">&gt;</span>
   <span style="color: #339933;">&lt;</span>room store<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;2&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #cc66cc;">104</span><span style="color: #339933;">&lt;/</span>room<span style="color: #339933;">&gt;</span>
  <span style="color: #339933;">&lt;/</span>product<span style="color: #339933;">&gt;</span>
 <span style="color: #339933;">&lt;/</span>productgroup<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>productlist<span style="color: #339933;">&gt;</span>А вот так вы этот документ можете разобрать<span style="color: #339933;">:</span>
&nbsp;
<span style="color: #000088;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">loadXML</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$xmlData</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* Получаем необходимые данные из 'products'... */</span>
<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetchElements</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'product'</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$products</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">print</span> <span style="color: #000088;">$xml</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetchItem</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$products</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'title'</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span>;
}
/* Выводит: */</span></pre></div></div>

<p><strong>Печеньки</strong></p>
<p>Тедди БирЯ уверен вы оценили насколько легко использовать новые XML возможности!</p>
<p><strong>XMLArchive</strong></p>
<p>Я создал XMLArchive формат для <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>, как способ объединять несколько файлов в один без использования tar или zip, использование которых может быть проблематично на некоторых серверах. XMLArchive это простой файл с данными в обычном XML формате. Я переписал данный класс для более легкого использования и конечно же добавил новых возможностей.</p>
<p>Ниже пример того как прочитать архив:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$archive</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> classXMLArchive<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$archive</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">read</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;/path/to/archive.xml&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">print</span> <span style="color: #000088;">$archive</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'someDir/file.html'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Как вы уже могли заметить, мы воспользовались итератором ArrayAccess для более прозрачного доступа к содержимому архива.</p>
<p>А вот пример создания архива:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$archive</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> classXMLArchive<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$archive</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;someDir&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$archive</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;anotherDir/anotherFile.html&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$archive</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">add</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;Создаем новый файл налету!&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;anotherDir/brandNewFile.html&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Сохраняем gzipped
</span><span style="color: #000088;">$archive</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">saveGZIP</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;/path/to/archive.xml.gzip&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;"># Сохраняем без сжатия
</span><span style="color: #000088;">$archive</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">save</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;/path/to/archive.xml&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;"># Просто возвращаем данные
</span><span style="color: #000088;">$archive</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getArchiveContents</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>В угоду простоте теперь есть только один интерфейс добавления файлов: &#8220;add()&#8221;. Чем меньше имен функций надо помнить тем лучше!</p>
<p>Естественно, данная запись не охватывает всех тех изменений и улучшений, которые были внесены в ядро системы, но вы должны почувствовать сколько энергии и сил мы затрачиваем, чтобы сделать <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> надежным и эффективным инструментом, каким он только может быть.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/sistemyi/" title="Системы" rel="tag nofollow">Системы</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/yadro/" title="Ядро" rel="tag nofollow">Ядро</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/sistema/" title="Система" rel="tag nofollow">Система</a>, <a href="http://pronets.ru/tag/uluchshenie-yadra-sistemyi/" title="Улучшение ядра системы" rel="tag nofollow">Улучшение ядра системы</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/priotkryivaya-zavesu-nad-ipsregistry/" title="Приоткрывая завесу над ipsRegistry (04/06/2009)">Приоткрывая завесу над ipsRegistry</a> (0)</li>
	<li><a href="http://pronets.ru/sistema-reputatsii/" title="Система репутации (04/06/2009)">Система репутации</a> (0)</li>
	<li><a href="http://pronets.ru/bokovaya-panel-v-redaktore/" title="Боковая панель в редакторе (13/06/2008)">Боковая панель в редакторе</a> (0)</li>
	<li><a href="http://pronets.ru/legenda-foruma-o-tom-kak-ee-sozdat/" title="Легенда форума, о том как ее создать (22/03/2009)">Легенда форума, о том как ее создать</a> (0)</li>
	<li><a href="http://pronets.ru/delaya-shablonyi-prosche/" title="Делая шаблоны проще (04/06/2009)">Делая шаблоны проще</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/uluchshenie-yadra-sistemyi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Оптимизация для поисковых систем</title>
		<link>http://pronets.ru/optimizatsiya-dlya-poiskovyih-sistem/</link>
		<comments>http://pronets.ru/optimizatsiya-dlya-poiskovyih-sistem/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 21:55:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Оптимизация]]></category>
		<category><![CDATA[Оптимизация для поисковых систем]]></category>
		<category><![CDATA[Поисковик]]></category>
		<category><![CDATA[Поисковые]]></category>
		<category><![CDATA[Система]]></category>
		<category><![CDATA[Системы]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=525</guid>
		<description><![CDATA[Мы весьма часто получаем запросы: «Добавьте SEO в IPB». Это очень сложный запрос для выполнения. Что такое SEO? Что не так в IPB для индексации поисковиками? Что можно сделать лучше?
Мы разделили предложения на те, которые есть смысл разрабатывать сейчас, и те, которые можно оставить для модификаций. Пока мы не полностью освоили SEO для форумов, мы [...]]]></description>
			<content:encoded><![CDATA[<p>Мы весьма часто получаем запросы: «Добавьте <a href="http://pronets.ru/tag/seo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with SEO">SEO</a> в <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a>». Это очень сложный запрос для выполнения. Что такое <a href="http://pronets.ru/tag/seo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with SEO">SEO</a>? Что не так в <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> для индексации поисковиками? Что можно сделать лучше?</p>
<p>Мы разделили предложения на те, которые есть смысл разрабатывать сейчас, и те, которые можно оставить для модификаций. Пока мы не полностью освоили <a href="http://pronets.ru/tag/seo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with SEO">SEO</a> для форумов, мы внесли изменения в <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 3 только там, где по нашему мнению это поможет улучшить индексацию поисковыми системами. Эта статья даст более детальную информацию по данным улучшениям.<br />
<span id="more-525"></span></p>
<p><strong>Семантически корректный HTML</strong></p>
<p>&#8220;Семантика&#8221; — наука о понимании определённых знаков, последовательностей символов и других условных обозначений. По существу, когда мы используем данный термин говоря о HTML документе, мы хотим показать что HTML теги в исходном коде документа используются исключительно в соответствии со структурой документа. Совсем недавно, для позиционирования элементов на странице использовались таблицы, для создания отступов использовали однопиксельные gif картинки. Те дни ушли и сегодня современные вебстраницы разрабатываются с использованием подходов создания качественного HTML кода.</p>
<p>Разрабатываемый <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 будет xHTML «валидным», а исходный код будет семантически корректным. Запрещенные HTML-теги не используются, ушло чрезмерное употребление тегов (например div’ы тройной вложенности), javasciprt больше не навязывается (*см. комментарии). Темы новой версии форума устройства для чтения и поисковые системы должны считывать намного легче, чем в <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 2. Кроме того, все функции должны работать (хотя в некоторых случаях в меньшей степени), даже когда javascript отключен. Теги заголовков используются должным образом и показывают ключевые слова содержимого страницы. Для заголовков используются стили, что позволяет «представлять» их содержание наилучшим способом.</p>
<p>*Примечание: HTML будет семантическим, а javascript не навязчивым настолько, насколько это возможно. Есть тысячи конфигураций, много разных браузеров, настроек и дополнений, так что невозможно гарантировать во всем этом многообразии единства представления контента. Rikki рассказывал подробнее о целях, которые мы преследуем при разработке нового дизайна в другой статье, доступной вам.</p>
<p><strong>Поддержка микроформатов (Microformats)</strong></p>
<p>Микроформаты (Microformats) представляют собой спецификацию способа представления однородных данных. Например, не редко на сайте возникает необходимость размещать некоторые новости или статьи, а также хранить страницу профиля для каждого пользователя. Микроформаты был разработаны так, чтобы эти общие данные могли бы быть представлены общим способом. Используя микроформаты, другие интернет-страницы и скрипты могут корректно обрабатывать вашу страницу, чтобы извлечь из нее данные для последующего использования. Даже Internet Explorer 8 будет поддерживать Microformats для некоторых его новых возможностей, в то время как другие браузеры или планируют, или уже поддерживают микроформаты.</p>
<p><a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 использует несколько микроформатов. Это hCard, hCalendar, rel-nofollow, rel-tag, и rel-home микроформаты. Мы также используем некоторые другие общие атрибуты (такие как &#8220;rel=&#8217;help&#8217;&#8221; для ссылки на документацию), это при том, что они не настолько необходимы на данный момент. Кроме того, мы будем продолжать следить за микроформатами и применять их при необходимости в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>.</p>
<p><strong>Поддержка rel=&#8217;nofollow&#8217;</strong></p>
<p>Это еще один популярный запрос наших клиентов: сделать так чтобы все публикуемые ссылки в темах имели атрибут «rel=&#8217;nofollow&#8217;». С другой стороны многие просили, чтобы мы не делали этого. Идея данного изменения состоит в том, что поисковые системы должны по «rel=&#8217;nofollow&#8217;» понимать, что владелец форума не отвечает за содержимое находящееся по ссылке. Таким образом поисковая система не должна «оштрафовать» или заблокировать сайт, на котором размещена эта ссылка (например в случае если ссылка окажется битой или несоответствующей содержимому).</p>
<p>Мы добавили опцию для возможности настройки включения/отключения этого без редактирования исходных кодов. Атрибут «rel=&#8217;nofollow&#8217;» будет автоматически добавлен ко всем вставляемым <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a> адресам (при включенной настройке).</p>
<p>Удаление &#8220;(Работает на <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a>)&#8221; с главной страницы.<br />
Во всех версиях <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> заголовок главной страницы содержал эту фразу (если вы не покупали услугу удаления копирайтов). Мы не запрещали пользователям удалять его через исходные коды, многие именно так и поступали.</p>
<p>Но теперь мы пошли дальше и удалили этот текст из заголовка в базовом дистрибутиве.</p>
<p><strong>Удаление текстовой версии</strong></p>
<p>Текстовая версия <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> предназначалась для упрощенного представления темы или форума. Это было полезно, как для поисковых систем, так и для браузеров мобильных устройств. Опция была на столько используема, что фактически в поисковой системе, находя ссылку на тему форума, показывалась ссылку на текстовую, а не полную версию, страницы.</p>
<p>В <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 мы исключили текстовую версию полностью благодаря новым возможностям ядра системы. Мобильный стиль теперь может быть установлен непосредственно в админцентре, что делает ненужным отдельный скрипт для вывода содержимого в другом формате. И все это благодаря использованию MVC паттерна &#8211; оставляем модель и контроллер, а сами просто изменяем представление.</p>
<p>По отношению к оптимизации под поисковые системы данное нововведение убирает очевидное дублирование текстовой и полной версией содержание одного и того же материала, что обычно ухудшает позиции в поисковиках.</p>
<p>Изменнеие способов отображения темы перенесено в личную панель пользователя<br />
Часто поисковики индексировали темы в <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> с использованием различных видов отображения темы, по некоторым непонятным причинам «наилучшим» видом оказывался содержащий в адресе «&#038;mode=outline». И хотя это не препятствовало посещению страницы, однако, серьезно влияло на восприятие тем, потому что многие пользователи пугались при виде не стандартного представления темы и не знали, как перейти в привычный режим отображения.</p>
<p>Многие пользователи действительно используют различных варианты отображения тем (которые каждый пользователь может настраивать под себя), поэтому мы перенесли возможность изменения вида в личную панель пользователя, а, заодно, решили проблему индексации тем в нестандартных режимах поисковыми машинами.</p>
<p>Есть еще много незначительных, но важных улучшений, которые заложены глубоко внутри <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3. Они должны помочь улучшить индексацию вашего форума в поисковых системах. В тоже время мы не будем углубляться в <a href="http://pronets.ru/tag/seo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with SEO">SEO</a> разработки, однако, обещаем обязательно осуществлять доработки, которые помогут нашим пользователям добиваться успеха с <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a>.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/optimizatsiya-dlya-poiskovyih-sistem/" title="Оптимизация для поисковых систем" rel="tag nofollow">Оптимизация для поисковых систем</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/sistema/" title="Система" rel="tag nofollow">Система</a>, <a href="http://pronets.ru/tag/poiskovyie/" title="Поисковые" rel="tag nofollow">Поисковые</a>, <a href="http://pronets.ru/tag/seo/" title="SEO" rel="tag nofollow">SEO</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/globalnyie-prava-dostupa/" title="Глобальные права доступа (04/06/2009)">Глобальные права доступа</a> (0)</li>
	<li><a href="http://pronets.ru/sistema-reputatsii/" title="Система репутации (04/06/2009)">Система репутации</a> (0)</li>
	<li><a href="http://pronets.ru/kak-pravilno-registrirovat-sayt/" title="Как правильно регистрировать сайт? (09/07/2008)">Как правильно регистрировать сайт?</a> (0)</li>
	<li><a href="http://pronets.ru/upravlenie-zablokirovannyimi-polzovatelyami/" title="Управление заблокированными пользователями (04/06/2009)">Управление заблокированными пользователями</a> (0)</li>
	<li><a href="http://pronets.ru/rasshiryaya-mehanizmyi-avtorizatsii/" title="Расширяя механизмы авторизации (04/06/2009)">Расширяя механизмы авторизации</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/optimizatsiya-dlya-poiskovyih-sistem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Взаимосвязь с внешними приложениями</title>
		<link>http://pronets.ru/vzaimosvyaz-s-vneshnimi-prilozheniyami/</link>
		<comments>http://pronets.ru/vzaimosvyaz-s-vneshnimi-prilozheniyami/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 21:50:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Взаимосвязь]]></category>
		<category><![CDATA[Взаимосвязь с внешними приложениями]]></category>
		<category><![CDATA[Внешние]]></category>
		<category><![CDATA[Приложения]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=523</guid>
		<description><![CDATA[В данной записи мы распишем новые возможности IP.Board 3, которые позволят вам настроить взаимодействие форумов с вашим сайтом и создать собственную сеть.

Управление пользователями
С момента IP.Board 2, мы ввели возможность под названием &#8220;Модули входа&#8221;. На самом деле это мини-каркас, позволяющий использовать собственный код для аутентификации и регистрации пользователей. Например, у вас есть база данных пользователей и [...]]]></description>
			<content:encoded><![CDATA[<p>В данной записи мы распишем новые возможности <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3, которые позволят вам настроить взаимодействие форумов с вашим сайтом и создать собственную сеть.<br />
<span id="more-523"></span></p>
<p><strong>Управление пользователями</strong></p>
<p>С момента <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2, мы ввели возможность под названием &#8220;Модули входа&#8221;. На самом деле это мини-каркас, позволяющий использовать собственный код для аутентификации и регистрации пользователей. Например, у вас есть база данных пользователей и вы хотите дать возможность им использовать форум с уже существующим аккаунтом (логин и пароль), тогда вы можете создать модуль входа, который бы работал с существующей базой пользователей или иной системой (через SOAP, XML-RPC, и тому подобное).</p>
<p>Система была доукомплектована новыми модулями по просьбам пользователей, теперь <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> будет комплектоваться модулями для LDAP и OpenID, что позволит легко использовать данные системы для аутентификации пользователей.</p>
<p><strong>Использование <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> Engine</strong></p>
<p>Не секрет, что <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 полностью переписан. Новый каркас в полную силу использует PHP 5 и включает огромное количество экономящих время разработчика возможностей.</p>
<p>Довольно часто наши клиенты просят помочь объединить некоторые части форума с существующим сайтом. Например, они хотят получить список последних тем и сообщений с форума на сайте. Для решения таких вещей мы создали класс API в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2.</p>
<p>Однако в случае, если необходимо было отправить какие-то данные в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>, например новое сообщение или новое персональное сообщение, нужно было повозиться. Даже для использования какого-либо шаблона системы приходилось копировать и много кода.</p>
<p>Например, для того чтобы использовать наш механизм для работы с данными или нашу шаблонную систему, необходимо было копировать большую часть &#8216;index.php&#8217;, чтобы ipsclass корректно подключился. В <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 этого больше не требуется. </p>
<p>Теперь использование стало очень простым:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'./initdata.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> IPS_ROOT_PATH <span style="color: #339933;">.</span> <span style="color: #0000ff;">'sources/base/ipsRegistry.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$registry</span> <span style="color: #339933;">=</span> ipsRegistry<span style="color: #339933;">::</span><span style="color: #004000;">instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Эти несколько строк дадут вам полноценный доступ к: кешам, настройкам, управлению пользователями, работу с базой данных и многое другое.</p>
<p>Написание собственного кода<br />
Довольно часто бывает необходимо добавить возможности <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> на собственный сайт. В <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 3 это сделать легко.</p>
<p>Хотите добавить новое сообщение? Без проблем, просто используйте следующий код:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> IPSLib<span style="color: #339933;">::</span><span style="color: #004000;">getAppDir</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'forums'</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/sources/classes/post/classPost.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$postClass</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> classPostForms<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$registry</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$postClass</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setForumID</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$forumID</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$postClass</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setForumData</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">class_forums</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">forum_by_id</span><span style="color: #009900;">&#91;</span> <span style="color: #000088;">$forumID</span> <span style="color: #009900;">&#93;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$postClass</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setTopicTitle</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;Моя тема&quot;</span> <span style="color: #009900;">&#41;</span>
<span style="color: #000088;">$postClass</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setPostContent</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;Привет, я содержимое сообщения!&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$postClass</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setAuthor</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$memberID</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
try
<span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$postClass</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">addTopic</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
catch<span style="color: #009900;">&#40;</span> Exception <span style="color: #000088;">$error</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">print</span> <span style="color: #000088;">$error</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getMessage</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Да все действительно просто, как в примере выше. Кстати, вы заметили try -> catch блок? Теперь он согласуется со всеми API-похожими функциями. Мы воспользовались механизмом исключений пятого PHP, чтобы возвращать в вызывающую программу информацию о возникших проблемах (конечно если такие будут). Мы так же вскоре предоставим список всех возможных исключений (в формате phpDoc).</p>
<p>Авторы модификаций для версии <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2 должны быть уже знакомы с похожими функциями, которые существовали в API второй версии. Тогда для них будет хорошей новостью информация о том, что для реализации данных возможностей API прослойка больше не нужна, потому как теперь используется оригинальный код форума, да-да тот самый, что используется в работе самого форума.</p>
<p>Хотите создать новое персональное обсуждение из собственной программы? Легко!</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> IPSLib<span style="color: #339933;">::</span><span style="color: #004000;">getAppDir</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'members'</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/sources/classes/messaging/messengerFunctions.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$messengerFunctions</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> messengerFunctions<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$registry</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$messengerFunctions</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">sendNewPersonalTopic</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$toMemberID</span><span style="color: #339933;">,</span> <span style="color: #000088;">$fromMemberID</span><span style="color: #339933;">,</span> <span style="color: #000088;">$invitedUserIDArray</span><span style="color: #339933;">,</span> <span style="color: #000088;">$msgTitle</span><span style="color: #339933;">,</span> <span style="color: #000088;">$msgContent</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>Нужен список личных сообщений?
&nbsp;
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> IPSLib<span style="color: #339933;">::</span><span style="color: #004000;">getAppDir</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'members'</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">'/sources/classes/messaging/messengerFunctions.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$messengerFunctions</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> messengerFunctions<span style="color: #009900;">&#40;</span> <span style="color: #000088;">$registry</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$messengerFunctions</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getPersonalTopicsList</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$memberID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'in'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Другой довольно частый запрос это подключение шаблонов <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> в своем коде, снова все очень просто:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'./initdata.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> IPS_ROOT_PATH <span style="color: #339933;">.</span> <span style="color: #0000ff;">'sources/base/ipsRegistry.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$registry</span> <span style="color: #339933;">=</span> ipsRegistry<span style="color: #339933;">::</span><span style="color: #004000;">instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">print</span> <span style="color: #000088;">$registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">output</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getTemplate</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$templateGroup</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">templateName</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$templateArguments</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>И это далеко не все, что вы сможете сделать. Однако, на перечисление всех возможных действий, которые вы теперь сможете сделать, потребовалось бы очень много времени и получилась бы очень большая заметка, поэтому мы ограничились самими интересными возможностями.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/vzaimosvyaz-s-vneshnimi-prilozheniyami/" title="Взаимосвязь с внешними приложениями" rel="tag nofollow">Взаимосвязь с внешними приложениями</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/vzaimosvyaz/" title="Взаимосвязь" rel="tag nofollow">Взаимосвязь</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/vneshnie/" title="Внешние" rel="tag nofollow">Внешние</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/prilozheniya/" title="Приложения" rel="tag nofollow">Приложения</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/smaylyi-v-kommentariyah/" title="Смайлы в комментариях (14/10/2008)">Смайлы в комментариях</a> (0)</li>
	<li><a href="http://pronets.ru/sistema-zhalob-na-soobscheniya/" title="Система жалоб на сообщения (04/06/2009)">Система жалоб на сообщения</a> (0)</li>
	<li><a href="http://pronets.ru/gid-po-css-ip-board-3-0-x/" title="Гид по CSS IP.Board 3.0.x (08/08/2009)">Гид по CSS IP.Board 3.0.x</a> (0)</li>
	<li><a href="http://pronets.ru/obnovlenie-ipboard/" title="Обновление (upgrade) IP.Board (31/08/2008)">Обновление (upgrade) IP.Board</a> (0)</li>
	<li><a href="http://pronets.ru/chmod-na-faylyi-i-papki-ipb/" title="CHMOD на файлы и папки IPB (30/06/2008)">CHMOD на файлы и папки IPB</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/vzaimosvyaz-s-vneshnimi-prilozheniyami/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Личные беседы</title>
		<link>http://pronets.ru/lichnyie-besedyi/</link>
		<comments>http://pronets.ru/lichnyie-besedyi/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 21:26:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Беседа]]></category>
		<category><![CDATA[Беседы]]></category>
		<category><![CDATA[Лично]]></category>
		<category><![CDATA[Личные]]></category>
		<category><![CDATA[Личные беседы]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=520</guid>
		<description><![CDATA[Как и большинство новых возможностей в IP.Board 3, «личные беседы» (так мы их назвали) был одним из популярных запросов. Запросом, который мы реализовали! Основаны они на принципе отказа от пересылки и копирования сообщения другим пользователям. Согласитесь зачем вносить в копию или пересылать сообщения другим пользователям, когда вы можете пригласить их в беседу?

Как это работает
 
Там, где [...]]]></description>
			<content:encoded><![CDATA[<p>Как и большинство новых возможностей в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3, «личные беседы» (так мы их назвали) был одним из популярных запросов. Запросом, который мы реализовали! Основаны они на принципе отказа от пересылки и копирования сообщения другим пользователям. Согласитесь зачем вносить в копию или пересылать сообщения другим пользователям, когда вы можете пригласить их в беседу?</p>
<p><span id="more-520"></span></p>
<h4>Как это работает</h4>
<p> </p>
<p>Там, где вы ранее создавали новое личное сообщение, теперь вы открываете личную беседу. Форма по большей части такая же. Однако, вместо поля «Копия другим пользователям» там находятся поля приглашения других пользователей в беседу. Ограничение, сколько человек можно пригласить в беседу, задается администратором в настройках групп. Фактически, администратор может полностью отключить возможность приглашать других пользователей, если желает иметь привычный метод работы личных сообщений.</p>
<p>Получатель и каждый приглашенный участник будут уведомлены, что у них есть новое сообщение. Новая личная беседа появится в папке «Входящие» и «Новые» (до тех пор, пока оно не будет прочитано).</p>
<p>Беседа выглядит похожей на обычную тему форума, она линейно упорядочена (последними идут новые ответы). Есть форма быстрого ответа. Структура облегчает просмотр старых сообщений и позволяет помнить «нить» беседы.</p>
<p>Автор темы (и любой участвующий супермодератор) может заблокировать любого участника беседы. Иммунитетом обладают пользователи групп, помеченные как «не игнорируемые». Это означает, что вы (администратор) никогда не можете быть удаленным из беседы, в которой вы участвуете. Когда участник заблокирован, беседа исчезает из его папок, пока он не будет снова допущен к ней.</p>
<p>Каждый участник, кроме автора, может покинуть беседу в любое время. Как только участник покинул беседу, она остается лишь в папке «Оконченные» и ответы больше не попадают к нему в личный ящик. Автор беседы не может повторно пригласить вас, но вы можете присоединиться обратно к беседе к любое время.</p>
<p>Автор темы может приглашать новых участников в любое время прямо из экрана отображения беседы. Каждый участник может также видеть всех пользователей, участвующих в беседе.</p>
<p> </p>
<h4>Волшебные папки</h4>
<p> </p>
<p>Этот термин мы дали определенным папкам, которые не являются редактируемыми или удаляемыми. Среди них «Новые», «Оконченные» и «Мои беседы». Темы в «Новых» и «Моих беседах» могут быть и в других папках. «Мои беседы» являются папкой куда попадает любая беседа, которую вы начали. Вы можете перемещать беседу и в другие папки, но она всегда будет доступна и в «Моих беседах». «Новые» – содержит список всех новых бесед и бесед с новыми ответами. В папке «Оконченные» отображаются все законченные беседы, или беседы, которые вы покинули. В любом момент можно ее заново открыть. &#8220;Все&#8221;, как понятно из имени, показывает все имеющиеся беседы, в которых вы участвуете, и как автор и как приглашенный.</p>
<p>Мы думает, что эта возможность в целом очень большой шаг вперед для личных переписок, который открывает новые способы для общения через форум. Десять лет – долго время ожидания изменений. Мы надеемся, что вы оценили это ожидание.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/besedyi/" title="Беседы" rel="tag nofollow">Беседы</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/lichnyie-besedyi/" title="Личные беседы" rel="tag nofollow">Личные беседы</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/lichno/" title="Лично" rel="tag nofollow">Лично</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/beseda/" title="Беседа" rel="tag nofollow">Беседа</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/tegi-shablonov-perezagruzka/" title="Теги шаблонов, перезагрузка (04/06/2009)">Теги шаблонов, перезагрузка</a> (0)</li>
	<li><a href="http://pronets.ru/css_classic/" title="Гид по CSS (Classic Skin) (25/07/2008)">Гид по CSS (Classic Skin)</a> (0)</li>
	<li><a href="http://pronets.ru/reviziya-sistemyi-bbcode/" title="Ревизия системы BBCode (04/06/2009)">Ревизия системы BBCode</a> (0)</li>
	<li><a href="http://pronets.ru/ustanovka-foruma-ipboard-2xx/" title="Установка форума IP.Board 2.x.x (25/07/2009)">Установка форума IP.Board 2.x.x</a> (0)</li>
	<li><a href="http://pronets.ru/izmenenie-nazvanie-tegov-na-russkiy-yazyik-v-20h/" title="Изменение название тегов, на русский язык в 2.0.х (14/03/2009)">Изменение название тегов, на русский язык в 2.0.х</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/lichnyie-besedyi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Наконец-то, дружественные URL&#8217;ы!</title>
		<link>http://pronets.ru/nakonets-to-druzhestvennyie-urlyi/</link>
		<comments>http://pronets.ru/nakonets-to-druzhestvennyie-urlyi/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 21:23:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[URL]]></category>
		<category><![CDATA[URL'ы]]></category>
		<category><![CDATA[Дружественные]]></category>
		<category><![CDATA[Дружественные URL'ы]]></category>
		<category><![CDATA[ЧПУ]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=518</guid>
		<description><![CDATA[Наверное, одной из самых запрашиваемых возможностей, которые мы получали с момента самой первой версии IP.Board были &#8216;дружественные URLы&#8217; (ЧПУ).
Я крайне осторожно попытался избежать фразы &#8220;Поисковая оптимизация&#8221; в первом параграфе, несмотря на то, что она достаточно часто мелькала в запросах ЧПУ. Конечно же то, что мы добавили, несомненно помогает поисковой оптимизации, но важно понимать, что ЧПУ [...]]]></description>
			<content:encoded><![CDATA[<p>Наверное, одной из самых запрашиваемых возможностей, которые мы получали с момента самой первой версии <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> были &#8216;дружественные <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a>ы&#8217; (ЧПУ).</p>
<p>Я крайне осторожно попытался избежать фразы &#8220;Поисковая оптимизация&#8221; в первом параграфе, несмотря на то, что она достаточно часто мелькала в запросах ЧПУ. Конечно же то, что мы добавили, несомненно помогает поисковой оптимизации, но важно понимать, что ЧПУ не является готовым решением для оптимизации и не может быть им.<br />
<span id="more-518"></span></p>
<p><strong>Итак, что же мы сделали?</strong></p>
<p>Если объяснять коротко, то ЧПУ! Однако процесс создания и управления ими куда более интересные вещи, нежели конечный результат, но наберитесь терпения об эти процессах вы узнаете чуть позже. Давайте в начале посмотрим на примеры наших новых <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a>ов.</p>
<p><strong>Примеры ссылок для <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 2.3.x:</strong></p>
<p>Для перехода в форум (My Test Forum):</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.board.com/forums/index.php?showforum=10</span></pre></div></div>

<p>Для перехода в тему (My Test Topic):</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.board.com/forums/index.php?showtopic=99</span></pre></div></div>

<p>Для просмотра пользователя (Matt Mecham):</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.board.com/forums/index.php?showuser=30</span></pre></div></div>

<p>Данные ссылки вполне нормальные. Они короткие и лаконичные, да и поисковики их воспринимают хорошо, но мы их можем сделать немного лучше чтобы добиться их большей привлекательности. Посмотрим?</p>
<p>Для серверов на базе Windows можно использовать &#8216;query&#8217; метод генерации ссылок, тогда <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a> выглядят так:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.board.com/forums/index.php?/forum/10/my-test-forum </span>
http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.board.com/forums/index.php?/top...9/my-test-topic </span>
http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.board.com/forums/index.php?/user/30/matt-mecham</span></pre></div></div>

<p>В других случаях есть метод &#8216;path_info&#8217; и ссылки выглядят так:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.board.com/forums/index.php/forum/10/my-test-forum </span>
http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.board.com/forums/index.php/topic/99/my-test-topic </span>
http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.board.com/forums/index.php/user/30/matt-mecham</span></pre></div></div>

<p>Еще лучше если вы имеете возможность вносить настройки в ваш .htaccess файл и у вас есть mod_rewrite. Для удобства наша система сгенерирует правила для mod_rewrite. И тогда конечный результат будет таким:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.board.com/forums/forum/10/my-test-forum </span>
http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.board.com/forums/topic/99/my-test-topic </span>
http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.board.com/forums/user/30/matt-mecham</span></pre></div></div>

<p>А что будет, если использовать диакритические знаки, например как здесь: Mått Méçhåm? Они будут просто заменены наиболее подходящими аналогами. Для этого примера на &#8220;matt-mecham&#8221;.</p>
<p><strong>Как я смогу использовать их?</strong></p>
<p>Самый простой способ получить &#8220;дружественный <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a>&#8221; использовать {parse} тег:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse url<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;showtopic=99&quot;</span> base<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;public&quot;</span> seotitle<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;my-test-topic&quot;</span> template<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;showtopic&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p>Параметр &#8220;seotitle&#8221; уже готовая строчка для использования в <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a>. Если вам хочется создать данный параметр налету для получения чего-то более дружественного, вы можете использовать такую конструкцию:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse url<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;showtopic=99&quot;</span> base<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;public&quot;</span> seotitle<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;<span style="color: #009933; font-weight: bold;">%%</span>My Test Topic<span style="color: #009933; font-weight: bold;">%%</span>&quot;</span> template<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;showtopic&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p>Дополнительный параметр &#8220;template&#8221; указывает какой шаблон стоит использовать системе при генерации ссылки. Управление данными шаблонами осуществляется в единственном файле &#8220;admin/extensions/seoUrlTemplates.php&#8221;. Ниже пример содержимого такого файла:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$templates</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
<span style="color: #666666; font-style: italic;"># APP: MEMBERS
</span><span style="color: #0000ff;">'showuser'</span>   <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'out'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'showuser=(.+?)(&amp;|$)'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'user/$1/#{__title__}$2'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
<span style="color: #0000ff;">'in'</span>         <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;/user/(\d+?)/&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'showuser'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># APP: FORUMS
</span><span style="color: #0000ff;">'showforum'</span>  <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'out'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'showforum=(.+?)(&amp;|$)'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'forum/$1/#{__title__}$2'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
<span style="color: #0000ff;">'in'</span>         <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;/forum/(\d+?)/&quot;</span>  <span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'showforum'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&nbsp;
<span style="color: #0000ff;">'showtopic'</span>  <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'out'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'showtopic=(.+?)(&amp;|$)'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'topic/$1/#{__title__}$2'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
<span style="color: #0000ff;">'in'</span>         <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;/topic/(\d+?)/&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'showtopic'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
&nbsp;
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>В примере показаны шаблон для ссылок на профиль пользователя, форумы и темы. В поле &#8216;out&#8217; показано как строить ссылки, а в поле &#8216;in&#8217; &#8211; как данные ссылки обрабатывать <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>.</p>
<p>Данные настройки позволяют вам настроить систему в соответствии с вашим представлением о ЧПУ. Авторы модификации смогут добавлять в данный файл записи (через интерфейс админцентра) необходимые для их модификаций и модулей.</p>
<p>Я ранее заметил что &#8220;template&#8221; дополнительный параметр. В случае если вы не укажете его, то <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> проверит все шаблоны и выберет подходящий. Но все же мы рекомендовали бы явно указывать шаблон, потому как это несколько ускоряет процесс обработки ссылок в системе.</p>
<p>Любые переменные, не учтенные в шаблонах, добавляются в конец <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a>, разделяя через символ подчеркивания, например, так:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">http<span style="color: #339933;">:</span><span style="color: #666666; font-style: italic;">//www.board.com/forums/topic/99/my-test-topic/_/view/getNewPost</span></pre></div></div>

<p>Данная возможность избавляет от необходимости учитывать всевозможные перестановки в файле шаблонов и при этом не терять данные.</p>
<p>Мы надеемся, что реализация данного популярного запроса поможет вам сделать более <a href="http://pronets.ru/tag/seo/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with SEO">SEO</a> форум и сделать общие ссылки более приятными!</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/urlyi/" title="URL&#039;ы" rel="tag nofollow">URL&#039;ы</a>, <a href="http://pronets.ru/tag/druzhestvennyie-urlyi/" title="Дружественные URL&#039;ы" rel="tag nofollow">Дружественные URL&#039;ы</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/url/" title="URL" rel="tag nofollow">URL</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/druzhestvennyie/" title="Дружественные" rel="tag nofollow">Дружественные</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/ipblog-ipgallery-i-ipdownloads/" title="IP.Blog, IP.Gallery и IP.Downloads (04/06/2009)">IP.Blog, IP.Gallery и IP.Downloads</a> (0)</li>
	<li><a href="http://pronets.ru/uproschenie-administrirovaniya/" title="Упрощение администрирования (04/06/2009)">Упрощение администрирования</a> (0)</li>
	<li><a href="http://pronets.ru/10-pravil-po-vyiboru-domena/" title="10 правил по выбору домена (15/06/2008)">10 правил по выбору домена</a> (0)</li>
	<li><a href="http://pronets.ru/invision-power-board/" title="Invision Power Board (28/06/2008)">Invision Power Board</a> (0)</li>
	<li><a href="http://pronets.ru/obzor-mehanizma-pometki-prochitannosti-tem/" title="Обзор механизма пометки прочитанности тем (04/06/2009)">Обзор механизма пометки прочитанности тем</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/nakonets-to-druzhestvennyie-urlyi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Улучшения системы обработки ошибок</title>
		<link>http://pronets.ru/uluchsheniya-sistemyi-obrabotki-oshibok/</link>
		<comments>http://pronets.ru/uluchsheniya-sistemyi-obrabotki-oshibok/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 21:17:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Обработка]]></category>
		<category><![CDATA[Обработка ошибок]]></category>
		<category><![CDATA[Ошибка]]></category>
		<category><![CDATA[Ошибки]]></category>
		<category><![CDATA[Система]]></category>
		<category><![CDATA[Системы]]></category>
		<category><![CDATA[Улучшение]]></category>
		<category><![CDATA[Улучшения системы]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=516</guid>
		<description><![CDATA[В любом приложении необходима система обработки ошибочных ситуаций. Чаще всего используется вывод предупреждений пользователям в случае возникновения проблемной ситуации. Хотя в большинстве случаев этого достаточно, чтобы решить проблему, в новой версии IP.Board мы решили отдать обработку ошибок так же и самой системе, чтобы попытаться сделать систему обработки ошибок более полезней.

Во-первых, мы составили список всех ошибок, [...]]]></description>
			<content:encoded><![CDATA[<p>В любом приложении необходима система обработки ошибочных ситуаций. Чаще всего используется вывод предупреждений пользователям в случае возникновения проблемной ситуации. Хотя в большинстве случаев этого достаточно, чтобы решить проблему, в новой версии <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> мы решили отдать обработку ошибок так же и самой системе, чтобы попытаться сделать систему обработки ошибок более полезней.<br />
<span id="more-516"></span></p>
<p>Во-первых, мы составили список всех ошибок, которые могут возникать в системе, систематизировали и разделили их. Отныне больше нет невразумительных описаний ошибок вроде &#8220;Извините, но некоторые необходимые файлы отсутствуют&#8221;. Сообщения об ошибках теперь более понятны конечному пользователю.</p>
<p>Во-вторых, переработав сами сообщения об ошибках, мы добавили каждой ошибке уникальный код. Коды ошибок подчиняются определенному стандарту, таким образом при создании запроса в службу поддержки вы сможете указать сопутствующие проблеме коды ошибок и наши техники смогут легко найти место и причину возникновения ошибки.</p>
<p>Ближе к выходу финальной версии <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.0 мы планируем разместить базу кодов ошибок, так что клиенты смогут легко получить дополнительную информацию о интересующих их ошибках.</p>
<p>В дополнении к этому, мы добавили и ведение журнала ошибок. По-умолчанию определенные ошибки будут записываться в журнал. В основном это ошибки связанные с безопасностью, они будут попадать в журнал в случае попыток пользователя обойти систему безопасности форума. Мы учли и тот факт, что некоторые администраторы могут захотеть журналировать больше ошибок, если вообще не все, и мы добавили настройку, включение которой позволяет записывать в журнал ошибки определенного уровня (уровни ошибок ранжируются от 1 до 5). Более того вы можете настроить опцию уведомления об ошибках определенного уровня. Это должно сделать управление вашим форумом более эффективным и более того увеличивает безопасность вашей системы, оповещая вас об ошибках, о существовании которых вы даже не подозревали (например, ошибки в сторонних модификациях). Так же данная система поможет нашим техникам выявлять проблемы уникальные именно для вашей системы.</p>
<p>Задача по очистке журналов в системе так же была обновлена, теперь она поддерживает таблицу журнала ошибок, тем самым вы можете предотвратить разрастание журнала ошибок.</p>
<p>Конечно же, у нас есть еще идеи о том, как улучшить систему обработки ошибок, чтобы она была надежным помощником как вам, так и вашим пользователям.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/obrabotka/" title="Обработка" rel="tag nofollow">Обработка</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/oshibki/" title="Ошибки" rel="tag nofollow">Ошибки</a>, <a href="http://pronets.ru/tag/obrabotka-oshibok/" title="Обработка ошибок" rel="tag nofollow">Обработка ошибок</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/oshibka/" title="Ошибка" rel="tag nofollow">Ошибка</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/uluchshenie/" title="Улучшение" rel="tag nofollow">Улучшение</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/smaylyi-v-kommentariyah/" title="Смайлы в комментариях (14/10/2008)">Смайлы в комментариях</a> (0)</li>
	<li><a href="http://pronets.ru/o-sayte/" title="О сайте (17/11/2009)">О сайте</a> (0)</li>
	<li><a href="http://pronets.ru/byistraya-pereustanovka-operatsionnoy-sistemyi-windows-za-3-minutyi/" title="Быстрая переустановка операционной системы Windows за 3 минуты (17/11/2008)">Быстрая переустановка операционной системы Windows за 3 минуты</a> (0)</li>
	<li><a href="http://pronets.ru/ipblog-ipgallery-i-ipdownloads/" title="IP.Blog, IP.Gallery и IP.Downloads (04/06/2009)">IP.Blog, IP.Gallery и IP.Downloads</a> (0)</li>
	<li><a href="http://pronets.ru/novyie-sistemyi-paroley/" title="Новые системы паролей (16/01/2009)">Новые системы паролей</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/uluchsheniya-sistemyi-obrabotki-oshibok/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обзор механизма пометки прочитанности тем</title>
		<link>http://pronets.ru/obzor-mehanizma-pometki-prochitannosti-tem/</link>
		<comments>http://pronets.ru/obzor-mehanizma-pometki-prochitannosti-tem/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 21:13:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Механизм]]></category>
		<category><![CDATA[Обзор]]></category>
		<category><![CDATA[Обзор механизма пометки прочитанности тем]]></category>
		<category><![CDATA[Пометка]]></category>
		<category><![CDATA[Прочитанность]]></category>
		<category><![CDATA[Тема]]></category>
		<category><![CDATA[темы]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=514</guid>
		<description><![CDATA[Механизм отметки тем прочтенными развивался достаточно слабо в последние годы. Однако то, что раньше считалось второстепенной возможностью, сейчас стало важной частью пользовательского опыта.

Краткая история
Механизм в первых версиях IP.Board был основан на cookies. Он работал должным образом, но не без проблем, потому что все, что связанно с работой cookies, всегда немного странно.
Ну а самый большой недуг [...]]]></description>
			<content:encoded><![CDATA[<p>Механизм отметки тем прочтенными развивался достаточно слабо в последние годы. Однако то, что раньше считалось второстепенной возможностью, сейчас стало важной частью пользовательского опыта.<br />
<span id="more-514"></span></p>
<p><strong>Краткая история</strong></p>
<p>Механизм в первых версиях <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> был основан на cookies. Он работал должным образом, но не без проблем, потому что все, что связанно с работой cookies, всегда немного странно.</p>
<p>Ну а самый большой недуг данного способа то, что прочитанные темы привязывались к конкретному компьютеру, другими словами прочитав тему на одном компьютере, а затем зайдя в форум с другого, тема будет помечена как еще не прочитанная.</p>
<p>С приходом <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2 механизм отметки тем был переведен на хранение в таблицах базы данных самого форума. Это существенно увеличило стабильность системы и позволило избавиться от привязки к определенному компьютеру.</p>
<p>Однако, данный подход привел к появлению некоторых проблем связанных с производительностью на нагруженных форумах, это объясняется тем, что частые запросы таблицы маркеров прочтения тем приводили к блокировке оной, что в свою очередь приводило к проблемам доступа и появлению очередей процессов. Кроме того, стоит заметить, что код данной системы не был разбросан по различным файлам системы и это усложняло поддержку системы в целом.</p>
<p><strong>Извлекаем опыт</strong></p>
<p>Это было очевидно, что нам необходимо централизовать весь код системы и создать простой публичный интерфейс. Так же мы хотели сделать данный интерфейс доступным для других приложений (таких как блог и галерея), чтобы избавиться от необходимости копирования кода. А делая данную систему поистине расширяемой, можно позволить авторам модификаций использовать централизованную систему без создания своей системы.</p>
<p>Немало важна и проблема производительности. Как мы можем увеличить производительность не потеряв функциональность? Самым простым решением было бы поместить прочитанные темы в пользовательскую сессию. Однако это хорошо в теории, а на практике имело ряд препятствий. Во-первых, управление сессиями в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2 не централизовано. Да был класс, но управление сессиями происходило не всегда через объект этого класса. Так файлы register.php и login.php могли беспрепятственно вносить изменения в таблицу сессий, не предупреждая остальные компоненты системы об этом. Когда вы пытаетесь сохранить данные в целостности, это недопустимо. К тому же управление сессиями далеко не точная наука. Так изменение IP адреса может привести к многократному созданию сессий за одно посещение.</p>
<p>Решение этих проблем должно быть централизованным, расширяемым и надежным.</p>
<p><strong>Так что же нового?</strong></p>
<p>Первым улучшением стало усиление обработки сессий. Весь механизм управления теперь осуществляется через единственный класс (publicSessions). Все остальные работают с сессиями через него. Это позволяет данному классу иметь полный контроль над всеми данными сессий.</p>
<p>Наибольшей проблемой было разрешение сессиям управлять данными о прочитанности тем и записью данных в базу только в случае удаления сессии. В теории это кажется простым, однако на практике все несколько запутаннее. Для технически подкованных более подробные детали приведены немного ниже.</p>
<p>В двух словах, система загружает данные о прочитанности (далее маркеры) из таблицы в базе данных при создании сессии для нового пользователя. Маркеры хранятся в сессии в месте с прочими данными. При каждом просмотре страницы данные сессии обновляются (время выполнения, местонахождения пользователя и т.п). Это продолжается до тех пор, пока сессию не нужно будет удалить, например, в случае неактивности пользователя и истечения времени жизни сессии. Сессия, приговоренная к удалению, передается другим классам на проверку. Однако, так как cookies ограничены по размеру, хранятся только последнее 100 прочтенных тем.</p>
<p>В результате имеем простую систему, которая должна быть более эффективна нежели свой предшественник и предоставлять очень простой публичный интерфейс для разработчика. Ниже немного кода, что бы вы оценили, то что мы сделали:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># Для отметки сущности прочтенной (в данном примере сущность это тема форума)
</span><span style="color: #000088;">$itemMarking</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">markRead</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'forumID'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'topicID'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">10</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Проверка статуса сущности
</span><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$itemMarking</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isRead</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'forumID'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'itemID'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">99</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'itemLastUpdate'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">1200098989</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #339933;">===</span> <span style="color: #009900; font-weight: bold;">TRUE</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #339933;">....</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Получение последней даты когда сущность была отмечена прочтенной
</span><span style="color: #000088;">$lastMarked</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$itemmarking</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetchTimeLastMarked</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'forumID'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'itemID'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">99</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Авторы модификации смогут использовать новую систему в своих плагинах.</p>
<p><strong>А теперь обещанная техническая часть.</strong></p>
<p>Для тех кто технически подкован данная часть описывает принципы работы системы в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.0.0</p>
<p>Первой проблемой было правильное использование __construct и __destruct в PHP5. Это было легко для __construct, который как и положенно запускался при инициализации объекта класса. Так что с ним проблем не возникло. Класс системы отслеживания статуса прочитанности тем получает и обрабатывает данные из cookies, а так же получает и обрабатывает данные из сессий в __construct.</p>
<p>Реальная же проблема была с __destruct. Вернее в порядке вызова оных. В PHP 5.0.0 и до PHP 5.2.4 данные деструкторы вызывались в порядке создания объектов. Из-за этого объект DB уничтожался раньше объекта classItemMarking, тем самым препятствуя работе с базой в деструкторе classItemMarking. В PHP 5.2.5 ситуация изменилась и деструкторы вызываются в обратном порядке. Таким образом использование деструкторов не позволяет сделать наше решение надежным на разных платформах, пришлось искать иное решение.</p>
<p>К счастью register_shutdown_function() запускается перед всеми __destruct потому мы использовали ее. Существует __myDestruct метод в ipsRegistry, который вызывает все __myDestruct() методы в классах потомках (DB, Member, Request, Cache, Settings и т.п.). Таким образом запускается собственный (ручной) деструктор в itemMarking, что позволяет сохранить все данные для удаляемых сессий и предоставить информацию для обновления сессии.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/obzor/" title="Обзор" rel="tag nofollow">Обзор</a>, <a href="http://pronets.ru/tag/mehanizm/" title="Механизм" rel="tag nofollow">Механизм</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/pometka/" title="Пометка" rel="tag nofollow">Пометка</a>, <a href="http://pronets.ru/tag/prochitannost/" title="Прочитанность" rel="tag nofollow">Прочитанность</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/byistroe-sozdanie-temyi-i-oprosa/" title="Быстрое создание темы и опроса в 2.0.х (14/03/2009)">Быстрое создание темы и опроса в 2.0.х</a> (0)</li>
	<li><a href="http://pronets.ru/tegi-shablonov-perezagruzka/" title="Теги шаблонов, перезагрузка (04/06/2009)">Теги шаблонов, перезагрузка</a> (0)</li>
	<li><a href="http://pronets.ru/prochie-vozmozhnosti/" title="Прочие возможности (04/06/2009)">Прочие возможности</a> (0)</li>
	<li><a href="http://pronets.ru/upravlenie-zablokirovannyimi-polzovatelyami/" title="Управление заблокированными пользователями (04/06/2009)">Управление заблокированными пользователями</a> (0)</li>
	<li><a href="http://pronets.ru/uproschenie-administrirovaniya/" title="Упрощение администрирования (04/06/2009)">Упрощение администрирования</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/obzor-mehanizma-pometki-prochitannosti-tem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обновление стиля</title>
		<link>http://pronets.ru/obnovlenie-stilya/</link>
		<comments>http://pronets.ru/obnovlenie-stilya/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 21:09:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Обновление]]></category>
		<category><![CDATA[Обновление стиля]]></category>
		<category><![CDATA[стили]]></category>
		<category><![CDATA[Стиль]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=512</guid>
		<description><![CDATA[В данной записи речь пойдет речь об обновлениях в новом стиле IPB 3. В предыдущей заметке я не расписывал особенности самого стиля, а описал новые стандарты верстки стиля и некоторые цели к которым мы стремимся при разработке пользовательского интерфейса. Настало время поговорить и о самом стиле.
Не смотря на то что другие наши записи содержат глубокое [...]]]></description>
			<content:encoded><![CDATA[<p>В данной записи речь пойдет речь об обновлениях в новом стиле <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 3. В предыдущей заметке я не расписывал особенности самого стиля, а описал новые стандарты верстки стиля и некоторые цели к которым мы стремимся при разработке пользовательского интерфейса. Настало время поговорить и о самом стиле.</p>
<p>Не смотря на то что другие наши записи содержат глубокое описание какой-то конкретной возможности, в данной заметке я опишу сразу нескольких вещей, которые мы воплотили в новом интерфейсе <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.</p>
<p><span id="more-512"></span></p>
<h4>Всплывающие окна</h4>
<p> </p>
<p>Мы приняли решение отказаться от всплывающих окон в IPB3. Дело в том, что они создавали ряд пробелм: никто не гарантирует что пользователь увидит подобное окно из-за всевозможных блокировщиков всплывающих окон и, во-вторых доступ в интернет сейчас происходит с огромного множества разнообразных устройств и не гарантировано что они нормально поддерживает подобные окна.</p>
<p>Вместо этого мы перешли к использованию ajax-populated окон, избавленных от перечисленных выше недостатков. В случае если браузер не поддерживает таковых пользователю будет просто показана обычная страница с содержимым окна. Данные изменения коснулись в первую очередь возможностей по управлению друзьями и предупреждениями (для модераторов).</p>
<p> </p>
<h4>Не навязчивый Javascript</h4>
<p> </p>
<p>Идя рука об руку с предыдущим желанием сделать содержимое <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> доступным для всевозможного парка устройств мы захотели сделать его доступным и в случае если у вас отключен javascript. По существу мы постарались добиться того что бы любая возможность была доступна и работала даже без javascript. Конечно же не обошлось и без исключений, например редактор сообщений (хотя возможность отправки сообщений осталась, но вместо редактора простое текстовое поле), но в целом мы на пути к тому что бы IPB3 была более доступной нежели IPB2.</p>
<p> </p>
<h4>Получение информации о пользователе</h4>
<p> </p>
<p><a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> содержит множество информации о каждом пользователе, но в настоящее время быстрый доступ к ней достаточно сложен, так вам необходимо перейти на отдельную страницу профиля тем самым поменяв текущую страницу. В <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 3 пользовательская карточка доступна сразу в большинстве мест; когда вы видите имя пользователя просто наведите мышку и вы получите всю касающуюся данного пользователя информацию, включая фотографию, контакты и репутацию. Данная функция реализована так, что авторы модификаций и дизайнеры могут очень легко использовать ее в своих продуктах. Мы также добавили bbкод, который позволяет генерировать такие ссылки прямо в сообщениях.</p>
<p> </p>
<h4>Улучшенная загрузка файлов</h4>
<p> </p>
<p>В прошлом нас довольно часто просили сделать <strong>НАСТОЯЩУЮ множественную загрузку файлов</strong>. Вы будете приятно удивлены тем что нам окончательно удалось интегрировать SWFUpload в IPB3 для серверов, которые ее поддерживают (а таких должно быть большинство). Для тех кто не знаком с данным инструментом поясню, он позволяет в диалоге выбора файлов для загрузки выбирать сразу несколько файлов. Другое классное улучшение это поддержка прогресс-баров без дополнительного серверного обеспечения! Ну и в добавок при загрузке изображения его уменьшенная копия будет видна сразу, что позволит вставить изображение в сообщение именно в том месте где вы хотите.</p>
<p> </p>
<h4>Поиск</h4>
<p> </p>
<p>Форма поиска и страница результатов были полностью перерисованы. Это стало необходимым после того как сам поисковый механизм <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 подвергся значительным изменениям. Результатом стала форма поиска которая адаптирует список фильтров поиска в зависимости от приложения для которого осуществляется поиск. Страница результатов содержит все совпадения во всех приложениях, но так же оставляет возможность просмотреть результаты только для отдельного приложения. И наконец множественные результаты из одного объекта (например несколько сообщений из одной темы) группируются вместе, тем самым упрощая восприятия результатов.</p>
<p> </p>
<h4>Прочие важные улучшения</h4>
<p> </p>
<p>Тогда как почти каждая страница в <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 3 была переверстана с нуля и улучшена некоторые области форума подверглись большим изменениям. Я опишу их вкратце что бы вы знали что ожидать от нашей будущей премьеры стиля:</p>
<ul>
<li><strong>Улучшенный список форумов</strong><br />
Одним из первых шагов, который я сделал при разработке нового стиля, был анализ каждой значимой страницы и выявления на сколько возможно сделать ее более полезной, нежели чем сейчас. Одним из результатов такого процесса и стало улучшение списка форумов &#8211; и не маловажную роль в этом сыграла и новая система хуков. Теперь список форумов содержит убирающуюся боковую панель, содержащую в себе существенную информацию такую как последние темы, топ авторов и другие. И как и следовало ожидать, благодаря своей хук-ориентированной природе, авторы модификаций смогут легко добавлять собственную информацию в данную панель.</li>
<li><strong>Пользовательская панель управления</strong><br />
Панели управления уделялось особое внимание с самого начала. Мы точно знали что удалим управление личными сообщениями из пользовательской панели, так как оно явно не соответствует концепции панели. А все что осталось подверглось переоформлению: настройки выделены в секции, представлены в виде табов, меню соответствует конкретной секции &#8211; что должно облегчить новым пользователям работу с панелью управления.</li>
<li><strong>Управление личными сообщениями</strong><br />
Как было упомянуто выше, управление личными сообщениями происходит теперь в отдельном разделе.</li>
<li><strong>Пользовательские профили</strong><br />
Профили так же были переоформлены, вдохнув в них все то что пользователи ждут от популярных социальных сетей. Одной из новых возможностей профиля, которая нам очень нравится, стал блок последних действий пользователя, он позволяет вам увидеть какой контент недавно создал пользователь, будь то темы или сообщения, события в календаре, изображения и прочее.</li>
</ul>
<p> </p>
<h4>Медиа тег</h4>
<p> </p>
<p>Мы добавили новый [media] BBКод тег, который позволит вставлять любые виды медиа контента прямо в сообщение. Так, если вы вставите ссылку на YouTube в данный тег, то в сообщении появится YouTube медиа плеер, если ссылку на Flickr &#8211; слайд-шоу Flickr. Новые обработчики медиа источников, которые мы не поддерживаем изначально, могут быть легко добавлены в администраторской панеле, и они так же будут доступны через тег [media].</p>
<p> </p>
<h4>Быстрые Личные Сообщения</h4>
<p> </p>
<p>Последней возможностью о которой стоит упомянуть в этом обзоре будет реализованная нами возможность быстрого личного сообщения. Она позволяет вам отправить личное сообщение пользователю не покидая страницу, на которой вы в данный момент находитесь. На наш взгляд это должно увеличить персональное общение между пользователями, и уменьшить количество оффтопика в темах.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/obnovlenie/" title="Обновление" rel="tag nofollow">Обновление</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/stili/" title="стили" rel="tag nofollow">стили</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/stil/" title="Стиль" rel="tag nofollow">Стиль</a>, <a href="http://pronets.ru/tag/obnovlenie-stilya/" title="Обновление стиля" rel="tag nofollow">Обновление стиля</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/upravlenie-yazyikami/" title="Управление языками (04/06/2009)">Управление языками</a> (0)</li>
	<li><a href="http://pronets.ru/problemyi-servera/" title="Проблемы сервера (30/06/2008)">Проблемы сервера</a> (0)</li>
	<li><a href="http://pronets.ru/sistema-reputatsii/" title="Система репутации (04/06/2009)">Система репутации</a> (0)</li>
	<li><a href="http://pronets.ru/umenshenie-razmera-bazyi-dannyih/" title="Уменьшение размера базы данных (30/06/2008)">Уменьшение размера базы данных</a> (0)</li>
	<li><a href="http://pronets.ru/ipblog-ipgallery-i-ipdownloads/" title="IP.Blog, IP.Gallery и IP.Downloads (04/06/2009)">IP.Blog, IP.Gallery и IP.Downloads</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/obnovlenie-stilya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Такой новый модуль вывода</title>
		<link>http://pronets.ru/takoy-novyiy-modul-vyivoda/</link>
		<comments>http://pronets.ru/takoy-novyiy-modul-vyivoda/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 21:05:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Вывод]]></category>
		<category><![CDATA[модуль]]></category>
		<category><![CDATA[Новый]]></category>
		<category><![CDATA[Новый метод вывода]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=510</guid>
		<description><![CDATA[Возвращаясь к тем первым дням когда мы проектировали IP.Board 3, нашей первостепенной задачей было переписать модуль вывода системы для добавления новых возможностей и увеличения расширяемости оного.

Так мы выводили раньше&#8230;
 
В IP.Board 2.x использовался образный &#8220;модуль&#8221; вывода, построенный на основе нескольких методов класса. Не было никакой реально связанной структуры с множеством различных файлов и функций доступа к [...]]]></description>
			<content:encoded><![CDATA[<p>Возвращаясь к тем первым дням когда мы проектировали <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3, нашей первостепенной задачей было переписать модуль вывода системы для добавления новых возможностей и увеличения расширяемости оного.</p>
<p><span id="more-510"></span></p>
<h4>Так мы выводили раньше&#8230;</h4>
<p> </p>
<p>В <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2.x использовался образный &#8220;модуль&#8221; вывода, построенный на основе нескольких методов класса. Не было никакой реально связанной структуры с множеством различных файлов и функций доступа к методам стиля. Мы решили переписать нашу систему вывода. Более того, мы решили не привязываться к какому-либо определенному формату вывода. В то время когда <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2 был написан, не было iPhone и идея посещения форума с мобильного устройства казалась утопичной. Но времена меняются.</p>
<p> </p>
<h4>&#8230;а так сейчас</h4>
<p> </p>
<p>На первый взгляд новая система не сильно отличается от того что было в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2. Первое изменение в новой системе &#8211; не ограниченная глубина для стилей потомков. В <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2 вы могли создать только потомков первого уровня, что было ощутимым ограничением для некоторых разработчиков. Так же в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2 был единственный мастер стиль, от которого наследовали все остальные.</p>
<p>В <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.0 по прежнему единственный &#8220;мастер&#8221; стиль, однако вместо него вы можете устанавливать различные &#8220;корневые&#8221; стили, от которых будут наследовать стили потомков. Это улучшение дает существенную гибкость при работе с системой.Так же в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 каждый стиль имеет несколько CSS файлов, которые должны иметь строгий порядок загрузки, для составления правильного каскада стилей, данный порядок устанавливается через админцентр.</p>
<p>В новой версии каждый стиль имеет права доступа для групп, что позволяет вам настраивать какие группы могут видеть и использовать стиль.И наконец гости теперь могут менять стиль (конечно если вы им это разрешите!)</p>
<p> </p>
<h4>Погружаемся глубже: User Agent&#8217;ы</h4>
<p> </p>
<p><a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> приобрел совершенно новую систему работы с user-agent, в ней вы можете добавлять новые user-agent&#8217;ы и группировать уже существующие. Данная система используется для &#8220;системы определения поисковых роботов&#8221;.</p>
<p>Это так же означает, что теперь вы можете задавать стили в зависимости от user agent&#8217;а. Например, это полезно в случае, если вы хотите назначить специальный стиль для посетителей, использующих iPod touch и iPhone. Если уже совсем нечем заняться, то вы можете назначить собственный стиль фактически каждому user agent&#8217;у. Это может быть полезно, если вы, например, хотите воспользоваться всеми преимуществами браузера Firefox 3 или IE 8. Как вы видите система позволяет не только определять user agent пользователя, но и ранжировать версии.</p>
<p> </p>
<h4>На запредельной глубине: Форматы вывода</h4>
<p> </p>
<p>Огромнейшим изменением в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> новой версии стало введение возможности управления несколькими форматами вывода. Под этим мы подразумеваем, что <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> приобрел надстроечную архитектуру (поддерживающую расширения) системы вывода, позволяющую совершенно разделено осуществлять вывод в HTML, XML и даже WAP. Данная система полностью расширяемая, что означает, что авторы модификаций смогут легко создавать свои обработчики вывода и легко подключать их для незамедлительного использования.</p>
<p>У каждого стиля появилась настройка в каком формате необходимо его выводить. Таким образом вы можете иметь совершенно различные наборы стилей для XML и HTML, что дает вам еще большую гибкость.Так же существует поддержка &#8220;gateway&#8221; файла, который выводит данные в определенном формате. В <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 таких gateway файлов будет два. &#8220;index.php&#8221; который выдает HTML и &#8220;xml.php&#8221; соответственно в формате XML.</p>
<p> </p>
<h4>Собирая все вместе</h4>
<p> </p>
<p>Теперь можно реализовать следующие: Вам необходима поддержка WAP реализованная с использованием XML и XLST шаблонов специально для телефонов Nokia. Готово, готово и еще раз готово. И все без каких либо модификаций с использованием PHP.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/novyiy/" title="Новый" rel="tag nofollow">Новый</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/vyivod/" title="Вывод" rel="tag nofollow">Вывод</a>, <a href="http://pronets.ru/tag/modul/" title="модуль" rel="tag nofollow">модуль</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/novyiy-metod-vyivoda/" title="Новый метод вывода" rel="tag nofollow">Новый метод вывода</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/ispolzovanie-smaylov-pri-zamene-netsenzurnyih-slov/" title="Использование смайлов при замене нецензурных слов (14/10/2008)">Использование смайлов при замене нецензурных слов</a> (0)</li>
	<li><a href="http://pronets.ru/reviziya-sistemyi-bbcode/" title="Ревизия системы BBCode (04/06/2009)">Ревизия системы BBCode</a> (0)</li>
	<li><a href="http://pronets.ru/rasshiryaya-mehanizmyi-avtorizatsii/" title="Расширяя механизмы авторизации (04/06/2009)">Расширяя механизмы авторизации</a> (0)</li>
	<li><a href="http://pronets.ru/css_classic/" title="Гид по CSS (Classic Skin) (25/07/2008)">Гид по CSS (Classic Skin)</a> (0)</li>
	<li><a href="http://pronets.ru/problemyi-servera/" title="Проблемы сервера (30/06/2008)">Проблемы сервера</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/takoy-novyiy-modul-vyivoda/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Система репутации</title>
		<link>http://pronets.ru/sistema-reputatsii/</link>
		<comments>http://pronets.ru/sistema-reputatsii/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 21:02:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Репа]]></category>
		<category><![CDATA[Репутация]]></category>
		<category><![CDATA[Система]]></category>
		<category><![CDATA[Система репутации]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=507</guid>
		<description><![CDATA[Одной из наиболее запрашиваемых возможностей для форума за последние несколько лет была система репутации. Мы готовы сообщить, что в IP.Board 3 она будет! Мы очень переживаем за публикацию детальной информации о ней и надеемся, что вам новая возможность понравится!

Репутация пользователя будет отображаться в его профиле и основана на количестве очков, которые он имеет. Вы можете [...]]]></description>
			<content:encoded><![CDATA[<p>Одной из наиболее запрашиваемых возможностей для форума за последние несколько лет была система репутации. Мы готовы сообщить, что в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 она будет! Мы очень переживаем за публикацию детальной информации о ней и надеемся, что вам новая возможность понравится!</p>
<p><span id="more-507"></span></p>
<p>Репутация пользователя будет отображаться в его профиле и основана на количестве очков, которые он имеет. Вы можете настраивать уровни репутации через админцентр. Уровень включает в себя текст или изображение, которое несет в себе количество очков, которое необходимо для того или иного уровня. Число может быть отрицательным или положительным, таким образом вы можете создать систему уровней репутации как, например, эту:</p>
<ul>
<li>-50 второй отрицательный уровень</li>
<li>-25 первый отрицательный уровень</li>
<li>0 нормальный уровень</li>
<li>25 первый положительный уровень</li>
<li>50 второй положительный уровень</li>
</ul>
<p>Пользователь получает или теряет очки, когда другие пользователи ставят ему «плюс» или «минус» за то или иное сообщение, которое он опубликовал на форуме. Сообщения на форуме, изображения в галерее, записи в блоге и т.д., все будет иметь кнопки плюса и минуса, которые могут использовать ваши пользователи, чтобы отметить автора того или иного материала. Эта система полностью модульная, что означает, что авторы модификаций легко могут добавлять репутацию к своим приложениям.</p>
<p>Форум включает фильтры для просмотра или скрытия сообщений с тем или иным рейтингом. Таким образом, вы можете выбрать, например, возможность скрывать все сообщения с рейтингом ниже -25. Эту систему хорошо использовать как функцию игнорирования ненужных сообщений. Она также полезна для определения действительно полезных сообщений, которые будут «выделены», благодаря высокому рейтингу, например более, чем X очков.</p>
<p>У системы также есть несколько конфигурационных опций для тонкой настройки. Вы можете выбрать права для ваших пользователей, например, только для раздачи «плюсов», или наоборот, «минусов». Вы можете выбрать уровень оценки, при которой материал будет «выделен» (подсвечен), исключить из системы репутации нужные группы пользователей, настроить опцию отображения репутации в профиле, а также указать полное значение репутации, которое показывается в сообщениях (и другом типе материалов с репутацией). Вы также имеете возможность задать ограничение на количество оценок (плюсов и минусов), которые разрешено ставить за 24 часа.</p>
<p>Мы надеемся, что вам будет полезна эта новая система репутации.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/sistema/" title="Система" rel="tag nofollow">Система</a>, <a href="http://pronets.ru/tag/sistema-reputatsii/" title="Система репутации" rel="tag nofollow">Система репутации</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/repa/" title="Репа" rel="tag nofollow">Репа</a>, <a href="http://pronets.ru/tag/reputatsiya/" title="Репутация" rel="tag nofollow">Репутация</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/chmod-na-faylyi-i-papki-ipb/" title="CHMOD на файлы и папки IPB (30/06/2008)">CHMOD на файлы и папки IPB</a> (0)</li>
	<li><a href="http://pronets.ru/lichnyie-besedyi/" title="Личные беседы (04/06/2009)">Личные беседы</a> (0)</li>
	<li><a href="http://pronets.ru/priotkryivaya-zavesu-nad-ipsregistry/" title="Приоткрывая завесу над ipsRegistry (04/06/2009)">Приоткрывая завесу над ipsRegistry</a> (0)</li>
	<li><a href="http://pronets.ru/uluchsheniya-sistemyi-obrabotki-oshibok/" title="Улучшения системы обработки ошибок (04/06/2009)">Улучшения системы обработки ошибок</a> (0)</li>
	<li><a href="http://pronets.ru/windows-7-pervyie-svedeniya-o-novoy-sisteme/" title="Windows 7 &#8211; первые сведения о новой системе (16/01/2009)">Windows 7 &#8211; первые сведения о новой системе</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/sistema-reputatsii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Дополнения и хаки</title>
		<link>http://pronets.ru/dopolneniya-i-haki/</link>
		<comments>http://pronets.ru/dopolneniya-i-haki/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 21:00:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Дополнение]]></category>
		<category><![CDATA[Дополнения]]></category>
		<category><![CDATA[Дополнения и хуки]]></category>
		<category><![CDATA[Хак]]></category>
		<category><![CDATA[хаки]]></category>
		<category><![CDATA[Хук]]></category>
		<category><![CDATA[Хуки]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=505</guid>
		<description><![CDATA[Готов поспорить, что многие из вас ждали эту запись. Однако мы хотели быть уверены в том, что большая часть системы реализована прежде чем описывать ее. И вот теперь когда система завершена, мы готовы описать ее!

Общее представление
 
Во-первых, давайте дадим определение термину хук (&#8221;hook&#8221;), который будет использовать в данной записи. Итак, хук &#8211; это точка выполнения стороннего [...]]]></description>
			<content:encoded><![CDATA[<p>Готов поспорить, что многие из вас ждали эту запись. Однако мы хотели быть уверены в том, что большая часть системы реализована прежде чем описывать ее. И вот теперь когда система завершена, мы готовы описать ее!</p>
<p><span id="more-505"></span></p>
<h4>Общее представление</h4>
<p> </p>
<p>Во-первых, давайте дадим определение термину хук (&#8221;hook&#8221;), который будет использовать в данной записи. Итак, хук &#8211; это точка выполнения стороннего кода, в ней происходит вызов и выполнение кода автора модификации и возврат к исполнению основного кода <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>. Дополнение (&#8221;plugin&#8221;) &#8211; это набор хуков (т.е. модификация может содержать несколько хуков из 2 или 3 файлов, но мы все равно ее будем считать единой модификацией, которую и будем называть дополнением).</p>
<p><a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3, как и обещалось, будет использовать новую систему хуков и дополнений для авторов модификаций. Сама система относительно всесторонняя, без большого количества &#8220;точек хуков&#8221; (места вызова стороннего кода, вручную вставляемые в исходные файлы), потому что это в конечном счете потребовало бы сложного обслуживания бесконечных запросов &#8220;могли бы Вы добавлять точку хука в xyz местоположение&#8221;. Мы хотели предоставить с форумом решение, которое было бы расширяемым, которым легко было бы управлять и поддерживать, и которое бы удовлетворяло большинству нужд разработчиков без необходимости изменения исходного кода ядра. В то же время во время разработки новой системы хуков мы осознали, что не можем и не хотим сложить всю ответственность за модифицирование на систему шаблонов. И хотя, вероятно, изменить стиль намного проще, чем исходный код файла, полный перенос ответственности не решит проблему, над которой мы упорно работаем. Конечная цель, конечно, предоставить вам возможность улучшать ваши форумы вообще без изменения исходных файлов. Более того, это сделает простым обновление, так как вам больше не надо будет переустанавливать модификации, более простой станет поддержка, так как мы сможем просто отключить ваши хуки, без необходимости проверять все файлы на наличие изменений, ну и конечно же вам не надо будет тратить по 30 минут на добавление кода модификаций в код форума по инструкции для установки оной.</p>
<p> </p>
<h4>Работа системы хуков и дополнений для конечных пользователей</h4>
<p> </p>
<p>Добавлена новая страница в администраторской панели для управления хуками, на ней выводится список всех установленных в системе хуков. С этой страницы вы легко можете отключать и включать хуки, а так же определять порядок выполнения их (хотя в большинстве случаев это не имеет значения, опция существует для тех случаев, когда один плагин должен внедрить свой хук в другой плагин). Так же на данной странице вам будет доступна информация, которую предоставил автор, о самом дополнении (такая как имя автора, email адрес и его сайт, а так же все файлы принадлежащие данному дополнению), вы сможете проверить соответствие вашей системы минимальным/максимальным версиям PHP и <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a>, которые необходимы для работы хука. Хук система так же поддерживает механизм обновления с использованием <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a> проверки версии, таким образом автор может оповещать вас о выходе новой версии мода.</p>
<p>Для установки хука вам просто необходимо загрузить XML файл через админцентр! Система хуков по принципам близка к популярной модификации Universal Mod Installer для ранних версий <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>, она так же запускает необходимые запросы для базы данных, импортирует настройки, языки, шаблоны стиля, модули, задачи, файлы помощи пользовательской и администраторской частей. Так же процесс установки хука поддерживает исполнение дополнительных скриптов, которые бывают необходимы в случае если процессу установки необходимо выполнить действия, которые не поддерживаются в самой системе установки хука. Аналогично, при удалении хука все изменения автоматически отменяются, а дополнительный скрипт производит дополнительную очистку, если это необходимо.</p>
<p>Все действительно так просто. Импортируете XML файл и сразу же видите изменения в своей системе.</p>
<p> </p>
<h4>Работа системы хуков и дополнений на системном уровне</h4>
<p> </p>
<p>При импортировании хуков в админцентре сами хуки кеширутся в директорию /hooks. Система использует хуки, которые зарегистрированы через админцентр, это позволяет предотвратить утечку ресурсов, которая может произойти при попытке использовать хуки, не существующие в данный момент в системе.В <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 введено три типа хуков:</p>
<ul>
<li>Перегрузчики действий (Action overloaders)</li>
<li>Перегрузчики стилей (Skin overloaders)</li>
<li>Хуки шаблонов (Template hooks)</li>
</ul>
<p>Перегрузчики действий позволяют вам расширять файлы действий, что позволяет сделать фактически все, что вы только можете представить. Примером данного расширения может быть изменение файла главной страницы форума (списка форумов): вы добавляете дополнительную информацию для вывода к $this-&gt;output, а затем вызываете parent::doExecute() для того, чтобы позволить <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> закончить загрузку списка форумов с вашими изменениями. Или вы можете изменить исходный файл таким образом, чтобы после отправки формы дополнительные данные сохранялись в базе. Большинство методов в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> объявлены как protected, поэтому вы будете иметь полный доступ к ним в ваших расширяющих классах.</p>
<p>Перегрузчики стилей работают аналогично перегрузчикам действий, с той лишь разницей, что расширяется файл стиля. Хорошим примером того, для чего вам возможно будет необходимо использовать данный тип хуков &#8211; полное изменение шаблона содержимого, если пользователь попадает под какие-то условия или, например, если вы хотите избавить администратора от внесения изменения в шаблоны.И, наконец, хуки шаблонов. Во время вывода контента, если ваш хук включен, он исполняется, и HTML комментарий заменяется данными, поступившими из вашего хука. Перед и после каждого цикла foreach, конструкции if, и конструкции else, добавляются HTML комментарии в HTML выдаче (автоматически при помощи нашей системы стилей) с определенным синтаксисом . Вы регистрируете ваш хук шаблона в админцентре указывая в каком стиле вам необходимо применить данный хук. Во время вывода контента, если ваш хук включен, он исполняется и HTML комментарий заменяется данными, поступившими, из вашего хука.В целом, новая система предоставляет методы для инъекции кода в исходный код и в результаты вывода. Что покрывает основную часть необходимых для разработчика областей.</p>
<p>Мы планируем предоставить несколько примеров с выходом IP.Gallery, IP.Blog и IP.Downloads. Я не буду раскрывать подробности сейчас, но некоторые вещи, которые наши пользователи просили реализовать нас и в реализации которых мы отказывали по причине необходимости изменять исходный код <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>, теперь стали возможными, что позволило сделать интеграцию наших продуктов более плотной на сколько это возможно.</p>
<p> </p>
<h4>Работа хуков и дополнений для разработчиков</h4>
<p> </p>
<p>В панеле администратора вы создаете новое дополнение, заполняете несколько базовых полей такие как автор, название дополнения и сайт. Затем создаете файлы хуков и в форме создания нового дополнения выбираете какие файлы являются частью дополнения (количество файлов не ограничено). И дальше пишете модификацию как обычно.</p>
<p> </p>
<p>При экспортировании плагина вы в интерактивном режиме настраиваете системные настройки, группы настроек, языковые конструкции, шаблоны стиля, модули, файлы помощи, дополнительные скрипты установки/удаления, задачи и изменения в базе данных. Если вы уже использовали universal mod installer, наша система будет похожа на него, с главным отличием, что вы настраиваете эти детали в интерактивном режиме, а не ручной правкой XML файла.И, наконец, когда вы экспортируете хук, ваш код собирается и добавляется в XML файл. Процесс импорта хука заботится о создании кеша кода в системе и импортирования всех данных, которые вы настроили при экспорте дополнения.</p>
<p> </p>
<h4>В заключении</h4>
<p> </p>
<p>Перед началом написания данной записи мы попробовали создать 5 различных популярных модификаций, чтобы убедиться что мы сможем реализовать каждую из этих модификаций без внесения правок в исходный код <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 &#8211; и мы прошли данный тест. Мы планируем предоставить больше информации по системе для разработчиков ближе к выходу <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3, чтобы помочь им изучить новую систему.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/dopolneniya-i-huki/" title="Дополнения и хуки" rel="tag nofollow">Дополнения и хуки</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/huk/" title="Хук" rel="tag nofollow">Хук</a>, <a href="http://pronets.ru/tag/haki/" title="хаки" rel="tag nofollow">хаки</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/hak/" title="Хак" rel="tag nofollow">Хак</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/dopolnenie/" title="Дополнение" rel="tag nofollow">Дополнение</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/uluchsheniya-sistemyi-obrabotki-oshibok/" title="Улучшения системы обработки ошибок (04/06/2009)">Улучшения системы обработки ошибок</a> (0)</li>
	<li><a href="http://pronets.ru/obnovlenie-stilya/" title="Обновление стиля (04/06/2009)">Обновление стиля</a> (0)</li>
	<li><a href="http://pronets.ru/esli-ne-rabotaet-ssyilka-udalit-ustanovlennyie-forumom-cookies/" title="Если не работает ссылка &#8220;Удалить установленные форумом cookies&#8221; (22/03/2009)">Если не работает ссылка &#8220;Удалить установленные форумом cookies&#8221;</a> (0)</li>
	<li><a href="http://pronets.ru/faq-po-ipboard/" title="FAQ по IP.Board (05/07/2009)">FAQ по IP.Board</a> (0)</li>
	<li><a href="http://pronets.ru/sozdanie-rezervnyih-kopiy-bazyi-dannyih/" title="Создание резервных копий базы данных (30/06/2008)">Создание резервных копий базы данных</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/dopolneniya-i-haki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Система жалоб на сообщения</title>
		<link>http://pronets.ru/sistema-zhalob-na-soobscheniya/</link>
		<comments>http://pronets.ru/sistema-zhalob-na-soobscheniya/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 20:57:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Жалоба]]></category>
		<category><![CDATA[Жалобы]]></category>
		<category><![CDATA[Жалобы на сообщение]]></category>
		<category><![CDATA[Система]]></category>
		<category><![CDATA[Система жалоб]]></category>
		<category><![CDATA[Система жалоб на сообщения]]></category>
		<category><![CDATA[Сообщение]]></category>
		<category><![CDATA[Сообщения]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=503</guid>
		<description><![CDATA[Управление жалобами о сообщениях в IP.Board 2, а так же система жалоб в наших других приложениях для IP.Board 2 были децентрализованы. Когда пользователь сообщает о неуместном контенте, модераторы, которые управляют данным разделом, получают либо приватное сообщение, либо сообщение на email, уведомляющее о ненадлежащем контенте. Очевидно достаточно сложно отследить, кто проверил данную жалобу и выполнил какие-либо [...]]]></description>
			<content:encoded><![CDATA[<p>Управление жалобами о сообщениях в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2, а так же система жалоб в наших других приложениях для <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2 были децентрализованы. Когда пользователь сообщает о неуместном контенте, модераторы, которые управляют данным разделом, получают либо приватное сообщение, либо сообщение на email, уведомляющее о ненадлежащем контенте. Очевидно достаточно сложно отследить, кто проверил данную жалобу и выполнил какие-либо действия.<br />
<span id="more-503"></span></p>
<p>Luke создал дополнение для <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2, которое позволяло собирать подобные жалобы в едином для просмотра всеми модераторами и администраторами месте. Данное дополнение было так замечательно воспринято пользователями (и по нашему мнению, являлось достаточно необходимым), что мы (конечно же с его разрешения) внедрили его модернизированную систему жалоб в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.</p>
<p>Для тех, кто уже работал с данной модификацией, данное описание не откроет ничего нового, для остальных же мы подготовили небольшое описание того, как данная система работает.</p>
<p>Во-первых, весь контент, на который поступила жалоба(ы) добавляется в централизованное хранилище, доступное для модераторов. Разделение прав модераторов в данном хранилище так же учитывается, так модераторы галереи, не имеющие доступа к модерированию форумов, не увидят контент с форумов и наоборот. Доступ всех модераторов к централизованному хранилищу жалоб позволяет последним легко отслеживать необработанные жалобы. Более того, на странице новой системы действует мульти-модерация, таким образом вы можете легко подчищать жалобы или менять статусы сразу нескольким жалобам за раз.</p>
<p>Статусы и уровни важности позволят вам выделить жалобы, нуждающиеся в немедленном реагировании. Вы можете настроить уровни важности привязав их к количеству жалоб на контент и привязав к возрасту жалобы (так более старые жалобы будут подсвечиваться, как требующие большего внимания). Есть возможность присвоения конкретному уровню важности своей иконки. Сами жалобы имеют стандартные статусы &#8220;открыта&#8221;, &#8220;закрыта&#8221; и &#8220;активна&#8221;, и вы можете сами добавлять дополнительные статусы по своему желанию.</p>
<p>Модераторы так же смогут комментировать жалобу, позволяя им (и, конечно, вам) оставлять заметки другим модераторам о том, что было сделано. Комментарии не могут быть удалены модераторами.Когда несколько пользователей сообщают о ненадлежащем контенте и в системе уже содержится активная жалоба на данный контент, все последующие жалобы сохраняются вместе с первой. И как мы уже рассказывали ранее, множественные жалобы могут завязываться на определенные уровни важности, что позволит вам быстрее находить вещи, требующие быстрого разрешения.</p>
<p>Новая система все также может быть настроена на отправку уведомлений о жалобе через приватные сообщения или email. Для модераторов вверху страницы добавлен индикатор, показывающий количество активных жалоб (доступных ему), так же индикатор (уже другой) выводится модератору при просмотре самого контента, на который поступила жалоба.</p>
<p>В дополнении, если вы использовали модификацию Luke&#8217;а на старом форуме, то при обновлении на <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 существующие жалобы перенесутся.Мы надеемся, что добавление этой возможности поможет администраторам и модераторам более легко и более организованно управлять сообществом, нежели чем в прошлых версиях.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/zhalobyi/" title="Жалобы" rel="tag nofollow">Жалобы</a>, <a href="http://pronets.ru/tag/zhaloba/" title="Жалоба" rel="tag nofollow">Жалоба</a>, <a href="http://pronets.ru/tag/soobschenie/" title="Сообщение" rel="tag nofollow">Сообщение</a>, <a href="http://pronets.ru/tag/sistema-zhalob/" title="Система жалоб" rel="tag nofollow">Система жалоб</a>, <a href="http://pronets.ru/tag/zhalobyi-na-soobschenie/" title="Жалобы на сообщение" rel="tag nofollow">Жалобы на сообщение</a>, <a href="http://pronets.ru/tag/soobscheniya/" title="Сообщения" rel="tag nofollow">Сообщения</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/globalnyiy-poisk/" title="Глобальный поиск (04/06/2009)">Глобальный поиск</a> (0)</li>
	<li><a href="http://pronets.ru/dizayn/" title="Дизайн (04/06/2009)">Дизайн</a> (0)</li>
	<li><a href="http://pronets.ru/umenshenie-razmera-bazyi-dannyih/" title="Уменьшение размера базы данных (30/06/2008)">Уменьшение размера базы данных</a> (0)</li>
	<li><a href="http://pronets.ru/terminyi-ipb/" title="Термины IPB (29/06/2008)">Термины IPB</a> (0)</li>
	<li><a href="http://pronets.ru/izmenenie-nazvanie-tegov-na-russkiy-yazyik-v-20h/" title="Изменение название тегов, на русский язык в 2.0.х (14/03/2009)">Изменение название тегов, на русский язык в 2.0.х</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/sistema-zhalob-na-soobscheniya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Делая интеграцию проще</title>
		<link>http://pronets.ru/delaya-integratsiyu-prosche/</link>
		<comments>http://pronets.ru/delaya-integratsiyu-prosche/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 20:53:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Делать]]></category>
		<category><![CDATA[Делая интеграцию проще]]></category>
		<category><![CDATA[Интеграция]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=501</guid>
		<description><![CDATA[IP.Board динамично развивающийся продукт, однако все годы своего развития он изменялся только внутри, в то время как модификации всегда были чем-то вроде дополнительного софта надстраеваемого над IPB. Существовали некоторые точки интеграции позволяющие интегрируемым решениям гладко работать вместе, но разделенность кода приводила к тому, что и функциональность IP.Board и компонентов так же становилась раздельной. Одной из [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> динамично развивающийся продукт, однако все годы своего развития он изменялся только внутри, в то время как модификации всегда были чем-то вроде дополнительного софта надстраеваемого над <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a>. Существовали некоторые точки интеграции позволяющие интегрируемым решениям гладко работать вместе, но разделенность кода приводила к тому, что и функциональность <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> и компонентов так же становилась раздельной. Одной из наших основных задач при разработке <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 3 стала задача более тесной интеграции ядра системы с модификациями, и для решения этой задачи мы работаем над созданием множества точек интеграции во всей нашей системе.<br />
<span id="more-501"></span></p>
<p>Мы не будем приводить исчерпывающий список новых возможностей здесь, мы просто пройдемся по самым значимым областям интеграции в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>.Обычно встречающаяся необходимость для модулей <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>, это необходимость предоставления настроек группы и пользователя. Ранее необходимо было изменять исходный код форм или создавать совершенно новую страницу для администраторов, чтобы управлять этими настройками. В <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 3 мы учли эту проблему, сделав формы редактирования групп и пользователя модульными. Ваши приложения теперь смогут предоставить класс, в котором будут содержаться HTML, который будет добавляться в формы и обработчик, который будет сохранять отправленные данные из формы. В результате ваши приложения могут добавлять формы настройки для групп и пользователя без изменения файлов самого <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>, и без необходимости создания новых страниц в АЦ. Ну а для конечного пользователя (администратора) выгода будет в том, что управлять всеми настройками группы и пользователя он сможет с одной страницы.</p>
<p>Invison Power Board теперь может собирать RSS с каждого приложения и выполнять всю грязную работу по его обработке &#8211; ваше приложение должно будет только предоставить актуальный RSS контент для вывода. Данная возможность позволяет <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> добавить RSS ссылку на каждую страницу, избавляя вас от необходимости вручную выводить ссылку где-либо. Это позволяет и посетителям и браузерам легко находить все RSS каналы, которые есть на вашем форуме.</p>
<p>Так же в предыдущих записях мы уже рассказывали о новых возможностях использования нашей централизованной системы проверки прав. Более того, мы так же рассказали о том, что вы можете интегрировать свои приложения в глобальную поисковую систему <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3, которая позволяет индексировать содержимое вашего приложения и делает его доступным для централизованной поисковой системы форума.</p>
<p>Конечно же мы оставили возможность загрузки кеша и управления сессиями, которая была в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2, так же как и возможность интегрировать приложение в пользовательскую панель управления. Но мы сделали несколько небольших улучшений для этих возможностей. Например, теперь вы можете указать всю информацию необходимую для перестройки кеша &#8211; впоследствии перестроив ваш кеш (из любого файла в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>) простым способом:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cache</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">rebuildCache</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'cache_name'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'application'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Так же вы сможете добавить управление частями в редакторе сообщений при использовании оного в вашем приложении, тем самым разрешая администраторам гибко настраивать использование bbcode в вашем приложении.</p>
<p>Изменения коснулись и ipb_member_sync.php который был полностью отправлен на свалку и переписан в виде простого модуля, позволяющего каждому приложению указать собственные требования необходимые для удаления пользователя. Это позволит легко устранять старые пользовательские данные при удалении самого пользователя.</p>
<p>Для разработчиков это означает более легкий доступ ко всем преимуществам каркаса и кода <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> без необходимости изобретения велосипеда каждый раз.Конечно, мы перечислили не все возможные способы интеграции доступные в <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 3, но даже перечисленные выше должны дать вам небольшое представление тех путей, которые мы реализовали, чтобы сделать разработку модификаций более простой, а сами модификации были больше частью системы нежели отдельными дополнениями.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/integratsiya/" title="Интеграция" rel="tag nofollow">Интеграция</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/delat/" title="Делать" rel="tag nofollow">Делать</a>, <a href="http://pronets.ru/tag/delaya-integratsiyu-prosche/" title="Делая интеграцию проще" rel="tag nofollow">Делая интеграцию проще</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/karkas-prilozheniya-na-php-5/" title="Каркас приложения на PHP 5 (04/06/2009)">Каркас приложения на PHP 5</a> (0)</li>
	<li><a href="http://pronets.ru/nakonets-to-druzhestvennyie-urlyi/" title="Наконец-то, дружественные URL&#8217;ы! (04/06/2009)">Наконец-то, дружественные URL&#8217;ы!</a> (0)</li>
	<li><a href="http://pronets.ru/upravlenie-zablokirovannyimi-polzovatelyami/" title="Управление заблокированными пользователями (04/06/2009)">Управление заблокированными пользователями</a> (0)</li>
	<li><a href="http://pronets.ru/esli-ne-rabotaet-ssyilka-udalit-ustanovlennyie-forumom-cookies/" title="Если не работает ссылка &#8220;Удалить установленные форумом cookies&#8221; (22/03/2009)">Если не работает ссылка &#8220;Удалить установленные форумом cookies&#8221;</a> (0)</li>
	<li><a href="http://pronets.ru/ustanovka-foruma-ipboard-2xx/" title="Установка форума IP.Board 2.x.x (25/07/2009)">Установка форума IP.Board 2.x.x</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/delaya-integratsiyu-prosche/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Глобальные права доступа</title>
		<link>http://pronets.ru/globalnyie-prava-dostupa/</link>
		<comments>http://pronets.ru/globalnyie-prava-dostupa/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 20:50:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Глобальные]]></category>
		<category><![CDATA[Глобальные права доступа]]></category>
		<category><![CDATA[Доступ]]></category>
		<category><![CDATA[Права]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=499</guid>
		<description><![CDATA[При проектировании IP.Board 3, глобальная поисковая система была одной из первых существенных возможностей, которую мы собрались сделать. Мы уже рассказали вам о глобальном поиске и теперь настало время рассказать вам о системе прав доступа, которая позволила создать глобальный поиск и другие возможности в новом Invision Power Board.

В прошлых версиях IPB каждое приложение само поддерживало собственную [...]]]></description>
			<content:encoded><![CDATA[<p>При проектировании <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3, глобальная поисковая система была одной из первых существенных возможностей, которую мы собрались сделать. Мы уже рассказали вам о глобальном поиске и теперь настало время рассказать вам о системе прав доступа, которая позволила создать глобальный поиск и другие возможности в новом <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a>.<br />
<span id="more-499"></span></p>
<p>В прошлых версиях <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> каждое приложение само поддерживало собственную таблицу прав доступа и актульную информацию в ней. Это привело к созданию множества различных систем прав доступа, управление которыми было разрознено. Так добавляя новую группу прав, вам необходимо было настроить ее в разделе форумов, разделе галереи, календаря, блогов и так далее. Система быстро стала неуклюжей и неудобной для использования пользователем и тяжелой для интеграции для разработчика.</p>
<p>В <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 на смену старой системе приходит новая, глобальная система прав доступа, которая может быть использована любым приложением, в том числе и модификациями. Вместо того, чтобы поддерживать различные права доступа в разных местах и таблицах, все права теперь хранятся в одной индексной таблице. Таблица имеет достаточно характерную структуру для данного типа данных и потому может быть легко использована любым приложением. В свою очередь каждое приложение должно будет включать простейший конфигурационный класс, который будет указывать <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> каким образом использовать индекс прав доступа для конкретного приложения. Система прав доступа на данный момент поддерживает одно встроенное право на просмотр контента и 6 настраиваемых прав, которые как раз и изменяются в конфигурационном классе приложения. Единственное встроенное право на просмотр введено для нашей глобальной поисковой системы, которая использует его для проверки доступа к контенту во время глобального поиска или во время работы любой другой возможности, которая использует поисковый индекс.</p>
<p>На данный момент конфигурация для прав доступа выглядит примерно так:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$mapping</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
		<span style="color: #0000ff;">'view'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'perm_view'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'read'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'perm_2'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'reply'</span><span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'perm_3'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'start'</span><span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'perm_4'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'upload'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'perm_5'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'download'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'perm_6'</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$perm_names</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
		<span style="color: #0000ff;">'view'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Просмотр форума'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'read'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Чтение тем'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'reply'</span><span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Ответ в темы'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'start'</span><span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Создание тем'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'upload'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Загрузка'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'download'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Скачивание'</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Все что вам нужно, это изменить эти значения согласно требованиям вашего приложения и <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> будет знать каким образом обрабатывать права в вашем приложении. Теперь, чтобы проверить право чтения, вы просто должны сделать так:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">class_permissions</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">check</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'reply'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$perm_row</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Чтобы вывести редактор права доступа в АЦ, вам необходимо сделать так:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$permissions</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">adminPermMatrix</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'тип_права_доступа'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$perm_row</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Данный код позволит сформировать HTML для вывода матрицы прав доступа, а для сохранения значений матрицы, необходимо выполнить следующий код:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$permissions</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">savePermMatrix</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">request</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'perms'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$perm_type_id</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'тип_права_доступа'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>В данном примере, при редактировании прав для форума значение переменной perm_type_id будет содержать id редактируемого форума.</p>
<p>Мы надеемся, что эта система значительно облегчит разработку модификаций, избавляя авторов модификаций от изобретения собственных систем контроля прав доступа. И конечно же чуть позже мы предоставим всю документацию и примеры для работы с данной системой.В то время как разработчики получат множество выгод от использования новой системы, для конечного пользователя данная система позволит осуществить управление всеми правами доступа с одной страницы. Теперь, когда вы изменяете или добавляете новую группу прав, вы сразу будете видеть права для Форумов, Галереи, Менеджера загрузок и всех других модификаций, которые используют новую систему. Это избавит вас от необходимости тратить время на брожение по все системе, в случае необходимости изменить всего лишь одну группу правил.</p>
<p>Новая система прав доступа это очень важный шаг к одной из наших главных целей &#8211; наиболее глубокой интеграции всех приложений. В наших будущих записях вы узнаете еще больше о новых интеграционных возможностях, которые приподнесет вам <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3!</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/prava/" title="Права" rel="tag nofollow">Права</a>, <a href="http://pronets.ru/tag/globalnyie/" title="Глобальные" rel="tag nofollow">Глобальные</a>, <a href="http://pronets.ru/tag/globalnyie-prava-dostupa/" title="Глобальные права доступа" rel="tag nofollow">Глобальные права доступа</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/dostup/" title="Доступ" rel="tag nofollow">Доступ</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/sozdanie-rezervnyih-kopiy-bazyi-dannyih/" title="Создание резервных копий базы данных (30/06/2008)">Создание резервных копий базы данных</a> (0)</li>
	<li><a href="http://pronets.ru/legenda-foruma-o-tom-kak-ee-sozdat/" title="Легенда форума, о том как ее создать (22/03/2009)">Легенда форума, о том как ее создать</a> (0)</li>
	<li><a href="http://pronets.ru/problemyi-servera/" title="Проблемы сервера (30/06/2008)">Проблемы сервера</a> (0)</li>
	<li><a href="http://pronets.ru/lichnyie-besedyi/" title="Личные беседы (04/06/2009)">Личные беседы</a> (0)</li>
	<li><a href="http://pronets.ru/karkas-dlya-polzovatelskih-prilozheniy/" title="Каркас для пользовательских приложений (04/06/2009)">Каркас для пользовательских приложений</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/globalnyie-prava-dostupa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Глобальный поиск</title>
		<link>http://pronets.ru/globalnyiy-poisk/</link>
		<comments>http://pronets.ru/globalnyiy-poisk/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 20:47:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Глобальный]]></category>
		<category><![CDATA[Глобальный поиск]]></category>
		<category><![CDATA[Поиск]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=497</guid>
		<description><![CDATA[Во время первоначальной фазы разработки IP.Board 3 одной из первой областей, которой необходима глобальная ревизия, была поисковая система. В Invision Power Board 2 каждое приложение требовало собственного поискового механизма, что создавало множество &#8220;зацементированных&#8221; данных, по которым достаточно сложно было что-либо искать. В IPB 3 будет представлена новая глобальная поисковая система, которая позволит сделать все содержимое [...]]]></description>
			<content:encoded><![CDATA[<p>Во время первоначальной фазы разработки <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 одной из первой областей, которой необходима глобальная ревизия, была поисковая система. В <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 2 каждое приложение требовало собственного поискового механизма, что создавало множество &#8220;зацементированных&#8221; данных, по которым достаточно сложно было что-либо искать. В <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 3 будет представлена новая глобальная поисковая система, которая позволит сделать все содержимое вашего сообщества легко доступным для поиска, независимо от того, где содержимое находится. Вы будете иметь возможность показывать результаты как из всех приложений одним списком, так и фильтровать результаты по отдельным приложениям.<br />
<span id="more-497"></span></p>
<p>Одной из наших основных целей в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 является увеличение интеграции между всеми нашими продуктами так, чтобы они были более связанными, нежели в <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 2.x. Новая поисковая система это лишь один пример нашей работы в этом направлении. Однако мы не хотели бы, чтобы эта интеграция применялась только к нашим продуктам, потому авторы модификаций смогут использовать данную систему и в своих приложениях. При использовании простой системы плагинов разработчики смогут подключать контент своих приложений к общему поиску.</p>
<p>Новая поисковая система так же будет более проста и легка в использовании. Новый &#8220;Расширенный поиск&#8221; будет более дружелюбным по сравнению с поиском в <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 2 благодаря более простому способу указания того, что вы ищите. Другими словами, если вы будете находиться в разделе, он будет искать по разделу, если в теме &#8211; по конкретной теме, если в галерее &#8211; по конкретной галерее и так далее. Форма быстрого поиска также будет включать &#8220;живой поиск&#8221; который будет динамически подгружать результаты поиска уже при вводе поискового слова. Более того живой поиск будет контекстно-зависимым. Другими словами, если вы будете находиться в разделе он будет искать по разделу, если в теме &#8211; по конкретной теме, если в галерее &#8211; по конкретной галерее и так далее. Так же в результатах живого поиска будет ссылка на поиск по всем приложениям в системе, если он будет вам необходим. И конечно же будет опция позволяющая полностью отключить живой поиск, если он вам будет не нужен.</p>
<p>Немаловажной проблемой является и вопрос производительности нашей текущей поисковой системы. Наша новая система стремится решать эту проблему сразу несколькими способами. Во-первых, путем создания глобального поискового индекса, что позволяет реализовать те самые возможности, о которых я рассказывал ранее. Данный поисковый индекс намного проще и быстрее для обработки поисковой системой, нежели поиск по всей таблице сообщений. Таким образом поиск теперь не будет производиться напрямую по таблице сообщений, тем самым больше не будет проблем с блокированием (lock) таблицы при поиске. Для уменьшение дискового пространства и увеличения скорости поисковый индекс будет содержать упрощенную версию содержимого, не содержащую какой либо разметки.</p>
<p>Во-вторых, для увеличения производительности поиска, наша поисковая система будет идти по-умолчанию с поддержкой Sphinx. Хотя вам все же необходимо будет самостоятельно установить Sphinx, однако, сделав это в самом <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3, вы без труда сможете подключить его, просто изменив опцию в АЦ. Так же вы сможете удалить полнотекстовый индекс из таблицы сообщений при использовании нового поискового индекса или Sphinx, что позволит вам существенно уменьшит расходы на хранение таблицы сообщений.</p>
<p>Использование нового поискового индекса так же добавит улучшения и для других частей форума, такой как &#8220;Новые сообщения&#8221;. Просмотр новых сообщений будет включать любой тип содержимого, который можно найти на форуме, так вы увидите новые сообщение на форуме, новые изображения в галерее, записи в блогах и тому подобное. Конечно же есть и другие улучшения, но мы оставим их для будущих записей.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/globalnyiy-poisk/" title="Глобальный поиск" rel="tag nofollow">Глобальный поиск</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/globalnyiy/" title="Глобальный" rel="tag nofollow">Глобальный</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/poisk/" title="Поиск" rel="tag nofollow">Поиск</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/o-sayte/" title="О сайте (17/11/2009)">О сайте</a> (0)</li>
	<li><a href="http://pronets.ru/ipblog-ipgallery-i-ipdownloads/" title="IP.Blog, IP.Gallery и IP.Downloads (04/06/2009)">IP.Blog, IP.Gallery и IP.Downloads</a> (0)</li>
	<li><a href="http://pronets.ru/sistema-reputatsii/" title="Система репутации (04/06/2009)">Система репутации</a> (0)</li>
	<li><a href="http://pronets.ru/prochie-vozmozhnosti/" title="Прочие возможности (04/06/2009)">Прочие возможности</a> (0)</li>
	<li><a href="http://pronets.ru/optimizatsiya-dlya-poiskovyih-sistem/" title="Оптимизация для поисковых систем (04/06/2009)">Оптимизация для поисковых систем</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/globalnyiy-poisk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Управление языками</title>
		<link>http://pronets.ru/upravlenie-yazyikami/</link>
		<comments>http://pronets.ru/upravlenie-yazyikami/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 20:45:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Управление]]></category>
		<category><![CDATA[Управление языками]]></category>
		<category><![CDATA[Язык]]></category>
		<category><![CDATA[Языки]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=495</guid>
		<description><![CDATA[На протяжении последних нескольких лет количество наших международных пользователей стремительно возросло и мы хотим приложить все усилия, чтобы быть уверенными, что IPB для этих пользователей останется лучшим решением. Таким образом, одна из наших целей при разработке IP.Board 3 &#8211; это резкое улучшение системы управления языками. И сегодня я хочу рассказать вам о тех нескольких изменениях, [...]]]></description>
			<content:encoded><![CDATA[<p>На протяжении последних нескольких лет количество наших международных пользователей стремительно возросло и мы хотим приложить все усилия, чтобы быть уверенными, что <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> для этих пользователей останется лучшим решением. Таким образом, одна из наших целей при разработке <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 &#8211; это резкое улучшение системы управления языками. И сегодня я хочу рассказать вам о тех нескольких изменениях, которые вы сможете увидеть в нашей системе.<br />
<span id="more-495"></span></p>
<p>Во-первых, мы хотим быть уверены, что вся система целиком может быть переведена, это касается и администраторской части. Вы сможете создавать и распространять языковые пакеты, которые будут содержать перевод как пользовательской так и администраторской частей. Для администраторов стоит заметить, что язык будет переключаться и для администраторской и для пользовательской части одновременно, таким образом вам не надо будет отдельно выбирать язык для АЦ или для самого форума.</p>
<p>Так же вы сможете добавлять локаль для языковых пакетов. Это позволит <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> оформлять дату, время и числа согласно форматам принятым в стране. В дополнении и АЦ и пользовательская часть будут использовать UTF-8 в качестве кодировки по-умолчанию. И наконец больше не будет необходимости переводить картинки (кнопки), потому что новый стиль не будет использовать картинки с текстом.</p>
<p>Сами языковые конструкции теперь хранятся в базе данных и закешированы в файлы на диске. Теперь, при изменении языкового пакета у вас будет возможность увидеть оригинал фразы на английском языке. Так же у вас появится возможность обратить изменения в языковых конструкция для возврата их к оригинальным английским конструкциям. Каждая языковая конструкция теперь имеет версию, тем самым вы сможете знать в какой версии данная конструкция была введена или изменена. Если переведенная в <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 3.0.0 конструкция была изменена нами в версии 3.0.1, то менеджер языков сообщит вам о том, что ваш текущий языковой пакет устарел и требует обновления. Так же существует способ вывести все устаревшие языковые конструкции, так же как и список всех конструкций, которые не были переведены.</p>
<p>Еще одним новшеством стало добавление поиска к системе языков, который поможет вам легко искать определенный текст в языковых пакетах. Например если вам необходимо будет заменить все вхождения слова &#8216;forums&#8217; на &#8216;boards&#8217;, вы введете в поиске слово &#8216;forums&#8217; и система покажет все языковые конструкции в которых данное слово используется.</p>
<p>Каждое приложение теперь может включать XML файл с языковыми конструкциями, которые используются в этом приложении. Этот файл будет автоматически обработан установщиком, данная возможность максимально облегчит разработчикам возможность распространения языковых пакетов, необходимых для их приложений. Более того разработчикам модификаций так же будет доступно использование версионного контроля для языковых пакетов, со всеми вытекающими их этого возможностями.</p>
<p>Мы описали некоторые изменения в нашей системе языков. Мы надеемся что эти возможности будут очень полезны нашим международным пользователям.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/yazyik/" title="Язык" rel="tag nofollow">Язык</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/upravlenie-yazyikami/" title="Управление языками" rel="tag nofollow">Управление языками</a>, <a href="http://pronets.ru/tag/upravlenie/" title="Управление" rel="tag nofollow">Управление</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/yazyiki/" title="Языки" rel="tag nofollow">Языки</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/tegi-shablonov-perezagruzka/" title="Теги шаблонов, перезагрузка (04/06/2009)">Теги шаблонов, перезагрузка</a> (0)</li>
	<li><a href="http://pronets.ru/globalnyie-prava-dostupa/" title="Глобальные права доступа (04/06/2009)">Глобальные права доступа</a> (0)</li>
	<li><a href="http://pronets.ru/ip-board-3/" title="Скрины IP. Board 3 (08/12/2008)">Скрины IP. Board 3</a> (0)</li>
	<li><a href="http://pronets.ru/uluchsheniya-sistemyi-obrabotki-oshibok/" title="Улучшения системы обработки ошибок (04/06/2009)">Улучшения системы обработки ошибок</a> (0)</li>
	<li><a href="http://pronets.ru/faq-po-ipboard/" title="FAQ по IP.Board (05/07/2009)">FAQ по IP.Board</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/upravlenie-yazyikami/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Теги шаблонов, перезагрузка</title>
		<link>http://pronets.ru/tegi-shablonov-perezagruzka/</link>
		<comments>http://pronets.ru/tegi-shablonov-perezagruzka/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 20:43:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Перезагрузка]]></category>
		<category><![CDATA[Теги]]></category>
		<category><![CDATA[Теги шаблонов]]></category>
		<category><![CDATA[шаблоны]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=493</guid>
		<description><![CDATA[Некоторое время назад, я уже описывал нашу новую систему шаблонных тегов, которая будет в IP.Board 3.0.0. После некоторых замечаний по поводу синтаксиса и дальнейшей разработки самой системы, я почувствовал, что необходимо повторно осветить эту тему в блоге.

Система шаблонных тегов все так же основана на классах (расширять и реализовывать), которые работают как плагины. Плагины запускаются только [...]]]></description>
			<content:encoded><![CDATA[<p>Некоторое время назад, я уже описывал нашу новую систему шаблонных тегов, которая будет в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.0.0. После некоторых замечаний по поводу синтаксиса и дальнейшей разработки самой системы, я почувствовал, что необходимо повторно осветить эту тему в блоге.<br />
<span id="more-493"></span></p>
<p>Система шаблонных тегов все так же основана на классах (расширять и реализовывать), которые работают как плагины. Плагины запускаются только в случае если шаблоны закешированы, что делает систему очень быстрой и очень эффективной. Новый синтаксис тегов очень прост в использовании и для запоминания:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse plugin<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;название&quot;</span> option<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;значение&quot;</span> option2<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;значение2&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p>Теперь собственно к тегам, которые уже используются в Invison Power Board 3.0</p>
<p><strong>Expression / Выражение</strong></p>
<p>Данный тег служит для исполнения in-line PHP выражений, которые возвращают какое-то значение. Это может быть любая встроенная PHP функция или любая функция реализованная в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse expression<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;intval(<span style="color: #006699; font-weight: bold;">$data</span>['count'])&quot;</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#123;</span>parse expression<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;IPSText::alphanumerical_clean( <span style="color: #006699; font-weight: bold;">$data</span>['value'] )&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p>Данный тег позволяет достаточно легко оформлять данные на лету и избавляет от навязчивого intval в коде, для гарантии правильного вывода значения, такого как 0, а не пустота!</p>
<p><strong>Template / Шаблон</strong></p>
<p>Данный тег используется для вставки любого другого шаблона <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> в текущий шаблон.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse template<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;pageLinks&quot;</span> group<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;skin_global&quot;</span> params<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$data</span>['start'], <span style="color: #006699; font-weight: bold;">$data</span>['end']&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p>Польза от такого тега совершенно очевидна. Вам больше не надо изменять PHP код для повторного использования шаблона в каком-то месте.</p>
<p><strong>Variable / Переменная</strong></p>
<p>Тег для создания переменной и изменения ее значения.</p>
<p>Создаем переменную с именем &#8216;className&#8217;:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse variable<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;className&quot;</span> <span style="color: #b1b100;">default</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;tdRow1&quot;</span> oncondition<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$data</span>['foo'] == 'bar'&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;tdRow2&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p>Изменяем значение переменной:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse variable<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;className&quot;</span> oncondition<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$data</span>['foo'] == 'foo'&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;tdRow3&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p>Используем переменную:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse variable<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;className&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p>А теперь все тоже, но на практике:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse variable<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;className&quot;</span> <span style="color: #b1b100;">default</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;row1&quot;</span> oncondition<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$data</span>['banned'] === TRUE&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;rowBanned&quot;</span><span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;</span>foreach loop<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$key</span> =&gt; <span style="color: #006699; font-weight: bold;">$data</span>&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>div <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{parse variable=&quot;</span>className<span style="color: #0000ff;">&quot;}&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>foreach<span style="color: #339933;">&gt;</span></pre></div></div>

<p><strong>Striping / Переключатель классов</strong></p>
<p>Когда Rikki работал над новым стилем <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>, он упомянул что было бы не плохо иметь такой тег, при помощи которого можно делать полоски, как у зебры (альтернативные цвета рядов при выводе списка форумов, тем и т.п.). И мы сделали тег striping.</p>
<p>Для установки тега:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse striping<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;someKey&quot;</span> classes<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;tdrow1, tdrow2, tdrow3&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p>Для использования:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse striping<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;someKey&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p>При преобразовании данного тега в код, он преобразуется в цикл по классам, с возможностью повторения цикла если это необходимо.</p>
<p>Ну и практический пример:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse striping<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;rows&quot;</span> classes<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;row1, row2&quot;</span><span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;</span>foreach loop<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$data</span> as <span style="color: #006699; font-weight: bold;">$key</span> =&gt; <span style="color: #006699; font-weight: bold;">$value</span>&quot;</span><span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;</span>div <span style="color: #000000; font-weight: bold;">class</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;{parse striping=&quot;</span>rows<span style="color: #0000ff;">&quot;}&quot;</span><span style="color: #339933;">&gt;</span><span style="color: #000088;">$key</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$value</span><span style="color: #339933;">&lt;/</span>div<span style="color: #339933;">&gt;</span>
<span style="color: #339933;">&lt;/</span>foreach<span style="color: #339933;">&gt;</span></pre></div></div>

<p><strong>AddToHead / Добавить в Head</strong></p>
<p>Может быть трудно придерживаться строгих стандартов, имея дело с шаблонами разбитыми на куски. Часто вы ставите под угрозу исполнение стандартов, распределяя javascript и CSS по всему телу документа.</p>
<p>Данный тег в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> позволит вам добавит контент в <head> документа быстро и просто:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse addtohead<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;/js/someScript.js&quot;</span> type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;javascript&quot;</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#123;</span>parse addtohead<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;/css/someCSS.css&quot;</span> type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;css&quot;</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#123;</span>parse addtohead<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&lt;script&gt;alert('boo')&lt;/script&gt;&quot;</span> type<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;raw&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>Date / Дата</strong></p>
<p>В предыдущих версиях Invison Power Board вся работа с датой осуществлялась внутри PHP кода, что делало формат дат в <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> трудно изменяемыми, кроме тех случаев, которые были разрешены в АЦП.</p>
<p>Теперь <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> позволяет вам оформлять даты используя тег date в шаблонах.</p>
<p>Примеры:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse <span style="color: #990000;">date</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;now&quot;</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#123;</span>parse <span style="color: #990000;">date</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;1765346750&quot;</span> relative<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;1&quot;</span> format<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;long&quot;</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#123;</span>parse <span style="color: #990000;">date</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;-1 hour&quot;</span> format<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;manual{d, m, Y}&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong><a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a> / Ссылки</strong></p>
<p><a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 позволяет легко оформлять <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a> без использования специальных PHP переменных.</p>
<p>Примеры:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse url<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;showtopic=1&quot;</span> base<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;public&quot;</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#123;</span>parse url<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;showforum=5&quot;</span> base<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;publicWithApp&quot;</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#123;</span>parse url<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;photo1.jpg&quot;</span> base<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;upload&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>Format Number / Оформление чисел</strong></p>
<p><a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 позволяет легко и просто иметь доступ к встроенной функции format_number.</p>
<p>Пример:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse format_number<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;123456&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p><strong>Replacement / Замена</strong></p>
<p>Для развития нашей новой идеи тегов, мы решили отказаться от старого тега &#8216;macro&#8217; (<{MACRO_HERE}>) и заменить его новым тегом &#8216;replacements&#8217;:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span>parse replacement<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;macroKey&quot;</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p>Конечно же реальная мощь данной шаблонной системы состоит в том, что вы сами можете создавать собственные обработчики тегов, скидывать их в директорию шаблонных тегов и незамедлительно начать пользоваться созданными тегами в шаблонах.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/tegi/" title="Теги" rel="tag nofollow">Теги</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/shablonyi/" title="шаблоны" rel="tag nofollow">шаблоны</a>, <a href="http://pronets.ru/tag/perezagruzka/" title="Перезагрузка" rel="tag nofollow">Перезагрузка</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/tegi-shablonov/" title="Теги шаблонов" rel="tag nofollow">Теги шаблонов</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/tegi-i-seo/" title="Теги и SEO (12/01/2010)">Теги и SEO</a> (0)</li>
	<li><a href="http://pronets.ru/ispolzovanie-smaylov-pri-zamene-netsenzurnyih-slov/" title="Использование смайлов при замене нецензурных слов (14/10/2008)">Использование смайлов при замене нецензурных слов</a> (0)</li>
	<li><a href="http://pronets.ru/oshibki-bazyi-dannyih/" title="Ошибки базы данных (29/06/2008)">Ошибки базы данных</a> (0)</li>
	<li><a href="http://pronets.ru/oshibki-ipb/" title="Ошибки IPB (30/06/2008)">Ошибки IPB</a> (0)</li>
	<li><a href="http://pronets.ru/karkas-dlya-polzovatelskih-prilozheniy/" title="Каркас для пользовательских приложений (04/06/2009)">Каркас для пользовательских приложений</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/tegi-shablonov-perezagruzka/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Приоткрывая завесу над ipsRegistry</title>
		<link>http://pronets.ru/priotkryivaya-zavesu-nad-ipsregistry/</link>
		<comments>http://pronets.ru/priotkryivaya-zavesu-nad-ipsregistry/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 20:35:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[ipsRegistry]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=491</guid>
		<description><![CDATA[В предыдущей записи о новом каркасе IP.Board 3.0, я упоминал о неком компоненте лежащем в основе базы нового каркаса называемом &#8216;ipsRegistry&#8217;. Данная заметка раскроет больше деталей он нем и будет интересна для авторов модификаций.

Обзор
IP.Board, как и любое сложное приложение, использует в работе базовые данные, такие как настройки, сессии и входные данные ($_GET, $_POST и т.п.). [...]]]></description>
			<content:encoded><![CDATA[<p>В предыдущей записи о новом каркасе <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.0, я упоминал о неком компоненте лежащем в основе базы нового каркаса называемом &#8216;ipsRegistry&#8217;. Данная заметка раскроет больше деталей он нем и будет интересна для авторов модификаций.<br />
<span id="more-491"></span></p>
<p><strong>Обзор</strong></p>
<p><a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>, как и любое сложное приложение, использует в работе базовые данные, такие как настройки, сессии и входные данные ($_GET, $_POST и т.п.). Так же необходимы соединение с базой и доступ к глобальным объектам, таким как данные кеша. Согласитесь, что было бы не вероятно расточительно в каждом файле и классе создавать соединение с базой, загружать данные из кеша, проверять сессию и получать какие-либо настройки. А ведь подобные действия в Invison Power Board происходят по нескольку раз.</p>
<p>Понятно что есть необходимость в способе, который бы единожды инициализировал все данные и предоставлял бы доступ к ним из любой части приложения. Именно для этого и предназначен ipsRegistry. В предыдущих версиях <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> роль реестра выполнялась объектом ipsclass, но он быстро лишался четких границ при добавлении все большего и большего числа данных к нему. Он был больше глобальной переменной, нежели чем-то еще. Новый регистр составлен из четко определенных объектов. Также в предыдущих версиях инициализация настроек, кешей, входных данных, сессий и прочего было разбросано по разным классам и файлам. В новой версии точка инициализации одна. Эта инициализация происходит когда вызывается метод init(). Тем самым это позволяет достаточно просто использовать регистр IPS в собственных скриптах и модификациях. Тогда как ранее вам необходимо было копировать чуть ли не половину index.php. Сейчас ваши скрипты могут быть много проще:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'conf_data.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'classes/base/ipsRegistry.php'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/* Вызываем init, который загружает входные данные, кеши, настройки, создает обработчик для БД, авторизует и загружает пользователя */</span>
<span style="color: #000088;">$registry</span> <span style="color: #339933;">=</span> ipsRegistry<span style="color: #339933;">::</span><span style="color: #004000;">instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">print</span> <span style="color: #000088;">$registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">request</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getField</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'foo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">DB</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">do_update</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'table'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'foo'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'bar'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">print</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">member</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'member_id'</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> ? <span style="color: #0000ff;">'Привет, '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">member</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'members_display_name'</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">:</span> <span style="color: #0000ff;">'Зашли как гость'</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong>Получение входных данных из <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a> и форм</strong></p>
<p>Ключевой частью инициализации <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> была обработка &#8220;грязных&#8221; данных и создание массива с &#8220;очищенными&#8221; данными. Это было жизненно важно для общей безопасности форумов. В <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.0 для этого выделен объект реестра &#8216;request&#8217;, который содержит все функции необходимые для инициализации и обработки данных (parse_key, parse_value и т.п.) Все они доступны или через $this->request->getField(&#8217;foo&#8217;) или через $this->request['foo']. Это является эффективной заменой $this->ipsclass->input['foo'];</p>
<p><strong>Кешированные данные</strong></p>
<p>Большое количество улучшений в кеширующем механизме, но их мы опишем в более поздних заметках, потому как речь сейчас идет о реестре. Так вот, кеш объект реестра просто возвращает кеш, когда происходит запрос через $this->registry->cache()->getCache(&#8217;forums&#8217;); Сам же кеш загружается и подготавливается для использования во время инициализации, так что вам не надо в ручную делать это.</p>
<p><strong>База данных</strong></p>
<p>Опять же замечу, что большая часть кода работы с базой данных была оптимизирована (рефакторинг), но это заслуживает отдельного рассказа. А пока возвращаясь к реестру скажу, что основной метод для работы с базой &#8211; это getDB. Метод возвращает объект DB, который создается во время инициализации через setDB(). Инициализация происходит прозрачно, при подключении файла ( ipsController.php ) и вызове init(). Так же вы можете создать несколько подключений, например:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">DB</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setDB</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'mysql'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'newConnection'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'user@localhost.com'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'password'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'localhost'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">DB</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'newConnection'</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">build_and_exec_query</span><span style="color: #009900;">&#40;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'select'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'*'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'from'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'table'</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p><strong>Настройки</strong></p>
<p>Как и все выше пречисленное кеш настроек загружается и подготавливается к использованию во время инициализации. В реестре объект настроек просто возвращает запрашиваемую настройку (ее значение), вызов происходит так $this->settings->getSetting(&#8217;foo&#8217;) или так $this->settings['foo'].</p>
<p><strong>Пользовательская информация</strong></p>
<p>В предыдущих версиях сбор пользовательской информации был рассеян по всему ipsclass. Новый регистр <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> все это централизует. Этот объект получает IP пользователя, браузер и операционную систему и передает все это member класс. Так же он проверяет сессию (через cookie или из <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a>), загружает пользовательскую сессию и создает массив пользовательских прав. Все это происходит во время инициализации.</p>
<p>Я надеюсь, что данная заметка даст вам некоторое понимание структуры реестра IPS, а также нововведений, которые он приносит не только в сам <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a>, но и для разработчиков модификаций, которые найдут его достаточно полезным за счет того, что он автоматически создает множество необходимых данных, тем самым экономя их время разработки. Если вы почувствуете, что часть предоставленной информации вам не нужна, то вы сможете унаследовать ipsRegistry и заменить &#8216;protected&#8217; методы, чтобы убрать их из инициализации.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/ipsregistry/" title="ipsRegistry" rel="tag nofollow">ipsRegistry</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/obzor-mehanizma-pometki-prochitannosti-tem/" title="Обзор механизма пометки прочитанности тем (04/06/2009)">Обзор механизма пометки прочитанности тем</a> (0)</li>
	<li><a href="http://pronets.ru/globalnyiy-poisk/" title="Глобальный поиск (04/06/2009)">Глобальный поиск</a> (0)</li>
	<li><a href="http://pronets.ru/o-sayte/" title="О сайте (17/11/2009)">О сайте</a> (0)</li>
	<li><a href="http://pronets.ru/obnovlenie-stilya/" title="Обновление стиля (04/06/2009)">Обновление стиля</a> (0)</li>
	<li><a href="http://pronets.ru/dizayn/" title="Дизайн (04/06/2009)">Дизайн</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/priotkryivaya-zavesu-nad-ipsregistry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Управление заблокированными пользователями</title>
		<link>http://pronets.ru/upravlenie-zablokirovannyimi-polzovatelyami/</link>
		<comments>http://pronets.ru/upravlenie-zablokirovannyimi-polzovatelyami/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 20:30:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Блокирование]]></category>
		<category><![CDATA[Заблокированные]]></category>
		<category><![CDATA[Пользователи]]></category>
		<category><![CDATA[Пользователь]]></category>
		<category><![CDATA[Управление]]></category>
		<category><![CDATA[Управление заблокированными]]></category>
		<category><![CDATA[Управление заблокированными пользователями]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=489</guid>
		<description><![CDATA[Термин &#8216;бан&#8217; в IP.Board имеет достаточно свободное определение и может означать много различных вещей. IP.Board поддерживает множество полезных функций для управления доступом к форуму или к его ограничению. Вот несколько примеров того, что может означать термин &#8216;бан&#8217;:


Фильтры блокировки по IP адресу
Фильтры блокировки по Email адресу
Фильтры блокировки по имени пользователя
Перенос пользователя в группу &#8216;заблокированных&#8217;
Временный запрет доступа [...]]]></description>
			<content:encoded><![CDATA[<p>Термин &#8216;бан&#8217; в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> имеет достаточно свободное определение и может означать много различных вещей. <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> поддерживает множество полезных функций для управления доступом к форуму или к его ограничению. Вот несколько примеров того, что может означать термин &#8216;бан&#8217;:</p>
<p><span id="more-489"></span></p>
<ul>
<li>Фильтры блокировки по IP адресу</li>
<li>Фильтры блокировки по Email адресу</li>
<li>Фильтры блокировки по имени пользователя</li>
<li>Перенос пользователя в группу &#8216;заблокированных&#8217;</li>
<li>Временный запрет доступа к форуму</li>
</ul>
<p>Дополнительно администратор может временно препятствовать отправке сообщений пользователя, либо получать сообщение, отправленное пользователем для проверки.</p>
<p>Множество пользователей просили нас сделать функцию запрета как можно проще — часто администраторы хотели получить больше средств для борьбы с нарушителями.</p>
<p><a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 поможет администраторам контролировать доступ к их форуму. Все функции останутся на месте и будут доступны как и в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2.x, но теперь появится централизованная панель управления доступа пользователей, в которой администратор сможет предпринять различные меры против пользователей, вызывающих проблемы.</p>
<p>Во время просмотра пользовательского профиля, вы увидите кнопку &#8216;Заблокировать&#8217; (если пользователь уже заблокирован, то кнопка поменяет название на &#8216;Разблокировать&#8217;). После нажатия этой кнопки во всплывающем AJAX-окне вам будут доступны различные действия для ограничения прав пользователя.</p>
<p>В <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> появился статус &#8216;заблокированные пользователи&#8217;, отдельный от пользовательских групп. Это означает, что теперь вы сможете запретить доступ пользователю без переноса в другую группу.</p>
<p>Из панели управления блокировками теперь также будет доступен перевод пользователя из одной группы в другую (например, в группу &#8220;Заблокированные&#8221;, она будет по-умолчанию присутствовать в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>). Так же вы сможете заблокировать пользовательские e-mail и имя пользователя.</p>
<p>Теперь каждый IP-адрес, который использовался пользователем, будет отображаться в соответствующем меню, и вы сможете запретить доступ с любого из них простым нажатием кнопки.</p>
<p>Наконец, имеется появляющееся поле для ввода текста, которое позволит вам ввести заметку (которая сохранится в типичной области для пользовательских заметок) на будущее .</p>
<p>Для удобства все ссылки о временном отстранении пользователей, удалении их прав доступа и запросы на проверку сообщений модераторами будут появляться в соответствующем окне, но в любом случае вы и только вы будете решать, предпринимать ли какие-либо действия или нет.</p>
<p>Панель снятия бана делает всё тоже самое, но на оборот. Она позволит вам вернуть пользователя в нормальную группу и удалить e-mail`ы, имена и IP-адреса из бан-фильтров, а также удалить отметку блокировки в профиле пользователя для возвращения всех внесённых изменений.</p>
<p>Управление пользователей одна из важнейших обязанностей администратора, и <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 сделает эту работу как можно проще.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/zablokirovannyie/" title="Заблокированные" rel="tag nofollow">Заблокированные</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/polzovatel/" title="Пользователь" rel="tag nofollow">Пользователь</a>, <a href="http://pronets.ru/tag/blokirovanie/" title="Блокирование" rel="tag nofollow">Блокирование</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/upravlenie-zablokirovannyimi/" title="Управление заблокированными" rel="tag nofollow">Управление заблокированными</a>, <a href="http://pronets.ru/tag/upravlenie/" title="Управление" rel="tag nofollow">Управление</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/css_classic/" title="Гид по CSS (Classic Skin) (25/07/2008)">Гид по CSS (Classic Skin)</a> (0)</li>
	<li><a href="http://pronets.ru/obnovlenie-foruma-ip-board-do-versii-3/" title="Обновление форума IP.Board до версии 3 (10/09/2009)">Обновление форума IP.Board до версии 3</a> (0)</li>
	<li><a href="http://pronets.ru/upravlenie-auditoriey-sayta/" title="Управление аудиторией сайта (27/08/2008)">Управление аудиторией сайта</a> (0)</li>
	<li><a href="http://pronets.ru/importeksport-skinov-ipboard/" title="Импорт/Экспорт скинов IP.Board (15/12/2008)">Импорт/Экспорт скинов IP.Board</a> (0)</li>
	<li><a href="http://pronets.ru/obnovlenie-stilya/" title="Обновление стиля (04/06/2009)">Обновление стиля</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/upravlenie-zablokirovannyimi-polzovatelyami/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ревизия системы BBCode</title>
		<link>http://pronets.ru/reviziya-sistemyi-bbcode/</link>
		<comments>http://pronets.ru/reviziya-sistemyi-bbcode/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 20:24:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[BBCode]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Ревизия]]></category>
		<category><![CDATA[Ревизия системы BBCode]]></category>
		<category><![CDATA[Система]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=484</guid>
		<description><![CDATA[BBCode &#8211; это базовая часть вашего форума. Понимая это, мы проделали тяжелую работу по ревизии и полному переписыванию всей системы bbcode в IP.Board 3.0. Мы думаем, что вам это понравится.

Отличия от IP.Board 2.x
 
Есть некоторые основные различия в системе BBCode, вводимой в IP.Board 3, которые Вы можете заметить сразу же. Для разгона &#8211; каждый BBCode настраивается [...]]]></description>
			<content:encoded><![CDATA[<p>BBCode &#8211; это базовая часть вашего форума. Понимая это, мы проделали тяжелую работу по ревизии и полному переписыванию всей системы bbcode в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.0. Мы думаем, что вам это понравится.</p>
<p><span id="more-484"></span></p>
<h4>Отличия от <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2.x</h4>
<p> </p>
<p>Есть некоторые основные различия в системе BBCode, вводимой в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3, которые Вы можете заметить сразу же. Для разгона &#8211; <span style="text-decoration: underline;">каждый</span> BBCode настраивается через админ-центр. Это означает, что если вам необходимо добавить &#8220;rel=&#8217;nofollow&#8217;&#8221; ко всем <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a>, вы сможете сделать это без редактирования файлов. Если вы хотите изменить получающийся HTML для тега, вы сможете это сделать прямо в админцентре. Внутренний обработчик bbcode воспринимает каждый тег как пользовательский и обрабатывает их совершенно одинаково.</p>
<p>Дополнительно, мы изменили HTML код, генерируемый bbcode таким образом, чтобы он был как можно больше XHTML совместимым. Были добавлены Alt атрибуты для img тегов. Мы изменили обработку смайликов, так что img теги смайликов содержат alt с кодом смайлика, также мы полностью удалили не стандартный атрибут emoid. Цитаты теперь должным образом используют HTML тег blockquote (в дальнейшем мы планируем использовать HTML тег cite, если вместе с цитатой вы добавляете ссылку и имя автора цитаты). Для текста выделенного жирным теперь будет использоваться HTML тег strong, для курсива &#8211; em. Фактически весь HTML код для bbcode был переписан с целью сделать его более семантичным и для того что бы сделать HTML код генерируемый <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>, соответствующим современным стандартам.</p>
<p>И наконец, ревизия коснется и тегов отвечающих за оформление кода (code-syntax boxes), таких как HTML и SQL bbcode, мы сделаем их более гибкими что позволит нам (и конечно же вам!) легко добавлять новые языки программирования. В будущем мы подробнее опишем данное изменение.</p>
<p> </p>
<h4>Новые возможности системы BBCode.</h4>
<p> </p>
<p>Я уверен, что это то, что вы так хотели узнать. Хорошо, поехали&#8230;</p>
<ul>
<li>Синонимы (Алиасы, Aliases): теперь bbcode могут иметь синонимы, так сразу несколько тегов смогут запускать один и тот же bbcode. Примеры? Из существующих, &#8220;code&#8221; и &#8220;codebox&#8221;. Аналогично &#8220;media&#8221;, &#8220;blogmedia&#8221;, &#8220;flash&#8221;, и &#8220;youtube&#8221; так же будут одними тем же bbcode. (О медиа тегах мы расскажем через минуту )</li>
<li>Одиночные теги: вы хотели использовать [hr] (горизонтальная линия)? Теперь можете.</li>
<li>Не обязательные параметры тега: теперь параметры могут опускаться и у ваших bbcode. Как это работает? Вспомните <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">url</a> тег, вы можете записать ссылку как параметр к тегу, а содержимое будет подставлено как название ссылки, или же опустить параметр, тогда содержимое станет ссылкой.</li>
<li>Запрет использования одних тегов внутри других. Классический пример запрет использования смайликов и других bbcode внутри code bbcode.</li>
<li>Запуск PHP обработчика: вам необходимо немного больше логики при обработке bbcode (вы хотите немного уличной магии?)? Теперь вы сможете использовать bbcode плагины для этого. Плагины имеют определенный интерфейс потому их разработка не будет проблематичной. Более подробная информация о создании плагинов будет доступна ближе к выходу <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 3.0. Некоторые наши bbcode уже используют плагины, так что это должно помочь разработчикам при разработке и использовании плагинов. Таким образом вам больше не надо будет изменять существующие файлы системы для добавления новых bbcode.</li>
<li>Управление правами групп на использование определенных тегов: менеджер bbcode теперь имеет поле, в котором можно указать, какие группы (так же поддерживаются второстепенные группы) смогут использовать данный тег. Так что, если вы хотите, чтобы только администраторы могли создавать таблицы с использованием тега [table], вы сможете это сделать.</li>
<li>Управление местами где может быть использован bbcode: хотите запретить использовать вставку картинок в подпись и оставить возможность вставки только в сообщениях? Теперь вы сможете настроить это прямо в менеджере bbcode в админцентре. Данная опция доступна и для модификации, таким образом разработчики смогут создать возможность настройки тегов которые можно будет использовать в их приложениях.</li>
</ul>
<p> </p>
<h4>Новые &#8220;стандартные&#8221; BBCode в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3</h4>
<p> </p>
<p>Я использовал определение &#8220;стандартные&#8221;, хотя теперь все в АЦП настраиваемо. В дополнении ко всем тем bbcode которые уже были в <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 2.x, будут доступны несколько новых:</p>
<ul>
<li>&#8220;member&#8221;. Использование: [member=GiV]. Данный тег является одиночным bbcode тегом, которые принимает один параметр &#8211; имя пользователя. При обработке данного тега система создаст ссылку на профиль пользователя и тег будет преобразован в &#8220;&lt;a href=&#8217;ссылка на профиль&#8217;&gt;имя пользователя&lt;/a&gt;&#8221;</li>
<li>&#8220;hr&#8221;. Использование: [hr]. Очень простой bbcode тег, который будет преобразован в горизонтальный разделитель.</li>
<li>&#8220;xml&#8221; и &#8220;php&#8221;. Использование: [xml]XML код[/xml] или [php]$phpCode = 1;[/php]. Теги будут преобразованы во вставки блоков кода с подсветкой синтаксиса, аналогично существующим тегам SQL и HTML.</li>
<li>&#8220;media&#8221;. Использование: [media]http://youtube.com/videolink[/media]. Да это то, чего вы все так ждали. В блогах мы уже использовали такой тег, так что мы пошли дальше и встроили его в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>. Вы можете настраивать совпадения и замены для media тега ( те кто используют IP.Blog 1.4 знают о чем я ), это позволит вам при желании подключать новые медиа сервисы. Так же старый bbcode [flash] теперь работает через media тег, так же доступны параметры высоты и ширины для ролика.</li>
</ul>
<p> </p>
<h4>Унылые и скучные технические подробности</h4>
<p> </p>
<p>Для тех из вас, кто заинтересован в программной реализации новой системы скажу, что мы полностью переписали парсер bbcode с нуля. Это должно быть гарантией того, что bbcode может быть корректно обработан, когда пользователь осуществляет правки контента. Во-первых, мы вернулись к надлежащему вызову pre_db_parse перед сохранением контента в базу, и pre_display_parse перед его выводом. Это должно быть гарантией того что bbcode может быть корректно обработан когда пользователь осуществляет правки контента.</p>
<p>Главное изменение в том, как отформатированный текст обрабатывается &#8211; а никак он не обрабатывается! Это означает то, что мы теперь не осуществляем обратные преобразования из распарсенного bbcode, тем самым почти избавляясь от возникновения тех глюков, которые были связанны с этим процессом.</p>
<p>Другим плюсом данного подхода является то, что перестраивать посты вам будет необходимо только при обновлении до <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.0, а потом уже больше никогда. В дополнении к этому мы намереваемся полностью обновить наш инструмент обновления сообщений, тот который command-line, и планируем добавить задачу для планировщика, которая автоматически обновит сообщения за вас в любой удобный для вас момент. Более подробно об этом мы планируем сообщить ближе к выпуску 3.0.</p>
<p>Некоторые из вас уже задаются вопросом о росте расхода ресурсов из-за постоянного парсинга сообщении при выводе. В нашем новом парсере bbcode мы почти полностью избавились от регулярных выражений. Регулярные выражения позволяют вам задавать &#8220;паттерн&#8221; и отыскивать все совпадения с этим &#8220;паттерном&#8221; в блоке текста, это достаточно расточительный, но очень эффективный инструмент. В <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 2.x использовался именно он (так же как и в большинстве существующих bbcode парсеров). Для <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.0 мы говорим об использовании подхода с использованием лексем. Мы используем несколько быстрых встроенных PHP функций (таких как strpos и substr_replace) вместо массивных регулярных выражений, что делает процесс парсинга bbcode намного быстрее и менее прожорливее. Позднее мы постараемся предоставить результаты профилирования данного метода.Так же мы полностью переписали механизм переноса слов. Теперь он не нарушает HTML, HTML-entity и multibyte&#8230; три огромных проблем, которые мы часто видели при работе функции переноса в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2.x.</p>
<p>В целом, с помощью новой системы мы сгладили последствия различных ошибок, которые мы получали, и система должна получиться не только более легко используемой, но и намного более надежной и быстрой.</p>
<p> </p>
<h4>Итог</h4>
<p> </p>
<p>Мы надеемся что вам понравятся изменения и мы надеемся, что обновления, которых многие из вас ждали долгое время, удовлетворят ваши потребности и в обозримом будущем.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/bbcode/" title="BBCode" rel="tag nofollow">BBCode</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/reviziya/" title="Ревизия" rel="tag nofollow">Ревизия</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/sistema/" title="Система" rel="tag nofollow">Система</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/reviziya-sistemyi-bbcode/" title="Ревизия системы BBCode" rel="tag nofollow">Ревизия системы BBCode</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/uluchsheniya-sistemyi-obrabotki-oshibok/" title="Улучшения системы обработки ошибок (04/06/2009)">Улучшения системы обработки ошибок</a> (0)</li>
	<li><a href="http://pronets.ru/faq-po-ipboard/" title="FAQ по IP.Board (05/07/2009)">FAQ по IP.Board</a> (0)</li>
	<li><a href="http://pronets.ru/windows-7-pervyie-svedeniya-o-novoy-sisteme/" title="Windows 7 &#8211; первые сведения о новой системе (16/01/2009)">Windows 7 &#8211; первые сведения о новой системе</a> (0)</li>
	<li><a href="http://pronets.ru/gid-po-css-ip-board-3-0-x/" title="Гид по CSS IP.Board 3.0.x (08/08/2009)">Гид по CSS IP.Board 3.0.x</a> (0)</li>
	<li><a href="http://pronets.ru/legenda-foruma-o-tom-kak-ee-sozdat/" title="Легенда форума, о том как ее создать (22/03/2009)">Легенда форума, о том как ее создать</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/reviziya-sistemyi-bbcode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Каркас для пользовательских приложений</title>
		<link>http://pronets.ru/karkas-dlya-polzovatelskih-prilozheniy/</link>
		<comments>http://pronets.ru/karkas-dlya-polzovatelskih-prilozheniy/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 20:21:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Каркас]]></category>
		<category><![CDATA[Пользовательское приложение]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=482</guid>
		<description><![CDATA[IP.Board стремительно развивался все эти годы. Так нами была добавлена новая возможность для нашего форума &#8211; каркас для компонентов. Это позволило нам предоставить такие модули как IP.Gallery, IP.Blog и IP.Downloads. Кроме того, данный каркас успешно используется и сторонними разработчиками для разработки хороших компонентов.

По мере развития IP.Board мы видели проблемы с интеграцией компонентов и потому продолжали [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> стремительно развивался все эти годы. Так нами была добавлена новая возможность для нашего форума &#8211; каркас для компонентов. Это позволило нам предоставить такие модули как IP.Gallery, IP.Blog и IP.Downloads. Кроме того, данный каркас успешно используется и сторонними разработчиками для разработки хороших компонентов.<br />
<span id="more-482"></span></p>
<p>По мере развития <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> мы видели проблемы с интеграцией компонентов и потому продолжали все большее их отделение от самого форума. Мы не хотели, чтобы модули вносили изменения в базовые файлы <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> &#8211; это сделало бы задачу обновления форума сложнее, чем она на самом деле есть. Компоненты должны безболезненно интегрироваться в базовые файлы (т.е. без изменения последних, так называемая бесшовная интеграция) таким образом, они могли бы управляться вместе и иметь доступ к общим библиотекам кода.</p>
<p><a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 3.0 содержит в себе новый каркас для пользовательских приложений, который призван заменить традиционную систему компонент. Новый форум будет сразу же укомплектован 5-ю приложениями. Это 3 стандартных приложения: Система (которая включает в себя такие вещи, как редакторы настроек и шаблонов, и инструменты для рутинных задач, которые не попадают в другие категории, но являются частью системы), Пользователи (средства для управления пользователями, группами) и сам <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> (например, форумы, модераторы и т.д.)</p>
<p>В дополнении к этому, новая система будет поддерживать все модули как от IPS, так и от сторонних разработчиков, которые будут функционировать так же как и уже встроенные приложения. Заметим, что в новом форуме сразу будет два модуля от IPS это: Календарь и Портал.</p>
<p>Приложения можно будет полностью отключить ( например, вы сможете легко отключить или включить функции календаря в системе ). Дополнения IPS и модули сторонних разработчиков работают идентично и используют тот же полнофункциональный каркас приложений, что и встроенные приложения. Вы можете легко добавлять настройки, создавать и изменять меню, создавать права доступа и определять необходимость обновления/загрузки кеша, и много много другого просто используя новый каркас.</p>
<p>Мы надеемся, что новый каркас для приложений поможет разработчикам (и конечно же нам) отделить код приложений так, чтобы он не взаимодействовал с кодом ядра <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> и в то же время был максимально интегрирован и в пользовательскую часть форума и в его администраторскую панель.</p>
<p>Мы планируем предоставить несколько руководств, а так же документацию для разработчиков с выходом <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.0. Например, мы хотим написать обзор того, как мы преобразовываем один из наших компонентов к новой структуре, чтобы показать разработчикам, как они могут преобразовать их собственный код для новой версии.</p>
<p>Новый каркас будет предназначаться для создания полнофункциональных модулей и разделов форума. Более подробную информацию о том, как использовать новую систему плагинов и хуков, предоставленную в <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 3.0, вы сможете найти в наших будущих записях.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/polzovatelskoe-prilozhenie/" title="Пользовательское приложение" rel="tag nofollow">Пользовательское приложение</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/karkas/" title="Каркас" rel="tag nofollow">Каркас</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/dizayn/" title="Дизайн (04/06/2009)">Дизайн</a> (0)</li>
	<li><a href="http://pronets.ru/uluchsheniya-sistemyi-obrabotki-oshibok/" title="Улучшения системы обработки ошибок (04/06/2009)">Улучшения системы обработки ошибок</a> (0)</li>
	<li><a href="http://pronets.ru/ip-board-3/" title="Скрины IP. Board 3 (08/12/2008)">Скрины IP. Board 3</a> (0)</li>
	<li><a href="http://pronets.ru/logotip-iz-4-kartinok/" title="Логотип из 4 картинок (22/03/2009)">Логотип из 4 картинок</a> (0)</li>
	<li><a href="http://pronets.ru/reviziya-sistemyi-bbcode/" title="Ревизия системы BBCode (04/06/2009)">Ревизия системы BBCode</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/karkas-dlya-polzovatelskih-prilozheniy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Дизайн</title>
		<link>http://pronets.ru/dizayn/</link>
		<comments>http://pronets.ru/dizayn/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 20:16:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Дизайн]]></category>
		<category><![CDATA[Дизайн IP.Board]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=477</guid>
		<description><![CDATA[Одним из первых решений, которые мы определили для IP.Board 3, было то, что выпускаться он будет с новым брэндовым стилем. Наш текущий стиль с нами с самого первого релиза IPB 2 и на самом деле старше чем кажется. Pro стиль представлен совсем недавно, однако, его главной задачей было упрощение существующего стиля, нежели внесения новых, существенных [...]]]></description>
			<content:encoded><![CDATA[<p>Одним из первых решений, которые мы определили для <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3, было то, что выпускаться он будет с новым брэндовым стилем. Наш текущий стиль с нами с самого первого релиза <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 2 и на самом деле старше чем кажется. Pro стиль представлен совсем недавно, однако, его главной задачей было упрощение существующего стиля, нежели внесения новых, существенных изменений.</p>
<p><span id="more-477"></span></p>
<p>И так, ответственность за проектирование и создание нового стиля легла на меня. Это огромное дело и в плане масштаба, и в плане затраченного времени. Стиль &#8211; самая видимая часть любого продукта. Это то, что формирует ваше первое впечатление, это то, что вы видите (используете) всякий раз. Кроме того, так как мы проделали в продукте большие изменения, то каждый аспект стиля должен быть проработан заново, с пустого места. <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> &#8211; огромное приложение, таким образом разработка нового стиля это значительный подвиг.</p>
<h4>Цели</h4>
<p> </p>
<p>Прежде чем рассмотреть визуальное представление стиля, я хотел определить некоторые требования для него. Это:</p>
<ul>
<li>обеспечение семантической разметки настолько, на сколько это возможно</li>
<li>обеспечение XHTML валидности (1.0 Strict)</li>
<li>обеспечение ненавязчивости Javascript</li>
</ul>
<p> </p>
<p>Эти требования имеют реальные выгоды в современном web&#8217;е. Семантическая разметка удобна не только screenreader&#8217;ам (в том числе и поисковым ботам), но и предоставляет надежную основу для дизайнеров. Когда все стилистические решения удалены из XHTML, они могут быть сделаны только в CSS (When all stylistic decision is removed from the XHTML, those decisions can now be made in the CSS alone.). Моя цель создать новый стиль таким, что бы при переделке он требовал минимальных изменений в шаблонах, и семантическая форма разметки является частью для достижения этой цели. Надеюсь что большинство стилей будут получены путем простого редактирования одного лишь CSS &#8211; Я уверен, что администраторы оценят насколько легко будет проходить обновление, когда большинство шаблонов в стилях одинаковы.</p>
<p>Другой несомненной выгодой применения семантического кода является и то, что теперь мы сможем получить страницу для печати, просто подставив printer-specific стиль, тем самым мы избавимся от кода подготавливающего версию для печати в самом <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a>.</p>
<h4>Javascript</h4>
<p> </p>
<p><a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 будет использовать библиотеку PrototypeJS. Я всегда был уверен, что новое поколение Javascript библиотек это большой шаг вперед для самого Javascript, так что я с нетерпением жду возможности воспользоваться ими (бета-тестеры Nexus&#8217;а знают что мы уже довольно плотно используем эту библиотеку в продукте). PrototypeJS позволяет разработчикам сосредоточиться на реализации самих возможностей, вместо того, чтобы заниматься исправлениями проблем совместимости в разных браузерах или бедной поддержки специфической части языка в оных. Мы будем использовать замечательный событийные возможности, для того чтобы вынести максимально возможное количество Javascript из шаблонов.</p>
<h4>Стили идущие в поставке с IPBoard 3</h4>
<p> </p>
<p>Мы планируем как минимум 3 стиля в <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 3. Это будут:</p>
<ul>
<li>стандартный &#8220;модный&#8221; стиль</li>
<li>упрощенный стиль для разработчиков</li>
<li>легкий стиль для мобильных устройств</li>
</ul>
<p> </p>
<p>Последний стиль будет создан на основе существующего стиля lo-fi версии, однако, в отличие от последний он будет полнофункциональным, т.е. будет возможность авторизоваться, создавать темы и сообщения, осуществлять поиск по форуму и многое другое.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/dizayn-ipboard/" title="Дизайн IP.Board" rel="tag nofollow">Дизайн IP.Board</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/dizayn/" title="Дизайн" rel="tag nofollow">Дизайн</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/uproschenie-administrirovaniya/" title="Упрощение администрирования (04/06/2009)">Упрощение администрирования</a> (0)</li>
	<li><a href="http://pronets.ru/vzaimosvyaz-s-vneshnimi-prilozheniyami/" title="Взаимосвязь с внешними приложениями (04/06/2009)">Взаимосвязь с внешними приложениями</a> (0)</li>
	<li><a href="http://pronets.ru/css_pro/" title="Гид по CSS (Pro Skin) (25/07/2008)">Гид по CSS (Pro Skin)</a> (0)</li>
	<li><a href="http://pronets.ru/tekstovoe-napolnenie-sayta/" title="Текстовое наполнение сайта (16/06/2008)">Текстовое наполнение сайта</a> (0)</li>
	<li><a href="http://pronets.ru/banners/" title="Баннеры Нашего Сайта (25/06/2008)">Баннеры Нашего Сайта</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/dizayn/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Расширяя механизмы авторизации</title>
		<link>http://pronets.ru/rasshiryaya-mehanizmyi-avtorizatsii/</link>
		<comments>http://pronets.ru/rasshiryaya-mehanizmyi-avtorizatsii/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 20:12:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[Авторизация]]></category>
		<category><![CDATA[Механизмы]]></category>
		<category><![CDATA[Механизмы авторизации]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=472</guid>
		<description><![CDATA[Во второй версии IP.Board был добавлен менеджер методов авторизации. При помощи этого инструмента вы могли подключать к IPB внешние таблицы пользователей, LDAP и IP.Converge. Вы так же могли создавать собственные методы и подключать форум к любому внешнему реестру (например, OpenID). Методы авторизации использовались нами и при конвертации &#8211; это позволяло системе принимать старые пароли, которые [...]]]></description>
			<content:encoded><![CDATA[<p>Во второй версии <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> был добавлен менеджер методов авторизации. При помощи этого инструмента вы могли подключать к <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> внешние таблицы пользователей, LDAP и IP.Converge. Вы так же могли создавать собственные методы и подключать форум к любому внешнему реестру (например, OpenID). Методы авторизации использовались нами и при конвертации &#8211; это позволяло системе принимать старые пароли, которые были созданы еще на предыдущей форумной системе.</p>
<p><span id="more-472"></span></p>
<h4>В <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 менеджер методов авторизации получил еще больше возможностей.</h4>
<p> </p>
<p>Форма авторизации теперь находится в одном шаблоне. Это сделано для того, чтобы быть уверенным, что форма авторизации во всех частях приложения выглядит одинаково. Теперь при изменении формы вам не надо будет вносить изменения в несколько шаблонов как это было в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 2. Так же форма авторизации сделана &#8220;интеллектуальной&#8221;. Так как для авторизации в системе может требоваться как имя пользователя, так и email то мы решили максимально упростить форму. Теперь форма будет запрашивать только одно поле &#8220;имя для входа&#8221; (&#8221;sign in name&#8221;), а <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> уже сам определит отправляете ли вы email адрес или логин.</p>
<p>Так же мы упростили менеджер, убрав разделение методов на &#8220;удаленный&#8221; (&#8221;passthrough&#8221;) и &#8220;совместный&#8221; (&#8221;onfail&#8221;). Это стало возможным благодаря тому, что теперь появилась возможность создавать цепочки методов. Например, вы можете попробовать идентифицировать пользователя по локальной базе форума (если аккаунт существует) и в случае провала проверки загрузить пользователя из внешней базы. Или вы можете позволить пользователю авторизоваться с использованием одного из нескольких подключенных реестров пользователей. В админцентре методы авторизации будут располагаться в том порядке, в котором будет строиться цепочка, и вы сможете изменить их порядок в цепи простым перетаскиванием метода на нужное место.</p>
<p>Некоторые методы авторизации требовали дополнительной информации для работы. Например, метод для работы с LDAP, <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> необходимо знать дополнительные данные о имени сервера LDAP, имени пользователя и пароле для доступа к LDAP. Во второй версии <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> эта информация вводилась в конфигурационном PHP файле. В третьей версии данную информацию можно будет ввести (и в любое время изменить) напрямую в АЦ.</p>
<p>Еще одной особенностью нового менеджера стала работа с локальным реестром пользователей. В <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 2 когда пользователь добавлялся в локальный реестр после удачной аутентификации через внешний реестр, пользователю необходимо было заполнить дополнительные поля: отображаемое имя пользователя и email адрес, даже если эта информация уже хранилась в удаленном реестре. В <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 вы можете получить ЛЮБЫЕ данные из внешнего реестра, тем самым освободив пользователя от необходимости дозаполнения форм. А логин и email теперь сохраняются автоматически, делая авторизацию однородной (без переходов к дополнительным формам).</p>
<p>IP.Converge также подвергся незначительному обновлению &#8211; если вы используете IP.Converge на вашем форуме, то пользователи (которые уже заходили на форум под своим аккаунтом) теперь смогут заходить по их логину на форуме. <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> сам найдет email адрес пользователя по его логину и предаст его в IP.Converge для аутентификации, при этом пользователи даже не будут знать об этом.</p>
<p>Ну и наконец, авторизация с использованием протокола OpenID в <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3 станет стандартным методом авторизации. Если вы не знакомы с OpenID, то вам будет полезно знать, что это развивающийся протокол, позволяющий вам управлять установлением подлинности собственного логина. Вы отправляете <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a> сайта, который предоставляет сервис по хранению вашей OpenID записи, так называемый OpenID провайдер, (например, Yahoo, Wordpress, Flickr, и AOL), затем переходите на этот <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a> и подтверждаете, что запрос авторизации действительно ваш, при этом пройдя авторизацию на стороне провайдера. После того как информация о правильности аутентификации придет на форум, вы будете уже автоматически идентифицированы им. Более того, если вы разрешите отправить на форум логин и email, то форум создаст для вас полнофункциональный локальный аккаунт. <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> будет поддерживать первую и вторую версию протокола OpenID с расширениями Simple Registration, Attribute Exchange и PAPE. Для реализации OpenID мы будем использовать PHP OpenID библиотеки от JanRain.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/avtorizatsiya/" title="Авторизация" rel="tag nofollow">Авторизация</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/mehanizmyi-avtorizatsii/" title="Механизмы авторизации" rel="tag nofollow">Механизмы авторизации</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/mehanizmyi/" title="Механизмы" rel="tag nofollow">Механизмы</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/upravlenie-zablokirovannyimi-polzovatelyami/" title="Управление заблокированными пользователями (04/06/2009)">Управление заблокированными пользователями</a> (0)</li>
	<li><a href="http://pronets.ru/bokovaya-panel-v-redaktore/" title="Боковая панель в редакторе (13/06/2008)">Боковая панель в редакторе</a> (0)</li>
	<li><a href="http://pronets.ru/o-sayte/" title="О сайте (17/11/2009)">О сайте</a> (0)</li>
	<li><a href="http://pronets.ru/optimizatsiya-dlya-poiskovyih-sistem/" title="Оптимизация для поисковых систем (04/06/2009)">Оптимизация для поисковых систем</a> (0)</li>
	<li><a href="http://pronets.ru/uproschenie-administrirovaniya/" title="Упрощение администрирования (04/06/2009)">Упрощение администрирования</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/rasshiryaya-mehanizmyi-avtorizatsii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Делая шаблоны проще</title>
		<link>http://pronets.ru/delaya-shablonyi-prosche/</link>
		<comments>http://pronets.ru/delaya-shablonyi-prosche/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 20:09:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=469</guid>
		<description><![CDATA[HTML логика была особенностью Invision Power Board в течение довольно продолжительного времени. Хотя мы и не применяли обширно тег &#8220;&#8221; для сохранения обратной совместимости со старыми версиями, логика с использованием   применялась достаточно удачно. Теперь, когда мы с чистого листа создаем версию 3.0, мы можем сделать реальные позитивные изменения в системе шаблонов.

Invision Power Board [...]]]></description>
			<content:encoded><![CDATA[<p>HTML логика была особенностью <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> в течение довольно продолжительного времени. Хотя мы и не применяли обширно тег &#8220;<foreach>&#8221; для сохранения обратной совместимости со старыми версиями, логика с использованием <if> <else /> применялась достаточно удачно. Теперь, когда мы с чистого листа создаем версию 3.0, мы можем сделать реальные позитивные изменения в системе шаблонов.<br />
<span id="more-469"></span></p>
<p><a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 3.0 продолжит использовать существующую HTML логику и добавит новые возможности. Эти новшества позволят существенно изменять внешний вид без изменения PHP кода. Там, где это возможно, &#8220;вид&#8221; (например, список форумов, тем, просмотр темы) имеет один шаблон. В предыдущей версии для создания подобного &#8220;вида&#8221; объединялось несколько шаблонов (до 30!). Это означало, что некоторые элементы интерфейса были жестко закреплены за определенной позицией и не могли быть перенесены в другое место страницы. Например, на главной странице не было возможности перенести статистику выше списка форумов. Аналогичным образом было невозможно перенести активных пользователей ниже статистики. (здесь не имеется ввиду возможность переноса без изменения в коде)</p>
<p>Теперь все это возможно. Вы можете переносить любую сущность в любую позицию в пределах &#8220;вида&#8221; без правки PHP файлов. Это откроет новые перспективы для творчества и позволит создавать действительно уникальные шаблоны.</p>
<p>Еще одним шагом вперед для <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 3 является возможность использования в шаблонах логики отображения. Естественно, мы всегда можем использовать</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>if<span style="color: #339933;">&gt;</span></pre></div></div>

<p> и</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>else <span style="color: #339933;">/&gt;</span></pre></div></div>

<p>, но теперь можно использовать следующие стандартные теги.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>strong<span style="color: #339933;">&gt;</span>Тег Date<span style="color: #339933;">&lt;/</span>strong<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Примеры:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span><span style="color: #339933;">%</span><span style="color: #990000;">date</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;now&quot;</span><span style="color: #339933;">|</span>format<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;long&quot;</span><span style="color: #339933;">|</span>relative<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;false&quot;</span><span style="color: #339933;">%</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#123;</span><span style="color: #339933;">%</span><span style="color: #990000;">date</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;1210012321&quot;</span><span style="color: #339933;">|</span>format<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;manual{d m Y}&quot;</span><span style="color: #339933;">%</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#123;</span><span style="color: #339933;">%</span><span style="color: #990000;">date</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;-1 day&quot;</span><span style="color: #339933;">|</span>format<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;long&quot;</span><span style="color: #339933;">%</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p>Вы можете точно задавать формат даты, требуемый в данном случае. Тег работает как с UNIX &#8216;timestamp&#8217;, так и с человекопонятным представлением вида &#8216;now&#8217;, &#8216;-1 day&#8217;, &#8216;tomorrow&#8217;, и подобными. Формат может быть задан как предустановленными форматами даты в <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> (ong, short, joined), так и PHP форматом.</p>
<p><strong>Тег Parse</strong></p>
<p>Примеры:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>parse expression<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;sprintf( &quot;</span><span style="color: #cc66cc;">14</span><span style="color: #0000ff;">&quot;, &quot;</span>There are <span style="color: #339933;">%</span>s apples in the bag<span style="color: #0000ff;">&quot; )&quot;</span> <span style="color: #339933;">/&gt;</span>
<span style="color: #339933;">&lt;</span>parse expression<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;substr( <span style="color: #006699; font-weight: bold;">$data</span>['name'], 0, 10 )&quot;</span> <span style="color: #339933;">/&gt;</span></pre></div></div>

<p>Данный тег позволяет создавать немедленный синтаксический анализ с использованием PHP кода. Тег заменяется значением, возвращенным PHP после выполнения параметра expression тега.</p>
<p><strong>Тег <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a></strong></p>
<p>Примеры:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009900;">&#123;</span><span style="color: #339933;">%</span>url<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;foo=1&amp;bar=2&quot;</span><span style="color: #339933;">|</span>label<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;Click Me&quot;</span><span style="color: #339933;">|</span>base<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;public&quot;</span><span style="color: #339933;">|</span>id<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;myLink&quot;</span><span style="color: #339933;">|</span>class<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;linkCSS&quot;</span><span style="color: #339933;">|</span>onclick<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;this.function()&quot;</span><span style="color: #339933;">%</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#123;</span><span style="color: #339933;">%</span>url<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;foo=1&amp;bar=2&quot;</span><span style="color: #339933;">|</span>base<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;public&quot;</span><span style="color: #339933;">%</span><span style="color: #009900;">&#125;</span></pre></div></div>

<p>Первый пример фактически создаст полный</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>a href <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;...&gt; ... &lt;/a&gt;</span></pre></div></div>

<p>кусок HTML, тогда как второй пример возвратит только форматированный <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a>. Целью создания такого тега было предотвращение hardcoded (жестко прописанных) <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a> в шаблонах. В <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 2.3 использовались записи в шаблонах вида</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #0000ff;">'{$this-&gt;ipsclass-&gt;base_url}&amp;act=login'</span><span style="color: #339933;">&gt;</span>Log In<span style="color: #339933;">&lt;/</span>a<span style="color: #339933;">&gt;</span></pre></div></div>

<p>В новой версии данная ссылка уже будет выглядеть так:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>a href<span style="color: #339933;">=</span><span style="color: #0000ff;">'{%url=&quot;act=login&quot;|base=&quot;public&quot;%}'</span><span style="color: #339933;">&gt;</span>Log In<span style="color: #339933;">&lt;/</span>a<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Но, конечно, основное преимущество данного подхода — это возможность применения определенного формата к <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a>. Таким образом, функция formatURL(), возвращающая форматированный <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a>, может создавать дружественные <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a>&#8217;ы (ЧПУ), если данная опция включена в АЦ, или создавать обычные <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a>, если опция отключена.</p>
<p><strong>Тег Variable</strong></p>
<p>Пример:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>variable <span style="color: #990000;">key</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;tdColor&quot;</span> <span style="color: #b1b100;">default</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;blue&quot;</span> <span style="color: #339933;">/&gt;</span>
<span style="color: #339933;">&lt;</span>variable <span style="color: #990000;">key</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;tdColor&quot;</span> oncondition<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$foo</span> == &quot;</span>green<span style="color: #0000ff;">&quot;&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;green&quot;</span> <span style="color: #339933;">/&gt;</span>
<span style="color: #339933;">&lt;</span>variable <span style="color: #990000;">key</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;tdColor&quot;</span> oncondition<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;<span style="color: #006699; font-weight: bold;">$foo</span> == &quot;</span>black<span style="color: #0000ff;">&quot;&quot;</span> value<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;black&quot;</span> <span style="color: #339933;">/&gt;</span></pre></div></div>


<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>span style<span style="color: #339933;">=</span><span style="color: #0000ff;">'color:&lt;variable=&quot;tdColor&quot; /&gt;'</span><span style="color: #339933;">&gt;</span>Hello World<span style="color: #339933;">!&lt;/</span>span<span style="color: #339933;">&gt;</span></pre></div></div>

<p>В данном примере при помощи тега variable вводится переменная tdColor со значением по-умолчанию &#8220;blue&#8221;. Значение переменной tdColor так же зависит от значения переменной $foo, которая является внешней. Таким образом, если переменная $foo будет иметь значение &#8220;green&#8221;, то весь этот блок кода в результате будет заменен шаблонизатором на</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>span style<span style="color: #339933;">=</span><span style="color: #0000ff;">'color:green'</span><span style="color: #339933;">&gt;</span>Hello World<span style="color: #339933;">!&lt;/</span>span<span style="color: #339933;">&gt;</span></pre></div></div>

<p>Этот тег позволяет вводить переменные в шаблон без изменения PHP кода. Тег будет широко использоваться в повторяющихся блоках, в которых необходимо чередование цветов (например, при выводе списка тем, сообщений).</p>
<p><strong>Пользовательские теги.</strong></p>
<p>Теги шаблонизатора будут выделены в отдельные плагины, которые и будут заниматься реализацией поведения тега. Таким образом, вы сможете изменять поведение существующих тегов, а так же создавать свои.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/obnovlenie-ipboard/" title="Обновление (upgrade) IP.Board (31/08/2008)">Обновление (upgrade) IP.Board</a> (0)</li>
	<li><a href="http://pronets.ru/platnyie-uslugi/" title="Платные услуги (12/06/2008)">Платные услуги</a> (0)</li>
	<li><a href="http://pronets.ru/obnovlenie-stilya/" title="Обновление стиля (04/06/2009)">Обновление стиля</a> (0)</li>
	<li><a href="http://pronets.ru/uproschenie-administrirovaniya/" title="Упрощение администрирования (04/06/2009)">Упрощение администрирования</a> (0)</li>
	<li><a href="http://pronets.ru/chmod-na-faylyi-i-papki-ipb/" title="CHMOD на файлы и папки IPB (30/06/2008)">CHMOD на файлы и папки IPB</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/delaya-shablonyi-prosche/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Каркас приложения на PHP 5</title>
		<link>http://pronets.ru/karkas-prilozheniya-na-php-5/</link>
		<comments>http://pronets.ru/karkas-prilozheniya-na-php-5/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 20:02:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[PHP 5]]></category>
		<category><![CDATA[Каркас]]></category>
		<category><![CDATA[Приложение]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=466</guid>
		<description><![CDATA[Одним из главных обсуждений при планировании разработки Invision Power Board 3.0 было обсуждение необходимости продолжения поддержки PHP 4 продуктом и разработки продукта только под PHP 5. Разработка под PHP 5 имеет множество преимуществ, и мы реально представляем, что применение возможностей из 5-го PHP позволит увеличить безопасность и эффективность IPB. На решение об отказе от PHP [...]]]></description>
			<content:encoded><![CDATA[<p>Одним из главных обсуждений при планировании разработки <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 3.0 было обсуждение необходимости продолжения поддержки PHP 4 продуктом и разработки продукта только под PHP 5. Разработка под PHP 5 имеет множество преимуществ, и мы реально представляем, что применение возможностей из 5-го PHP позволит увеличить безопасность и эффективность <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a>. На решение об отказе от PHP 4 так же повлияли и новости PHP Group о прекращении разработки 4-ой версии.<br />
<span id="more-466"></span></p>
<p>Чтобы увидеть выгоду от использования PHP 5, нужно рассмотреть новую структуру <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a>, которая стала результатом перехода к 5-ке.</p>
<p>Хотя <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> 1 и 2 были основаны на паттерне &#8216;front controller&#8217;, они не имели реального каркаса, на который бы навешивался код. Близким к такому каркасу был &#8216;ipsclass&#8217;, который являлся супер-классом.</p>
<p>&#8216;ipsclass&#8217; был удобным методом транспортировки различных классов и функций внутри <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a>. Удобным, но не идеальным. Каждый должен был передавать этот супер-класс из класса в класс, попутно указывая PHP 4 передавать его по ссылке. Супер-класс содержал всю базовую функциональность <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a>. Объекты входных данных, пользователи, базы данных содержались в супер-классе наравне с множеством других объектов и функций. Ни один из них не был упорядочен в каком-либо логическом формате.</p>
<p>В итоге мы решили отказаться от &#8216;ipsclass&#8217; как супер-класса и реализовали паттерн &#8216;Controller -> Command -> View&#8217;. Это позволило нам быстро добавлять новый код и быстро рефакторить (оптимизировать, модифицировать) старый. Паттерн реализован поверх &#8216;IPS Registry&#8217; (регистр). IPS Registry является синглтоном (класс одиночка), который поддерживает интерфейсы к другим объектам (база данных, запрос, настройки и пользователь). Такая организация позволила нам легко передавать основные данные через различные слои нашего паттерна (каркаса). Остальные функции из &#8216;ipsclass&#8217; были перенесены в синглтоны:<br />
&#8220;IPSLib&#8221; – функции, которые не могут быть отнесены к какой-то определенной области;<br />
&#8220;IPSText&#8221; &#8211; функции для работы с текстом (разбор и очистка);<br />
&#8220;IPSCookie&#8221; &#8211; функции по работе с cookie;<br />
&#8220;IPSMember&#8221; &#8211; функции по работе с пользователями (загрузка, сохранение, обработка).</p>
<p>Это позволило сделать ясную структуру с четкими границами для каждого класса одиночки. Использование синглтонов (одиночек) позволило избавить вас от необходимости передачи объектов по ссылке из класса в класс.</p>
<p><strong>А теперь пример:</strong></p>
<p>Так было в <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 2.3</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">print</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ipsclass</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">input</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$value</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ipsclass</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">settings</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'board_name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$id</span>    <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ipsclass</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">member</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'id'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ipsclass</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">input</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'f'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">print</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ipsclass</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get_cookie</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'foo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$text</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ipsclass</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">txt_alphanumerical_clean</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$text</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">print</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ipsclass</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">class_forums</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">build_info</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Так стало в <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 3.0</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">print</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">request</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getField</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$value</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">settings</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getSetting</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'board_name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">member</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getProperty</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'member_id'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">request</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setField</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">'f'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">print</span> IPSCookie<span style="color: #339933;">::</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'foo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$text</span> <span style="color: #339933;">=</span> IPSText<span style="color: #339933;">::</span><span style="color: #004000;">alphanumerical_clean</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$text</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">print</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getClass</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'class_forums'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">build_info</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Заметим, что мы реализовали интерфейс ArrayAccess для нашего регистра, так что вы сможете работать с ним еще и так:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">print</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">request</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">settings</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'board_name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span></pre></div></div>

<p>В коде выше используются $this->request, $this->member, стоит понимать, что внутри класса эти атрибуты устанавливаются в конструкторе. Ниже типичный пример такого конструктора.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span> ipsRegistry <span style="color: #000088;">$registry</span> <span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">registry</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$registry</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">member</span>   <span style="color: #339933;">=</span> <span style="color: #000088;">$registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">member</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">request</span>  <span style="color: #339933;">=</span> <span style="color: #000088;">$registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">request</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">settings</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">settings</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">DB</span>       <span style="color: #339933;">=</span> <span style="color: #000088;">$registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">DB</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Так же вы можете обратиться к регистру и напрямую, хотя это настоятельно не рекомендуется делать:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">print</span> ipsRegistry<span style="color: #339933;">::</span><span style="color: #004000;">instance</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">request</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getField</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Теперь вы можете создавать цепочки функций. Это позволяет создавать следующие красивые конструкции:</p>
<p>Так было в <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 2.3</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ipsclass</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">load_template</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'skin_boards'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">print</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ipsclass</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">compiled_templates</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'skin_boards'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">board_index</span><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$data</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Так стало в <a href="http://pronets.ru/tag/ipb/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IPB">IPB</a> 3.0</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">print</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">registry</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getClass</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'output'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getTemplate</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'boards'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">board_index</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Как вы можете заметить, вам больше не надо явно загружать шаблон. Он будет загружен функцией &#8216;getTemplate&#8217;, если это еще не было сделано ранее. Затем объект шаблона будет возвращен функцией обратно и по цепочке будет вызван метод &#8216;board_index()&#8217; этого объекта. Такое простое упорядочение позволит писать меньше кода и сократит пространство для возникновения ошибок.</p>
<p>Мы нашли удачное применение абстрактным классам и интерфейсам, появившимся в 5-ой версии, для определения расширяемых классов. Это позволит другим разработчикам намного проще создавать дополнения к <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a>.</p>
<p>Структура &#8216;controller -> command&#8217; позволит вам добавлять новые модули и секции без каких-либо изменений в существующих файлах приложения. Разработчику модификаций достаточно будет создать новую папку с модом, а <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> сам запустит ее. Принцип работы структуры достаточно прост: контроллер получает переменные из <a href="http://pronets.ru/tag/url/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with URL">URL</a> и безопасно загружает управляющий (command) файл, если он найден. Например, адрес &#8220;appcomponent=core&#038;module=global§ion=login&#8221; заставит контроллер подключить управляющий файл &#8220;applications/core/modules_public/global/login.php&#8221;. Для уменьшения риска подделки управляющего файла мы ввели специальную проверку таких файлов с использованием механизма Reflections в IP.B.</p>
<p>На данный момент мы рассмотрели только верхушку айсберга, но уже сейчас должно быть понятно, что каркас 3-ей версии <a href="http://pronets.ru/tag/invision-power-board/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with Invision Power Board">Invision Power Board</a> будет очень мощным и эффективным. И создание такой структуры стало возможно только лишь благодаря полному переходу к PHP 5, чьи возможности мы использовали на полную катушку.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a>, <a href="http://pronets.ru/tag/karkas/" title="Каркас" rel="tag nofollow">Каркас</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/prilozhenie/" title="Приложение" rel="tag nofollow">Приложение</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/php/" title="PHP" rel="tag nofollow">PHP</a>, <a href="http://pronets.ru/tag/php-5/" title="PHP 5" rel="tag nofollow">PHP 5</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/vzaimosvyaz-s-vneshnimi-prilozheniyami/" title="Взаимосвязь с внешними приложениями (04/06/2009)">Взаимосвязь с внешними приложениями</a> (0)</li>
	<li><a href="http://pronets.ru/obnovlenie-foruma-ip-board-do-versii-3/" title="Обновление форума IP.Board до версии 3 (10/09/2009)">Обновление форума IP.Board до версии 3</a> (0)</li>
	<li><a href="http://pronets.ru/invision-power-board/" title="Invision Power Board (28/06/2008)">Invision Power Board</a> (0)</li>
	<li><a href="http://pronets.ru/smaylyi-v-kommentariyah/" title="Смайлы в комментариях (14/10/2008)">Смайлы в комментариях</a> (0)</li>
	<li><a href="http://pronets.ru/izmenenie-nazvanie-tegov-na-russkiy-yazyik-v-20h/" title="Изменение название тегов, на русский язык в 2.0.х (14/03/2009)">Изменение название тегов, на русский язык в 2.0.х</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/karkas-prilozheniya-na-php-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Введение в разработку</title>
		<link>http://pronets.ru/vvedenie-v-razrabotku/</link>
		<comments>http://pronets.ru/vvedenie-v-razrabotku/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 19:39:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[IP.Board 3]]></category>
		<category><![CDATA[Invision Power Board]]></category>
		<category><![CDATA[Invision Power Board 3]]></category>
		<category><![CDATA[IP.Board]]></category>
		<category><![CDATA[IPB]]></category>
		<category><![CDATA[IPB 3]]></category>

		<guid isPermaLink="false">http://pronets.ru/?p=459</guid>
		<description><![CDATA[Мы быстро пробежимся по IP.Board 3.0. Я специально не буду особо заострять внимание в этой записи на различные особенности IP.Board 3.0 и предоставлю возможность нашим разработчикам опубликовать более точную информацию в последующих записях.
Список изменений слишком велик, чтобы публиковать его сразу, и по этому мы выбрали на наш взгляд самые интересные особенности.

Интерфейс
Упор делался на юзабилити и [...]]]></description>
			<content:encoded><![CDATA[<p>Мы быстро пробежимся по <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.0. Я специально не буду особо заострять внимание в этой записи на различные особенности <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a> 3.0 и предоставлю возможность нашим разработчикам опубликовать более точную информацию в последующих записях.</p>
<p>Список изменений слишком велик, чтобы публиковать его сразу, и по этому мы выбрали на наш взгляд самые интересные особенности.</p>
<p><span id="more-459"></span></p>
<h4>Интерфейс</h4>
<p>Упор делался на юзабилити и основных функциях. Новый движок шаблонов, позволяющий расширить набор стандартных шаблонов, более легкое редактирование шаблонов и абсолютно новый стиль по-умолчанию.</p>
<h4>Управление</h4>
<p>Перестроенный менеджер BB-кодов предоставит администраторам форума великолепный контроль над взаимодействием пользователей. Мы предоставим вам отличные средства управления, вы даже сможете отключить неиспользуемые вами функции. Более удобная настройка пользовательских подписок, отключение ненужных настроек и даже полное удаление целых секций.</p>
<h4>Особенности</h4>
<p>Будет довольно много особенностей, но, пока мы придержим их для наших последующих записей. Скажем лишь только то, что будет совершенно новая система репутаций и многое другое.</p>
<h4>Интеграция</h4>
<p>Мы хотим, чтобы вы смогли объединить ваш форум и сайт с минимальными усилиями. Чтобы сделать это проще мы разработали более продвинутые API, агрегацию контента, методы логина и т.д. Теперь наши приложения (IP.Blog, IP.Gallery, и IP.Downloads) гораздо лучше интегрированы друг с другом и непосредственно с <a href="http://pronets.ru/tag/ipboard/" class="st_tag internal_tag" rel="tag nofollow" title="Posts tagged with IP.Board">IP.Board</a>.</p>
<h4>Код</h4>
<p>Будет много усовершенствований кода на низком уровне, которые сделают работу с нашим кодом намного проще для нашего сообщества разработчиков. Вся наша работа ориентированна на усовершенствование использования ресурсов, чтобы сделать наше программное обеспечение как можно менее требовательным к серверной системе.</p>
<h4>Требование сервера</h4>
<p>Чтобы использовать новые возможности мы официально откажемся от PHP 4.x и будет использовать PHP 5.x. Также наше програмное обеспечение будет поддерживать базы данных MySQL 4.x, но мы настоятельно рекомендуем использовать MySQL 5.x.</p>
<h4>База данных ORACLE</h4>
<p>Из-за непопулярности баз данных ORACLE мы решили от них отказаться. Мы продолжим поддерживать MySQL и Microsoft SQL Server.</p>

	<b>Метки:</b> <a href="http://pronets.ru/tag/ipboard-3/" title="IP.Board 3" rel="tag nofollow">IP.Board 3</a>, <a href="http://pronets.ru/tag/invision-power-board-3/" title="Invision Power Board 3" rel="tag nofollow">Invision Power Board 3</a>, <a href="http://pronets.ru/tag/invision-power-board/" title="Invision Power Board" rel="tag nofollow">Invision Power Board</a>, <a href="http://pronets.ru/tag/ipboard/" title="IP.Board" rel="tag nofollow">IP.Board</a>, <a href="http://pronets.ru/tag/ipb-3/" title="IPB 3" rel="tag nofollow">IPB 3</a>, <a href="http://pronets.ru/tag/ipb/" title="IPB" rel="tag nofollow">IPB</a><br /><br />

	<ul class="st-related-posts">
	<li><a href="http://pronets.ru/logotip-iz-4-kartinok/" title="Логотип из 4 картинок (22/03/2009)">Логотип из 4 картинок</a> (0)</li>
	<li><a href="http://pronets.ru/oshibki-bazyi-dannyih/" title="Ошибки базы данных (29/06/2008)">Ошибки базы данных</a> (0)</li>
	<li><a href="http://pronets.ru/tegi-shablonov-perezagruzka/" title="Теги шаблонов, перезагрузка (04/06/2009)">Теги шаблонов, перезагрузка</a> (0)</li>
	<li><a href="http://pronets.ru/prochie-vozmozhnosti/" title="Прочие возможности (04/06/2009)">Прочие возможности</a> (0)</li>
	<li><a href="http://pronets.ru/ustanovka-foruma-ipboard-2xx/" title="Установка форума IP.Board 2.x.x (25/07/2009)">Установка форума IP.Board 2.x.x</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://pronets.ru/vvedenie-v-razrabotku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
