<?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>Joomla портал &#187; Советы</title>
	<atom:link href="/category/sovetyi/feed" rel="self" type="application/rss+xml" />
	<link>https://datso.net</link>
	<description>статьи, новости, обзоры cms Joomla</description>
	<lastBuildDate>Fri, 14 Jan 2011 13:44:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Инструкция по обновлению с Joomla 1.0.x на Joomla 1.5 Stable</title>
		<link>https://datso.net/sovetyi/instruktsiya-po-obnovleniyu-s-joomla-1-0-x-na-joomla-1-5-stable.html</link>
		<comments>https://datso.net/sovetyi/instruktsiya-po-obnovleniyu-s-joomla-1-0-x-na-joomla-1-5-stable.html#comments</comments>
		<pubDate>Fri, 14 Jan 2011 13:42:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">https://datso.net/?p=34</guid>
		<description><![CDATA[Весь процесс миграции с Joomla! 1.0 на Joomla 1.5 выполняется в автоматическом режиме в 2 этапа. На первом этапе выполняется экспорт данных из Joomla 1.0.x с помощью специального компонента миграции. На втором этапе выполняется импорт сохраненных ранее данных в процессе инсталляции Joomla! 1.5. Процедура миграции была автоматизирована в связи с многочисленными изменениями в структуре БД [...]]]></description>
			<content:encoded><![CDATA[<p>Весь процесс миграции с Joomla! 1.0 на Joomla 1.5 выполняется в автоматическом режиме в 2 этапа. На первом этапе выполняется экспорт данных из Joomla 1.0.x с помощью специального компонента миграции. На втором этапе выполняется импорт сохраненных ранее данных в процессе инсталляции Joomla! 1.5. <span id="more-34"></span>Процедура миграции была автоматизирована в связи с многочисленными изменениями в структуре БД Joomla 1.5. В связи с этим крайне не рекомендуется выполнять эту операцию обычным путем сохранения и восстановления дампа БД во избежании потери данных. Данная статья является переводом официального руководства по миграции с Joomla! 1.0 на Joomla 1.5.<br />
Предварительные шаги</p>
<p>Для миграции Вам нужно иметь установленную Joomla! 1.0.12. В случае, если Ваш сайт работает на Joomla 1.0.13, необходимо установить патч Rob Schley-а. Также рекомендуем перед обновлением создать полную резервную копию Вашего сайта на случай, если что-то пойдет не так. Мы рекомендуем не уничтожать Ваш сайт на Joomla 1.0.x до тех пор, пока вы не убедитесь, что миграция на Joomla 1.5 прошла успешно и все работает так как нужно.</p>
<p>В идеале сначала необходимо выполнить миграцию на локальном компьютере и только потом на «живом сайте». Причем нужно установить Joomla 1.5 в отдельную директорию и отдельную БД, сохранив при этом файлы и базу Joomla 1.0.x<br />
Шаг 1: Загрузка компонента Migrator и установка его на сайт с Joomla 1.0.x</p>
<p>Актуальная версия компонента-мигратора доступна на сайте Pasamio Project&#8217;s FRS site. На сегодняшний день это Migrator RC5. Загрузите компонент Migrator и установите его на ваш сайт с Joomla 1.0.x. Компонент устанавливается как обычный компонент и доступен после установки в меню Components — Migrator.<br />
Шаг 2: Установка дополнительных плагинов для Migrator-а</p>
<p>Компонент Migrator осуществляет миграцию данных только для встроенных компонентов и модулей. В случае, если у Вас установлены сторонние расширения, Вам необходимо установить соответствующие плагины для компонента-мигратора Обратитесь за этими плагинами к авторам расширений. Существует два типа плагинов: «SQL» плагин, работающий с обычным текстовым SQL файлом и «ETL» плагин, содержащий небольшой кусок PHP кода в котором указывается каким образом мигратор должен обрабатывать данные, хранящиеся в таблицах и конфигурационных файлах. Вызов плагинов осуществляется из меню «Add Third Party Migrators», путем указания пути к файлу плагина. После выбора плагина он будет автоматически выполнен. Список доступных плагинов можно посмотреть кликнув на «List Plugins» на основной странице компонента<br />
Шаг 3: Создание SQL файла для миграции</p>
<p>После того, как вы установили все необходимые дополнительные плагины нажмите «Create Migration SQL file» для начала процесса. Компонент миграции разработан таким образом, чтобы даже для большого количества данных не произошло прерывания процесса создания по тайм-ауту. Во время создания файла страница может несколько раз автоматически перегружаться сообщая о состоянии процесса. После того, как процесс создания миграционного файла будет завершен, на экране появится ссылка для загрузки созданного файла. Во время создания файла миграции в нем будет автоматически произведены все необходимые изменения полей в таблицах для корректной работы в Joomla! 1.5, включая изменение тегов mosimage.<br />
Шаг 4: Установка Joomla! 1.5</p>
<p>Последним этапом миграции является инсталляция на Ваш сайт новой версии Joomla! 1.5. Следуя указаниям мастера инсталляции выполните все шаги. На последнем шаге инсталляции Вам будет предложено ввести название сайта и запустить процесс миграции данных. Для выполнения миграции данных Вам нужно загрузить на Ваш новый сайт миграционного SQL файла, который Вы создали на предыдущем этапе (Шаг 3). Миграционный файл можно загрузить двумя способами:<br />
загрузить по HTTP<br />
загрузить по FTP/SCP</p>
<p>Первый метод — загрузка по HTTP пригоден для файлов миграции небольшого размера во избежании прерывания выполнения скрипта из за превышения времени выполнения указанного в настройках PHP. Альтернативный метод — загрузка файла по протоколу FTP или SCP или же любым другим способом, предложенным Вашим хостинг провайдером. Этот метод подойдет для сайтов с большим количеством контента и, соответственно большим объемом миграционного SQL файла. При использовании метода загрузки по HTTP,— просто выберите файл миграции и нажмите кнопку «Загрузить». При использовании альтернативного метода — предварительно загрузить файл миграции в директорию installation/sql/migration и переименуйте его в «migrate.sql». Если по каким либо причинам процесс миграции не удался, Вам необходимо заново загрузить файлы миграции и повторить процедуру.</p>
<p>После того, как процесс миграции завершился,— введите название сайта (по техническим причинам название файла не может быть мигрировано автоматически) и завершите установку Joomla 1.5.</p>
]]></content:encoded>
			<wfw:commentRss>https://datso.net/sovetyi/instruktsiya-po-obnovleniyu-s-joomla-1-0-x-na-joomla-1-5-stable.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Репозиторий файлов на Joomla средствами Apache</title>
		<link>https://datso.net/sovetyi/repozitoriy-faylov-na-joomla-sredstvami-apache.html</link>
		<comments>https://datso.net/sovetyi/repozitoriy-faylov-na-joomla-sredstvami-apache.html#comments</comments>
		<pubDate>Fri, 14 Jan 2011 13:42:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">https://datso.net/?p=32</guid>
		<description><![CDATA[Создадим две вложенные директории /files/files в корне сайта. Если вы пожелаете использовать другие имена директорий, то вам необходимо будет внести соответствующие правки в дальнейшем. В директорию /files поместим файл index.php следующего содержания: &#60;?php header(&#171;Location:files&#187;); ?&#62; Это необходимо сделать для того, чтобы пользователь, путешествую по директориям вашего репозитория, не смог выйти за его пределы. В директорию [...]]]></description>
			<content:encoded><![CDATA[<p>Создадим две вложенные директории /files/files в корне сайта. Если вы пожелаете использовать другие имена директорий, то вам необходимо будет внести соответствующие правки в дальнейшем.<span id="more-32"></span></p>
<p>В директорию /files поместим файл index.php следующего содержания:<br />
&lt;?php<br />
header(&laquo;Location:files&raquo;);<br />
?&gt;</p>
<p>Это необходимо сделать для того, чтобы пользователь, путешествую по директориям вашего репозитория, не смог выйти за его пределы.</p>
<p>В директорию files/files поместим файл .htaccess с настройками:<br />
RemoveType application/x-httpd-php php php3<br />
Options Indexes FollowSymLinks MultiViews<br />
IndexOptions FancyIndexing ScanHTMLTitles<br />
ReadmeName .footer.html<br />
HeaderName .header.html</p>
<p>Команда RemoveType application/x-httpd-php php php3 запрещает запускать файлы *.php на выполнение в пределах вашего репозитория. Это полезно сделать, если вы будете давать доступ на размещение файлов в вашем репозитории третим лицам. В этом режиме php файлы не запускаются, а скачиваются как обычные файлы.</p>
<p>Команда Options Indexes FollowSymLinks MultiViews говорит серверу APACHE, что в данной директории разрешено сканирование содержимого. Это является ключевой настройкой, которая позволяет организовать репозиторий данного типа в принципе.</p>
<p>Команда IndexOptions FancyIndexing ScanHTMLTitles позволяет выводить заголовки html-файлов рядом с их именами. Эта опция является полезна, если в вашем репозитории будут хранится HTML-файлы.</p>
<p>Команды ReadmeName .footer.html, HeaderName .header.html назначают файлы, содержимое которых будет автоматически подставляться в начало и конец страницы репозитории и служат для достижения разнообразных оформительских эффектов.</p>
<p>Теперь создайте файлы .header.html, .footer.html и поместите их в каждую папку в пределах вашего репозитория. Если вы хотите, чтобы ваш репозиторий унаследовал стили вашего шаблона, то в файле .header.html нужно сделать подключение CSS-стилей, например так:<br />
&lt;link rel=&raquo;stylesheet&raquo; type=&raquo;text/css&raquo; href=&raquo;http://www.gorodbereza.ru/templates/akogreenportal/css/template_css.css&raquo; /&gt;<br />
(В моем случае идет импорт стилей с шаблона &laquo;akogreenportal&raquo;)</p>
<p>Здесь существует один важный момент. В случае когда файлы заголовков не определены, APACHE автоматически создает заголовки с путём до текущей директории, например Index of /files/files . Это очень полезная информация, так как показывает координаты директории, которую вы в данный момент просматриваете. Если вы создаете свой заголовок (файл .header.html), то в нём будет полезно отразить эту информацию, прописав в каждом файле .header.html, каждой директории, путь до данной директории.</p>
<p>Использование файлов .header.html и .footer.html позволяет сделать из репозитория полноценную HTML-страницу, которую можно гармонично вписать в дизайн вашего сайта. Вот пример репозитория-галереи (в качестве файлов выступают рисунки): [ссылка]</p>
<p>Осталось самое важное &#8211; интегрировать наш репозиторий в JOOMLA. Для этого в админке JOOMLA войдите в окно создания нового элемента меню и выберите тип меню Wrapper. В открывшемся окне настроек впишите:<br />
Name:  &#8211; Файлы (название пункта меню)<br />
Wrapper Link:  &#8211;  /files/files (путь до вашей директории с файлами)<br />
Auto Height; &#8211; yes (активации данной опции является полезной, так как автоматически регулирует высоту окна и избавляет от неэстетической вертикальной полосы прокрутки)</p>
<p>В остальных опциях можно оставить значения по умолчанию.</p>
<p>Все, репозитарий готов. Он будет выглядеть примерно как у меня: [ссылка]<br />
Создание закрытой директории</p>
<p>Очень часто вам может понадобиться закрыть некоторые директории от общего доступа. Это также можно сделать средствами Apache: В директорию, которую вы хотите закрыть (в моём случае, это директория private) поместите файл .htacces в котором необходимо прописать &laquo;секьюрные&raquo; настройки, например:<br />
AuthName &laquo;Password Protected&raquo;<br />
AuthType Basic<br />
AuthUserFile /www/myproject/passwd.file<br />
require valid-user&gt;</p>
<p>Здесь самой важной является опция AuthUserFile, в которой прописывется путь до файла passwd.file. В файле passwd.file &#8211; хранятся данные авторизации: имя пользователя и хэш-образ пароля.</p>
<p>Файл passwd.file создается утилитой htpasswd, которая входит в состав сервера APACHE. Более подробно об этом можно узнать [здесь].</p>
<p>P.S. Если в вашем ропозитории будут отсутствовать иконки файлов, то распакуйте и поместите папку icons в корень вашего сайта [ссылка]</p>
]]></content:encoded>
			<wfw:commentRss>https://datso.net/sovetyi/repozitoriy-faylov-na-joomla-sredstvami-apache.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обустраиваем блог на CMS Joomla!</title>
		<link>https://datso.net/sovetyi/obustraivaem-blog-na-cms-joomla.html</link>
		<comments>https://datso.net/sovetyi/obustraivaem-blog-na-cms-joomla.html#comments</comments>
		<pubDate>Fri, 14 Jan 2011 13:40:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">https://datso.net/?p=28</guid>
		<description><![CDATA[Продолжая разговор о возможности создать полноценный личный блог на CMS Joomla! Давайте рассмотрим некоторые вопросы обустройства Вашего блога. Сегодня хочу поделиться своими наработками в использовании компонентов JTags и Blog Calendar. Одним из атрибутов и инструментов хорошего блога считается возможность назначать и управлять ключевыми словами (keywords) к материалам сайта, что предоставляет возможность пользователям при желании быстро [...]]]></description>
			<content:encoded><![CDATA[<p>Продолжая разговор о возможности создать полноценный личный блог на CMS Joomla! Давайте рассмотрим некоторые вопросы обустройства Вашего блога. Сегодня хочу поделиться своими наработками в использовании компонентов JTags и Blog Calendar.<span id="more-28"></span></p>
<p>Одним из атрибутов и инструментов хорошего блога считается возможность назначать и управлять ключевыми словами (keywords) к материалам сайта, что предоставляет возможность пользователям при желании быстро находить необходимую информацию по интересующей их тематике. В своем блоге, созданном на CMS Joomla!, я решил использовать компонент JTags 1.3, он достаточно функционале и удобен в использовании. Думаю, что теперь поиск материалов заданной тематики по ключевым словам в блоге не вызовет у Вас затруднений.</p>
<p>В процессе обсуждения первой статьи из данного цикла было указано, что при использовании данного компонента с кириллицей ключевые слова или словосочетания, содержащие более 10-15 знаков, отображаются нормально, но в случае поиска почему-то обрезаются и, соответственно, перестают давать результат. Предложенный разработчиком Kayumov вариант небольших модификаций полностью решает данную проблему. В том же материале предложен к реализации хак для модуля компонента JTags, позволяющий после каждого тэга, в скобках, указывается встречаемость его на сайте.</p>
<p>Ещё одним часто используемым элементом блога является календарь, позволяющий просматривать материалы опубликованные за определенную дату. Для CMS Joomla! отличным решением является компонент Blog Calendar. Компонент работает с использованием технологии Ajax и имеет весь необходимый функционал: переключение между месяцами, группировка по датам и годам, вывод количества материалов в тот или иной день при наведении на число &#8211; необходимый минимум, который приличествует нормальному календарю, здесь есть. Модуль может быть выведен не только в виде собственно календаря, но и в виде архивного дерева, разбитого по годам и месяцам. При установке и работе данного компонента на некоторых хостингах могут возникать проблемы, которые однако легко решаются путями собранными воедино в материале Устанавливаем Blog Calendar &#8211; AJAX календарь для Joomla.</p>
<p>Надеюсь данные рекомендации помогут Вам в развитии личного блога на CMS Joomla!</p>
<p>Работу всего описанного можно посмотреть на примере личного блога автора статьи или на MitrichLab.RU.</p>
<p>Напомню, что нами рассматриваются вопросы создания личного блога на CMS Joomla 1.5.x.</p>
]]></content:encoded>
			<wfw:commentRss>https://datso.net/sovetyi/obustraivaem-blog-na-cms-joomla.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>В чем отличие компонента и модуля CMS Joomla</title>
		<link>https://datso.net/sovetyi/v-chem-otlichie-komponenta-i-modulya-cms-joomla.html</link>
		<comments>https://datso.net/sovetyi/v-chem-otlichie-komponenta-i-modulya-cms-joomla.html#comments</comments>
		<pubDate>Fri, 14 Jan 2011 13:38:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">https://datso.net/?p=20</guid>
		<description><![CDATA[Начинающие, а иногда и более опытные разработчики веб-сайтов, которые делают первые шаги в создании сайтов под CMS Joomla, сталкиваются с двумя понятиями, которые на первый взгляд кажутся идентичными. Это понятия компонент Joomla и модуль Joomla. Эти понятия конечно взаимосвязаны, но имеют кардинальные отличия, как в плане функционального назначения, так и в плане их создания и [...]]]></description>
			<content:encoded><![CDATA[<p>Начинающие, а иногда и более опытные разработчики веб-сайтов, которые делают первые шаги в создании сайтов под CMS Joomla, сталкиваются с двумя понятиями, которые на первый взгляд кажутся идентичными. Это понятия компонент Joomla и модуль Joomla.<span id="more-20"></span></p>
<p>Эти понятия конечно взаимосвязаны, но имеют кардинальные отличия, как в плане функционального назначения, так и в плане их создания и разработки. Давайте разберемся, что такое компонент Joomla, что представляет собой модуль Joomla и в чем их принципиальные отличия.</p>
<p>Не вдаваясь пока во внутреннюю структуру компонентов и модулей, проведем некую аналогию их функционального назначения в общей структуре сайта работающего под CMS Joomla.</p>
<p>Итак, представим себе обычный автомобиль, и из каких функциональных узлов он состоит. Аналогия конечно не полная, но для понимания отличия между компонентами и модулями Joomla вполне подойдет.<br />
Компоненты и модули CMS Joomla как узлы автомобиля.</p>
<p>1. Основные узлы, которые предназначены непосредственно для того, чтобы автомобиль двигался.</p>
<p>Это двигатель, коробка, ходовая часть и т.п. Сюда же можно включить и узлы, которые непосредственного участи в движении автомобиля не принимают, но без которых либо не возможна, либо затруднительна работа основных узлов (бензобак, система зажигания и т.п. ).</p>
<p>Вы можете заменить один компонент на другой, например, поставить автоматическую коробку передач вместо механической. Но полностью убрать коробку передач нельзя.</p>
<p>Все это и есть компоненты Joomla. Можно установить на сайте магазин товаров вместо каталога, но вывести структурированный список товаров из базы данных без того и другого невозможно.</p>
<p>2. Вспомогательные узлы, которые непосредственного участия в движении автомобиля не принимают, а необходимы лишь как вспомогательные элементы.</p>
<p>Это может быть получение информации о работе и состоянии основных узлов, создания более комфортных условий для управления автомобилем, получении какой-либо дополнительной информации и узлы управления автомобилем.</p>
<p>Сюда относится все, что вы видите и к чему можете прикоснуться в автомобиле, не заглядывая под капот и не разбирая его. Это индикаторы и счетчики на передней панели, все зеркала, рулевое колесо, педали, рычаги, кнопки и т.п.</p>
<p>Такие узлы можно переместить с одного места на другое, некоторые убрать, некоторые добавить, но при этом автомобиль будет ездить, как и прежде.</p>
<p>Применительно к CSM Joomla, все это &#8211; модули сайта: меню сайта, модули авторизации, опросов, вывода популярных статей, баннеров, случайных картинок и т.п.</p>
<p>3. Кузов, на который устанавливаются и крепятся все узлы.</p>
<p>Применительно к сайту на Joomla, это шаблон сайта. Непосредственного отношения к компонентам и модулям он не имеет, но именно шаблон определяет, в каком месте будет выводиться основное содержание, и где будут располагаться те или иные модули. Плюс ко всему шаблон определяет общий дизайн сайта, но это тема для отдельной статьи.<br />
Отличие № 1.</p>
<p>Компоненты CMS Joomla, это программные части сайта, которые определяют его работу и без которых правильная работа сайта невозможна.</p>
<p>Имеется ввиду, что без определенных компонентов, выполнение необходимых вам функций будет невозможно. То есть если вы определили, что на сайте должна быть гостевая книга, то для этого будет необходим компонент. Почему не модуль?</p>
<p>Во первых, содержимое гостевой книги должно выводиться в основной части страницы, во вторых, нужно чтобы сообщения отправляемые посетителями обрабатывались (проверка валидности email и url, проверка на нецензурные выражения, проверка на SQL-инъекции и т.д.), и в третьих, сообщения посетителей должны записывались в базу данных сайта.</p>
<p>Все перечисленное, это прямые обязанности компонентов Joomla, а вот если нужно вывести, например, на главной странице самые положительные отзывы из этой гостевой, то эту работу будет выполнять модуль.</p>
<p>Таким образом, модуль, в подавляющем большинстве случаев, нужен лишь как вспомогательный элемент к имеющемуся компоненту.<br />
Отличие № 2.</p>
<p>Выводить что-либо на страницу сайта в один и тот же момент времени может только один компонент и только в одно поле. Это поле является главным полем страницы (чаще всего &#8211; центральная часть страницы), и выводить в него данные может лишь компонент. Модулям это поле недоступно.</p>
<p>В это же время на этой же странице могут располагаться десятки модулей и выводить в своем теле (в границах своего модуля) абсолютно любую информацию, даже никоим образом не связанную с текущим компонентом. Более того в одном и том же поле могут располагаться и выводить свою информацию, абсолютно все модули сайта. Это конечно бессмысленно, так как разработчики Joomla определили для вывода модулей целых 50 полей, но, тем не менее, никаких ограничений в данном случае нет.<br />
Отличие № 3.</p>
<p>Следующее отличие компонента от модуля заключается в том, что при выполнении своих функций, модуль ничего не записывает в базу данных сайта. Такого ограничения в возможностях, конечно, никто не накладывал, но если подходить к вопросу грамотно, то самостоятельно модуль в базу данных ничего писать не должен, а если есть такая необходимость, то нужно обращаться к существующему компоненту Joomla и передавать ему данные для записи в базу данных.<br />
Отличие № 4.</p>
<p>В принцип работы CMS Joomla не заложен механизм непосредственного обращения к отдельному модулю из строки браузера и передача ему каких-либо параметров. Все параметры и основные данные модуль получает из базы данных сайта. Этот факт конечно можно обойти и передать методом GET или POST, какую либо переменную, которую распознает только модуль, но, по-моему, это не имеет никакого смысла и больше походит на извращение.</p>
<p>Существует, конечно, и другие отличия, например, компоненты и модули имеют разную файловую и внутреннюю структуру, отличные способы управления и администрирования, совершенно по-разному устанавливаются и размещаются в разных папках сайта. Но все эти различия не дают ответа на вопрос: «Почему именно компонент, а не модуль?».<br />
Резюме.</p>
<p>Итак, подводя черту всему вышесказанному, можно с уверенностью сделать вывод, что различия между модулем и компонентом существенные и путать их между собой не стоит.</p>
<p>Чтобы решить, что вам необходимо для решения конкретной задачи, модуль или компонент, сначала определите:<br />
что именно будет выводиться на каждой странице вашего сайта и в каком месте этой страницы;<br />
будет ли это информация основной или вспомогательной и должна ли она выводиться в главном поле сайта;<br />
нужно ли будет выводить какую-либо информацию в нескольких разделах сайта;<br />
откуда будут браться данные для вывода;<br />
нужно ли будет пользователю отправлять какие-либо данные на сайт.</p>
<p>Когда вы четко ответите для себя на все эти вопросы, то определить, что вам нужно в данном случае, модуль или компонент, теперь большого труда не составит.</p>
]]></content:encoded>
			<wfw:commentRss>https://datso.net/sovetyi/v-chem-otlichie-komponenta-i-modulya-cms-joomla.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Изготовление модуля для CMS Joomla</title>
		<link>https://datso.net/sovetyi/izgotovlenie-modulya-dlya-cms-joomla.html</link>
		<comments>https://datso.net/sovetyi/izgotovlenie-modulya-dlya-cms-joomla.html#comments</comments>
		<pubDate>Fri, 14 Jan 2011 13:35:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">https://datso.net/?p=14</guid>
		<description><![CDATA[В этой статье я расскажу, как изготовить свой собственный модуль для CMS Joomla ver.1.0.x. Данная статья предназначена для людей, которые хотя бы отчасти знакомы с языком программирования PHP, html и xml разметкой. Модуль, о котором пойдет речь, имеет самое простое функциональное назначение и очень простую структуру, но основываясь на самой методике изготовления, можно изготовить достаточно [...]]]></description>
			<content:encoded><![CDATA[<p>В этой статье я расскажу, как изготовить свой собственный модуль для CMS Joomla ver.1.0.x.<br />
Данная статья предназначена для людей, которые хотя бы отчасти знакомы с языком программирования PHP, html и xml разметкой.</p>
<p>Модуль, о котором пойдет речь, имеет самое простое функциональное назначение и очень простую структуру, но основываясь на самой методике изготовления, можно изготовить достаточно сложные модули.<span id="more-14"></span> Все будет зависеть только от Ваших познаний в области программирования на языке PHP и фантазии.</p>
<p>Я уже рассказывал об основных отличиях компонентов и модулей, а определение понятия «модуль» Вы можете посмотреть в глоссарии Joomla на этом сайте. Теперь давайте рассмотрим, из чего состоит и как строится классический модуль CMS Joomla. Хочу подчеркнуть &#8211; именно классический! Модуль Joomla, это обычная программа которая может содержать все доступные скриптовому языку PHP средства и методы, вплоть до манипулирования системными переменными сервера и обращения к другим интернет-ресурсам. Однако все это выходит далеко за рамки функционального предназначения модулей CMS Joomla, а значит, рассматривать мы это не будем.<br />
Из чего состоит модуль CMS Joomla.</p>
<p>В минимальном составе, это два файла &#8211; mod_названиемодуля.xml и mod_названиемодуля.php, которые по умолчанию располагаются в папке «modules» на сервере.</p>
<p>Файл mod_названиемодуля.xml, это многофункциональный файл, который содержит:<br />
общие сведения о модуле &#8211; название, описание, авторство, версию и т.п.;<br />
сведения для инсталляции/деинсталляции модуля &#8211; список файлов и пути их размещения;<br />
список параметров для конфигурирования модуля.</p>
<p>Файл mod_названиемодуля.php содержит программный код модуля.<br />
Что такое программный код и как пишутся программы (на PHP в том числе), я рассказывать не буду, сами понимаете почему.<br />
Хочу заметить, что создатели CMS Joomla разработали целые библиотеки классов, которые облегчают изготовление, как модулей, так и любых других расширений для Joomla. Эти библиотеки называются Joomla API. К сожалению, я не встречал полную документацию по API Joomla. Существуют лишь разрозненные или плохо сгруппированные описания. Могу посоветовать посмотреть здесь http://www.php.joomlademo.de или здесь http://help.joomla.org/api/, либо воспользоваться поиском google.<br />
Если Вы обладаете иной информацией, прошу высказаться в комментариях к статье.</p>
<p>При выполнении кода модуля, все, что выводится с помощью оператора echo или аналогичных ему, будет выведено на страницу сайта в теле модуля.</p>
<p>Чтобы модуль стал доступен, он должен быть инсталлирован в CMS Joomla.<br />
Инсталляционный файл модуля представляет собой обычный архив в который помещены все файлы модуля. Наиболее распространен архиватор zip, да и сама Joomla очень хорошо работает с такими архивами, поэтому на нем и остановимся.</p>
<p>Итак, чтобы изготовить и установить свой модуль на CMS Joomla, необходимо:<br />
Изготовить как минимум один программный файл модуля.<br />
Создать xml файл и прописать в нем все необходимые данные.<br />
Поместить оба файла в архив zip.<br />
Инсталлировать полученный модуль в Joomla.</p>
<p>Все!</p>
<p>Как видите, ничего сложного процесс изготовление модуля под CMS Joomla не представляет! Однако остается вопрос, что же должны содержать в себе файлы модуля? Давайте разберемся с этим более подробно.<br />
Структура и содержимое файлов модуля Joomla.<br />
В данной статье для примера взят модуль mod_awmnews. Вы можте его найти на нашем сайте в разделе «Модули Joomla». Скачайте его и инсталлируйте на свой локальный тестовый сайт. Затем зайдите на диск локального сервера и перейдите в папку сайта modules. Там Вы найдете два файла &#8211; mod_awmnews.xml и mod_awmnews.php. Откройте их с помощью любого текстового редактора, лучше с подсветкой PHP синтаксиса. Я посоветую Zend Development Environment, или что-нибудь попроще, например, EditPlus.</p>
<p>Итак, начнем с XML файла.</p>
<p>XML файл модуля AWM_news &#8211; mod_awmnews.xml.</p>
<p>&lt;? xml version=&raquo;1.0&#8243; encoding=&raquo;windows-1251&#8243; ?&gt; &#8211; заголовок документа xml версии 1.0, с набором символов &laquo;windows-1251&#8243; &#8211; русская таблица windows.</p>
<p>&lt;mosinstall type=&raquo;module&raquo; version=&raquo;1.0.0&#8243;&gt; &#8211; говорит о том, что данный xml файл является документом для инсталляции модуля CMS Joomla, а версия механизма инсталляции &#8211; 1.0.0.<br />
Тег mosinstall является открывающим. Между тегами &lt;mosinstall &#8230;&gt; &lt;/mosinstall&gt; помещается вся информация о модуле.<br />
Далее, до тега &lt;files&gt; идут информационные поля, которые будут отображены в таблице «Установленные модули» на странице «Установка/удаление модулей».</p>
<p>&lt;name&gt;AWM_news&lt;/name&gt; &#8211; наименование модуля. Используется еще как заголовок модуля в перечне модулей сайта.</p>
<p>&lt;author&gt;Soloviev Ivan&lt;/author&gt; &#8211; поле автора модуля.</p>
<p>&lt;creationDate&gt;06.11.2007&lt;/creationDate&gt; &#8211; дата создания модуля.</p>
<p>&lt;copyright&gt;ArtWebMaster Soloviev Ivan. All rights reserved.&lt;/copyright&gt; &#8211; сведения о копирайтинге.</p>
<p>&lt;license&gt;http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL&lt;/license&gt; &#8211; сведения о том, с какой лицензией выпущен модуль.</p>
<p>&lt;authorEmail&gt;artwebmaster @ hotbox.ru&lt;/authorEmail&gt; &#8211; Email автора модуля.</p>
<p>&lt;authorUrl&gt;http://artwebmaster.ru&lt;/authorUrl&gt; &#8211; сайт автора.</p>
<p>&lt;version&gt;1.0.0 RE&lt;/version&gt; &#8211; версия модуля.</p>
<p>&lt;description&gt;Это модуль вывода какого либо текста. Может быть использован для отображения новости, предложения, акции, картинки и т.п.&lt;/description&gt; &#8211; краткое описание модуля. Выводится в ходе инсталляции и на странице изменения параметров модуля в поле «Описание:».</p>
<p>&lt;files&gt; &#8211; открывает список файлов относящихся к этому модулю.</p>
<p>&lt;filename module=&raquo; mod_ awmnews&raquo;&gt; mod_awmnews.php&lt;/filename&gt; &#8211; эта конструкция говорит о том, что файл mod_awmnews.php входит в состав модуля mod_awmnews и Joomla должна его разместить (инсталлировать) в папке «modules». Эта информация используется также и для деинсталляции файлов модуля.<br />
Если с модулем будут идти дополнительные файлы &#8211; JavaScript, CSS таблицы и т.п., их лучше размещать в отдельной папке с именем вашего модуля. Для этого при создании инсталляционного архива создайте папку, к примеру, mymodule, поместите туда дополнительный файл, пусть это будет myjcsript.js и запакуйте эту папку вместе с основными файлами mod_mymodule.xml и mod_mymodule.php.<br />
В xml файле эти файлы прописываются так:</p>
<p>&lt;filename module=&raquo;mod_mymodule&raquo;&gt;mod_mymodule.php&lt;/filename&gt;<br />
&lt;filename module=&raquo;mod_mymodule&raquo;&gt;mymodule/myjcsript.js&lt;/filename&gt;</p>
<p>После инсталляции, полный путь к файлу myjcsript.js будет таким:</p>
<p>http://вашсайт.ru/modules/mymodule/myjcsript.js</p>
<p>Обратите внимание! Сам файл mod_mymodule.xml здесь прописывать не надо! Joomla самостоятельно поместит его в папку «modules» на Вашем сайте и сама удалит, при деинсталляции.</p>
<p>&lt;/files&gt; &#8211; закрывает список файлов.</p>
<p>&lt;params&gt; &#8211; отрывает перечень настраиваемых параметров модуля. О том, какие значения они могут принимать и как их правильно прописать читайте в отдельной статье «Параметры XML файла модуля Joomla».</p>
<p>&lt;param name=&raquo;moduleclass_sfx&raquo; type=&raquo;text&raquo; default=&raquo;" label=&raquo;CSS-cуффикс класса модуля&raquo; description=&raquo;Суффикс, который будет использован в описании класса (table.moduletable) таблицы стилей (CSS) модуля. Это позволяет использовать индивидуальный стиль модуля.&raquo; /&gt; &#8211; здесь указывается, что нужно вывести для редактирования системный параметр определяющий суффикс CSS класса модуля.</p>
<p>&lt;param name=&raquo;sometext&raquo; type=&raquo;textarea&raquo; cols=&raquo;80&#8243; rows=&raquo;5&#8243; default=&raquo;" label=&raquo;Текст&raquo; description=&raquo;Обычный текст или текст в формате HTML, который будет выводиться в блоке модуля.&raquo; /&gt; &#8211; данный параметр служит для вывода в административной части модуля многострочного текстового поля. Запомните имя этого параметра &#8211; «sometext». Это имя будет использоваться в дальнейшем.</p>
<p>&lt;/params&gt; &#8211; закрывает перечень параметров модуля.</p>
<p>&lt;/mosinstall&gt; &#8211; закрывает инфомационные данные модуля.</p>
<p>Итак, с XML файлом разобрались, теперь перейдем к программному файлу модуля.</p>
]]></content:encoded>
			<wfw:commentRss>https://datso.net/sovetyi/izgotovlenie-modulya-dlya-cms-joomla.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Как перенести сайт Joomla с локального компьютера на сервер хостера</title>
		<link>https://datso.net/sovetyi/kak-perenesti-sayt-joomla-s-lokalnogo-kompyutera-na-server-hostera.html</link>
		<comments>https://datso.net/sovetyi/kak-perenesti-sayt-joomla-s-lokalnogo-kompyutera-na-server-hostera.html#comments</comments>
		<pubDate>Fri, 14 Jan 2011 13:33:47 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">https://datso.net/?p=6</guid>
		<description><![CDATA[Итак, Вы создали на локальном компьютере сайт на CMS Joomla и нашли в интернете подходящую для Вас хостинг-площадку. Следующий шаг – перенести готовый сайт с локальной машины на сервер хостинг-провайдера. О том, как это сделать, на какие препятствия можно натолкнуться и как их избежать, и пойдет речь в данной статье. 1. Создаем копию базы данных [...]]]></description>
			<content:encoded><![CDATA[<p>Итак, Вы создали на локальном компьютере сайт на CMS Joomla и нашли в интернете подходящую для Вас хостинг-площадку. Следующий шаг – перенести готовый сайт с локальной машины на сервер хостинг-провайдера. О том, как это сделать, на какие препятствия можно натолкнуться и как их избежать, и пойдет речь в данной статье.<span id="more-6"></span><br />
1. Создаем копию базы данных MySQL локального сайта на CMS Joomla.</p>
<p>Запускаем Денвер, запускаем браузер и вводим в строке адреса</p>
<p>http://localhost/Tools/phpmyadmin/index.php</p>
<p>Мы попали в веб-интерфейс администрирования баз данных на локальном компьютере &#8211; phpMyAdmin. Выбираем из выпадающего списка в левой колонке имя базы данных переносимого сайта и после окончания отображения сводных данных о таблицах базы нажимаем на закладку «Экспорт».</p>
<p>В зависимости от того, какая версия phpMyAdmin у Вас установлена, выведенная страница может немного отличаться, тем не менее, действия, которые Вы должны выполнить будут одинаковыми.</p>
<p>Внимательно прочитайте все надписи на странице и убедитесь, что:<br />
список таблиц базы данных в поле «Экспорт» выделен полностью. Если нет, нажмите на «Отметить все»;<br />
радио-кнопка в поле «Экспорт» установлена на «SQL»;<br />
на всякий случай установите галочку в поле «Добавить удаление таблицы», другой вариант названия этого поля «Добавить DROP TABLE / VIEW / PROCEDURE / FUNCTION»;<br />
галочка в поле «Добавить IF NOT EXISTS» установлена. Если нет, установите.</p>
<p>Последние два условия при первом экспорте базы данных делать не обязательно, но если впоследствии Вы захотите сделать откат всех данных вашего сайта Joomla в текущее положение, эти условия просто необходимы.</p>
<p>Далее устанавливаем галочку в поле «послать» или «Сохранить как файл» и в поле «Шаблон имени файла» дописываем к имеющемуся там «__DB__», например, слово LOCAL и сегодняшнюю дату в формате ГОД_МЕСЯЦ_ЧИСЛО. Пробелы в названии лучше не ставить. Получаем что-то вроде этого: «__DB__LOCAL_2008_09_28». Такое формирование имени поможет Вам в дальнейшем лучше ориентироваться в большом количестве файлов баз данных.<br />
Когда будете делать копию базы данных с сервера хостера вместо LOCAL вписывайте SITE. Это тоже поможет лучше ориентироваться в сохраненных файлах.</p>
<p>Установив радио-кнопку в поле «Сжатие» (или «Упаковать») в позицию отличную от «Нет», Вы можете уменьшить объем файла базы данных и соответственно уменьшить скорость загрузки этого файла на удаленный сервер, однако тем самым Вы увеличите нагрузку на процессор этого сервера, что может быть не всегда приемлемо. Если выход в интернет у Вас скоростной, лучше установить «Нет».</p>
<p>Итак, с кнопками и галочками разобрались, теперь нажимаем кнопку «Пошел» или «ОК» и в открывшемся окне выбираем папку на Вашем компьютере для сохранения копии базы данных MySQL локального сайта Joomla.<br />
2. Закачиваем на удаленный сервер копию базы данных.</p>
<p>Полученную базу данных нашего локального сайта Joomla теперь необходимо записать в базу данных удаленного сервера. Для начала, с помощью веб-интерфейса управления хостинг-площадкой (обычно это cPanel), создаем новую базу данных. Способ создания базы данных у разных хостеров свой, поэтому с этим Вам придется разбираться самостоятельно.</p>
<p>В процессе создания базы данных Вам придется создать пользователя базы данных, имя базы и пароль доступа. Обычно, к введенному Вами имени пользователя и имени базы добавляется служебная приставка. Хорошенько запомните, а лучше запишите эти полные имена, они Вам позже понадобятся.</p>
<p>По завершении процедуры создания переходим в веб-интерфейс администрирования баз данных на удаленном компьютере – phpMyAdmin. Здесь, как и в предыдущей главе, переходим к нашей созданной базе с помощью выпадающего списка в левой части страницы. Иногда это может быть просто ссылка-название.</p>
<p>В открывшемся окне нажимаем закладку «Импорт», если таковой нет, тогда «SQL». После этого, в поле «Импортируемый файл» или «Месторасположение текстового файла», нажимаем «Обзор» и в открывшемся окошке находим файл нашей базы данных. Устанавливаем в расположенном рядом выпадающем списке «Кодировка файла» кодировку «cp1251» и нажимаем кнопку «ОК» или «Пошел». Начнется процесс закачивания файла базы данных на удаленный сервер, создание таблиц и заполнение их информацией. Это может занять какое-то время, так что придется немного подождать.</p>
<p>Если все в порядке и процесс прошел нормально, в левом поле высветятся названия таблиц нашей базы, а phpMyAdmin сообщит, что все хорошо и выдаст количество выполненных запросов. После этого страницу можно закрывать – здесь нам больше делать нечего.</p>
<p>Если что-то пошло не так, phpMyAdmin известит Вас красной надписью с содержанием обнаруженной ошибки. Какие бывают ошибки и как их устранить, я рассматривать не буду, так как ошибки бывают самые разные и обычно такие вопросы решаются только в индивидуальном порядке.</p>
<p>Чаще всего ошибки возникают из-за разности версий phpMyAdmin, когда более старой версии подсовывают файл базы данных, созданный более новой, либо при расхождении в кодировках баз данных и т.п. Проще всего, если у Вас возникла ошибка при импорте базы данных, обратиться в службу поддержки хостера.<br />
3. Изменяем системные переменные в файле configuration.php</p>
<p>Находим в корневой папке нашего сайта на локальном компьютере файл configuration.php и копируем его под новым именем, например, configurationSITE.php. Зачем, спросите Вы. Все просто. Для продолжения нормальной работы с нашим сайтом на локальном компьютере, нам нужен файл configuration.php, а файл configurationSITE.php мы подредактируем и будем использовать на удаленном сервере.</p>
<p>Итак, открываем файл configurationSITE.php в Блокноте или любом другом простом текстовом редакторе, ищем указанные ниже переменные и прописываем в них новые параметры. Новые параметры прописывайте внутри кавычек. Например, так:<br />
$mosConfig_host = &#8216;c12345_joomla&#8217;;</p>
<p>$mosConfig_host – сетевое имя MySQL сервера базы данных. Чаще всего используется имя localhost, но если доступа к базе с этим именем не будет, посмотрите в настройках или общих сведениях Вашей хостинг-площадки, в крайнем случае, обратитесь в службу поддержки. Это имя может выглядеть примерно так: msql12.вашхостер.ru</p>
<p>$mosConfig_db – полное имя базы данных созданной Вами в предыдущей главе.</p>
<p>$mosConfig_user – полное имя пользователя базы данных.</p>
<p>$mosConfig_password – пароль доступа к базе.</p>
<p>$mosConfig_absolute_path – здесь прописывается абсолютный внутренний (серверный) путь к папке, в которой будут расположены файлы сайта, без слеша «/» в конце. Посмотреть его можно в общих сведениях о хостинг-площадке или обратившись в службу поддержки. Обычно выглядит так:</p>
<p>/home/папкасайта/public_html<br />
Если Вы затрудняетесь найти этот путь, не беда, оставьте этот и следующий параметр как есть. Далее я расскажу, как можно попробовать вычислить этот путь.</p>
<p>$mosConfig_cachepath &#8211; внутренний (серверный) путь к папке «cache» Вашего сайта, без слеша «/» в конце. Здесь просто допишите к пути, прописанному в предыдущем параметре «/cache». Должно получиться:</p>
<p>/home/папкасайта/public_html/cache</p>
<p>$mosConfig_live_site – полный URL Вашего сайта с http://, но без слеша «/» в конце. Примерно так: http://joomla4all.ru или с www &#8211; http://www.joomla4all.ru</p>
<p>Как лучше с www или без – дело вкуса, и так, и так правильно, однако не забывайте, что здесь должно быть прописано главное зеркало вашего сайта указанное в файле robots.txt</p>
<p>Прописав все параметры, сохраняем изменения и закрываем Блокнот.</p>
<p>Находим в корневой папке сайта на локальном компьютере файл robots.txt, открываем его в Блокноте и дописываем в конце строку, указывающую домен основного зеркала Вашего сайта:<br />
Host: вашсайт.ru</p>
<p>Опять-таки с www или без – дело вкуса, главное, чтобы в переменной $mosConfig_live_site и в robots.txt имена доменов полностью совпадали. Сохраняем изменения, закрываем Блокнот и идем дальше.</p>
]]></content:encoded>
			<wfw:commentRss>https://datso.net/sovetyi/kak-perenesti-sayt-joomla-s-lokalnogo-kompyutera-na-server-hostera.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Простой журнал аудита на триггерах MySQL</title>
		<link>https://datso.net/sovetyi/prostoy-zhurnal-audita-na-triggerah-mysql.html</link>
		<comments>https://datso.net/sovetyi/prostoy-zhurnal-audita-na-triggerah-mysql.html#comments</comments>
		<pubDate>Thu, 13 Jan 2011 13:42:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Советы]]></category>

		<guid isPermaLink="false">https://datso.net/?p=36</guid>
		<description><![CDATA[Небольшая заметка об использовании триггеров в СУБД MySQL. Несмотря на достаточно приличный возраст этой СУБД, поддержка триггеров появилась только в 5-й версии и достаточно мало описана на русском языке. Введение Три́ггер (англ. trigger) — это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено наступлением определенного события (действием) — по сути [...]]]></description>
			<content:encoded><![CDATA[<p>Небольшая заметка об использовании триггеров в СУБД MySQL. Несмотря на достаточно приличный возраст этой СУБД, поддержка триггеров появилась только в 5-й версии и достаточно мало описана на русском языке.<span id="more-36"></span><br />
Введение</p>
<p>Три́ггер (англ. trigger) — это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено наступлением определенного события (действием) — по сути добавлением INSERT или удалением DELETE строки в заданной таблице, или модификации UPDATE данных в определенном столбце заданной таблицы реляционной базы данных. Триггеры применяются для обеспечения целостности данных и реализации сложной бизнес-логики. Триггер запускается сервером автоматически при попытке изменения данных в таблице, с которой он связан.</p>
<p>Триггер хранится вместе с таблицами в бинарном виде — однажды созданный он не может быть изменен, возможно только удалить его и записать новый.</p>
<p>Триггер активируется, когда происходит определенное событие для конкретной таблицы. Таких события все три:<br />
INSERT<br />
UPDATE<br />
DELETE</p>
<p>Поддержка для триггеров включена начиная с MySQL 5.0.2.<br />
Примеры данной статьи выполнялись на MySQL 5.0.18.<br />
Постановка задачи</p>
<p>Для вас наверно не будет новостью, что можно создавать пользователей MySQL с разными привилегиями. При этом привилегии могут быть настроены очень тонко — вплоть до конкретного столбца.</p>
<p>Например, у вас база данных магазина. Одному пользователю можно разрешить только просматривать наличие того или иного товара, другой может редактировать количество оставшихся копий, а третий может изменять стоимость. Более подробную информацию о пользователях вы можете получить на узле MySQL из статьи &lt;MySQL User Account Management&gt; или на русском.</p>
<p>Предположим, вы так и поступили и у нас имеется несколько пользователей. Само по себе разделение прав и обязанностей уже большой шаг в сторону повышения безопасности. Однако этого явно не достаточно — если товар стоящий 100 у.е. вдруг будет продан за 10, как найти виновного? Кто изменил стоимость в БД?</p>
<p>Или вдруг обнаружится, что закуплено было 10 экземпляров, по факту продано 5, а в остатке числится только 3. Куда делись еще 2? Кто списал товар?</p>
<p>Вот тут нам понадобится журнал аудита — который будет хранить информацию о том кто и что делал с записями в БД.</p>
<p>MySQL предоставляет такую возможность — существует так называемый General Query Log. По всей видимости, там сохраняется даже слишком много информации. Мы напишем свой журнал аудита для одной конкретной таблицы. И, как вы уже наверно догадались, будем использовать триггеры.</p>
<p>Наш журнал аудита это новая таблица в БД. О существовании такой таблицы должно знать как можно меньше людей.</p>
<p>Назовем нашу таблицу mylog. Пусть в ней будет 4 столбца:<br />
| id | user | query | timestamp |</p>
<p>Таблицу легко создать, используя phpMyAdmin** с помощью следующего запроса:<br />
CREATE TABLE `mylog` (<br />
`id` INT NOT NULL AUTO_INCREMENT ,<br />
`user` VARCHAR( 20 ) NOT NULL ,<br />
`query` VARCHAR( 15 ) NOT NULL ,<br />
`timestamp` TIMESTAMP NOT NULL ,<br />
PRIMARY KEY ( `id` )<br />
);</p>
<p>Так же пусть у нас есть таблица table1, за изменениями в которой мы и будем следить.<br />
Каждый раз, при добавлении, изменении или удалении записей таблицы table1 в таблице mylog будет добавляться строка, содержащая имя пользователя MySQL, сам запрос, а также время, в которое он был выполнен.<br />
Создадим простой триггер</p>
<p>Каждое из трех поддерживаемых триггерами событий (INSERT, UPDATE и DELETE) как бы подразделяется еще на два:<br />
начало события BEFORE<br />
конец события AFTER</p>
<p>Иными словами у нас есть не 3 события:<br />
INSERT<br />
UPDATE и<br />
DELETE</p>
<p>а целых 6:<br />
BEFORE INSERT<br />
AFTER INSERT<br />
BEFORE UPDATE<br />
AFTER UPDATE<br />
BEFORE DELETE<br />
AFTER DELETE</p>
<p>Например, событие BEFORE INSERT произойдет перед вставкой новой строки в таблицу, а событие AFTER INSERT после вставки.<br />
Важно отметить, что событие AFTER INSERT может и не наступить, если во время выполнения запроса произошла ошибка.</p>
<p>На каждое из 6 событий для одной конкретной таблицы можно повесить только один триггер.</p>
<p>Таким образом, мы можем записать в наш журнал аудита (в таблицу mylog) все попытки выполнения (события BEFORE) запросов или только удачные (события AFTER)**.</p>
<p>Давайте записывать все попытки — будем использовать события BEFORE.</p>
<p>Следующим запросом к MySQL мы создадим триггер с именем my_trigger для таблицы table1:<br />
CREATE TRIGGER `my_trigger` BEFORE INSERT ON `table1`<br />
FOR EACH ROW<br />
/*ниже следует действие, выполняемое триггером*/<br />
INSERT INTO `mylog` SET `user`= &#8216;имя_пользователя&#8217;, `query`=&#8217;insert&#8217;;</p>
<p>Как видите все просто: триггер вставляет строку в таблицу mylog. Однако такой триггер нужно еще немного подкорректировать — он должен вставлять не текст &#8216;имя_пользователя&#8217; в качестве значения для поля user, а реальное имя пользователя.</p>
<p>Что бы узнать реальное имя пользователя воспользуемся одной из встроенных функций MySQL — USER(); Эта функция возвращает строку с именем пользователя MySQL. (Более подробно о функциях MySQL можно узнать на официальном сайте).</p>
<p>Вот так будет выглядеть полностью рабочий триггер:<br />
CREATE TRIGGER `my_trigger` BEFORE INSERT ON `table1`<br />
FOR EACH ROW<br />
INSERT INTO `mylog` SET `user`= USER(), `query`=&#8217;insert&#8217;;</p>
<p>По аналогии могут быть созданы триггеры для оставшихся событий UPDATE и DELETE.</p>
<p>Надо заметить, что в данном примере, в журнал событий попадает имя пользователя СУБД, однако, при желании туда можно записывать и более подробные данные — например имя пользователя CMS. Ведь в триггере есть информация об изменяемой строке таблицы, а из нее почти всегда можно получить ссылку на пользователя который ее создал/изменил.<br />
Примечание</p>
<p>*При создании более сложных триггеров, если вы пользуетесь phpMyAdmin не старших версий, у вас, скорее всего, возникнут проблемы. Для корректной работы используйте версии старше 2.9.1.</p>
<p>**Вообще то, по-хорошему, журнал аудита должен содержать информацию, как о событии, так и о результате. Однако у нас простой триггер — а значит и простой журнал аудита <img src='/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>https://datso.net/sovetyi/prostoy-zhurnal-audita-na-triggerah-mysql.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
