<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.umisoft.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%B9_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D1%83_%28%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81%29</id>
	<title>Пример создания сложной фильтрации по каталогу (кастомный макрос) - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.umisoft.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%B9_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D1%83_%28%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81%29"/>
	<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%B9_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D1%83_(%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81)&amp;action=history"/>
	<updated>2026-05-19T09:53:57Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%B9_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D1%83_(%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81)&amp;diff=5437&amp;oldid=prev</id>
		<title>Mad grant в 12:33, 5 июня 2013</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%B9_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D1%83_(%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81)&amp;diff=5437&amp;oldid=prev"/>
		<updated>2013-06-05T12:33:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Версия 12:33, 5 июня 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l220&quot; &gt;Строка 220:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 220:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Модуль Каталог]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Категория:Модуль Каталог&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]] [[category:Написание кастомных макросов&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Mad grant</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%B9_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D1%83_(%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81)&amp;diff=2969&amp;oldid=prev</id>
		<title>Cmac в 10:52, 8 сентября 2011</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%B9_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D1%83_(%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81)&amp;diff=2969&amp;oldid=prev"/>
		<updated>2011-09-08T10:52:07Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Версия 10:52, 8 сентября 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l220&quot; &gt;Строка 220:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 220:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Категория:Модуль Каталог]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Cmac</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%B9_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D1%83_(%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81)&amp;diff=1225&amp;oldid=prev</id>
		<title>VITL&#039; в 18:47, 28 марта 2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%B9_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D1%83_(%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81)&amp;diff=1225&amp;oldid=prev"/>
		<updated>2010-03-28T18:47:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Версия 18:47, 28 марта 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l216&quot; &gt;Строка 216:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 216:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			$block_arr[&amp;#039;category_id&amp;#039;] = $category_id;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			$block_arr[&amp;#039;category_id&amp;#039;] = $category_id;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			return def_module::parseTemplate($template_block_empty, $block_arr, $category_id)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;;&lt;/del&gt;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			return def_module::parseTemplate($template_block_empty, $block_arr, $category_id);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;		}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160;&amp;#160; &amp;#160; }&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/source&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>VITL&#039;</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%B9_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D1%83_(%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81)&amp;diff=1224&amp;oldid=prev</id>
		<title>VITL&#039;: Новая страница: «Бывает стандартных средств фильтрации не хватает для реализации интернет проекта, на пом…»</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F_%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D0%B9_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D1%83_(%D0%BA%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81)&amp;diff=1224&amp;oldid=prev"/>
		<updated>2010-03-28T18:45:48Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «Бывает стандартных средств фильтрации не хватает для реализации интернет проекта, на пом…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Бывает стандартных средств фильтрации не хватает для реализации интернет проекта, на помощь таким вещам приходят собственные разработки, написанные на основе существующих макросов. Для одного из проектов был создан дополнительный макрос и размещен в classes/modules/custom.php, public function getObjectsListNew, он был создан на основе getObjectsList в&lt;br /&gt;
classes/modules/catalog/class.php. Файл custom.php при обновлении системы не&lt;br /&gt;
затирается. Также в tpls/catalog/default.tpl  в первом блоке был поставлен&lt;br /&gt;
вызов: &lt;br /&gt;
%custom getObjectsListNew(…)% вместо:&lt;br /&gt;
%catalog getObjectsList(…)%&lt;br /&gt;
&lt;br /&gt;
public function getObjectsListNew:&lt;br /&gt;
Если какие либо параметры в GET запрос не переданы то запускается стандартный&lt;br /&gt;
метод, в ином случае работает новый макрос. Изменен в новом макросе был в&lt;br /&gt;
основном только процесс выборки нужных объектов, начало и конец остались&lt;br /&gt;
прежними. Задачей было сделать фильтрацию в которой некоторые группы полей должны были быть объединены логическим И, а между собой сами группы объединены логическим ИЛИ. В фильтрации участвовал один выпадающий список и некоторые количество группы с чекбоксами. Суть кода: составление SQL запроса к базе данных, благодаря которому будут найдены нужные элементы и переданы дальше системе для отображения в нужной форме.&lt;br /&gt;
&lt;br /&gt;
Доп. информация: http://api.umi-cms.ru&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
public function getObjectsListNew($template = &amp;quot;default&amp;quot;, $path = false, $limit = false, $ignore_paging = false, $i_need_deep = 0) &lt;br /&gt;
{ &lt;br /&gt;
    if(!array_key_exists(&amp;#039;fields_filter&amp;#039;,$_GET) || !array_sum($_GET[&amp;#039;fields_filter&amp;#039;])){&lt;br /&gt;
    $catalog_inst = cmsController::getInstance()-&amp;gt;getModule(&amp;quot;catalog&amp;quot;);&lt;br /&gt;
    return $catalog_inst-&amp;gt;getObjectsList($template, $path, $limit, $ignore_paging, $i_need_deep);&lt;br /&gt;
    }&lt;br /&gt;
    if(def_module::breakMe()) return;&lt;br /&gt;
		if(!$template) $template = &amp;quot;default&amp;quot;;&lt;br /&gt;
		if (!$i_need_deep) $i_need_deep = intval(getRequest(&amp;#039;param4&amp;#039;));&lt;br /&gt;
		if (!$i_need_deep) $i_need_deep = 0;&lt;br /&gt;
		$i_need_deep = intval($i_need_deep);&lt;br /&gt;
		if ($i_need_deep === -1) $i_need_deep = 100;&lt;br /&gt;
		&lt;br /&gt;
		$hierarchy = umiHierarchy::getInstance();&lt;br /&gt;
		list($template_block, $template_block_empty, $template_block_search_empty, $template_line) = def_module::loadTemplates(&amp;quot;tpls/catalog/{$template}.tpl&amp;quot;, &amp;quot;objects_block&amp;quot;, &amp;quot;objects_block_empty&amp;quot;, &amp;quot;objects_block_search_empty&amp;quot;, &amp;quot;objects_block_line&amp;quot;);&lt;br /&gt;
		$hierarchy_type_id = umiHierarchyTypesCollection::getInstance()-&amp;gt;getTypeByName(&amp;quot;catalog&amp;quot;, &amp;quot;object&amp;quot;)-&amp;gt;getId();&lt;br /&gt;
		$category_id = def_module::analyzeRequiredPath($path);&lt;br /&gt;
		// KEYWORD_GRAB_ALL определена в config.php = mode=all&lt;br /&gt;
		if($category_id === false &amp;amp;&amp;amp; $path != KEYWORD_GRAB_ALL) {&lt;br /&gt;
			throw new publicException(&amp;quot;Element not found: \&amp;quot;{$path}\&amp;quot;&amp;quot;);&lt;br /&gt;
		}&lt;br /&gt;
    $hierarchy_type_id = umiHierarchyTypesCollection::getInstance()-&amp;gt;getTypeByName(&amp;quot;catalog&amp;quot;, &amp;quot;object&amp;quot;)-&amp;gt;getId();&lt;br /&gt;
    $hierarchy_type = umiHierarchyTypesCollection::getInstance()-&amp;gt;getType($hierarchy_type_id);&lt;br /&gt;
		$type_id = umiObjectTypesCollection::getInstance()-&amp;gt;getBaseType($hierarchy_type-&amp;gt;getName(), $hierarchy_type-&amp;gt;getExt());&lt;br /&gt;
    if(!$type_id) {&lt;br /&gt;
			$type_id = umiObjectTypesCollection::getInstance()-&amp;gt;getBaseType($hierarchy_type-&amp;gt;getName(), $hierarchy_type-&amp;gt;getExt());&lt;br /&gt;
		}&lt;br /&gt;
    //Берем $per_page (кол-во элементов на странице) из атрибута макроса либо из реестра каталога (настройка модуля каталог), &lt;br /&gt;
    $per_page_r = regedit::getInstance()-&amp;gt;getVal(&amp;quot;//modules/catalog/per_page&amp;quot;);&lt;br /&gt;
		$per_page = ($limit) ? $limit : $per_page_r;&lt;br /&gt;
		// $curr_page - текущая страница, параметр нужен для выборки данных для нужной страницы  &lt;br /&gt;
		$curr_page = getRequest(&amp;#039;p&amp;#039;);&lt;br /&gt;
		if($ignore_paging) $curr_page = 0;&lt;br /&gt;
		// Начало измененной части кода:&lt;br /&gt;
		// Какой тип объектов в разделе каталога, в модуле Шаблоны данных (775 или 780) &lt;br /&gt;
    $idType = umiHierarchy::getInstance()-&amp;gt;getDominantTypeId($category_id);&lt;br /&gt;
    // Получаем экземпляр для выбранного типа, чтобы потом использовать некоторые методы&lt;br /&gt;
    $objType = umiObjectTypesCollection::getInstance()-&amp;gt;getType($idType);&lt;br /&gt;
    &lt;br /&gt;
    $arr_get = $_GET[&amp;#039;fields_filter&amp;#039;];&lt;br /&gt;
    $c_index = 0;&lt;br /&gt;
    $str1 = &amp;quot;&amp;quot;;&lt;br /&gt;
    // Выпадающий список с идентификатором поля: nazva, строим для него часть sql запроса &lt;br /&gt;
    $str_ind_1 = &amp;quot;nazva&amp;quot;;&lt;br /&gt;
    if(array_key_exists($str_ind_1,$arr_get) &amp;amp;&amp;amp; $arr_get[$str_ind_1]){&lt;br /&gt;
     $c_index++;&lt;br /&gt;
     $idField = $objType-&amp;gt;getFieldId($str_ind_1);&lt;br /&gt;
     $str1 = &amp;quot;AND (c{$c_index}.obj_id = o.id AND c{$c_index}.field_id = &amp;#039;{$idField}&amp;#039; AND (c{$c_index}.rel_val IN (&amp;#039;{$arr_get[$str_ind_1]}&amp;#039;)))&amp;quot;; &lt;br /&gt;
    }&lt;br /&gt;
    // 775 - один из id типов данных в модуле Шаблоны данных&lt;br /&gt;
    // В массивах $total_arr[N=2] до N, будут идентификаторы полей каждой группы, группы перечислены в массиве $arr_group&lt;br /&gt;
    // В $group помещаются объекты все полей, мы потом в foreach-е берем имена каждого поля. &lt;br /&gt;
    $total_arr = Array();&lt;br /&gt;
    if($idType == 775){&lt;br /&gt;
       $arr_group = Array(&amp;#039;komnat&amp;#039;,&amp;#039;klass&amp;#039;,&amp;#039;plowad&amp;#039;,&amp;#039;cena&amp;#039;);&lt;br /&gt;
       for($x = 2, $i = 0; $x &amp;lt; count($arr_group)+2; $x++, $i++){&lt;br /&gt;
        $group = umiObjectTypesCollection::getInstance()-&amp;gt;getType($idType)-&amp;gt;getFieldsGroupByName($arr_group[$i])-&amp;gt;getFields();&lt;br /&gt;
        foreach($group as $fieldsName) {&lt;br /&gt;
         $total_arr[$x][] = $fieldsName-&amp;gt;getName();&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    // Аналогично с $idType = 775&lt;br /&gt;
    if($idType == 780){&lt;br /&gt;
       $arr_group = Array(&amp;#039;klass&amp;#039;,&amp;#039;komnat&amp;#039;,&amp;#039;plowad&amp;#039;,&amp;#039;cena&amp;#039;,&amp;#039;tip_pomeweniya&amp;#039;);&lt;br /&gt;
       for($x = 2, $i = 0; $x &amp;lt; count($arr_group)+2; $x++, $i++){&lt;br /&gt;
         $group = $objType-&amp;gt;getFieldsGroupByName($arr_group[$i])-&amp;gt;getFields();&lt;br /&gt;
         foreach($group as $fieldsName) {&lt;br /&gt;
           $total_arr[$x][] = $fieldsName-&amp;gt;getName();&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    $str2 = $str3 = $str4 = $str5 = $str6 = &amp;quot;&amp;quot;;&lt;br /&gt;
    //Самуй запутанный цикл в котором составляем sql запросы для каждой группы полей, которая есть в GET массиве&lt;br /&gt;
    //Попадают в Sql-запрос только поля из GET, т.е. те которые учавствуют в фильтрации в текущем запросе.&lt;br /&gt;
    for($t = 2; $t &amp;lt; count($total_arr)+2; $t++){&lt;br /&gt;
      $str_rec = &amp;quot;&amp;quot;;&lt;br /&gt;
      $count = 0;&lt;br /&gt;
      for($i =0; $i &amp;lt; count($total_arr[$t]); $i++ ){&lt;br /&gt;
        if(array_key_exists($total_arr[$t][$i],$arr_get)){&lt;br /&gt;
        if (!$str_rec) $c_index++;  &lt;br /&gt;
        $count++;&lt;br /&gt;
        $str_var = &amp;quot;c&amp;quot;.$c_index.&amp;quot;.field_id = &amp;#039;{$objType-&amp;gt;getFieldId($total_arr[$t][$i])}&amp;#039;&amp;quot;;&lt;br /&gt;
        if ($str_rec != &amp;quot;&amp;quot;) {$str_rec .= &amp;quot; OR &amp;quot;.$str_var;}&lt;br /&gt;
        else $str_rec .= $str_var;&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
      if ($count &amp;gt; 1) {$str_rec = &amp;quot;AND (c{$c_index}.obj_id = o.id AND ({$str_rec}) AND (c{$c_index}.int_val IN (&amp;#039;1&amp;#039;)))&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
      if ($count == 1) {$str_rec = &amp;quot;AND (c{$c_index}.obj_id = o.id AND {$str_rec} AND (c{$c_index}.int_val IN (&amp;#039;1&amp;#039;)))&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
      if ($count &amp;gt; 0){&lt;br /&gt;
        switch($t){&lt;br /&gt;
        case 2: $str2 = $str_rec; break;&lt;br /&gt;
        case 3: $str3 = $str_rec; break;&lt;br /&gt;
        case 4: $str4 = $str_rec; break;&lt;br /&gt;
        case 5: $str5 = $str_rec; break;&lt;br /&gt;
        case 6: $str6 = $str_rec; break;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    // Данный блок необходим для сортировки, если она была активирована на странице&lt;br /&gt;
    if(array_key_exists(&amp;#039;order_filter&amp;#039;,$_GET)){&lt;br /&gt;
      $c_index++;&lt;br /&gt;
      $id_field = $objType-&amp;gt;getFieldId(key($_GET[&amp;#039;order_filter&amp;#039;]));&lt;br /&gt;
      $ord_1 = &amp;quot;AND (c{$c_index}.obj_id = o.id AND c{$c_index}.field_id = &amp;#039;{$id_field}&amp;#039;) &amp;quot;;&lt;br /&gt;
      $type_field = umiFieldsCollection::getInstance()-&amp;gt;getField($id_field)-&amp;gt;getFieldType()-&amp;gt;getDataType();&lt;br /&gt;
      $ord_2 = &amp;quot;ORDER BY c{$c_index}.{$type_field}_val ASC&amp;quot;;&lt;br /&gt;
      } &lt;br /&gt;
      else {&lt;br /&gt;
      $ord_1 = &amp;quot;&amp;quot;;&lt;br /&gt;
      $ord_2 = &amp;quot;ORDER BY h.ord&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
    // Первый из двух блоков, дополнящих составленные выше части sql запроса, все зависит от велечены $c_index   &lt;br /&gt;
    $oc = &amp;quot;&amp;quot;;&lt;br /&gt;
    for ($i =1; $i &amp;lt;= $c_index; $i++ ){&lt;br /&gt;
      $oc_var = &amp;quot;cms3_object_content c{$i}&amp;quot;;&lt;br /&gt;
      if ($i &amp;gt; 1) {$oc .= &amp;quot;, &amp;quot;.$oc_var;}&lt;br /&gt;
      else $oc .= $oc_var;&lt;br /&gt;
    }&lt;br /&gt;
    // Второй из двух блоков, дополнящих составленные выше части sql запроса, все зависит от велечены $c_index&lt;br /&gt;
    $c_obj_id = &amp;quot;&amp;quot;;  &lt;br /&gt;
    if ($c_index &amp;gt; 1){&lt;br /&gt;
      for ($i = 2, $b = 1; $i &amp;lt;= $c_index; $i++, $b++){&lt;br /&gt;
      $obj_id_var = &amp;quot;AND c{$b}.obj_id = c{$i}.obj_id &amp;quot;;&lt;br /&gt;
      $c_obj_id .= $obj_id_var;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    // Лимиты по выводу данных, на основе них в $result будет отобран определнный участок данных. &lt;br /&gt;
    $limit_1 = $per_page*$curr_page;&lt;br /&gt;
    $limit_2 = $limit_1 + $per_page;&lt;br /&gt;
    $begin_1 = &amp;quot;SELECT DISTINCT h.id FROM cms3_hierarchy_relations hr, cms3_objects o, cms3_hierarchy h , &amp;quot;;&lt;br /&gt;
    $begin_2 = &amp;quot; WHERE h.obj_id = o.id AND h.is_deleted = &amp;#039;0&amp;#039; &amp;quot;;&lt;br /&gt;
    $average = &amp;quot;AND ((hr.child_id = h.id AND (hr.rel_id = &amp;#039;{$category_id}&amp;#039; AND hr.level &amp;lt;= &amp;#039;1&amp;#039;))) AND h.is_active = &amp;#039;1&amp;#039; AND h.type_id IN (&amp;#039;{$hierarchy_type_id}&amp;#039;) &amp;quot;;&lt;br /&gt;
    //Знак SQL; - обязательно должен быть у левого края окна!!!&lt;br /&gt;
    // Собираем все части Sql запроса&lt;br /&gt;
    $sqls=&amp;lt;&amp;lt;&amp;lt;SQL&lt;br /&gt;
    {$begin_1}&lt;br /&gt;
    {$oc}&lt;br /&gt;
    {$begin_2}&lt;br /&gt;
    {$str1}&lt;br /&gt;
    {$str2}&lt;br /&gt;
    {$str3}&lt;br /&gt;
    {$str4}&lt;br /&gt;
    {$str5}&lt;br /&gt;
    {$str6}&lt;br /&gt;
    {$ord_1}&lt;br /&gt;
    {$average}&lt;br /&gt;
    {$c_obj_id}&lt;br /&gt;
    {$ord_2}&lt;br /&gt;
SQL;&lt;br /&gt;
&lt;br /&gt;
    // l_mysql_query - находится в lib.php в корне сайта. Выполняем sql запрос.&lt;br /&gt;
    $result = l_mysql_query($sqls);&lt;br /&gt;
			$res = Array();&lt;br /&gt;
			while ($row = mysql_fetch_row($result)) {&lt;br /&gt;
				list($element_id) = $row;&lt;br /&gt;
				$element_id = intval($element_id);&lt;br /&gt;
				if(in_array($element_id, $res) == false) {&lt;br /&gt;
					$res[] = $element_id;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
	  // Отбираем данные с учетом лимитов.&lt;br /&gt;
		$result = array_slice($res,$limit_1,$limit_2);&lt;br /&gt;
		$total = count($res);&lt;br /&gt;
		// Передаем отобранные данные оставшейся части кода, которая осталась без изменений.&lt;br /&gt;
		if(($sz = sizeof($result)) &amp;gt; 0) {&lt;br /&gt;
			$block_arr = Array();&lt;br /&gt;
			$lines = Array();&lt;br /&gt;
			for($i = 0; $i &amp;lt; $sz; $i++) {&lt;br /&gt;
				$element_id = $result[$i];&lt;br /&gt;
				$element = umiHierarchy::getInstance()-&amp;gt;getElement($element_id);&lt;br /&gt;
				if(!$element) continue;&lt;br /&gt;
				$line_arr = Array();&lt;br /&gt;
				$line_arr[&amp;#039;attribute:id&amp;#039;] = $element_id;&lt;br /&gt;
				$line_arr[&amp;#039;attribute:alt_name&amp;#039;] = $element-&amp;gt;getAltName();&lt;br /&gt;
				$line_arr[&amp;#039;attribute:link&amp;#039;] = umiHierarchy::getInstance()-&amp;gt;getPathById($element_id);&lt;br /&gt;
				$line_arr[&amp;#039;xlink:href&amp;#039;] = &amp;quot;upage://&amp;quot; . $element_id;&lt;br /&gt;
				$line_arr[&amp;#039;node:text&amp;#039;] = $element-&amp;gt;getName();&lt;br /&gt;
				$lines[] = def_module::parseTemplate($template_line, $line_arr, $element_id);&lt;br /&gt;
				templater::pushEditable(&amp;quot;catalog&amp;quot;, &amp;quot;object&amp;quot;, $element_id);&lt;br /&gt;
				umiHierarchy::getInstance()-&amp;gt;unloadElement($element_id);&lt;br /&gt;
			}&lt;br /&gt;
			$block_arr[&amp;#039;subnodes:lines&amp;#039;] = $lines;&lt;br /&gt;
			$block_arr[&amp;#039;numpages&amp;#039;] = umiPagenum::generateNumPage($total, $per_page);&lt;br /&gt;
			$block_arr[&amp;#039;total&amp;#039;] = $total;&lt;br /&gt;
			$block_arr[&amp;#039;per_page&amp;#039;] = $per_page;&lt;br /&gt;
			$block_arr[&amp;#039;category_id&amp;#039;] = $category_id;&lt;br /&gt;
			&lt;br /&gt;
			if($type_id) {&lt;br /&gt;
				$block_arr[&amp;#039;type_id&amp;#039;] = $type_id;&lt;br /&gt;
			}&lt;br /&gt;
			return def_module::parseTemplate($template_block, $block_arr, $category_id);&lt;br /&gt;
		} else {&lt;br /&gt;
			$block_arr[&amp;#039;numpages&amp;#039;] = umiPagenum::generateNumPage(0, 0);&lt;br /&gt;
			$block_arr[&amp;#039;lines&amp;#039;] = &amp;quot;&amp;quot;;&lt;br /&gt;
			$block_arr[&amp;#039;total&amp;#039;] = 0;&lt;br /&gt;
			$block_arr[&amp;#039;per_page&amp;#039;] = 0;&lt;br /&gt;
			$block_arr[&amp;#039;category_id&amp;#039;] = $category_id;&lt;br /&gt;
			&lt;br /&gt;
			return def_module::parseTemplate($template_block_empty, $block_arr, $category_id);;&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>VITL&#039;</name></author>
		
	</entry>
</feed>