<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.umisoft.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Whoa</id>
	<title>Umicms - Вклад участника [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.umisoft.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Whoa"/>
	<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Whoa"/>
	<updated>2026-05-04T14:11:57Z</updated>
	<subtitle>Вклад участника</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%22%D0%BB%D0%B0%D0%B9%D0%BA%D0%BE%D0%B2%22_%D0%BA_%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D1%8F%D0%BC&amp;diff=9113</id>
		<title>Добавление &quot;лайков&quot; к новостям</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%22%D0%BB%D0%B0%D0%B9%D0%BA%D0%BE%D0%B2%22_%D0%BA_%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D1%8F%D0%BC&amp;diff=9113"/>
		<updated>2019-04-16T14:35:54Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Задача:&amp;#039;&amp;#039;&amp;#039; добавить к новости возможность ставить &amp;quot;лайк&amp;quot; и выводить новости в лентах по принципу &amp;quot;чем больше лайков - тем выше новость&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Решение:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;1. В типе данных &amp;quot;Новость&amp;quot; создаём новую группу полей и в ней поле типа &amp;quot;Счётчик&amp;quot;, ответственное за лайки. Для примера назовём его likes.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;2. Напишем кастомные макросы для работы с этим полем в файле ~/classes/components/news/customMacros.php:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// Ставит лайк, инкрементирует их число&lt;br /&gt;
public function addLike($current_page_id) {&lt;br /&gt;
    $hierarchy = umiHierarchy::getInstance();&lt;br /&gt;
    $element = $hierarchy-&amp;gt;getElement($current_page_id);&lt;br /&gt;
    $temp_count = $element-&amp;gt;getValue(&amp;quot;likes&amp;quot;);&lt;br /&gt;
    ++$temp_count;&lt;br /&gt;
    $element-&amp;gt;setValue(&amp;quot;likes&amp;quot;,$temp_count);&lt;br /&gt;
    $element-&amp;gt;commit();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt; &lt;br /&gt;
// Для отображения лайков на странице, возвращает их кол-во&lt;br /&gt;
public function getLikesCount($current_page_id) {&lt;br /&gt;
    $hierarchy = umiHierarchy::getInstance();&lt;br /&gt;
    $element = $hierarchy-&amp;gt;getElement($current_page_id);&lt;br /&gt;
    return $element-&amp;gt;getValue(&amp;quot;likes&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Затем, нужно переопределить метод вывода новостей lastlist, его код можно взять в файле macros.php в той же папке news. Он довольно большой, но нам будет достаточно поставить только одну строчку $news-&amp;gt;order(&amp;#039;likes&amp;#039;)-&amp;gt;desc(); после строк:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt; &lt;br /&gt;
$news = new selector(&amp;#039;pages&amp;#039;);&lt;br /&gt;
$news-&amp;gt;types(&amp;#039;hierarchy-type&amp;#039;)-&amp;gt;name(&amp;#039;news&amp;#039;, &amp;#039;item&amp;#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Когда все методы реализованы, остаётся только вставить макросы addLike и getLikesCount в нужные места в шаблонах сайта. При нажатии кнопки &amp;quot;Лайк&amp;quot; посылаем ajax-запрос на /news/addLike/&amp;lt;идентификатор страницы&amp;gt; и обновляем значение лайков на странице.&lt;br /&gt;
&lt;br /&gt;
После всех этих действий новости будут выводится по принципу &amp;quot;чем больше лайков - тем выше новость&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Код метода lastlist:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
public function lastlist(&lt;br /&gt;
			$path = &amp;#039;&amp;#039;,&lt;br /&gt;
			$template = &amp;#039;default&amp;#039;,&lt;br /&gt;
			$per_page = false,&lt;br /&gt;
			$ignore_paging = false,&lt;br /&gt;
			$sDaysInterval = &amp;#039;&amp;#039;,&lt;br /&gt;
			$bSkipOrderByTime = false,&lt;br /&gt;
			$level = 1&lt;br /&gt;
		) {&lt;br /&gt;
			if (!$per_page) {&lt;br /&gt;
				$per_page = $this-&amp;gt;module-&amp;gt;per_page;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$per_page = (int) $per_page;&lt;br /&gt;
			$sDaysInterval = (string) $sDaysInterval;&lt;br /&gt;
&lt;br /&gt;
			if ($sDaysInterval !== &amp;#039;&amp;#039;) {&lt;br /&gt;
				$sStartDaysOffset = &amp;#039;&amp;#039;;&lt;br /&gt;
				$sFinishDaysOffset = &amp;#039;&amp;#039;;&lt;br /&gt;
				$arrDaysInterval = preg_split(&amp;quot;/\s+/is&amp;quot;, $sDaysInterval);&lt;br /&gt;
				if (isset($arrDaysInterval[0])) {&lt;br /&gt;
					$sStartDaysOffset = $arrDaysInterval[0];&lt;br /&gt;
				}&lt;br /&gt;
				if (isset($arrDaysInterval[1])) {&lt;br /&gt;
					$sFinishDaysOffset = $arrDaysInterval[1];&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$iNowTime = time();&lt;br /&gt;
&lt;br /&gt;
				if ($sStartDaysOffset === &amp;#039;+&amp;#039;) {&lt;br /&gt;
					$iStartDaysOffset = (PHP_INT_MAX - $iNowTime);&lt;br /&gt;
				} elseif ($sStartDaysOffset === &amp;#039;-&amp;#039;) {&lt;br /&gt;
					$iStartDaysOffset = (0 - PHP_INT_MAX + $iNowTime);&lt;br /&gt;
				} else {&lt;br /&gt;
					$iStartDaysOffset = (int) $sStartDaysOffset;&lt;br /&gt;
					$sPostfix = mb_substr($sStartDaysOffset, -1);&lt;br /&gt;
&lt;br /&gt;
					if ($sPostfix === &amp;#039;m&amp;#039;) {&lt;br /&gt;
						$iStartDaysOffset *= 60;&lt;br /&gt;
					} elseif ($sPostfix === &amp;#039;h&amp;#039; || $sPostfix === &amp;#039;H&amp;#039;) {&lt;br /&gt;
						$iStartDaysOffset *= (60 * 60);&lt;br /&gt;
					} else {&lt;br /&gt;
						$iStartDaysOffset *= (60 * 60 * 24);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				if ($sFinishDaysOffset === &amp;#039;+&amp;#039;) {&lt;br /&gt;
					$iFinishDaysOffset = (PHP_INT_MAX - $iNowTime);&lt;br /&gt;
				} elseif ($sFinishDaysOffset === &amp;#039;-&amp;#039;) {&lt;br /&gt;
					$iFinishDaysOffset = (0 - PHP_INT_MAX + $iNowTime);&lt;br /&gt;
				} else {&lt;br /&gt;
					$iFinishDaysOffset = (int) $sFinishDaysOffset;&lt;br /&gt;
					$sPostfix = mb_substr($sFinishDaysOffset, -1);&lt;br /&gt;
&lt;br /&gt;
					if ($sPostfix === &amp;#039;m&amp;#039;) {&lt;br /&gt;
						$iFinishDaysOffset *= 60;&lt;br /&gt;
					} elseif ($sPostfix === &amp;#039;h&amp;#039; || $sPostfix === &amp;#039;H&amp;#039;) {&lt;br /&gt;
						$iFinishDaysOffset *= (60 * 60);&lt;br /&gt;
					} else {&lt;br /&gt;
						$iFinishDaysOffset *= (60 * 60 * 24);&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$iPeriodStart = $iNowTime + $iStartDaysOffset;&lt;br /&gt;
				$iPeriodFinish = $iNowTime + $iFinishDaysOffset;&lt;br /&gt;
				$bPeriodOrder = ($iPeriodStart &amp;lt; $iPeriodFinish);&lt;br /&gt;
			} else {&lt;br /&gt;
				$iPeriodStart = false;&lt;br /&gt;
				$iPeriodFinish = false;&lt;br /&gt;
				$bPeriodOrder = false;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$curr_page = (int) getRequest(&amp;#039;p&amp;#039;);&lt;br /&gt;
			if ($ignore_paging) {&lt;br /&gt;
				$curr_page = 0;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$parentId = $this-&amp;gt;module-&amp;gt;analyzeRequiredPath($path);&lt;br /&gt;
			if ($parentId === false &amp;amp;&amp;amp; $path != KEYWORD_GRAB_ALL) {&lt;br /&gt;
				throw new publicException(getLabel(&amp;#039;error-page-does-not-exist&amp;#039;, null, $path));&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$umiLinksHelper = umiLinksHelper::getInstance();&lt;br /&gt;
			$umiLinksHelper-&amp;gt;loadLinkPartForPages([$parentId]);&lt;br /&gt;
&lt;br /&gt;
			$month = (int) getRequest(&amp;#039;month&amp;#039;);&lt;br /&gt;
			$year = (int) getRequest(&amp;#039;year&amp;#039;);&lt;br /&gt;
			$day = (int) getRequest(&amp;#039;day&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			$news = new selector(&amp;#039;pages&amp;#039;);&lt;br /&gt;
			$news-&amp;gt;types(&amp;#039;hierarchy-type&amp;#039;)-&amp;gt;name(&amp;#039;news&amp;#039;, &amp;#039;item&amp;#039;);&lt;br /&gt;
			// Добавляем сортировку по лайкам&lt;br /&gt;
			$news-&amp;gt;order(&amp;#039;likes&amp;#039;)-&amp;gt;desc();&lt;br /&gt;
&lt;br /&gt;
			if ($path != KEYWORD_GRAB_ALL) {&lt;br /&gt;
				$escapedLevel = (int) $level;&lt;br /&gt;
				$escapedLevel = ($escapedLevel === 0) ? 1 : $escapedLevel;&lt;br /&gt;
&lt;br /&gt;
				if (is_array($parentId)) {&lt;br /&gt;
					foreach ($parentId as $parent) {&lt;br /&gt;
						$news-&amp;gt;where(&amp;#039;hierarchy&amp;#039;)-&amp;gt;page($parent)-&amp;gt;level($escapedLevel);&lt;br /&gt;
					}&lt;br /&gt;
				} else {&lt;br /&gt;
					$news-&amp;gt;where(&amp;#039;hierarchy&amp;#039;)-&amp;gt;page($parentId)-&amp;gt;level($escapedLevel);&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if (!empty($month) &amp;amp;&amp;amp; !empty($year) &amp;amp;&amp;amp; !empty($day)) {&lt;br /&gt;
				$date1 = mktime(0, 0, 0, $month, $day, $year);&lt;br /&gt;
				$date2 = mktime(23, 59, 59, $month, $day, $year);&lt;br /&gt;
				$news-&amp;gt;where(&amp;#039;publish_time&amp;#039;)-&amp;gt;between($date1, $date2);&lt;br /&gt;
			} elseif (!empty($month) &amp;amp;&amp;amp; !empty($year)) {&lt;br /&gt;
				$date1 = mktime(0, 0, 0, $month, 1, $year);&lt;br /&gt;
				$date2 = mktime(23, 59, 59, $month + 1, 0, $year);&lt;br /&gt;
				$news-&amp;gt;where(&amp;#039;publish_time&amp;#039;)-&amp;gt;between($date1, $date2);&lt;br /&gt;
			} elseif (!empty($year)) {&lt;br /&gt;
				$date1 = mktime(0, 0, 0, 1, 1, $year);&lt;br /&gt;
				$date2 = mktime(23, 59, 59, 12, 31, $year);&lt;br /&gt;
				$news-&amp;gt;where(&amp;#039;publish_time&amp;#039;)-&amp;gt;between($date1, $date2);&lt;br /&gt;
			} elseif ($iPeriodStart !== $iPeriodFinish) {&lt;br /&gt;
				if ($iPeriodStart &amp;amp;&amp;amp; $iPeriodFinish) {&lt;br /&gt;
					if ($sDaysInterval &amp;amp;&amp;amp; $sDaysInterval != &amp;#039;+ -&amp;#039;) {&lt;br /&gt;
						if ($iPeriodStart &amp;lt; $iPeriodFinish) {&lt;br /&gt;
							$news-&amp;gt;where(&amp;#039;publish_time&amp;#039;)-&amp;gt;between($iPeriodStart, $iPeriodFinish);&lt;br /&gt;
						} else {&lt;br /&gt;
							$news-&amp;gt;where(&amp;#039;publish_time&amp;#039;)-&amp;gt;between($iPeriodFinish, $iPeriodStart);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if (!$bSkipOrderByTime) {&lt;br /&gt;
				if ($bPeriodOrder === true) {&lt;br /&gt;
					$news-&amp;gt;order(&amp;#039;publish_time&amp;#039;)-&amp;gt;asc();&lt;br /&gt;
				} else {&lt;br /&gt;
					$news-&amp;gt;order(&amp;#039;publish_time&amp;#039;)-&amp;gt;desc();&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			selectorHelper::detectFilters($news);&lt;br /&gt;
			$news-&amp;gt;option(&amp;#039;load-all-props&amp;#039;)-&amp;gt;value(true);&lt;br /&gt;
			$news-&amp;gt;limit($curr_page * $per_page, $per_page);&lt;br /&gt;
&lt;br /&gt;
			$result = $news-&amp;gt;result();&lt;br /&gt;
			$total = $news-&amp;gt;length();&lt;br /&gt;
&lt;br /&gt;
			$umiHierarchy = umiHierarchy::getInstance();&lt;br /&gt;
			$moduleClass = $this-&amp;gt;module;&lt;br /&gt;
&lt;br /&gt;
			list(&lt;br /&gt;
				$template_block,&lt;br /&gt;
				$template_block_empty,&lt;br /&gt;
				$template_line,&lt;br /&gt;
				$template_archive&lt;br /&gt;
				) = $moduleClass::loadTemplates(&lt;br /&gt;
				&amp;#039;news/&amp;#039; . $template,&lt;br /&gt;
				&amp;#039;lastlist_block&amp;#039;,&lt;br /&gt;
				&amp;#039;lastlist_block_empty&amp;#039;,&lt;br /&gt;
				&amp;#039;lastlist_item&amp;#039;,&lt;br /&gt;
				&amp;#039;lastlist_archive&amp;#039;&lt;br /&gt;
			);&lt;br /&gt;
&lt;br /&gt;
			if (umiCount($result) == 0) {&lt;br /&gt;
				return $moduleClass::parseTemplate($template_block_empty, []);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$block_arr = [];&lt;br /&gt;
			$lines = [];&lt;br /&gt;
&lt;br /&gt;
			foreach ($result as $element) {&lt;br /&gt;
				if (!$element instanceof iUmiHierarchyElement) {&lt;br /&gt;
					continue;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$element_id = $element-&amp;gt;getId();&lt;br /&gt;
&lt;br /&gt;
				$line_arr = [];&lt;br /&gt;
				$line_arr[&amp;#039;attribute:id&amp;#039;] = $element_id;&lt;br /&gt;
				$line_arr[&amp;#039;node:name&amp;#039;] = $element-&amp;gt;getName();&lt;br /&gt;
				$line_arr[&amp;#039;attribute:link&amp;#039;] = $umiLinksHelper-&amp;gt;getLinkByParts($element);&lt;br /&gt;
				$line_arr[&amp;#039;xlink:href&amp;#039;] = &amp;#039;upage://&amp;#039; . $element_id;&lt;br /&gt;
				$line_arr[&amp;#039;void:header&amp;#039;] = $lines_arr[&amp;#039;name&amp;#039;] = $element-&amp;gt;getName();&lt;br /&gt;
&lt;br /&gt;
				$publish_time = $element-&amp;gt;getValue(&amp;#039;publish_time&amp;#039;);&lt;br /&gt;
				if ($publish_time) {&lt;br /&gt;
					$line_arr[&amp;#039;attribute:publish_time&amp;#039;] = $publish_time-&amp;gt;getFormattedDate(&amp;#039;U&amp;#039;);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$lent_name = &amp;#039;&amp;#039;;&lt;br /&gt;
				$lent_link = &amp;#039;&amp;#039;;&lt;br /&gt;
				$lent_id = $element-&amp;gt;getParentId();&lt;br /&gt;
&lt;br /&gt;
				$lent_element = $umiHierarchy-&amp;gt;getElement($lent_id);&lt;br /&gt;
				if ($lent_element) {&lt;br /&gt;
					$lent_name = $lent_element-&amp;gt;getName();&lt;br /&gt;
					$lent_link = $umiLinksHelper-&amp;gt;getLinkByParts($lent_element);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$line_arr[&amp;#039;attribute:lent_id&amp;#039;] = $lent_id;&lt;br /&gt;
				$line_arr[&amp;#039;attribute:lent_name&amp;#039;] = $lent_name;&lt;br /&gt;
				$line_arr[&amp;#039;attribute:lent_link&amp;#039;] = $lent_link;&lt;br /&gt;
&lt;br /&gt;
				$lines[] = $moduleClass::parseTemplate($template_line, $line_arr, $element_id);&lt;br /&gt;
				$moduleClass::pushEditable(&amp;#039;news&amp;#039;, &amp;#039;item&amp;#039;, $element_id);&lt;br /&gt;
				$umiHierarchy-&amp;gt;unloadElement($element_id);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			if (is_array($parentId)) {&lt;br /&gt;
				list($parentId) = $parentId;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$block_arr[&amp;#039;subnodes:items&amp;#039;] = $block_arr[&amp;#039;void:lines&amp;#039;] = $lines;&lt;br /&gt;
			$block_arr[&amp;#039;archive&amp;#039;] = ($total &amp;gt; 0) ? $template_archive : &amp;#039;&amp;#039;;&lt;br /&gt;
			$parent = $umiHierarchy-&amp;gt;getElement($parentId);&lt;br /&gt;
&lt;br /&gt;
			if ($parent instanceof iUmiHierarchyElement) {&lt;br /&gt;
				$block_arr[&amp;#039;archive_link&amp;#039;] = $umiLinksHelper-&amp;gt;getLinkByParts($parent);&lt;br /&gt;
			}&lt;br /&gt;
&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;] = $parentId;&lt;br /&gt;
&lt;br /&gt;
			return $moduleClass::parseTemplate($template_block, $block_arr, $parentId);&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 [[category:Написание кастомных макросов]][[Категория:Модуль Новости]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%98%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B7_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2,_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85_%D0%BD%D0%B5%D1%82_%D0%B2_%D0%BD%D0%B0%D0%BB%D0%B8%D1%87%D0%B8%D0%B8&amp;diff=9103</id>
		<title>Исключение из поиска товаров, которых нет в наличии</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%98%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B7_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2,_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85_%D0%BD%D0%B5%D1%82_%D0%B2_%D0%BD%D0%B0%D0%BB%D0%B8%D1%87%D0%B8%D0%B8&amp;diff=9103"/>
		<updated>2019-04-12T16:15:16Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Иногда бывает необходимо выключить из поисковой выдачи по сайту те товары, которых на данный момент нет в наличии.&lt;br /&gt;
&lt;br /&gt;
Чтобы реализовать данный функционал, нам необходимо немного изменить макрос search_do модуля search.&lt;br /&gt;
&lt;br /&gt;
Копируем код макроса search_do из файла ~/classes/components/search/macros.php в файл ~/classes/components/search/customMacros.php&lt;br /&gt;
&lt;br /&gt;
Внесём следующие изменения в данный метод:&lt;br /&gt;
&lt;br /&gt;
Найдём все объекты каталога, количество которых равно 0 или NULL(на данный момент при обмене с 1С товар без количества имеет именно это значение):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$notInStockObjectsSelector = new selector(&amp;#039;pages&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;types(&amp;#039;object-type&amp;#039;)-&amp;gt;name(&amp;#039;catalog&amp;#039;, &amp;#039;object&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;option(&amp;#039;or-mode&amp;#039;)-&amp;gt;field(&amp;#039;common_quantity&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;equals(0);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;isnull();&lt;br /&gt;
			$notInStockObjects = $notInStockObjectsSelector-&amp;gt;result();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исключим эти объекты из общей поисковой выборки и изменим количество найденных товаров:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
foreach($notInStockObjects as $item)&lt;br /&gt;
			{				&lt;br /&gt;
				if(in_array($item-&amp;gt;id, $pageIds))&lt;br /&gt;
				{&lt;br /&gt;
					$itemKeyInArray = array_search($item-&amp;gt;id, $pageIds);&lt;br /&gt;
					unset($pageIds[$itemKeyInArray]);&lt;br /&gt;
					// Уменьшаем счётчик найденных позиций&lt;br /&gt;
					$total--;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итоговый код макроса будет выглядеть вот таким образом:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
public function search_do($template = &amp;#039;default&amp;#039;, $searchString = &amp;#039;&amp;#039;, $types = &amp;#039;&amp;#039;, $branches = &amp;#039;&amp;#039;, $perPage = null) {&lt;br /&gt;
			$searchString = $searchString ?: (string) getRequest(&amp;#039;search_string&amp;#039;);&lt;br /&gt;
			$perPage = $perPage !== null ? $perPage : getRequest(&amp;#039;per_page&amp;#039;);&lt;br /&gt;
			$perPage = $perPage !== null ? $perPage : $this-&amp;gt;module-&amp;gt;per_page;&lt;br /&gt;
			$currentPage = (int) getRequest(&amp;#039;p&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			$config = mainConfiguration::getInstance();&lt;br /&gt;
			$searchEngine = $config-&amp;gt;get(&amp;#039;modules&amp;#039;, &amp;#039;search.using-sphinx&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			if ($searchEngine) {&lt;br /&gt;
				return $this-&amp;gt;sphinxSearch($template, $searchString, $perPage, $currentPage);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			list(&lt;br /&gt;
				$templateBlock,&lt;br /&gt;
				$templateLine,&lt;br /&gt;
				$templateEmptyResult,&lt;br /&gt;
				$templateLineQuant&lt;br /&gt;
				) = search::loadTemplates(&amp;#039;search/&amp;#039; . $template,&lt;br /&gt;
				&amp;#039;search_block&amp;#039;,&lt;br /&gt;
				&amp;#039;search_block_line&amp;#039;,&lt;br /&gt;
				&amp;#039;search_empty_result&amp;#039;,&lt;br /&gt;
				&amp;#039;search_block_line_quant&amp;#039;&lt;br /&gt;
			);&lt;br /&gt;
&lt;br /&gt;
			$variables = [];&lt;br /&gt;
			$variables[&amp;#039;last_search_string&amp;#039;] = htmlspecialchars($searchString);&lt;br /&gt;
&lt;br /&gt;
			$searchString = urldecode($searchString);&lt;br /&gt;
			$searchString = htmlspecialchars($searchString);&lt;br /&gt;
			$searchString = str_replace(&amp;#039;. &amp;#039;, &amp;#039; &amp;#039;, $searchString);&lt;br /&gt;
			$searchString = trim($searchString, &amp;quot; \t\r\n%&amp;quot;);&lt;br /&gt;
			$searchString = str_replace([&amp;#039;&amp;quot;&amp;#039;, &amp;quot;&amp;#039;&amp;quot;], &amp;#039;&amp;#039;, $searchString);&lt;br /&gt;
&lt;br /&gt;
			$orMode = (bool) getRequest(&amp;#039;search-or-mode&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			if (!$searchString) {&lt;br /&gt;
				return $this-&amp;gt;insert_form($template);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$searchParentsIds = [];&lt;br /&gt;
			$branches = $branches ?: getRequest(&amp;#039;search_branches&amp;#039;);&lt;br /&gt;
			$branches = (string) $branches;&lt;br /&gt;
			$branches = trim(rawurldecode($branches));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
			if ($branches !== &amp;#039;&amp;#039;) {&lt;br /&gt;
				$arrBranches = preg_split(&amp;quot;/[\s,]+/&amp;quot;, $branches);&lt;br /&gt;
&lt;br /&gt;
				foreach ($arrBranches as $iBranch =&amp;gt; $vBranch) {&lt;br /&gt;
					$arrBranches[$iBranch] = $this-&amp;gt;module-&amp;gt;analyzeRequiredPath($vBranch);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$arrBranches = array_map(&amp;#039;intval&amp;#039;, $arrBranches);&lt;br /&gt;
				$searchParentsIds = array_merge($searchParentsIds, $arrBranches);&lt;br /&gt;
&lt;br /&gt;
				$sel = new selector(&amp;#039;pages&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
				foreach ($arrBranches as $parentId) {&lt;br /&gt;
					$sel-&amp;gt;where(&amp;#039;hierarchy&amp;#039;)-&amp;gt;page($parentId)-&amp;gt;level(100);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$sel-&amp;gt;option(&amp;#039;return&amp;#039;)-&amp;gt;value(&amp;#039;id&amp;#039;);&lt;br /&gt;
				$pageIds = $sel-&amp;gt;result();&lt;br /&gt;
&lt;br /&gt;
				foreach ($pageIds as $info) {&lt;br /&gt;
					$searchParentsIds[] = $info[&amp;#039;id&amp;#039;];&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$types = $this-&amp;gt;module-&amp;gt;getSearchTypes($types);&lt;br /&gt;
&lt;br /&gt;
			$searchModel = searchModel::getInstance();&lt;br /&gt;
			$pageIds = $searchModel-&amp;gt;runSearch($searchString, $types, $searchParentsIds, $orMode);&lt;br /&gt;
			$total = umiCount($pageIds);&lt;br /&gt;
			$pageIds = array_slice($pageIds, $perPage * $currentPage, $perPage);&lt;br /&gt;
&lt;br /&gt;
			$umiLinksHelper = umiLinksHelper::getInstance();&lt;br /&gt;
			&lt;br /&gt;
			// Ищем объекты каталога, общее количество которых = 0&lt;br /&gt;
			$notInStockObjectsSelector = new selector(&amp;#039;pages&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;types(&amp;#039;object-type&amp;#039;)-&amp;gt;name(&amp;#039;catalog&amp;#039;, &amp;#039;object&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;option(&amp;#039;or-mode&amp;#039;)-&amp;gt;field(&amp;#039;common_quantity&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;equals(0);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;isnull();&lt;br /&gt;
			$notInStockObjects = $notInStockObjectsSelector-&amp;gt;result();&lt;br /&gt;
			&lt;br /&gt;
			&lt;br /&gt;
			// А тут просто исключаем найденные объекты из общей поисковой выборки&lt;br /&gt;
			foreach($notInStockObjects as $item)&lt;br /&gt;
			{				&lt;br /&gt;
				if(in_array($item-&amp;gt;id, $pageIds))&lt;br /&gt;
				{&lt;br /&gt;
					$itemKeyInArray = array_search($item-&amp;gt;id, $pageIds);&lt;br /&gt;
					unset($pageIds[$itemKeyInArray]);&lt;br /&gt;
					// Уменьшаем счётчик найденных позиций&lt;br /&gt;
					$total--;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
			$i = $perPage * $currentPage;&lt;br /&gt;
			$umiHierarchy = umiHierarchy::getInstance();&lt;br /&gt;
			$umiHierarchy-&amp;gt;loadElements($pageIds);&lt;br /&gt;
			$lines = [];&lt;br /&gt;
			list($entryPattern, $linePattern) = $this-&amp;gt;module-&amp;gt;getHighLightOptions();&lt;br /&gt;
&lt;br /&gt;
			foreach ($pageIds as $index =&amp;gt; $pageId) {&lt;br /&gt;
				$page = $umiHierarchy-&amp;gt;getElement($pageId);&lt;br /&gt;
&lt;br /&gt;
				if (!$page instanceof iUmiHierarchyElement) {&lt;br /&gt;
					continue;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$itemVariables = [];&lt;br /&gt;
				$itemVariables[&amp;#039;type&amp;#039;] = $this-&amp;gt;module-&amp;gt;getTypeInfo($page);&lt;br /&gt;
				$itemVariables[&amp;#039;void:num&amp;#039;] = ++$i;&lt;br /&gt;
				$itemVariables[&amp;#039;attribute:id&amp;#039;] = $pageId;&lt;br /&gt;
				$itemVariables[&amp;#039;attribute:name&amp;#039;] = $page-&amp;gt;getName();&lt;br /&gt;
				$itemVariables[&amp;#039;attribute:link&amp;#039;] = $umiLinksHelper-&amp;gt;getLink($page);&lt;br /&gt;
				$itemVariables[&amp;#039;xlink:href&amp;#039;] = &amp;#039;upage://&amp;#039; . $pageId;&lt;br /&gt;
				$itemVariables[&amp;#039;node:context&amp;#039;] = $searchModel-&amp;gt;getContext($pageId, $searchString, $entryPattern, $linePattern);&lt;br /&gt;
				$itemVariables[&amp;#039;void:quant&amp;#039;] = ($index &amp;lt; umiCount($pageIds) - 1&lt;br /&gt;
					? search::parseTemplate($templateLineQuant, [])&lt;br /&gt;
					: &amp;#039;&amp;#039;&lt;br /&gt;
				);&lt;br /&gt;
				$lines[] = search::parseTemplate($templateLine, $itemVariables, $pageId);&lt;br /&gt;
&lt;br /&gt;
				search::pushEditable(false, false, $pageId);&lt;br /&gt;
				$umiHierarchy-&amp;gt;unloadElement($pageId);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$variables[&amp;#039;subnodes:items&amp;#039;] = $variables[&amp;#039;void:lines&amp;#039;] = $lines;&lt;br /&gt;
			$variables[&amp;#039;total&amp;#039;] = $total;&lt;br /&gt;
			$variables[&amp;#039;per_page&amp;#039;] = $perPage;&lt;br /&gt;
&lt;br /&gt;
			return search::parseTemplate(($total &amp;gt; 0 ? $templateBlock : $templateEmptyResult), $variables);&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того, как мы описали свою реализацию данного макроса, при выдаче результатов поиска из них будут исключены товары, которых на данный момент нет в наличии.&lt;br /&gt;
&lt;br /&gt;
 [[category:Модуль Поиск]] [[Категория:Модуль Интернет магазин]] [[Категория:Написание кастомных макросов]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%98%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B7_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2,_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85_%D0%BD%D0%B5%D1%82_%D0%B2_%D0%BD%D0%B0%D0%BB%D0%B8%D1%87%D0%B8%D0%B8&amp;diff=9102</id>
		<title>Исключение из поиска товаров, которых нет в наличии</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%98%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B7_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2,_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85_%D0%BD%D0%B5%D1%82_%D0%B2_%D0%BD%D0%B0%D0%BB%D0%B8%D1%87%D0%B8%D0%B8&amp;diff=9102"/>
		<updated>2019-04-12T16:13:59Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Иногда бывает необходимо выключить из поисковой выдачи по сайту те товары, которых на данный момент нет в наличии.&lt;br /&gt;
&lt;br /&gt;
Чтобы реализовать данный функционал, нам необходимо немного изменить макрос search_do модуля search.&lt;br /&gt;
&lt;br /&gt;
Копируем код макроса search_do из файла ~/classes/components/search/macros.php в файл ~/classes/components/search/customMacros.php&lt;br /&gt;
&lt;br /&gt;
Внесём следующие изменения в данный метод:&lt;br /&gt;
&lt;br /&gt;
Найдём все объекты каталога, количество которых равно 0 или NULL(на данный момент при обмене с 1С товар без количества имеет именно это значение):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$notInStockObjectsSelector = new selector(&amp;#039;pages&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;types(&amp;#039;object-type&amp;#039;)-&amp;gt;name(&amp;#039;catalog&amp;#039;, &amp;#039;object&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;option(&amp;#039;or-mode&amp;#039;)-&amp;gt;field(&amp;#039;common_quantity&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;equals(0);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;isnull();&lt;br /&gt;
			$notInStockObjects = $notInStockObjectsSelector-&amp;gt;result();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исключим эти объекты из общей поисковой выборки и изменим количество найденных товаров:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
foreach($notInStockObjects as $item)&lt;br /&gt;
			{				&lt;br /&gt;
				if(in_array($item-&amp;gt;id, $pageIds))&lt;br /&gt;
				{&lt;br /&gt;
					$itemKeyInArray = array_search($item-&amp;gt;id, $pageIds);&lt;br /&gt;
					unset($pageIds[$itemKeyInArray]);&lt;br /&gt;
					// Уменьшаем счётчик найденных позиций&lt;br /&gt;
					$total--;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итоговый код макроса будет выглядеть вот таким образом:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
public function search_do($template = &amp;#039;default&amp;#039;, $searchString = &amp;#039;&amp;#039;, $types = &amp;#039;&amp;#039;, $branches = &amp;#039;&amp;#039;, $perPage = null) {&lt;br /&gt;
			$searchString = $searchString ?: (string) getRequest(&amp;#039;search_string&amp;#039;);&lt;br /&gt;
			$perPage = $perPage !== null ? $perPage : getRequest(&amp;#039;per_page&amp;#039;);&lt;br /&gt;
			$perPage = $perPage !== null ? $perPage : $this-&amp;gt;module-&amp;gt;per_page;&lt;br /&gt;
			$currentPage = (int) getRequest(&amp;#039;p&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			$config = mainConfiguration::getInstance();&lt;br /&gt;
			$searchEngine = $config-&amp;gt;get(&amp;#039;modules&amp;#039;, &amp;#039;search.using-sphinx&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			if ($searchEngine) {&lt;br /&gt;
				return $this-&amp;gt;sphinxSearch($template, $searchString, $perPage, $currentPage);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			list(&lt;br /&gt;
				$templateBlock,&lt;br /&gt;
				$templateLine,&lt;br /&gt;
				$templateEmptyResult,&lt;br /&gt;
				$templateLineQuant&lt;br /&gt;
				) = search::loadTemplates(&amp;#039;search/&amp;#039; . $template,&lt;br /&gt;
				&amp;#039;search_block&amp;#039;,&lt;br /&gt;
				&amp;#039;search_block_line&amp;#039;,&lt;br /&gt;
				&amp;#039;search_empty_result&amp;#039;,&lt;br /&gt;
				&amp;#039;search_block_line_quant&amp;#039;&lt;br /&gt;
			);&lt;br /&gt;
&lt;br /&gt;
			$variables = [];&lt;br /&gt;
			$variables[&amp;#039;last_search_string&amp;#039;] = htmlspecialchars($searchString);&lt;br /&gt;
&lt;br /&gt;
			$searchString = urldecode($searchString);&lt;br /&gt;
			$searchString = htmlspecialchars($searchString);&lt;br /&gt;
			$searchString = str_replace(&amp;#039;. &amp;#039;, &amp;#039; &amp;#039;, $searchString);&lt;br /&gt;
			$searchString = trim($searchString, &amp;quot; \t\r\n%&amp;quot;);&lt;br /&gt;
			$searchString = str_replace([&amp;#039;&amp;quot;&amp;#039;, &amp;quot;&amp;#039;&amp;quot;], &amp;#039;&amp;#039;, $searchString);&lt;br /&gt;
&lt;br /&gt;
			$orMode = (bool) getRequest(&amp;#039;search-or-mode&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			if (!$searchString) {&lt;br /&gt;
				return $this-&amp;gt;insert_form($template);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$searchParentsIds = [];&lt;br /&gt;
			$branches = $branches ?: getRequest(&amp;#039;search_branches&amp;#039;);&lt;br /&gt;
			$branches = (string) $branches;&lt;br /&gt;
			$branches = trim(rawurldecode($branches));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
			if ($branches !== &amp;#039;&amp;#039;) {&lt;br /&gt;
				$arrBranches = preg_split(&amp;quot;/[\s,]+/&amp;quot;, $branches);&lt;br /&gt;
&lt;br /&gt;
				foreach ($arrBranches as $iBranch =&amp;gt; $vBranch) {&lt;br /&gt;
					$arrBranches[$iBranch] = $this-&amp;gt;module-&amp;gt;analyzeRequiredPath($vBranch);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$arrBranches = array_map(&amp;#039;intval&amp;#039;, $arrBranches);&lt;br /&gt;
				$searchParentsIds = array_merge($searchParentsIds, $arrBranches);&lt;br /&gt;
&lt;br /&gt;
				$sel = new selector(&amp;#039;pages&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
				foreach ($arrBranches as $parentId) {&lt;br /&gt;
					$sel-&amp;gt;where(&amp;#039;hierarchy&amp;#039;)-&amp;gt;page($parentId)-&amp;gt;level(100);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$sel-&amp;gt;option(&amp;#039;return&amp;#039;)-&amp;gt;value(&amp;#039;id&amp;#039;);&lt;br /&gt;
				$pageIds = $sel-&amp;gt;result();&lt;br /&gt;
&lt;br /&gt;
				foreach ($pageIds as $info) {&lt;br /&gt;
					$searchParentsIds[] = $info[&amp;#039;id&amp;#039;];&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$types = $this-&amp;gt;module-&amp;gt;getSearchTypes($types);&lt;br /&gt;
&lt;br /&gt;
			$searchModel = searchModel::getInstance();&lt;br /&gt;
			$pageIds = $searchModel-&amp;gt;runSearch($searchString, $types, $searchParentsIds, $orMode);&lt;br /&gt;
			$total = umiCount($pageIds);&lt;br /&gt;
			$pageIds = array_slice($pageIds, $perPage * $currentPage, $perPage);&lt;br /&gt;
&lt;br /&gt;
			$umiLinksHelper = umiLinksHelper::getInstance();&lt;br /&gt;
			&lt;br /&gt;
			// Ищем объекты каталога, общее количество которых = 0&lt;br /&gt;
			$notInStockObjectsSelector = new selector(&amp;#039;pages&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;types(&amp;#039;object-type&amp;#039;)-&amp;gt;name(&amp;#039;catalog&amp;#039;, &amp;#039;object&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;option(&amp;#039;or-mode&amp;#039;)-&amp;gt;field(&amp;#039;common_quantity&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;equals(0);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;isnull();&lt;br /&gt;
			$notInStockObjects = $notInStockObjectsSelector-&amp;gt;result();&lt;br /&gt;
			&lt;br /&gt;
			&lt;br /&gt;
			// А тут просто исключаем найденные объекты из общей поисковой выборки&lt;br /&gt;
			foreach($notInStockObjects as $item)&lt;br /&gt;
			{				&lt;br /&gt;
				if(in_array($item-&amp;gt;id, $pageIds))&lt;br /&gt;
				{&lt;br /&gt;
					$itemKeyInArray = array_search($item-&amp;gt;id, $pageIds);&lt;br /&gt;
					unset($pageIds[$itemKeyInArray]);&lt;br /&gt;
					// Уменьшаем счётчик найденных позиций&lt;br /&gt;
					$total--;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
			$i = $perPage * $currentPage;&lt;br /&gt;
			$umiHierarchy = umiHierarchy::getInstance();&lt;br /&gt;
			$umiHierarchy-&amp;gt;loadElements($pageIds);&lt;br /&gt;
			$lines = [];&lt;br /&gt;
			list($entryPattern, $linePattern) = $this-&amp;gt;module-&amp;gt;getHighLightOptions();&lt;br /&gt;
&lt;br /&gt;
			foreach ($pageIds as $index =&amp;gt; $pageId) {&lt;br /&gt;
				$page = $umiHierarchy-&amp;gt;getElement($pageId);&lt;br /&gt;
&lt;br /&gt;
				if (!$page instanceof iUmiHierarchyElement) {&lt;br /&gt;
					continue;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$itemVariables = [];&lt;br /&gt;
				$itemVariables[&amp;#039;type&amp;#039;] = $this-&amp;gt;module-&amp;gt;getTypeInfo($page);&lt;br /&gt;
				$itemVariables[&amp;#039;void:num&amp;#039;] = ++$i;&lt;br /&gt;
				$itemVariables[&amp;#039;attribute:id&amp;#039;] = $pageId;&lt;br /&gt;
				$itemVariables[&amp;#039;attribute:name&amp;#039;] = $page-&amp;gt;getName();&lt;br /&gt;
				$itemVariables[&amp;#039;attribute:link&amp;#039;] = $umiLinksHelper-&amp;gt;getLink($page);&lt;br /&gt;
				$itemVariables[&amp;#039;xlink:href&amp;#039;] = &amp;#039;upage://&amp;#039; . $pageId;&lt;br /&gt;
				$itemVariables[&amp;#039;node:context&amp;#039;] = $searchModel-&amp;gt;getContext($pageId, $searchString, $entryPattern, $linePattern);&lt;br /&gt;
				$itemVariables[&amp;#039;void:quant&amp;#039;] = ($index &amp;lt; umiCount($pageIds) - 1&lt;br /&gt;
					? search::parseTemplate($templateLineQuant, [])&lt;br /&gt;
					: &amp;#039;&amp;#039;&lt;br /&gt;
				);&lt;br /&gt;
				$lines[] = search::parseTemplate($templateLine, $itemVariables, $pageId);&lt;br /&gt;
&lt;br /&gt;
				search::pushEditable(false, false, $pageId);&lt;br /&gt;
				$umiHierarchy-&amp;gt;unloadElement($pageId);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$variables[&amp;#039;subnodes:items&amp;#039;] = $variables[&amp;#039;void:lines&amp;#039;] = $lines;&lt;br /&gt;
			$variables[&amp;#039;total&amp;#039;] = $total;&lt;br /&gt;
			$variables[&amp;#039;per_page&amp;#039;] = $perPage;&lt;br /&gt;
&lt;br /&gt;
			return search::parseTemplate(($total &amp;gt; 0 ? $templateBlock : $templateEmptyResult), $variables);&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того, как мы описали свою реализацию данного макроса, при выдаче результатов поиска из них будут исключены товары, которых на данный момент нет в наличии.&lt;br /&gt;
&lt;br /&gt;
 [[category:Модуль Поиск]] [[Категория:Модуль Интернет магазин]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%98%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B7_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2,_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85_%D0%BD%D0%B5%D1%82_%D0%B2_%D0%BD%D0%B0%D0%BB%D0%B8%D1%87%D0%B8%D0%B8&amp;diff=9101</id>
		<title>Исключение из поиска товаров, которых нет в наличии</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%98%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B7_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2,_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85_%D0%BD%D0%B5%D1%82_%D0%B2_%D0%BD%D0%B0%D0%BB%D0%B8%D1%87%D0%B8%D0%B8&amp;diff=9101"/>
		<updated>2019-04-12T16:13:44Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Иногда бывает необходимо выключить из поисковой выдачи по сайту те товары, которых на данный момент нет в наличии.&lt;br /&gt;
&lt;br /&gt;
Чтобы реализовать данный функционал, нам необходимо немного изменить макрос search_do модуля search.&lt;br /&gt;
&lt;br /&gt;
Копируем код макроса search_do из файла ~/classes/components/search/macros.php в файл ~/classes/components/search/customMacros.php&lt;br /&gt;
&lt;br /&gt;
Внесём следующие изменения в данный метод:&lt;br /&gt;
&lt;br /&gt;
Найдём все объекты каталога, количество которых равно 0 или NULL(на данный момент при обмене с 1С товар без количества имеет именно это значение):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$notInStockObjectsSelector = new selector(&amp;#039;pages&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;types(&amp;#039;object-type&amp;#039;)-&amp;gt;name(&amp;#039;catalog&amp;#039;, &amp;#039;object&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;option(&amp;#039;or-mode&amp;#039;)-&amp;gt;field(&amp;#039;common_quantity&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;equals(0);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;isnull();&lt;br /&gt;
			$notInStockObjects = $notInStockObjectsSelector-&amp;gt;result();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исключим эти объекты из общей поисковой выборки и изменим количество найденных товаров&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
foreach($notInStockObjects as $item)&lt;br /&gt;
			{				&lt;br /&gt;
				if(in_array($item-&amp;gt;id, $pageIds))&lt;br /&gt;
				{&lt;br /&gt;
					$itemKeyInArray = array_search($item-&amp;gt;id, $pageIds);&lt;br /&gt;
					unset($pageIds[$itemKeyInArray]);&lt;br /&gt;
					// Уменьшаем счётчик найденных позиций&lt;br /&gt;
					$total--;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итоговый код макроса будет выглядеть вот таким образом:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
public function search_do($template = &amp;#039;default&amp;#039;, $searchString = &amp;#039;&amp;#039;, $types = &amp;#039;&amp;#039;, $branches = &amp;#039;&amp;#039;, $perPage = null) {&lt;br /&gt;
			$searchString = $searchString ?: (string) getRequest(&amp;#039;search_string&amp;#039;);&lt;br /&gt;
			$perPage = $perPage !== null ? $perPage : getRequest(&amp;#039;per_page&amp;#039;);&lt;br /&gt;
			$perPage = $perPage !== null ? $perPage : $this-&amp;gt;module-&amp;gt;per_page;&lt;br /&gt;
			$currentPage = (int) getRequest(&amp;#039;p&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			$config = mainConfiguration::getInstance();&lt;br /&gt;
			$searchEngine = $config-&amp;gt;get(&amp;#039;modules&amp;#039;, &amp;#039;search.using-sphinx&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			if ($searchEngine) {&lt;br /&gt;
				return $this-&amp;gt;sphinxSearch($template, $searchString, $perPage, $currentPage);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			list(&lt;br /&gt;
				$templateBlock,&lt;br /&gt;
				$templateLine,&lt;br /&gt;
				$templateEmptyResult,&lt;br /&gt;
				$templateLineQuant&lt;br /&gt;
				) = search::loadTemplates(&amp;#039;search/&amp;#039; . $template,&lt;br /&gt;
				&amp;#039;search_block&amp;#039;,&lt;br /&gt;
				&amp;#039;search_block_line&amp;#039;,&lt;br /&gt;
				&amp;#039;search_empty_result&amp;#039;,&lt;br /&gt;
				&amp;#039;search_block_line_quant&amp;#039;&lt;br /&gt;
			);&lt;br /&gt;
&lt;br /&gt;
			$variables = [];&lt;br /&gt;
			$variables[&amp;#039;last_search_string&amp;#039;] = htmlspecialchars($searchString);&lt;br /&gt;
&lt;br /&gt;
			$searchString = urldecode($searchString);&lt;br /&gt;
			$searchString = htmlspecialchars($searchString);&lt;br /&gt;
			$searchString = str_replace(&amp;#039;. &amp;#039;, &amp;#039; &amp;#039;, $searchString);&lt;br /&gt;
			$searchString = trim($searchString, &amp;quot; \t\r\n%&amp;quot;);&lt;br /&gt;
			$searchString = str_replace([&amp;#039;&amp;quot;&amp;#039;, &amp;quot;&amp;#039;&amp;quot;], &amp;#039;&amp;#039;, $searchString);&lt;br /&gt;
&lt;br /&gt;
			$orMode = (bool) getRequest(&amp;#039;search-or-mode&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			if (!$searchString) {&lt;br /&gt;
				return $this-&amp;gt;insert_form($template);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$searchParentsIds = [];&lt;br /&gt;
			$branches = $branches ?: getRequest(&amp;#039;search_branches&amp;#039;);&lt;br /&gt;
			$branches = (string) $branches;&lt;br /&gt;
			$branches = trim(rawurldecode($branches));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
			if ($branches !== &amp;#039;&amp;#039;) {&lt;br /&gt;
				$arrBranches = preg_split(&amp;quot;/[\s,]+/&amp;quot;, $branches);&lt;br /&gt;
&lt;br /&gt;
				foreach ($arrBranches as $iBranch =&amp;gt; $vBranch) {&lt;br /&gt;
					$arrBranches[$iBranch] = $this-&amp;gt;module-&amp;gt;analyzeRequiredPath($vBranch);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$arrBranches = array_map(&amp;#039;intval&amp;#039;, $arrBranches);&lt;br /&gt;
				$searchParentsIds = array_merge($searchParentsIds, $arrBranches);&lt;br /&gt;
&lt;br /&gt;
				$sel = new selector(&amp;#039;pages&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
				foreach ($arrBranches as $parentId) {&lt;br /&gt;
					$sel-&amp;gt;where(&amp;#039;hierarchy&amp;#039;)-&amp;gt;page($parentId)-&amp;gt;level(100);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$sel-&amp;gt;option(&amp;#039;return&amp;#039;)-&amp;gt;value(&amp;#039;id&amp;#039;);&lt;br /&gt;
				$pageIds = $sel-&amp;gt;result();&lt;br /&gt;
&lt;br /&gt;
				foreach ($pageIds as $info) {&lt;br /&gt;
					$searchParentsIds[] = $info[&amp;#039;id&amp;#039;];&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$types = $this-&amp;gt;module-&amp;gt;getSearchTypes($types);&lt;br /&gt;
&lt;br /&gt;
			$searchModel = searchModel::getInstance();&lt;br /&gt;
			$pageIds = $searchModel-&amp;gt;runSearch($searchString, $types, $searchParentsIds, $orMode);&lt;br /&gt;
			$total = umiCount($pageIds);&lt;br /&gt;
			$pageIds = array_slice($pageIds, $perPage * $currentPage, $perPage);&lt;br /&gt;
&lt;br /&gt;
			$umiLinksHelper = umiLinksHelper::getInstance();&lt;br /&gt;
			&lt;br /&gt;
			// Ищем объекты каталога, общее количество которых = 0&lt;br /&gt;
			$notInStockObjectsSelector = new selector(&amp;#039;pages&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;types(&amp;#039;object-type&amp;#039;)-&amp;gt;name(&amp;#039;catalog&amp;#039;, &amp;#039;object&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;option(&amp;#039;or-mode&amp;#039;)-&amp;gt;field(&amp;#039;common_quantity&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;equals(0);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;isnull();&lt;br /&gt;
			$notInStockObjects = $notInStockObjectsSelector-&amp;gt;result();&lt;br /&gt;
			&lt;br /&gt;
			&lt;br /&gt;
			// А тут просто исключаем найденные объекты из общей поисковой выборки&lt;br /&gt;
			foreach($notInStockObjects as $item)&lt;br /&gt;
			{				&lt;br /&gt;
				if(in_array($item-&amp;gt;id, $pageIds))&lt;br /&gt;
				{&lt;br /&gt;
					$itemKeyInArray = array_search($item-&amp;gt;id, $pageIds);&lt;br /&gt;
					unset($pageIds[$itemKeyInArray]);&lt;br /&gt;
					// Уменьшаем счётчик найденных позиций&lt;br /&gt;
					$total--;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
			$i = $perPage * $currentPage;&lt;br /&gt;
			$umiHierarchy = umiHierarchy::getInstance();&lt;br /&gt;
			$umiHierarchy-&amp;gt;loadElements($pageIds);&lt;br /&gt;
			$lines = [];&lt;br /&gt;
			list($entryPattern, $linePattern) = $this-&amp;gt;module-&amp;gt;getHighLightOptions();&lt;br /&gt;
&lt;br /&gt;
			foreach ($pageIds as $index =&amp;gt; $pageId) {&lt;br /&gt;
				$page = $umiHierarchy-&amp;gt;getElement($pageId);&lt;br /&gt;
&lt;br /&gt;
				if (!$page instanceof iUmiHierarchyElement) {&lt;br /&gt;
					continue;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$itemVariables = [];&lt;br /&gt;
				$itemVariables[&amp;#039;type&amp;#039;] = $this-&amp;gt;module-&amp;gt;getTypeInfo($page);&lt;br /&gt;
				$itemVariables[&amp;#039;void:num&amp;#039;] = ++$i;&lt;br /&gt;
				$itemVariables[&amp;#039;attribute:id&amp;#039;] = $pageId;&lt;br /&gt;
				$itemVariables[&amp;#039;attribute:name&amp;#039;] = $page-&amp;gt;getName();&lt;br /&gt;
				$itemVariables[&amp;#039;attribute:link&amp;#039;] = $umiLinksHelper-&amp;gt;getLink($page);&lt;br /&gt;
				$itemVariables[&amp;#039;xlink:href&amp;#039;] = &amp;#039;upage://&amp;#039; . $pageId;&lt;br /&gt;
				$itemVariables[&amp;#039;node:context&amp;#039;] = $searchModel-&amp;gt;getContext($pageId, $searchString, $entryPattern, $linePattern);&lt;br /&gt;
				$itemVariables[&amp;#039;void:quant&amp;#039;] = ($index &amp;lt; umiCount($pageIds) - 1&lt;br /&gt;
					? search::parseTemplate($templateLineQuant, [])&lt;br /&gt;
					: &amp;#039;&amp;#039;&lt;br /&gt;
				);&lt;br /&gt;
				$lines[] = search::parseTemplate($templateLine, $itemVariables, $pageId);&lt;br /&gt;
&lt;br /&gt;
				search::pushEditable(false, false, $pageId);&lt;br /&gt;
				$umiHierarchy-&amp;gt;unloadElement($pageId);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$variables[&amp;#039;subnodes:items&amp;#039;] = $variables[&amp;#039;void:lines&amp;#039;] = $lines;&lt;br /&gt;
			$variables[&amp;#039;total&amp;#039;] = $total;&lt;br /&gt;
			$variables[&amp;#039;per_page&amp;#039;] = $perPage;&lt;br /&gt;
&lt;br /&gt;
			return search::parseTemplate(($total &amp;gt; 0 ? $templateBlock : $templateEmptyResult), $variables);&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того, как мы описали свою реализацию данного макроса, при выдаче результатов поиска из них будут исключены товары, которых на данный момент нет в наличии.&lt;br /&gt;
&lt;br /&gt;
 [[category:Модуль Поиск]] [[Категория:Модуль Интернет магазин]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%98%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B7_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2,_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85_%D0%BD%D0%B5%D1%82_%D0%B2_%D0%BD%D0%B0%D0%BB%D0%B8%D1%87%D0%B8%D0%B8&amp;diff=9100</id>
		<title>Исключение из поиска товаров, которых нет в наличии</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%98%D1%81%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D0%B7_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2,_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D1%85_%D0%BD%D0%B5%D1%82_%D0%B2_%D0%BD%D0%B0%D0%BB%D0%B8%D1%87%D0%B8%D0%B8&amp;diff=9100"/>
		<updated>2019-04-12T15:05:51Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Иногда бывает необходимо выключить из поисковой выдачи по сайту те товары, которых на данный момент нет в наличии.&lt;br /&gt;
&lt;br /&gt;
Чтобы реализовать данный функционал, нам необходимо немного изменить макрос search_do модуля search.&lt;br /&gt;
&lt;br /&gt;
Копируем код макроса search_do из файла ~/classes/components/search/macros.php в файл ~/classes/components/search/customMacros.php&lt;br /&gt;
&lt;br /&gt;
Внесём следующие изменения в данный метод:&lt;br /&gt;
&lt;br /&gt;
Найдём все объекты каталога, количество которых равно 0 или NULL(на данный момент при обмене с 1С товар без количества имеет именно это значение)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$notInStockObjectsSelector = new selector(&amp;#039;pages&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;types(&amp;#039;object-type&amp;#039;)-&amp;gt;name(&amp;#039;catalog&amp;#039;, &amp;#039;object&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;option(&amp;#039;or-mode&amp;#039;)-&amp;gt;field(&amp;#039;common_quantity&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;equals(0);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;isnull();&lt;br /&gt;
			$notInStockObjects = $notInStockObjectsSelector-&amp;gt;result();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Исключим эти объекты из общей поисковой выборки и изменим количество найденных товаров&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
foreach($notInStockObjects as $item)&lt;br /&gt;
			{				&lt;br /&gt;
				if(in_array($item-&amp;gt;id, $pageIds))&lt;br /&gt;
				{&lt;br /&gt;
					$itemKeyInArray = array_search($item-&amp;gt;id, $pageIds);&lt;br /&gt;
					unset($pageIds[$itemKeyInArray]);&lt;br /&gt;
					// Уменьшаем счётчик найденных позиций&lt;br /&gt;
					$total--;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Итоговый код макроса будет выглядеть вот таким образом:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
public function search_do($template = &amp;#039;default&amp;#039;, $searchString = &amp;#039;&amp;#039;, $types = &amp;#039;&amp;#039;, $branches = &amp;#039;&amp;#039;, $perPage = null) {&lt;br /&gt;
			$searchString = $searchString ?: (string) getRequest(&amp;#039;search_string&amp;#039;);&lt;br /&gt;
			$perPage = $perPage !== null ? $perPage : getRequest(&amp;#039;per_page&amp;#039;);&lt;br /&gt;
			$perPage = $perPage !== null ? $perPage : $this-&amp;gt;module-&amp;gt;per_page;&lt;br /&gt;
			$currentPage = (int) getRequest(&amp;#039;p&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			$config = mainConfiguration::getInstance();&lt;br /&gt;
			$searchEngine = $config-&amp;gt;get(&amp;#039;modules&amp;#039;, &amp;#039;search.using-sphinx&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			if ($searchEngine) {&lt;br /&gt;
				return $this-&amp;gt;sphinxSearch($template, $searchString, $perPage, $currentPage);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			list(&lt;br /&gt;
				$templateBlock,&lt;br /&gt;
				$templateLine,&lt;br /&gt;
				$templateEmptyResult,&lt;br /&gt;
				$templateLineQuant&lt;br /&gt;
				) = search::loadTemplates(&amp;#039;search/&amp;#039; . $template,&lt;br /&gt;
				&amp;#039;search_block&amp;#039;,&lt;br /&gt;
				&amp;#039;search_block_line&amp;#039;,&lt;br /&gt;
				&amp;#039;search_empty_result&amp;#039;,&lt;br /&gt;
				&amp;#039;search_block_line_quant&amp;#039;&lt;br /&gt;
			);&lt;br /&gt;
&lt;br /&gt;
			$variables = [];&lt;br /&gt;
			$variables[&amp;#039;last_search_string&amp;#039;] = htmlspecialchars($searchString);&lt;br /&gt;
&lt;br /&gt;
			$searchString = urldecode($searchString);&lt;br /&gt;
			$searchString = htmlspecialchars($searchString);&lt;br /&gt;
			$searchString = str_replace(&amp;#039;. &amp;#039;, &amp;#039; &amp;#039;, $searchString);&lt;br /&gt;
			$searchString = trim($searchString, &amp;quot; \t\r\n%&amp;quot;);&lt;br /&gt;
			$searchString = str_replace([&amp;#039;&amp;quot;&amp;#039;, &amp;quot;&amp;#039;&amp;quot;], &amp;#039;&amp;#039;, $searchString);&lt;br /&gt;
&lt;br /&gt;
			$orMode = (bool) getRequest(&amp;#039;search-or-mode&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			if (!$searchString) {&lt;br /&gt;
				return $this-&amp;gt;insert_form($template);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$searchParentsIds = [];&lt;br /&gt;
			$branches = $branches ?: getRequest(&amp;#039;search_branches&amp;#039;);&lt;br /&gt;
			$branches = (string) $branches;&lt;br /&gt;
			$branches = trim(rawurldecode($branches));&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
			if ($branches !== &amp;#039;&amp;#039;) {&lt;br /&gt;
				$arrBranches = preg_split(&amp;quot;/[\s,]+/&amp;quot;, $branches);&lt;br /&gt;
&lt;br /&gt;
				foreach ($arrBranches as $iBranch =&amp;gt; $vBranch) {&lt;br /&gt;
					$arrBranches[$iBranch] = $this-&amp;gt;module-&amp;gt;analyzeRequiredPath($vBranch);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$arrBranches = array_map(&amp;#039;intval&amp;#039;, $arrBranches);&lt;br /&gt;
				$searchParentsIds = array_merge($searchParentsIds, $arrBranches);&lt;br /&gt;
&lt;br /&gt;
				$sel = new selector(&amp;#039;pages&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
				foreach ($arrBranches as $parentId) {&lt;br /&gt;
					$sel-&amp;gt;where(&amp;#039;hierarchy&amp;#039;)-&amp;gt;page($parentId)-&amp;gt;level(100);&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$sel-&amp;gt;option(&amp;#039;return&amp;#039;)-&amp;gt;value(&amp;#039;id&amp;#039;);&lt;br /&gt;
				$pageIds = $sel-&amp;gt;result();&lt;br /&gt;
&lt;br /&gt;
				foreach ($pageIds as $info) {&lt;br /&gt;
					$searchParentsIds[] = $info[&amp;#039;id&amp;#039;];&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$types = $this-&amp;gt;module-&amp;gt;getSearchTypes($types);&lt;br /&gt;
&lt;br /&gt;
			$searchModel = searchModel::getInstance();&lt;br /&gt;
			$pageIds = $searchModel-&amp;gt;runSearch($searchString, $types, $searchParentsIds, $orMode);&lt;br /&gt;
			$total = umiCount($pageIds);&lt;br /&gt;
			$pageIds = array_slice($pageIds, $perPage * $currentPage, $perPage);&lt;br /&gt;
&lt;br /&gt;
			$umiLinksHelper = umiLinksHelper::getInstance();&lt;br /&gt;
			&lt;br /&gt;
			// Ищем объекты каталога, общее количество которых = 0&lt;br /&gt;
			$notInStockObjectsSelector = new selector(&amp;#039;pages&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;types(&amp;#039;object-type&amp;#039;)-&amp;gt;name(&amp;#039;catalog&amp;#039;, &amp;#039;object&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;option(&amp;#039;or-mode&amp;#039;)-&amp;gt;field(&amp;#039;common_quantity&amp;#039;);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;equals(0);&lt;br /&gt;
			$notInStockObjectsSelector-&amp;gt;where(&amp;#039;common_quantity&amp;#039;)-&amp;gt;isnull();&lt;br /&gt;
			$notInStockObjects = $notInStockObjectsSelector-&amp;gt;result();&lt;br /&gt;
			&lt;br /&gt;
			&lt;br /&gt;
			// А тут просто исключаем найденные объекты из общей поисковой выборки&lt;br /&gt;
			foreach($notInStockObjects as $item)&lt;br /&gt;
			{				&lt;br /&gt;
				if(in_array($item-&amp;gt;id, $pageIds))&lt;br /&gt;
				{&lt;br /&gt;
					$itemKeyInArray = array_search($item-&amp;gt;id, $pageIds);&lt;br /&gt;
					unset($pageIds[$itemKeyInArray]);&lt;br /&gt;
					// Уменьшаем счётчик найденных позиций&lt;br /&gt;
					$total--;&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
			$i = $perPage * $currentPage;&lt;br /&gt;
			$umiHierarchy = umiHierarchy::getInstance();&lt;br /&gt;
			$umiHierarchy-&amp;gt;loadElements($pageIds);&lt;br /&gt;
			$lines = [];&lt;br /&gt;
			list($entryPattern, $linePattern) = $this-&amp;gt;module-&amp;gt;getHighLightOptions();&lt;br /&gt;
&lt;br /&gt;
			foreach ($pageIds as $index =&amp;gt; $pageId) {&lt;br /&gt;
				$page = $umiHierarchy-&amp;gt;getElement($pageId);&lt;br /&gt;
&lt;br /&gt;
				if (!$page instanceof iUmiHierarchyElement) {&lt;br /&gt;
					continue;&lt;br /&gt;
				}&lt;br /&gt;
&lt;br /&gt;
				$itemVariables = [];&lt;br /&gt;
				$itemVariables[&amp;#039;type&amp;#039;] = $this-&amp;gt;module-&amp;gt;getTypeInfo($page);&lt;br /&gt;
				$itemVariables[&amp;#039;void:num&amp;#039;] = ++$i;&lt;br /&gt;
				$itemVariables[&amp;#039;attribute:id&amp;#039;] = $pageId;&lt;br /&gt;
				$itemVariables[&amp;#039;attribute:name&amp;#039;] = $page-&amp;gt;getName();&lt;br /&gt;
				$itemVariables[&amp;#039;attribute:link&amp;#039;] = $umiLinksHelper-&amp;gt;getLink($page);&lt;br /&gt;
				$itemVariables[&amp;#039;xlink:href&amp;#039;] = &amp;#039;upage://&amp;#039; . $pageId;&lt;br /&gt;
				$itemVariables[&amp;#039;node:context&amp;#039;] = $searchModel-&amp;gt;getContext($pageId, $searchString, $entryPattern, $linePattern);&lt;br /&gt;
				$itemVariables[&amp;#039;void:quant&amp;#039;] = ($index &amp;lt; umiCount($pageIds) - 1&lt;br /&gt;
					? search::parseTemplate($templateLineQuant, [])&lt;br /&gt;
					: &amp;#039;&amp;#039;&lt;br /&gt;
				);&lt;br /&gt;
				$lines[] = search::parseTemplate($templateLine, $itemVariables, $pageId);&lt;br /&gt;
&lt;br /&gt;
				search::pushEditable(false, false, $pageId);&lt;br /&gt;
				$umiHierarchy-&amp;gt;unloadElement($pageId);&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$variables[&amp;#039;subnodes:items&amp;#039;] = $variables[&amp;#039;void:lines&amp;#039;] = $lines;&lt;br /&gt;
			$variables[&amp;#039;total&amp;#039;] = $total;&lt;br /&gt;
			$variables[&amp;#039;per_page&amp;#039;] = $perPage;&lt;br /&gt;
&lt;br /&gt;
			return search::parseTemplate(($total &amp;gt; 0 ? $templateBlock : $templateEmptyResult), $variables);&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
После того, как мы описали свою реализацию данного макроса, при выдаче результатов поиска из них будут исключены товары, которых на данный момент нет в наличии.&lt;br /&gt;
&lt;br /&gt;
 [[category:Модуль Поиск]] [[Категория:Модуль Интернет магазин]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9_%D0%B3%D0%B0%D0%B1%D0%B0%D1%80%D0%B8%D1%82%D0%BE%D0%B2_%D0%BD%D0%BE%D0%BC%D0%B5%D0%BD%D0%BA%D0%BB%D0%B0%D1%82%D1%83%D1%80%D1%8B_%D0%B8%D0%B7_1%D0%A1_%D0%A3%D0%9D%D0%A4&amp;diff=9092</id>
		<title>Получение полей габаритов номенклатуры из 1С УНФ</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9_%D0%B3%D0%B0%D0%B1%D0%B0%D1%80%D0%B8%D1%82%D0%BE%D0%B2_%D0%BD%D0%BE%D0%BC%D0%B5%D0%BD%D0%BA%D0%BB%D0%B0%D1%82%D1%83%D1%80%D1%8B_%D0%B8%D0%B7_1%D0%A1_%D0%A3%D0%9D%D0%A4&amp;diff=9092"/>
		<updated>2019-04-10T16:18:49Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Для расчёта цены доставки может понадобиться выгружать в систему информацию о габаритах номенклатуры.&lt;br /&gt;
&lt;br /&gt;
Для начала необходимо установить галочку &amp;quot;Использовать торговые предложения в CommerceML&amp;quot; в настройках модуля &amp;quot;Обмен данными&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
По умолчанию при использовании этой настройки из 1С УНФ выгружается только поле “Вес”. Для того, чтобы выгружались какие-либо дополнительные данные, нужно немного кастомизировать файл импорта commerceML2.xsl. Этот файл находится в папке ~/xsl/import/custom.&lt;br /&gt;
&lt;br /&gt;
Для начала нам необходимо описать шаблон групп полей. Копируем код шаблона “Группы/Группа” из стандартного файла импорта и дополняем его новыми полями:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;Группы/Группа&amp;quot; mode=&amp;quot;types&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;type id=&amp;quot;{Ид}&amp;quot; title=&amp;#039;1C: {Наименование}&amp;#039; parent-id=&amp;quot;root-catalog-object-type&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:if test=&amp;quot;name(../../.) = &amp;#039;Группа&amp;#039;&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:attribute name=&amp;quot;parent-id&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;../../Ид&amp;quot; /&amp;gt;&amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;base module=&amp;quot;catalog&amp;quot; method=&amp;quot;object&amp;quot;&amp;gt;Объект каталога&amp;lt;/base&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;fieldgroups&amp;gt;&lt;br /&gt;
				&amp;lt;group name=&amp;quot;product&amp;quot; title=&amp;quot;1C: Общие свойства&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;field name=&amp;quot;photo&amp;quot; title=&amp;quot;Картинка&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Изображение&amp;quot; data-type=&amp;quot;img_file&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;field name=&amp;quot;1c_catalog_id&amp;quot; title=&amp;quot;Идентификатор каталога 1С&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Строка&amp;quot; data-type=&amp;quot;string&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;field name=&amp;quot;1c_product_id&amp;quot; title=&amp;quot;Идентификатор в 1С&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Строка&amp;quot; data-type=&amp;quot;string&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;field name=&amp;quot;artikul&amp;quot; title=&amp;quot;Артикул&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Строка&amp;quot; data-type=&amp;quot;string&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;field name=&amp;quot;bar_code&amp;quot; title=&amp;quot;Штрих-код&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Строка&amp;quot; data-type=&amp;quot;string&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;field name=&amp;quot;weight&amp;quot; title=&amp;quot;Вес&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Число с точкой&amp;quot; data-type=&amp;quot;float&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
					&lt;br /&gt;
					&amp;lt;field name=&amp;quot;length&amp;quot; title=&amp;quot;Длина&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Число с точкой&amp;quot; data-type=&amp;quot;float&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
					&lt;br /&gt;
					&amp;lt;field name=&amp;quot;width&amp;quot; title=&amp;quot;Ширина&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Число с точкой&amp;quot; data-type=&amp;quot;float&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
					&lt;br /&gt;
					&amp;lt;field name=&amp;quot;height&amp;quot; title=&amp;quot;Высота&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Число с точкой&amp;quot; data-type=&amp;quot;float&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
					&lt;br /&gt;
				&amp;lt;/group&amp;gt;&lt;br /&gt;
			&amp;lt;/fieldgroups&amp;gt;&lt;br /&gt;
		&amp;lt;/type&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;xsl:apply-templates select=&amp;quot;Группы&amp;quot; mode=&amp;quot;types&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь мы добавили три новых поля: Длина, Ширина, Высота. Добавление поля выглядит таким образом:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field name=&amp;quot;width&amp;quot; title=&amp;quot;Ширина&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;type name=&amp;quot;Число с точкой&amp;quot; data-type=&amp;quot;float&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/field&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В свойстве name мы указываем идентификатор поля — любое удобное нам значение. В title — название поля. visible — будет ли поле отображаться в админ. панели.  		&amp;lt;type name=&amp;quot;Число с точкой&amp;quot; data-type=&amp;quot;float&amp;quot;/&amp;gt; говорит нам о том, что данное поле имеет тип числа с точкой.&lt;br /&gt;
&lt;br /&gt;
После того, как мы описали поля, необходимо связать их с данными из файлов выгрузки. Копируем шаблон “Товары/Товар” из стандартного файла импорта и дополняем его:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;Товары/Товар&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;group_id&amp;quot; select=&amp;quot;string(Группы/Ид)&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:when test=&amp;quot;string-length(ПолноеНаименование)&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:value-of select=&amp;quot;ПолноеНаименование&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:value-of select=&amp;quot;Наименование&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:param&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;page id=&amp;quot;{Ид}&amp;quot; parentId=&amp;quot;{$group_id}&amp;quot; type-id=&amp;quot;{$group_id}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:when test=&amp;quot;Статус = &amp;#039;Удален&amp;#039;&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:attribute name=&amp;quot;is-deleted&amp;quot;&amp;gt;1&amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:when test=&amp;quot;$isCatalogItemsRestoreOnImport = 1&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:attribute name=&amp;quot;is-deleted&amp;quot;&amp;gt;0&amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;xsl:if test=&amp;quot;not(Группы/Ид)&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:attribute name=&amp;quot;parentId&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$catalog-id&amp;quot; /&amp;gt;&amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:attribute name=&amp;quot;type-id&amp;quot;&amp;gt;root-catalog-object-type&amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;default-active&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;$catalog_item_activity&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;/default-active&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;default-visible&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;$catalog_item_visible&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;/default-visible&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;basetype module=&amp;quot;catalog&amp;quot; method=&amp;quot;object&amp;quot;&amp;gt;Объекты каталога&amp;lt;/basetype&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;name&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$name&amp;quot; /&amp;gt;&amp;lt;/name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;xsl:if test=&amp;quot;string-length($catalog_item_template)&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;default-template&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:value-of select=&amp;quot;$catalog_item_template&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/default-template&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;properties&amp;gt;&lt;br /&gt;
				&amp;lt;group name=&amp;quot;common&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;title&amp;gt;Основные параметры&amp;lt;/title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;title&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;i18n::field-title&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;default-value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$name&amp;quot; /&amp;gt;&amp;lt;/default-value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;h1&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;i18n::field-h1&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;default-value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$name&amp;quot; /&amp;gt;&amp;lt;/default-value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
				&amp;lt;/group&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;group name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;title&amp;gt;1C: Общие свойства&amp;lt;/title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;xsl:if test=&amp;quot;string-length(Описание)&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;property name=&amp;quot;description&amp;quot; title=&amp;quot;Описание&amp;quot; type=&amp;quot;wysiwyg&amp;quot; allow-runtime-add=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;type data-type=&amp;quot;wysiwyg&amp;quot; /&amp;gt;&lt;br /&gt;
							&amp;lt;title&amp;gt;Описание&amp;lt;/title&amp;gt;&lt;br /&gt;
							&amp;lt;value&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
									&amp;lt;xsl:when test=&amp;quot;Описание/@ФорматHTML = &amp;#039;true&amp;#039;&amp;quot;&amp;gt;&lt;br /&gt;
										&amp;lt;xsl:value-of select=&amp;quot;Описание&amp;quot;/&amp;gt;&lt;br /&gt;
									&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
									&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
										&amp;lt;xsl:value-of select=&amp;quot;php:function(&amp;#039;nl2br&amp;#039;, string(Описание))&amp;quot; disable-output-escaping=&amp;quot;yes&amp;quot; /&amp;gt;&lt;br /&gt;
									&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
								&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
							&amp;lt;/value&amp;gt;&lt;br /&gt;
						&amp;lt;/property&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;1c_catalog_id&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Идентификатор каталога 1С&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$catalog-id&amp;quot; /&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;1c_product_id&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Идентификатор в 1С&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;Ид&amp;quot; /&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;artikul&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Артикул&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;Артикул&amp;quot; /&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;bar_code&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Штрих-код&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;Штрихкод&amp;quot; /&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;width&amp;quot; type=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Ширина&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ЗначенияРеквизитов/ЗначениеРеквизита[Наименование = &amp;#039;Ширина&amp;#039;]/Значение&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;length&amp;quot; type=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Длина&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ЗначенияРеквизитов/ЗначениеРеквизита[Наименование = &amp;#039;Длина&amp;#039;]/Значение&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;weight&amp;quot; type=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Вес&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ЗначенияРеквизитов/ЗначениеРеквизита[Наименование = &amp;#039;Вес&amp;#039;]/Значение&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;height&amp;quot; type=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Высота&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ЗначенияРеквизитов/ЗначениеРеквизита[Наименование = &amp;#039;Высота&amp;#039;]/Значение&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;xsl:apply-templates select=&amp;quot;Картинка&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/group&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;xsl:apply-templates select=&amp;quot;ЗначенияСвойств&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;/properties&amp;gt;&lt;br /&gt;
		&amp;lt;/page&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как видите, здесь мы тоже дополнили шаблон полями Длина, Ширина и Высота. Здесь это выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;property name=&amp;quot;width&amp;quot; type=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;title&amp;gt;Ширина&amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ЗначенияРеквизитов/ЗначениеРеквизита[Наименование = &amp;#039;Ширина&amp;#039;]/Значение&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В свойстве name мы указываем тот name, который мы выбрали для поля в шаблоне, где описывали поля. После “Наименование = “ мы указываем название нужного нам поля из файла выгрузки. В нашем случае для ширины это значение будет “Ширина”.&lt;br /&gt;
&lt;br /&gt;
На этом кастомизация импорта окончена. Осталось только добавить необходимые поля в файлы выгрузки 1С. В настройках узла обмена с сайтом необходимо настроить дополнительные реквизиты номенклатуры, которые мы будем выгружать.&lt;br /&gt;
&lt;br /&gt;
[[Файл:33.png]]&lt;br /&gt;
&lt;br /&gt;
После всех этих действий будет происходить корректная выгрузка габаритов номенклатуры при обмене с сайтом из 1С УНФ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[category:Интеграция с 1С]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9_%D0%B3%D0%B0%D0%B1%D0%B0%D1%80%D0%B8%D1%82%D0%BE%D0%B2_%D0%BD%D0%BE%D0%BC%D0%B5%D0%BD%D0%BA%D0%BB%D0%B0%D1%82%D1%83%D1%80%D1%8B_%D0%B8%D0%B7_1%D0%A1_%D0%A3%D0%9D%D0%A4&amp;diff=9091</id>
		<title>Получение полей габаритов номенклатуры из 1С УНФ</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BE%D0%BB%D0%B5%D0%B9_%D0%B3%D0%B0%D0%B1%D0%B0%D1%80%D0%B8%D1%82%D0%BE%D0%B2_%D0%BD%D0%BE%D0%BC%D0%B5%D0%BD%D0%BA%D0%BB%D0%B0%D1%82%D1%83%D1%80%D1%8B_%D0%B8%D0%B7_1%D0%A1_%D0%A3%D0%9D%D0%A4&amp;diff=9091"/>
		<updated>2019-04-10T16:04:35Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Для расчёта цены доставки может понадобится выгружать в систему информацию о габаритах номенклатуры.&lt;br /&gt;
&lt;br /&gt;
Для начала, необходимо установить галочку &amp;quot;Использовать торговые предложения в CommerceML&amp;quot; в настройках модуля &amp;quot;Обмен данными&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
По умолчанию при использовании этой настройки из 1С УНФ выгружается только поле “Вес”. Для того, чтобы выгружались какие-либо дополнительные данные, нужно немного кастомизировать файл импорта commerceML2.xsl. Этот файл находится в папке ~/xsl/import/custom.&lt;br /&gt;
&lt;br /&gt;
Для начала, нам необходимо описать шаблон групп полей. Копируем код шаблона “Группы/Группа” из стандартного файла импорта и дополняем его новыми полями:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;Группы/Группа&amp;quot; mode=&amp;quot;types&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;type id=&amp;quot;{Ид}&amp;quot; title=&amp;#039;1C: {Наименование}&amp;#039; parent-id=&amp;quot;root-catalog-object-type&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:if test=&amp;quot;name(../../.) = &amp;#039;Группа&amp;#039;&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:attribute name=&amp;quot;parent-id&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;../../Ид&amp;quot; /&amp;gt;&amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;base module=&amp;quot;catalog&amp;quot; method=&amp;quot;object&amp;quot;&amp;gt;Объект каталога&amp;lt;/base&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;fieldgroups&amp;gt;&lt;br /&gt;
				&amp;lt;group name=&amp;quot;product&amp;quot; title=&amp;quot;1C: Общие свойства&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;field name=&amp;quot;photo&amp;quot; title=&amp;quot;Картинка&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Изображение&amp;quot; data-type=&amp;quot;img_file&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;field name=&amp;quot;1c_catalog_id&amp;quot; title=&amp;quot;Идентификатор каталога 1С&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Строка&amp;quot; data-type=&amp;quot;string&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;field name=&amp;quot;1c_product_id&amp;quot; title=&amp;quot;Идентификатор в 1С&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Строка&amp;quot; data-type=&amp;quot;string&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;field name=&amp;quot;artikul&amp;quot; title=&amp;quot;Артикул&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Строка&amp;quot; data-type=&amp;quot;string&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;field name=&amp;quot;bar_code&amp;quot; title=&amp;quot;Штрих-код&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Строка&amp;quot; data-type=&amp;quot;string&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;field name=&amp;quot;weight&amp;quot; title=&amp;quot;Вес&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Число с точкой&amp;quot; data-type=&amp;quot;float&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
					&lt;br /&gt;
					&amp;lt;field name=&amp;quot;length&amp;quot; title=&amp;quot;Длина&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Число с точкой&amp;quot; data-type=&amp;quot;float&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
					&lt;br /&gt;
					&amp;lt;field name=&amp;quot;width&amp;quot; title=&amp;quot;Ширина&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Число с точкой&amp;quot; data-type=&amp;quot;float&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
					&lt;br /&gt;
					&amp;lt;field name=&amp;quot;height&amp;quot; title=&amp;quot;Высота&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;type name=&amp;quot;Число с точкой&amp;quot; data-type=&amp;quot;float&amp;quot;/&amp;gt;&lt;br /&gt;
					&amp;lt;/field&amp;gt;&lt;br /&gt;
					&lt;br /&gt;
				&amp;lt;/group&amp;gt;&lt;br /&gt;
			&amp;lt;/fieldgroups&amp;gt;&lt;br /&gt;
		&amp;lt;/type&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;xsl:apply-templates select=&amp;quot;Группы&amp;quot; mode=&amp;quot;types&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здесь мы добавили три новых поля: Длина, Ширина, Высота. Добавление поля выглядит таким образом:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;field name=&amp;quot;width&amp;quot; title=&amp;quot;Ширина&amp;quot; visible=&amp;quot;visible&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;type name=&amp;quot;Число с точкой&amp;quot; data-type=&amp;quot;float&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/field&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В свойстве name мы указываем идентификатор поля - любое удобное нам значение. В title - название поля. visible - будет ли поле отображаться в админ. панели.  		&amp;lt;type name=&amp;quot;Число с точкой&amp;quot; data-type=&amp;quot;float&amp;quot;/&amp;gt; говорит нам о том, что данное поле имеет тип числа с точкой.&lt;br /&gt;
&lt;br /&gt;
После того, как мы описали поля, необходимо связать их с данными из файлов выгрузки. Копируем шаблон “Товары/Товар” из стандартного файла импорта и дополняем его:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:template match=&amp;quot;Товары/Товар&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;group_id&amp;quot; select=&amp;quot;string(Группы/Ид)&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;xsl:param name=&amp;quot;name&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:when test=&amp;quot;string-length(ПолноеНаименование)&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:value-of select=&amp;quot;ПолноеНаименование&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:value-of select=&amp;quot;Наименование&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
		&amp;lt;/xsl:param&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;page id=&amp;quot;{Ид}&amp;quot; parentId=&amp;quot;{$group_id}&amp;quot; type-id=&amp;quot;{$group_id}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:when test=&amp;quot;Статус = &amp;#039;Удален&amp;#039;&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:attribute name=&amp;quot;is-deleted&amp;quot;&amp;gt;1&amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:when test=&amp;quot;$isCatalogItemsRestoreOnImport = 1&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:attribute name=&amp;quot;is-deleted&amp;quot;&amp;gt;0&amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
				&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;xsl:if test=&amp;quot;not(Группы/Ид)&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:attribute name=&amp;quot;parentId&amp;quot;&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$catalog-id&amp;quot; /&amp;gt;&amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:attribute name=&amp;quot;type-id&amp;quot;&amp;gt;root-catalog-object-type&amp;lt;/xsl:attribute&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;default-active&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;$catalog_item_activity&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;/default-active&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;default-visible&amp;gt;&lt;br /&gt;
				&amp;lt;xsl:value-of select=&amp;quot;$catalog_item_visible&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;/default-visible&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;basetype module=&amp;quot;catalog&amp;quot; method=&amp;quot;object&amp;quot;&amp;gt;Объекты каталога&amp;lt;/basetype&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;name&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$name&amp;quot; /&amp;gt;&amp;lt;/name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;xsl:if test=&amp;quot;string-length($catalog_item_template)&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;default-template&amp;gt;&lt;br /&gt;
					&amp;lt;xsl:value-of select=&amp;quot;$catalog_item_template&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/default-template&amp;gt;&lt;br /&gt;
			&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;properties&amp;gt;&lt;br /&gt;
				&amp;lt;group name=&amp;quot;common&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;title&amp;gt;Основные параметры&amp;lt;/title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;title&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;i18n::field-title&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;default-value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$name&amp;quot; /&amp;gt;&amp;lt;/default-value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;h1&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;i18n::field-h1&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;default-value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$name&amp;quot; /&amp;gt;&amp;lt;/default-value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
				&amp;lt;/group&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;group name=&amp;quot;product&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;title&amp;gt;1C: Общие свойства&amp;lt;/title&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;xsl:if test=&amp;quot;string-length(Описание)&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;property name=&amp;quot;description&amp;quot; title=&amp;quot;Описание&amp;quot; type=&amp;quot;wysiwyg&amp;quot; allow-runtime-add=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
							&amp;lt;type data-type=&amp;quot;wysiwyg&amp;quot; /&amp;gt;&lt;br /&gt;
							&amp;lt;title&amp;gt;Описание&amp;lt;/title&amp;gt;&lt;br /&gt;
							&amp;lt;value&amp;gt;&lt;br /&gt;
								&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
									&amp;lt;xsl:when test=&amp;quot;Описание/@ФорматHTML = &amp;#039;true&amp;#039;&amp;quot;&amp;gt;&lt;br /&gt;
										&amp;lt;xsl:value-of select=&amp;quot;Описание&amp;quot;/&amp;gt;&lt;br /&gt;
									&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
									&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
										&amp;lt;xsl:value-of select=&amp;quot;php:function(&amp;#039;nl2br&amp;#039;, string(Описание))&amp;quot; disable-output-escaping=&amp;quot;yes&amp;quot; /&amp;gt;&lt;br /&gt;
									&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
								&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
							&amp;lt;/value&amp;gt;&lt;br /&gt;
						&amp;lt;/property&amp;gt;&lt;br /&gt;
					&amp;lt;/xsl:if&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;1c_catalog_id&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Идентификатор каталога 1С&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;$catalog-id&amp;quot; /&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;1c_product_id&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Идентификатор в 1С&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;Ид&amp;quot; /&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;artikul&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Артикул&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;Артикул&amp;quot; /&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;bar_code&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Штрих-код&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;Штрихкод&amp;quot; /&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;width&amp;quot; type=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Ширина&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ЗначенияРеквизитов/ЗначениеРеквизита[Наименование = &amp;#039;Ширина&amp;#039;]/Значение&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;length&amp;quot; type=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Длина&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ЗначенияРеквизитов/ЗначениеРеквизита[Наименование = &amp;#039;Длина&amp;#039;]/Значение&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;weight&amp;quot; type=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Вес&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ЗначенияРеквизитов/ЗначениеРеквизита[Наименование = &amp;#039;Вес&amp;#039;]/Значение&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;property name=&amp;quot;height&amp;quot; type=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
						&amp;lt;title&amp;gt;Высота&amp;lt;/title&amp;gt;&lt;br /&gt;
						&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ЗначенияРеквизитов/ЗначениеРеквизита[Наименование = &amp;#039;Высота&amp;#039;]/Значение&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
					&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
					&amp;lt;xsl:apply-templates select=&amp;quot;Картинка&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/group&amp;gt;&lt;br /&gt;
&lt;br /&gt;
				&amp;lt;xsl:apply-templates select=&amp;quot;ЗначенияСвойств&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;/properties&amp;gt;&lt;br /&gt;
		&amp;lt;/page&amp;gt;&lt;br /&gt;
	&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Как видите, здесь мы тоже дополнили шаблон полями Длина, Ширина и Высота. Здесь это выглядит следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;property name=&amp;quot;width&amp;quot; type=&amp;quot;float&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;title&amp;gt;Ширина&amp;lt;/title&amp;gt;&lt;br /&gt;
	&amp;lt;value&amp;gt;&amp;lt;xsl:value-of select=&amp;quot;ЗначенияРеквизитов/ЗначениеРеквизита[Наименование = &amp;#039;Ширина&amp;#039;]/Значение&amp;quot;/&amp;gt;&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В свойстве name мы указываем тот name, который мы выбрали для поля в шаблоне, где описывали поля. После “Наименование = “ мы указываем название нужного нам поля из файла выгрузки. В нашем случае для ширины это значение будет “Ширина”.&lt;br /&gt;
&lt;br /&gt;
На этом кастомизация импорта окончена. Осталось только добавить необходимые поля в файлы выгрузки 1С. В настройках узла обмена с сайтом необходимо настроить дополнительные реквизиты номенклатуры, которые мы будем выгружать.&lt;br /&gt;
&lt;br /&gt;
[[Файл:33.png]]&lt;br /&gt;
&lt;br /&gt;
После всех этих действий, будет происходить корректная выгрузка габаритов номенклатуры при обмене с сайтом из 1С УНФ.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[category:Интеграция с 1С]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9F%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80_%D0%BE%D0%B1%D1%89%D0%B5%D0%B9_%D1%81%D1%83%D0%BC%D0%BC%D1%8B_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%BE%D0%B2_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F&amp;diff=9078</id>
		<title>Просмотр общей суммы заказов пользователя</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9F%D1%80%D0%BE%D1%81%D0%BC%D0%BE%D1%82%D1%80_%D0%BE%D0%B1%D1%89%D0%B5%D0%B9_%D1%81%D1%83%D0%BC%D0%BC%D1%8B_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%BE%D0%B2_%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F&amp;diff=9078"/>
		<updated>2019-03-30T09:01:15Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Иногда возникает необходимость узнать сумму всех заказов определенного пользователя. Для реализации данной задачи необходимо создать кастомный макрос, разместим его в файле /classes/components/customMacros.php&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
public function totalSum ($userId) {&lt;br /&gt;
			$orders = new selector(&amp;#039;objects&amp;#039;);&lt;br /&gt;
			$orders-&amp;gt;types(&amp;#039;object-type&amp;#039;)-&amp;gt;name(&amp;#039;emarket&amp;#039;, &amp;#039;order&amp;#039;);&lt;br /&gt;
			$orders-&amp;gt;where(&amp;#039;owner&amp;#039;)-&amp;gt;equals($userId);&lt;br /&gt;
			$orders-&amp;gt;where(&amp;#039;status_id&amp;#039;)-&amp;gt;equals(&amp;#039;198&amp;#039;);&lt;br /&gt;
			$total_price_all = 0; 			&lt;br /&gt;
			foreach($orders as $order)  {&lt;br /&gt;
			$total_price_once = $order-&amp;gt;getValue(&amp;#039;total_price&amp;#039;);&lt;br /&gt;
				$total_price_all = $total_price_all + $total_price_once;&lt;br /&gt;
			}&lt;br /&gt;
			return $total_price_all;&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При вызове этого макроса мы передаем ему id пользователя, для которого необходимо найти сумму всех заказов. В строке&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$pages-&amp;gt;where(&amp;#039;status_id&amp;#039;)-&amp;gt;equals(&amp;#039;198&amp;#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
мы выбираем только заказы, у которых статус заказа - &amp;quot;Готов&amp;quot;. Если нам необходима выборка по другому статусу заказа - тогда вместо 198 подставьте id необходимого вам статуса заказа. Информацию о соответствующих идентификаторов статусов заказов можно посмотреть в базе данных в таблице cms3_objects. &lt;br /&gt;
&lt;br /&gt;
Также все доступные статусы заказов и информация о них может быть выведена следующим запросом к базе данных:&lt;br /&gt;
&amp;lt;source lang=&amp;#039;sql&amp;#039;&amp;gt;&lt;br /&gt;
SELECT * FROM cms3_objects WHERE guid LIKE &amp;#039;emarket-orderstatus%&amp;#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вызов этого макроса на примере php шаблонизатора: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?= $this-&amp;gt;macros(&amp;#039;catalog&amp;#039;, &amp;#039;totalSum&amp;#039;, array(&amp;lt;идентификатор пользователя&amp;gt;)); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]][[Категория:Модуль Интернет магазин]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8_%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B8_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0&amp;diff=9068</id>
		<title>Добавление комментария при оформлении заказа</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8_%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B8_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0&amp;diff=9068"/>
		<updated>2019-03-28T08:47:01Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Задача:&amp;#039;&amp;#039;&amp;#039; Реализовать возможность добавления покупателю комментария к заказу&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Реализация:&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
В модуле &amp;quot;Шаблоны данных&amp;quot; откроем на редактирование тип данных &amp;quot;Заказ&amp;quot; и в группу &amp;quot;Свойства заказа&amp;quot; добавим поле с названием &amp;quot;Комментарий&amp;quot;, с идентификатором &amp;#039;comment&amp;#039; и типом &amp;quot;Простой текст&amp;quot;. Далее в шаблон, который формирует отображение корзины с товарами, рядом с кнопкой &amp;quot;Оформить заказ&amp;quot; пропишем следующее поле:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span&amp;gt;Ваш комментарий:&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;textarea style=&amp;quot;width: 300px; height: 50px;&amp;quot; name=&amp;quot;comment&amp;quot;/&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также необходимо поменять action формы с:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/emarket/purchase/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
на:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/emarket/purchasecomment/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Далее, в файле  &amp;#039;&amp;#039;&amp;#039;~/classes/components/emarket/customMacros.php&amp;#039;&amp;#039;&amp;#039; добавляем код следующего метода:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  public function purchasecomment(){&lt;br /&gt;
    $comment = htmlspecialchars(getRequest(&amp;#039;comment&amp;#039;));&lt;br /&gt;
    $ini = cmsController::getInstance()-&amp;gt;getModule(&amp;#039;emarket&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
    $order = $ini-&amp;gt;getBasketOrder(false);&lt;br /&gt;
    $order-&amp;gt;setValue(&amp;#039;comment&amp;#039;, $comment);&lt;br /&gt;
    $order-&amp;gt;commit();&lt;br /&gt;
    $ini-&amp;gt;redirect(&amp;#039;/emarket/purchase/&amp;#039;);&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В директории &amp;#039;&amp;#039;&amp;#039;~/classes/components/emarket/&amp;#039;&amp;#039;&amp;#039; создаем файл &amp;#039;&amp;#039;&amp;#039;permissions.custom.php&amp;#039;&amp;#039;&amp;#039; со следующим содержанием:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$permissions = array(&amp;#039;purchasing&amp;#039; =&amp;gt; array(&amp;#039;purchasecomment&amp;#039;));&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь при оформлении заказа пользователь сможет оставить комментарий к заказу. При просмотре заказа в административной части, комментарий будет отображаться в блоке &amp;quot;Свойства заказа&amp;quot;.&lt;br /&gt;
[[Категория:Модуль Интернет магазин]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8_%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B8_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0&amp;diff=9067</id>
		<title>Добавление комментария при оформлении заказа</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8_%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B8_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0&amp;diff=9067"/>
		<updated>2019-03-28T08:46:56Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Задача:&amp;#039;&amp;#039;&amp;#039; Реализовать возможность добавления покупателю комментария к заказу&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Реализация:&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
В модуле &amp;quot;Шаблоны данных&amp;quot; откроем на редактирование тип данных &amp;quot;Заказ&amp;quot; и в группу &amp;quot;Свойства заказа&amp;quot; добавим поле с названием &amp;quot;Комментарий&amp;quot;, с идентификатором &amp;#039;comment&amp;#039; и типом &amp;quot;Простой текст&amp;quot;. Далее в шаблон, который формирует отображение корзины с товарами, рядом с кнопкой &amp;quot;Оформить заказ&amp;quot; пропишем следующее поле:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span&amp;gt;Ваш комментарий:&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;textarea style=&amp;quot;width: 300px; height: 50px;&amp;quot; name=&amp;quot;comment&amp;quot;/&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также необходимо поменять action формы с:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/emarket/purchase/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
на:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/emarket/purchasecomment/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Далее, в файле  &amp;#039;&amp;#039;&amp;#039;~/classes/components/emarket/customMacros.php&amp;#039;&amp;#039;&amp;#039; добавляем код следующего метода:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  public function purchasecomment(){&lt;br /&gt;
    $comment = htmlspecialchars(getRequest(&amp;#039;comment&amp;#039;));&lt;br /&gt;
    $ini = cmsController::getInstance()-&amp;gt;getModule(&amp;#039;emarket&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
    $order = $ini-&amp;gt;getBasketOrder(false);&lt;br /&gt;
    $order-&amp;gt;setValue(&amp;#039;comment&amp;#039;, $comment);&lt;br /&gt;
    $order-&amp;gt;commit();&lt;br /&gt;
    $ini-&amp;gt;redirect(&amp;#039;/emarket/purchase/&amp;#039;);&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В директории &amp;#039;&amp;#039;&amp;#039;~/classes/components/emarket/&amp;#039;&amp;#039;&amp;#039; создаем файл &amp;#039;&amp;#039;&amp;#039;permissions.custom.php&amp;#039;&amp;#039;&amp;#039; со следующим содержанием:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$permissions = array(&amp;#039;purchasing&amp;#039; =&amp;gt; array(&amp;#039;purchasecomment&amp;#039;));&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь при оформлении заказа пользователь сможет оставить комментарий к заказу. При просмотре заказа в административной части, комментарий будет отображаться в блоке &amp;quot;Свойства заказа&amp;quot;.&lt;br /&gt;
[[Категория:Модуль Интернет магазин]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8_%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B8_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0&amp;diff=9066</id>
		<title>Добавление комментария при оформлении заказа</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8_%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B8_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0&amp;diff=9066"/>
		<updated>2019-03-28T08:46:50Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Задача:&amp;#039;&amp;#039;&amp;#039; Реализовать возможность добавления покупателю комментария к заказу&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Реализация:&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
В модуле &amp;quot;Шаблоны данных&amp;quot; откроем на редактирование тип данных &amp;quot;Заказ&amp;quot; и в группу &amp;quot;Свойства заказа&amp;quot; добавим поле с названием &amp;quot;Комментарий&amp;quot;, с идентификатором &amp;#039;comment&amp;#039; и типом &amp;quot;Простой текст&amp;quot;. Далее в шаблон, который формирует отображение корзины с товарами, рядом с кнопкой &amp;quot;Оформить заказ&amp;quot; пропишем следующее поле:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span&amp;gt;Ваш комментарий:&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;textarea style=&amp;quot;width: 300px; height: 50px;&amp;quot; name=&amp;quot;comment&amp;quot;/&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также необходимо поменять action формы с:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/emarket/purchase/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
на:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/emarket/purchasecomment/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Далее, в файле  &amp;#039;&amp;#039;&amp;#039;~/classes/components/emarket/customMacros.php&amp;#039;&amp;#039;&amp;#039; добавляем код следующего метода:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  public function purchasecomment(){&lt;br /&gt;
    $comment = htmlspecialchars(getRequest(&amp;#039;comment&amp;#039;));&lt;br /&gt;
    $ini = cmsController::getInstance()-&amp;gt;getModule(&amp;#039;emarket&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
    $order = $ini-&amp;gt;getBasketOrder(false);&lt;br /&gt;
    $order-&amp;gt;setValue(&amp;#039;comment&amp;#039;, $comment);&lt;br /&gt;
    $order-&amp;gt;commit();&lt;br /&gt;
    $ini-&amp;gt;redirect(&amp;#039;/emarket/purchase/&amp;#039;);&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В директории &amp;#039;&amp;#039;&amp;#039;~/classes/components/emarket/&amp;#039;&amp;#039;&amp;#039; создаем файл &amp;#039;&amp;#039;&amp;#039;permissions.custom.php&amp;#039;&amp;#039;&amp;#039; со следующим содержанием:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$permissions = array(&amp;#039;purchasing&amp;#039; =&amp;gt; array(&amp;#039;purchasecomment&amp;#039;));&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь при оформлении заказа пользователь сможет оставить комментарий к заказу. При просмотре заказа в административной части, комментарий будет отображаться в блоке &amp;quot;Свойства заказа&amp;quot;.&lt;br /&gt;
[[Категория:Модуль Интернет магазин]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8_%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B8_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0&amp;diff=9065</id>
		<title>Добавление комментария при оформлении заказа</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8_%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B8_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0&amp;diff=9065"/>
		<updated>2019-03-28T08:46:44Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Задача:&amp;#039;&amp;#039;&amp;#039; Реализовать возможность добавления покупателю комментария к заказу&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Реализация:&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
В модуле &amp;quot;Шаблоны данных&amp;quot; откроем на редактирование тип данных &amp;quot;Заказ&amp;quot; и в группу &amp;quot;Свойства заказа&amp;quot; добавим поле с названием &amp;quot;Комментарий&amp;quot;, с идентификатором &amp;#039;comment&amp;#039; и типом &amp;quot;Простой текст&amp;quot;. Далее в шаблон, который формирует отображение корзины с товарами, рядом с кнопкой &amp;quot;Оформить заказ&amp;quot; пропишем следующее поле:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span&amp;gt;Ваш комментарий:&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;textarea style=&amp;quot;width: 300px; height: 50px;&amp;quot; name=&amp;quot;comment&amp;quot;/&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также необходимо поменять action формы с:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/emarket/purchase/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
на:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/emarket/purchasecomment/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Далее, в файле  &amp;#039;&amp;#039;&amp;#039;~/classes/components/emarket/customMacros.php&amp;#039;&amp;#039;&amp;#039; добавляем код следующего метода:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  public function purchasecomment(){&lt;br /&gt;
    $comment = htmlspecialchars(getRequest(&amp;#039;comment&amp;#039;));&lt;br /&gt;
    $ini = cmsController::getInstance()-&amp;gt;getModule(&amp;#039;emarket&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
    $order = $ini-&amp;gt;getBasketOrder(false);&lt;br /&gt;
    $order-&amp;gt;setValue(&amp;#039;comment&amp;#039;, $comment);&lt;br /&gt;
    $order-&amp;gt;commit();&lt;br /&gt;
    $ini-&amp;gt;redirect(&amp;#039;/emarket/purchase/&amp;#039;);&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В директории &amp;#039;&amp;#039;&amp;#039;~/classes/components/emarket/&amp;#039;&amp;#039;&amp;#039; создаем файл &amp;#039;&amp;#039;&amp;#039;permissions.custom.php&amp;#039;&amp;#039;&amp;#039; со следующим содержанием:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$permissions = array(&amp;#039;purchasing&amp;#039; =&amp;gt; array(&amp;#039;purchasecomment&amp;#039;));&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь при оформлении заказа пользователь сможет оставить комментарий к заказу. При просмотре заказа в административной части, комментарий будет отображаться в блоке &amp;quot;Свойства заказа&amp;quot;.&lt;br /&gt;
[[Категория:Модуль Интернет магазин]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8_%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B8_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0&amp;diff=9062</id>
		<title>Добавление комментария при оформлении заказа</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%80%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8_%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B8_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0&amp;diff=9062"/>
		<updated>2019-03-28T08:40:49Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Задача:&amp;#039;&amp;#039;&amp;#039; Реализовать возможность добавления покупателю комментария к заказу&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Реализация:&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
В модуле &amp;quot;Шаблоны данных&amp;quot; откроем на редактирование тип данных &amp;quot;Заказ&amp;quot; и в группу &amp;quot;Свойства заказа&amp;quot; добавим поле с названием &amp;quot;Комментарий&amp;quot;, с идентификатором &amp;#039;comment&amp;#039; и типом &amp;quot;Простой текст&amp;quot;. Далее в шаблон, который формирует отображение корзины с товарами, рядом с кнопкой &amp;quot;Оформить заказ&amp;quot; пропишем следующее поле:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;span&amp;gt;Ваш комментарий:&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;textarea style=&amp;quot;width: 300px; height: 50px;&amp;quot; name=&amp;quot;comment&amp;quot;/&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Также необходимо поменять action формы с:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/emarket/purchase/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
на:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/emarket/purchasecomment/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Далее, в файле  &amp;#039;&amp;#039;&amp;#039;~/classes/components/emarket/customMacros.php&amp;#039;&amp;#039;&amp;#039; добавляем код следующего метода:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  public function purchasecomment(){&lt;br /&gt;
    $comment = htmlspecialchars(getRequest(&amp;#039;comment&amp;#039;));&lt;br /&gt;
    $ini = cmsController::getInstance()-&amp;gt;getModule(&amp;#039;emarket&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
    $order = $ini-&amp;gt;getBasketOrder(false);&lt;br /&gt;
    $order-&amp;gt;setValue(&amp;#039;comment&amp;#039;, $comment);&lt;br /&gt;
    $order-&amp;gt;commit();&lt;br /&gt;
    $ini-&amp;gt;redirect(&amp;#039;/emarket/purchase/&amp;#039;);&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
В директории &amp;#039;&amp;#039;&amp;#039;~/classes/components/emarket/permissions.custom.php&amp;#039; создаем файл &amp;#039;&amp;#039;&amp;#039;permissions.custom.php&amp;#039;&amp;#039;&amp;#039; со следующим содержанием:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$permissions = array(&amp;#039;purchasing&amp;#039; =&amp;gt; array(&amp;#039;purchasecomment&amp;#039;));&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь при оформлении заказа пользователь сможет оставить комментарий к заказу. При просмотре заказа в административной части, комментарий будет отображаться в блоке &amp;quot;Свойства заказа&amp;quot;.&lt;br /&gt;
[[Категория:Модуль Интернет магазин]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9D%D0%B5%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%B0%D1%8F_%D0%BD%D1%83%D0%BC%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%BE%D0%B2_%D0%B2_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5_%22%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82-%D0%BC%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD%22&amp;diff=9060</id>
		<title>Нестандартная нумерация заказов в модуле &quot;Интернет-магазин&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9D%D0%B5%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%B0%D1%8F_%D0%BD%D1%83%D0%BC%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%BE%D0%B2_%D0%B2_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5_%22%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82-%D0%BC%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD%22&amp;diff=9060"/>
		<updated>2019-03-27T11:35:06Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Иногда может возникнуть необходимость вести нумерацию заказов в интернет-магазине каким-либо нестандартным образом. Мы рассмотрим несколько простых способов реализовать эту возможность.&lt;br /&gt;
&lt;br /&gt;
Если необходимо изменить стартовый номер заказа.&lt;br /&gt;
Если необходимо вести счёт заказов не с единицы, а, скажем, с 2000, нужно проделать следующие шаги:&lt;br /&gt;
Любым удобным способом зайти в базу данных;&lt;br /&gt;
В таблице cms_reg найти запись, в которой поле var будет равно lastOrderNumber;&lt;br /&gt;
Изменить значение поля на 2000.&lt;br /&gt;
&lt;br /&gt;
Теперь следующий заказ в системе будет иметь номер 2001, следующий 2002 и так далее.&lt;br /&gt;
&lt;br /&gt;
Также все эти изменения можно применить с помощью SQL запроса вида:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE cms_reg SET val = &amp;lt;нужный вам стартовый номер&amp;gt; WHERE var = &amp;#039;lastOrderNumber&amp;#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Если необходимо использовать какой-то особый алгоритм в формировании номера заказа&lt;br /&gt;
&lt;br /&gt;
Например, мы хотим, чтобы номера заказов у нас увеличивались не на 1 при каждом заказе, а на 2.&lt;br /&gt;
&lt;br /&gt;
Для этого необходимо будет написать кастомный генератор номера заказа. &lt;br /&gt;
Генератор номера заказа по умолчанию расположен в папке ~/classes/components/emarket/classes/orders/number и называется default.php.&lt;br /&gt;
&lt;br /&gt;
Для создания своего генератора достаточно будет дублировать данный файл и назвать его, скажем, custom.php. В новом файле необходимо будет изменить название класса defaultOrderNumber на своё, в нашем случае это будет customOrderNumber.&lt;br /&gt;
&lt;br /&gt;
За генерацию номера заказа в данном классе отвечает метод number(), перепишем его код следующим образом:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
public function number() {&lt;br /&gt;
			$umiRegistry = Service::Registry();&lt;br /&gt;
			$lastOrderNumber = $umiRegistry-&amp;gt;get(&amp;#039;emarket/lastOrderNumber&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			if ($lastOrderNumber) {&lt;br /&gt;
			// Вычисляем номер заказа&lt;br /&gt;
				$number = $lastOrderNumber + 2;&lt;br /&gt;
				$umiRegistry-&amp;gt;set(&amp;#039;emarket/lastOrderNumber&amp;#039;, $number);&lt;br /&gt;
				$this-&amp;gt;setOrderNumber($number);&lt;br /&gt;
				return $number;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$sel = new selector(&amp;#039;objects&amp;#039;);&lt;br /&gt;
			$sel-&amp;gt;types(&amp;#039;object-type&amp;#039;)-&amp;gt;name(&amp;#039;emarket&amp;#039;, &amp;#039;order&amp;#039;);&lt;br /&gt;
			$sel-&amp;gt;order(&amp;#039;number&amp;#039;)-&amp;gt;desc();&lt;br /&gt;
			$sel-&amp;gt;limit(0, 1);&lt;br /&gt;
			$number = $sel-&amp;gt;first() ? ($sel-&amp;gt;first()-&amp;gt;number + 1) : 1;&lt;br /&gt;
&lt;br /&gt;
			$umiRegistry-&amp;gt;set(&amp;#039;emarket/lastOrderNumber&amp;#039;, $number);&lt;br /&gt;
			$this-&amp;gt;setOrderNumber($number);&lt;br /&gt;
			return $number;&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Мы изменили строку $number = $lastOrderNumber + 2; - теперь номера наших заказов при генерации будут идти следующим образом: 2, 4, 6 и так далее.&lt;br /&gt;
&lt;br /&gt;
Теперь необходимо указать в конфигурационном файле наш генератор в качестве используемого. &lt;br /&gt;
&lt;br /&gt;
Находим в файле config.ini, в секции [modules] запись &lt;br /&gt;
emarket.numbers = &amp;quot;default&amp;quot; и заменяем её на emarket.numbers = &amp;quot;custom&amp;quot; - по имени файла с нашим генератором.&lt;br /&gt;
&lt;br /&gt;
После этих действий написанный нами генератор будет использоваться при генерации номеров заказа в системе.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[category:Модуль Интернет магазин]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9D%D0%B5%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%B0%D1%8F_%D0%BD%D1%83%D0%BC%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%BE%D0%B2_%D0%B2_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5_%22%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82-%D0%BC%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD%22&amp;diff=9059</id>
		<title>Нестандартная нумерация заказов в модуле &quot;Интернет-магазин&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9D%D0%B5%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D0%BD%D0%B0%D1%8F_%D0%BD%D1%83%D0%BC%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%BE%D0%B2_%D0%B2_%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D0%B5_%22%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82-%D0%BC%D0%B0%D0%B3%D0%B0%D0%B7%D0%B8%D0%BD%22&amp;diff=9059"/>
		<updated>2019-03-27T11:32:55Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Иногда может возникнуть необходимость вести нумерацию заказов в интернет-магазине каким-либо нестандартным образом. Мы рассмотрим несколько простых способов реализовать эту возможность.&lt;br /&gt;
&lt;br /&gt;
Если необходимо изменить стартовый номер заказа.&lt;br /&gt;
Если необходимо вести счёт заказов не с единицы, а, скажем, с 2000, нужно проделать следующие шаги:&lt;br /&gt;
Любым удобным способом зайти в базу данных;&lt;br /&gt;
В таблице cms_reg найти запись, в которой поле var будет равно lastOrderNumber;&lt;br /&gt;
Изменить значение поля на 2000.&lt;br /&gt;
&lt;br /&gt;
Теперь следующий заказ в системе будет иметь номер 2001, следующий 2002 и так далее.&lt;br /&gt;
&lt;br /&gt;
Также все эти изменения можно применить с помощью SQL запроса вида:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
UPDATE cms_reg SET val = &amp;lt;нужный вам стартовый номер&amp;gt; WHERE var = &amp;#039;lastOrderNumber&amp;#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Если необходимо использовать какой-то особый алгоритм в формировании номера заказа&lt;br /&gt;
&lt;br /&gt;
Например, мы хотим, чтобы номера заказов у нас увеличивались не на 1 при каждом заказе, а на 2.&lt;br /&gt;
&lt;br /&gt;
Для этого необходимо будет написать кастомный генератор номера заказа. &lt;br /&gt;
Генератор номера заказа по умолчанию расположен в папке ~/classes/components/emarket/classes/orders/number и называется default.php.&lt;br /&gt;
&lt;br /&gt;
Для создания своего генератора достаточно будет дублировать данный файл и назвать его, скажем, custom.php.В новом файле необходимо будет изменить название класса defaultOrderNumber на своё, в нашем случае это будет customOrderNumber.&lt;br /&gt;
&lt;br /&gt;
За генерацию номера заказа в данном классе отвечает метод number(), перепишем его код следующим образом:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
public function number() {&lt;br /&gt;
			$umiRegistry = Service::Registry();&lt;br /&gt;
			$lastOrderNumber = $umiRegistry-&amp;gt;get(&amp;#039;emarket/lastOrderNumber&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
			if ($lastOrderNumber) {&lt;br /&gt;
			// Вычисляем номер заказа&lt;br /&gt;
				$number = $lastOrderNumber + 2;&lt;br /&gt;
				$umiRegistry-&amp;gt;set(&amp;#039;emarket/lastOrderNumber&amp;#039;, $number);&lt;br /&gt;
				$this-&amp;gt;setOrderNumber($number);&lt;br /&gt;
				return $number;&lt;br /&gt;
			}&lt;br /&gt;
&lt;br /&gt;
			$sel = new selector(&amp;#039;objects&amp;#039;);&lt;br /&gt;
			$sel-&amp;gt;types(&amp;#039;object-type&amp;#039;)-&amp;gt;name(&amp;#039;emarket&amp;#039;, &amp;#039;order&amp;#039;);&lt;br /&gt;
			$sel-&amp;gt;order(&amp;#039;number&amp;#039;)-&amp;gt;desc();&lt;br /&gt;
			$sel-&amp;gt;limit(0, 1);&lt;br /&gt;
			$number = $sel-&amp;gt;first() ? ($sel-&amp;gt;first()-&amp;gt;number + 1) : 1;&lt;br /&gt;
&lt;br /&gt;
			$umiRegistry-&amp;gt;set(&amp;#039;emarket/lastOrderNumber&amp;#039;, $number);&lt;br /&gt;
			$this-&amp;gt;setOrderNumber($number);&lt;br /&gt;
			return $number;&lt;br /&gt;
		}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Мы изменили строку $number = $lastOrderNumber + 2; - теперь номера наших заказов при генерации будут идти следующим образом: 2, 4, 6 и так далее.&lt;br /&gt;
&lt;br /&gt;
Теперь необходимо указать в конфигурационном файле наш генератор в качестве используемого. &lt;br /&gt;
&lt;br /&gt;
Находим в файле config.ini, в секции [modules] запись &lt;br /&gt;
emarket.numbers = &amp;quot;default&amp;quot; и заменяем её на emarket.numbers = &amp;quot;custom&amp;quot; - по имени файла с нашим генератором.&lt;br /&gt;
&lt;br /&gt;
После этих действий написанный нами генератор будет использоваться при генерации номеров заказа в системе.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[category:Модуль Интернет магазин]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=Google_reCAPTCHA&amp;diff=9056</id>
		<title>Google reCAPTCHA</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=Google_reCAPTCHA&amp;diff=9056"/>
		<updated>2019-03-26T08:46:24Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
В этой статье мы рассмотрим добавление Google reCAPTCHA на сайт.&lt;br /&gt;
&lt;br /&gt;
== Регистрация на сервисе Google reCaptcha ==&lt;br /&gt;
* Если у Вас нет аккаунта Google, Вы можете создать его на [https://accounts.google.com/signup/v2/webcreateaccount?hl=ru&amp;amp;flowName=GlifWebSignIn&amp;amp;flowEntry=SignUp странице регистрации].&lt;br /&gt;
* Переходим на страницу [https://www.google.com/recaptcha Google reCAPTCHA] и нажимаем My reCAPTCHA в правом верхнем углу. При необходимости авторизуемся в своем Google-аккаунте.&lt;br /&gt;
* Вводим название настроек капчи, отмечаем пункт reCAPTCHA v2, в текстовом поле перечисляем домены сайтов, к которым будут применены данные настройки, каждый с новой строки. &lt;br /&gt;
* Примнимаем условия использования reCAPTCHA, нажимаем &amp;quot;Регистрация&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Применение настроек в административной панели UMI.CMS ==&lt;br /&gt;
&lt;br /&gt;
* После регистрации автоматически переходим на страницу добавления капчи на сайт. Из пункта &amp;quot;Ключи&amp;quot; нужно скопировать Ключ и Секретный ключ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Файл:Google_reCaptcha_code.png]]&lt;br /&gt;
&lt;br /&gt;
* В административной панели Вашего сайта, в модуле &amp;quot;Конфигурация&amp;quot; переходим на вкладку &amp;quot;CAPTCHA&amp;quot;, отмечаем &amp;quot;Использовать настройки сайта&amp;quot;, выбираем тип &amp;quot;CAPTCHA&amp;quot; - &amp;quot;Google reCAPTCHA&amp;quot;, вставляем Ключ и Секретный ключ. Сохраняем изменения.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Файл:ReCaptcha_admin.png]]&lt;br /&gt;
&lt;br /&gt;
*При необходимости, на странице редактирования настроек Google reCAPTCHA, в настройках ключа, изменяем настройки безопасности. &amp;quot;Самый надежный&amp;quot; - при данных настройках пользователю нужно будет отмечать все изображения, на которых изображен определенный объект, для прохождения проверки. Если ползунок установлен в среднем положении, от пользователя требуется лишь отметить галочкой пункт &amp;quot;Я не робот&amp;quot;.&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Файл:Google reCaptcha option.png]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
* Данный функционал доступен начиная с 15 версии и только в новой реализации модулей. В остальных случаях нужно вставлять код виджета непосредственно в файл шаблона, по следующей инструкции:&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
[[Файл:Google_reCaptcha_script.png]]&lt;br /&gt;
 [[category:Модуль Конфигурация]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9E%D1%87%D0%B8%D1%81%D1%82%D0%BA%D0%B0_%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BE%D1%82_%D0%BC%D1%83%D1%81%D0%BE%D1%80%D0%B0&amp;diff=9054</id>
		<title>Очистка базы данных от мусора</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9E%D1%87%D0%B8%D1%81%D1%82%D0%BA%D0%B0_%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BE%D1%82_%D0%BC%D1%83%D1%81%D0%BE%D1%80%D0%B0&amp;diff=9054"/>
		<updated>2019-03-25T13:58:33Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
Имеется несколько способов очистки базы данных от различного рода “мусорных” объектов, мы рассмотрим некоторые из них.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1. Очистка с помощью сборщика мусора и файла cron.php&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В системе имеется специальный класс-сборщик мусора, который может очищать базу данных - именно он будет удалять все &amp;quot;мусорные&amp;quot; объекты, когда у них истечет время хранения. Для его работы необходимо настроить на хостинге периодическое исполнение файла cron.php, лежащего в корневой директории. Информация по работе Cron содержится в нашей документации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Очистка с помощью запросов к базе данных&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Хотя сборщик мусора и очищает таблицы в базе данных, в некоторых случаях может понадобится вручную почистить базу данных от “мусорных” объектов. Например, когда их скопилось довольно много и сборщик мусора не успевает за одну итерацию удалить все. &lt;br /&gt;
В таком случае удалить “мусорные” объекты можно с помощью запросов вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DELETE QUICK FROM `cms3_object_content` WHERE &lt;br /&gt;
`int_val` IS NULL &lt;br /&gt;
AND`varchar_val` IS NULL &lt;br /&gt;
AND `text_val` IS NULL &lt;br /&gt;
AND `rel_val` IS NULL &lt;br /&gt;
AND `tree_val` IS NULL &lt;br /&gt;
AND `float_val` IS NULL &lt;br /&gt;
LIMIT &amp;lt;количество записей, удаляемое запросом&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Количество записей задаётся здесь вручную потому, что выполнение запроса может занять довольно много времени, и гораздо легче будет удалить, к примеру, 100000 записей за несколько подходов, чем за один раз.&lt;br /&gt;
&lt;br /&gt;
Если есть необходимость просто проверить, есть ли какие-либо “мусорные” записи в базе данных, можно модифицировать запрос, который мы написали выше:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(*) FROM `cms3_object_content` WHERE &lt;br /&gt;
`int_val` IS NULL &lt;br /&gt;
AND`varchar_val` IS NULL &lt;br /&gt;
AND `text_val` IS NULL &lt;br /&gt;
AND `rel_val` IS NULL &lt;br /&gt;
AND `tree_val` IS NULL &lt;br /&gt;
AND `float_val` IS NULL&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этот запрос выведет число - количество невалидных записей в таблице. &lt;br /&gt;
Если вместо “SELECT COUNT(*) ...” в запросе выше использовать “SELECT * ...” - будет выведена полная таблица с невалидными записями.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[category:Решение проблем и ошибок]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9E%D1%87%D0%B8%D1%81%D1%82%D0%BA%D0%B0_%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BE%D1%82_%D0%BC%D1%83%D1%81%D0%BE%D1%80%D0%B0&amp;diff=9053</id>
		<title>Очистка базы данных от мусора</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9E%D1%87%D0%B8%D1%81%D1%82%D0%BA%D0%B0_%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BE%D1%82_%D0%BC%D1%83%D1%81%D0%BE%D1%80%D0%B0&amp;diff=9053"/>
		<updated>2019-03-25T13:57:53Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
Имеется несколько способов очистки базы данных от различного рода “мусорных” объектов, мы рассмотрим некоторые из них.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1. Очистка с помощью сборщика мусора и файла cron.php&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В системе имеется специальный класс-сборщик мусора, который может очищать базу данных - именно он будет удалять все &amp;quot;мусорные&amp;quot; объекты, когда у них истечет время хранения. Для его работы необходимо настроить на хостинге периодическое исполнение файла cron.php, лежащего в корневой директории. Информация по работе Cron содержится в нашей документации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Очистка с помощью запросов к базе данных&amp;lt;/b&amp;gt;&lt;br /&gt;
Хотя сборщик мусора и очищает таблицы в базе данных, в некоторых случаях может понадобится вручную почистить базу данных от “мусорных” объектов. Например, когда их скопилось довольно много и сборщик мусора не успевает за одну итерацию удалить все. &lt;br /&gt;
В таком случае удалить “мусорные” объекты можно с помощью запросов вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DELETE QUICK FROM `cms3_object_content` WHERE &lt;br /&gt;
`int_val` IS NULL &lt;br /&gt;
AND`varchar_val` IS NULL &lt;br /&gt;
AND `text_val` IS NULL &lt;br /&gt;
AND `rel_val` IS NULL &lt;br /&gt;
AND `tree_val` IS NULL &lt;br /&gt;
AND `float_val` IS NULL &lt;br /&gt;
LIMIT &amp;lt;количество записей, удаляемое запросом&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Количество записей задаётся здесь вручную потому, что выполнение запроса может занять довольно много времени, и гораздо легче будет удалить, к примеру, 100000 записей за несколько подходов, чем за один раз.&lt;br /&gt;
&lt;br /&gt;
Если есть необходимость просто проверить, есть ли какие-либо “мусорные” записи в базе данных, можно модифицировать запрос, который мы написали выше:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(*) FROM `cms3_object_content` WHERE &lt;br /&gt;
`int_val` IS NULL &lt;br /&gt;
AND`varchar_val` IS NULL &lt;br /&gt;
AND `text_val` IS NULL &lt;br /&gt;
AND `rel_val` IS NULL &lt;br /&gt;
AND `tree_val` IS NULL &lt;br /&gt;
AND `float_val` IS NULL&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этот запрос выведет число - количество невалидных записей в таблице. &lt;br /&gt;
Если вместо “SELECT COUNT(*) ...” в запросе выше использовать “SELECT * ...” - будет выведена полная таблица с невалидными записями.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[category:Решение проблем и ошибок]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9E%D1%87%D0%B8%D1%81%D1%82%D0%BA%D0%B0_%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BE%D1%82_%D0%BC%D1%83%D1%81%D0%BE%D1%80%D0%B0&amp;diff=9052</id>
		<title>Очистка базы данных от мусора</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9E%D1%87%D0%B8%D1%81%D1%82%D0%BA%D0%B0_%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D0%BE%D1%82_%D0%BC%D1%83%D1%81%D0%BE%D1%80%D0%B0&amp;diff=9052"/>
		<updated>2019-03-25T13:57:44Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
Имеется несколько способов очистки базы данных от различного рода “мусорных” объектов, мы рассмотрим некоторые из них.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;1. Очистка с помощью сборщика мусора и файла cron.php&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В системе имеется специальный класс-сборщик мусора, который может очищать базу данных - именно он будет удалять все &amp;quot;мусорные&amp;quot; объекты, когда у них истечет время хранения. Для его работы необходимо настроить на хостинге периодическое исполнение файла cron.php, лежащего в корневой директории. Информация по работе Cron содержится в нашей документации.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;2. Очистка с помощью запросов к базе данных&amp;lt;/b&amp;gt;&lt;br /&gt;
Хотя сборщик мусора и очищает таблицы в базе данных, в некоторых случаях может понадобится вручную почистить базу данных от “мусорных” объектов. Например, когда их скопилось довольно много и сборщик мусора не успевает за одну итерацию удалить все. &lt;br /&gt;
В таком случае удалить “мусорные” объекты можно с помощью запросов вида:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
DELETE QUICK FROM `cms3_object_content` WHERE &lt;br /&gt;
`int_val` IS NULL &lt;br /&gt;
AND`varchar_val` IS NULL &lt;br /&gt;
AND `text_val` IS NULL &lt;br /&gt;
AND `rel_val` IS NULL &lt;br /&gt;
AND `tree_val` IS NULL &lt;br /&gt;
AND `float_val` IS NULL &lt;br /&gt;
LIMIT &amp;lt;количество записей, удаляемое запросом&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Количество записей задаётся здесь вручную потому, что выполнение запроса может занять довольно много времени, и гораздо легче будет удалить, к примеру, 100000 записей за несколько подходов, чем за один раз.&lt;br /&gt;
&lt;br /&gt;
Если есть необходимость просто проверить, есть ли какие-либо “мусорные” записи в базе данных, можно модифицировать запрос, который мы написали выше:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT COUNT(*) FROM `cms3_object_content` WHERE &lt;br /&gt;
`int_val` IS NULL &lt;br /&gt;
AND`varchar_val` IS NULL &lt;br /&gt;
AND `text_val` IS NULL &lt;br /&gt;
AND `rel_val` IS NULL &lt;br /&gt;
AND `tree_val` IS NULL &lt;br /&gt;
AND `float_val` IS NULL&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этот запрос выведет число - количество невалидных записей в таблице. &lt;br /&gt;
Если вместо “SELECT COUNT(*) ...” в запросе выше использовать “SELECT * ...” - будет выведена полная таблица с невалидными записями.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[category:Решение проблем и ошибок]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B3%D0%BE_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0,_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B9_%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%B8%D0%BB_%D0%BF%D0%BE%D0%BA%D1%83%D0%BF%D0%B0%D1%82%D0%B5%D0%BB%D1%8C&amp;diff=9049</id>
		<title>Поиск последнего заказа, который оформил покупатель</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B3%D0%BE_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0,_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B9_%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%B8%D0%BB_%D0%BF%D0%BE%D0%BA%D1%83%D0%BF%D0%B0%D1%82%D0%B5%D0%BB%D1%8C&amp;diff=9049"/>
		<updated>2019-03-25T13:33:08Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Задача:&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
В данной статье будет рассмотрен пример кастомного метода, с помощью которого на последнем шаге оформления заказа, где уже отображается сообщение об успешном оформлении заказа, мы выведем номер этого заказа, и общую стоимость.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Решение:&amp;#039;&amp;#039;&amp;#039;  &lt;br /&gt;
&lt;br /&gt;
Добавим в файл classes/modules/emarket/__custom.php дополнительный метод order_last:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;  &lt;br /&gt;
public function order_last($template = &amp;#039;order_last&amp;#039;) {&lt;br /&gt;
            list($tpl_block) = def_module::loadTemplates(&amp;quot;./tpls/emarket/{$template}.tpl&amp;quot;, &amp;#039;order_block&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
            $cmsController = cmsController::getInstance();&lt;br /&gt;
            $domain = $cmsController-&amp;gt;getCurrentDomain();&lt;br /&gt;
            $domainId = $domain-&amp;gt;getId();&lt;br /&gt;
      //поиск последнего заказа для текущего пользователя&lt;br /&gt;
            $sel = new selector(&amp;#039;objects&amp;#039;);&lt;br /&gt;
            $sel-&amp;gt;types(&amp;#039;object-type&amp;#039;)-&amp;gt;name(&amp;#039;emarket&amp;#039;, &amp;#039;order&amp;#039;);&lt;br /&gt;
            $sel-&amp;gt;where(&amp;#039;customer_id&amp;#039;)-&amp;gt;equals(customer::get()-&amp;gt;id);&lt;br /&gt;
            $sel-&amp;gt;where(&amp;#039;name&amp;#039;)-&amp;gt;isNull(false);&lt;br /&gt;
            $sel-&amp;gt;where(&amp;#039;domain_id&amp;#039;)-&amp;gt;equals($domainId);&lt;br /&gt;
            $sel-&amp;gt;order(&amp;#039;order_date&amp;#039;)-&amp;gt;desc();&lt;br /&gt;
            $sel-&amp;gt;limit(0, 1);&lt;br /&gt;
            &lt;br /&gt;
            $result = $sel-&amp;gt;first;&lt;br /&gt;
            if($sel-&amp;gt;length &amp;gt; 0) {&lt;br /&gt;
                $block_arr[&amp;#039;order_id&amp;#039;] = $result-&amp;gt;id;&lt;br /&gt;
                $block_arr[&amp;#039;number&amp;#039;] = $result-&amp;gt;number;                &lt;br /&gt;
                return def_module::parseTemplate($tpl_block, $block_arr, false, $result-&amp;gt;id);&lt;br /&gt;
           }&lt;br /&gt;
       }&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В папку classes/modules/emarket/ добавим файл permissions.custom.php следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$permissions = array(&amp;#039;purchasing&amp;#039; =&amp;gt; array(&amp;#039;order_last&amp;#039;));&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Если вы используете на сайте TPL-шаблонизатор, то в папку tpls/emarket/ необходимо добавить шаблон order_last.tpl примерно следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$FORMS = array();&lt;br /&gt;
&lt;br /&gt;
$FORMS[&amp;#039;order_block&amp;#039;] = &amp;lt;&amp;lt;&amp;lt;END&lt;br /&gt;
Номер заказа: %number% &amp;lt;br/&amp;gt;&lt;br /&gt;
Стоимость заказа: %total_price% руб.&lt;br /&gt;
END;&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
с помощью макрос %order_id% вы можете получить object_id заказа и использовать этот id в макросе %data getPropertyOfObject()%. Также в блоке &amp;#039;order_block&amp;#039; можно использовать идентификаторы полей типа данных «Заказ» для получения значений полей, как это было сделано для общей стоимости: %total_price%&lt;br /&gt;
&lt;br /&gt;
Также в шаблон tpls/emarket/default.tpl, в блок purchase_successful необходимо добавить макрос:&lt;br /&gt;
%emarket order_last()%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если вы используете XSLT-шаблонизатор, то при вызове udata://emarket/order_last/ будут получены примерно следующие данные:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;udata module=&amp;quot;emarket&amp;quot; method=&amp;quot;order_last&amp;quot; generation-time=&amp;quot;0.258477&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;order_id&amp;gt;&lt;br /&gt;
550925&lt;br /&gt;
&amp;lt;/order_id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;&lt;br /&gt;
17&lt;br /&gt;
&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;/udata&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
которые вы можете использовать для формирования данных о заказе.&lt;br /&gt;
&lt;br /&gt;
Если вы используете PHP-шаблонизатор, достаточно будет только описать кастомный макрос в файле customMacros.php:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
public function getLastOrderData() {&lt;br /&gt;
   	 $cmsController = cmsController::getInstance();&lt;br /&gt;
        	$domain = $cmsController-&amp;gt;getCurrentDomain();&lt;br /&gt;
        	$domainId = $domain-&amp;gt;getId();&lt;br /&gt;
   		 &lt;br /&gt;
   		 //Поиск последнего заказа для текущего пользователя&lt;br /&gt;
        	$orders = new selector(&amp;#039;objects&amp;#039;);&lt;br /&gt;
        	$orders-&amp;gt;types(&amp;#039;object-type&amp;#039;)-&amp;gt;name(&amp;#039;emarket&amp;#039;, &amp;#039;order&amp;#039;);&lt;br /&gt;
        	$orders-&amp;gt;where(&amp;#039;customer_id&amp;#039;)-&amp;gt;equals(customer::get()-&amp;gt;id);&lt;br /&gt;
        	$orders-&amp;gt;where(&amp;#039;name&amp;#039;)-&amp;gt;isNull(false);&lt;br /&gt;
        	$orders-&amp;gt;where(&amp;#039;domain_id&amp;#039;)-&amp;gt;equals($domainId);&lt;br /&gt;
        	$orders-&amp;gt;order(&amp;#039;id&amp;#039;)-&amp;gt;desc();&lt;br /&gt;
        	$orders-&amp;gt;limit(0, 1);&lt;br /&gt;
       	 &lt;br /&gt;
        	$lastOrderData = $orders-&amp;gt;first;&lt;br /&gt;
   		 return $lastOrderData;&lt;br /&gt;
   	 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А затем добавить на страницу с завершением оформления заказа вызов этого макроса:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$orderData = $this-&amp;gt;macros(&amp;#039;emarket&amp;#039;, &amp;#039;getLastOrderData&amp;#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этот код вернёт данные о последнем заказе в виде объекта, который вы можете использовать для формирования данных о заказе. Например, для вывода номера заказа достаточно будет прописать echo $orderData-&amp;gt;number;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Модуль Интернет магазин]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B3%D0%BE_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0,_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B9_%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%B8%D0%BB_%D0%BF%D0%BE%D0%BA%D1%83%D0%BF%D0%B0%D1%82%D0%B5%D0%BB%D1%8C&amp;diff=9048</id>
		<title>Поиск последнего заказа, который оформил покупатель</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BD%D0%B5%D0%B3%D0%BE_%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D0%B0,_%D0%BA%D0%BE%D1%82%D0%BE%D1%80%D1%8B%D0%B9_%D0%BE%D1%84%D0%BE%D1%80%D0%BC%D0%B8%D0%BB_%D0%BF%D0%BE%D0%BA%D1%83%D0%BF%D0%B0%D1%82%D0%B5%D0%BB%D1%8C&amp;diff=9048"/>
		<updated>2019-03-25T13:31:19Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Задача:&amp;#039;&amp;#039;&amp;#039; &lt;br /&gt;
&lt;br /&gt;
В данной статье будет рассмотрен пример кастомного метода, с помощью которого на последнем шаге оформления заказа, где уже отображается сообщение об успешном оформлении заказа, мы выведем номер этого заказа, и общую стоимость.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Решение:&amp;#039;&amp;#039;&amp;#039;  &lt;br /&gt;
&lt;br /&gt;
Добавим в файл classes/modules/emarket/__custom.php дополнительный метод order_last:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;PHP&amp;quot;&amp;gt;  &lt;br /&gt;
public function order_last($template = &amp;#039;order_last&amp;#039;) {&lt;br /&gt;
            list($tpl_block) = def_module::loadTemplates(&amp;quot;./tpls/emarket/{$template}.tpl&amp;quot;, &amp;#039;order_block&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
            $cmsController = cmsController::getInstance();&lt;br /&gt;
            $domain = $cmsController-&amp;gt;getCurrentDomain();&lt;br /&gt;
            $domainId = $domain-&amp;gt;getId();&lt;br /&gt;
      //поиск последнего заказа для текущего пользователя&lt;br /&gt;
            $sel = new selector(&amp;#039;objects&amp;#039;);&lt;br /&gt;
            $sel-&amp;gt;types(&amp;#039;object-type&amp;#039;)-&amp;gt;name(&amp;#039;emarket&amp;#039;, &amp;#039;order&amp;#039;);&lt;br /&gt;
            $sel-&amp;gt;where(&amp;#039;customer_id&amp;#039;)-&amp;gt;equals(customer::get()-&amp;gt;id);&lt;br /&gt;
            $sel-&amp;gt;where(&amp;#039;name&amp;#039;)-&amp;gt;isNull(false);&lt;br /&gt;
            $sel-&amp;gt;where(&amp;#039;domain_id&amp;#039;)-&amp;gt;equals($domainId);&lt;br /&gt;
            $sel-&amp;gt;order(&amp;#039;order_date&amp;#039;)-&amp;gt;desc();&lt;br /&gt;
            $sel-&amp;gt;limit(0, 1);&lt;br /&gt;
            &lt;br /&gt;
            $result = $sel-&amp;gt;first;&lt;br /&gt;
            if($sel-&amp;gt;length &amp;gt; 0) {&lt;br /&gt;
                $block_arr[&amp;#039;order_id&amp;#039;] = $result-&amp;gt;id;&lt;br /&gt;
                $block_arr[&amp;#039;number&amp;#039;] = $result-&amp;gt;number;                &lt;br /&gt;
                return def_module::parseTemplate($tpl_block, $block_arr, false, $result-&amp;gt;id);&lt;br /&gt;
           }&lt;br /&gt;
       }&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
В папку classes/modules/emarket/ добавим файл permissions.custom.php следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$permissions = array(&amp;#039;purchasing&amp;#039; =&amp;gt; array(&amp;#039;order_last&amp;#039;));&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Если вы используете на сайте TPL-шаблонизатор, то в папку tpls/emarket/ необходимо добавить шаблон order_last.tpl примерно следующего содержания:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$FORMS = array();&lt;br /&gt;
&lt;br /&gt;
$FORMS[&amp;#039;order_block&amp;#039;] = &amp;lt;&amp;lt;&amp;lt;END&lt;br /&gt;
Номер заказа: %number% &amp;lt;br/&amp;gt;&lt;br /&gt;
Стоимость заказа: %total_price% руб.&lt;br /&gt;
END;&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
с помощью макрос %order_id% вы можете получить object_id заказа и использовать этот id в макросе %data getPropertyOfObject()%. Также в блоке &amp;#039;order_block&amp;#039; можно использовать идентификаторы полей типа данных «Заказ» для получения значений полей, как это было сделано для общей стоимости: %total_price%&lt;br /&gt;
&lt;br /&gt;
Также в шаблон tpls/emarket/default.tpl, в блок purchase_successful необходимо добавить макрос:&lt;br /&gt;
%emarket order_last()%&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Если вы используете XSLT-шаблонизатор, то при вызове udata://emarket/order_last/ будут получены примерно следующие данные:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;udata module=&amp;quot;emarket&amp;quot; method=&amp;quot;order_last&amp;quot; generation-time=&amp;quot;0.258477&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;order_id&amp;gt;&lt;br /&gt;
550925&lt;br /&gt;
&amp;lt;/order_id&amp;gt;&lt;br /&gt;
&amp;lt;number&amp;gt;&lt;br /&gt;
17&lt;br /&gt;
&amp;lt;/number&amp;gt;&lt;br /&gt;
&amp;lt;/udata&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
которые вы можете использовать для формирования данных о заказе.&lt;br /&gt;
&lt;br /&gt;
Если вы используете PHP-шаблонизатор, достаточно будет только описать кастомный макрос в файле customMacros.php:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
public function getLastOrderData() {&lt;br /&gt;
   	 $cmsController = cmsController::getInstance();&lt;br /&gt;
        	$domain = $cmsController-&amp;gt;getCurrentDomain();&lt;br /&gt;
        	$domainId = $domain-&amp;gt;getId();&lt;br /&gt;
   		 &lt;br /&gt;
   		 //Поиск последнего заказа для текущего пользователя&lt;br /&gt;
        	$orders = new selector(&amp;#039;objects&amp;#039;);&lt;br /&gt;
        	$orders-&amp;gt;types(&amp;#039;object-type&amp;#039;)-&amp;gt;name(&amp;#039;emarket&amp;#039;, &amp;#039;order&amp;#039;);&lt;br /&gt;
        	$orders-&amp;gt;where(&amp;#039;customer_id&amp;#039;)-&amp;gt;equals(customer::get()-&amp;gt;id);&lt;br /&gt;
        	$orders-&amp;gt;where(&amp;#039;name&amp;#039;)-&amp;gt;isNull(false);&lt;br /&gt;
        	$orders-&amp;gt;where(&amp;#039;domain_id&amp;#039;)-&amp;gt;equals($domainId);&lt;br /&gt;
        	$orders-&amp;gt;order(&amp;#039;id&amp;#039;)-&amp;gt;desc();&lt;br /&gt;
        	$orders-&amp;gt;limit(0, 1);&lt;br /&gt;
       	 &lt;br /&gt;
        	$lastOrderData = $orders-&amp;gt;first;&lt;br /&gt;
   		 return $lastOrderData;&lt;br /&gt;
   	 }&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А затем добавить на страницу с завершения оформления заказа вызов этого макроса:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$orderData = $this-&amp;gt;macros(&amp;#039;emarket&amp;#039;, &amp;#039;getLastOrderData&amp;#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этот код вернёт данные о последнем заказе в виде объекта, который вы можете использовать для формирования данных о заказе. Например, для вывода номера заказа достаточно будет прописать echo $orderData-&amp;gt;number;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Модуль Интернет магазин]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_%D0%A0%D0%B5%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=9046</id>
		<title>Категория:Модуль Редиректы</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C_%D0%A0%D0%B5%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D1%8B&amp;diff=9046"/>
		<updated>2019-03-22T14:12:50Z</updated>

		<summary type="html">&lt;p&gt;Whoa: Полностью удалено содержимое страницы&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%A0%D0%B5%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82&amp;diff=9044</id>
		<title>Редирект</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%A0%D0%B5%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82&amp;diff=9044"/>
		<updated>2019-03-22T14:03:38Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
В последних версиях системы для создания редиректов существует специальный модуль “Редиректы”, с помощью которого можно за несколько простых шагов создать необходимое вам перенаправление.&amp;lt;br/&amp;gt;&lt;br /&gt;
Подробнее о работе с этим модулем вы можете почитать в нашей [http://help.docs.umi-cms.ru/rabota_s_modulyami/module_redirects/ документации].&lt;br /&gt;
&lt;br /&gt;
Помимо этого в системе есть предназначенный для той же цели макрос %content redirect(&amp;#039;http://www.umi-cms.ru&amp;#039;)%. Его можно использовать в шаблонах или непосредственно в контенте определенной страницы.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На этом изобилие способов ещё не кончается. Также мы можем использовать JavaScript или файл дополнительной настройки сервера .htaccess.&amp;lt;br /&amp;gt;&lt;br /&gt;
В первом способе, скрипт для перенаправления может быть записан как минимум четырьмя способами:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#1:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    location=&amp;quot;http://www.newdomain.com&amp;quot;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
#2:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    document.location.href=&amp;quot;http://www.newdomain.com&amp;quot;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
#3:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    window.location.reload(&amp;quot;http://www.newdomain.com&amp;quot;);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
#4:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    document.location.replace(&amp;quot;http://www.newdomain.com&amp;quot;);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть множество способов реализации второго способа, самые простые из них:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
#1: RewriteRule / shop [R=301] &lt;br /&gt;
#2: Redirect 301 ^index.html$ /&lt;br /&gt;
#3: RedirectPermanent ^shop$ ^catalog$&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Разделителем здесь является пробел, принцип старый: первое значение — откуда, второе — куда.&lt;br /&gt;
&lt;br /&gt;
Если нужно добавить перенаправление, чтобы убирался слэш на конце адреса страницы, то для решения задачи нужно вставить такой код в файл /.htaccess в корне сайта после строчки &amp;quot;RewriteEngine On&amp;quot;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;
RewriteCond %{REQUEST_URI} !^/admin/.*&lt;br /&gt;
RewriteRule ^(.*)/$ /$1 [L,R=301]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
и выключить опцию url-suffix.add в файле config.ini.&lt;br /&gt;
Все страницы, кроме админки, будут перенаправляться на адрес без слэша. Админка с перенаправлением не будет работать.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%A0%D0%B5%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82&amp;diff=9043</id>
		<title>Редирект</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%A0%D0%B5%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82&amp;diff=9043"/>
		<updated>2019-03-22T14:03:03Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
В последних версиях системы для создания редиректов существует специальный модуль “Редиректы”, с помощью которого можно за несколько простых шагов создать необходимое вам перенаправление.&amp;lt;br/&amp;gt;&lt;br /&gt;
Подробнее о работе с этим модулем вы можете почитать в нашей [http://help.docs.umi-cms.ru/rabota_s_modulyami/module_redirects/ документации].&lt;br /&gt;
&lt;br /&gt;
Помимо этого в системе есть предназначенный для той же цели макрос %content redirect(&amp;#039;http://www.umi-cms.ru&amp;#039;)%. Его можно использовать в шаблонах или непосредственно в контенте определенной страницы.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На этом изобилие способов ещё не кончается. Также мы можем использовать JavaScript или файл дополнительной настройки сервера .htaccess.&amp;lt;br /&amp;gt;&lt;br /&gt;
В первом способе, скрипт для перенаправления может быть записан как минимум четырьмя способами:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#1:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    location=&amp;quot;http://www.newdomain.com&amp;quot;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
#2:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    document.location.href=&amp;quot;http://www.newdomain.com&amp;quot;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
#3:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    window.location.reload(&amp;quot;http://www.newdomain.com&amp;quot;);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
#4:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    document.location.replace(&amp;quot;http://www.newdomain.com&amp;quot;);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть множество способов реализации второго способа, самые простые из них:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
#1: RewriteRule / shop [R=301] &lt;br /&gt;
#2: Redirect 301 ^index.html$ /&lt;br /&gt;
#3: RedirectPermanent ^shop$ ^catalog$&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Разделителем здесь является пробел, принцип старый: первое значение - откуда, второе - куда.&lt;br /&gt;
&lt;br /&gt;
Если нужно добавить перенаправление, чтобы убирался слэш на конце адреса страницы, то для решения задачи нужно вставить такой код в файл /.htaccess в корне сайта после строчки &amp;quot;RewriteEngine On&amp;quot;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;
RewriteCond %{REQUEST_URI} !^/admin/.*&lt;br /&gt;
RewriteRule ^(.*)/$ /$1 [L,R=301]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
и выключить опцию url-suffix.add в файле config.ini.&lt;br /&gt;
Все страницы, кроме админки, будут перенаправляться на адрес без слэша. Админка с перенаправлением не будет работать.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%A0%D0%B5%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82&amp;diff=9042</id>
		<title>Редирект</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%A0%D0%B5%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82&amp;diff=9042"/>
		<updated>2019-03-22T13:50:48Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
В последних версиях системы для создания редиректов существует специальный модуль “Редиректы”, с помощью которого можно за несколько простых шагов создать необходимое вам перенаправление.&amp;lt;br/&amp;gt;&lt;br /&gt;
Подробнее о работе с этим модулем вы можете почитать в нашей [http://help.docs.umi-cms.ru/rabota_s_modulyami/module_redirects/ документации].&lt;br /&gt;
&lt;br /&gt;
Помимо этого в системе есть предназначенный для той же цели макрос %content redirect(&amp;#039;http://www.umi-cms.ru&amp;#039;)%. Его можно использовать в шаблонах или непосредственно в контенте определенной страницы.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На этом изобилие способов ещё не кончается. Так же мы можем использовать JavaScript или файл дополнительной настройки сервера .htaccess.&amp;lt;br /&amp;gt;&lt;br /&gt;
В первом способе, скрипт для перенаправления может быть записан как минимум четырьмя способами:&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
#1:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    location=&amp;quot;http://www.newdomain.com&amp;quot;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
#2:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    document.location.href=&amp;quot;http://www.newdomain.com&amp;quot;;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
#3:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    window.location.reload(&amp;quot;http://www.newdomain.com&amp;quot;);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
#4:&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
    document.location.replace(&amp;quot;http://www.newdomain.com&amp;quot;);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть множество способов реализации второго способа, самые простые из них:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
#1: RewriteRule / shop [R=301] &lt;br /&gt;
#2: Redirect 301 ^index.html$ /&lt;br /&gt;
#3: RedirectPermanent ^shop$ ^catalog$&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Разделителем здесь является пробел, принцип старый: первое значение - откуда, второе - куда.&lt;br /&gt;
&lt;br /&gt;
Если нужно добавить перенаправление, чтобы убирался слэш на конце адреса страницы, то для решения задачи нужно вставить такой код в файл /.htaccess в корне сайта после строчки &amp;quot;RewriteEngine On&amp;quot;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;
RewriteCond %{REQUEST_URI} !^/admin/.*&lt;br /&gt;
RewriteRule ^(.*)/$ /$1 [L,R=301]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
и выключить опцию url-suffix.add в файле config.ini.&lt;br /&gt;
Все страницы, кроме админки, будут перенаправляться на адрес без слэша. Админка с перенаправлением не будет работать.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B8%D0%BA%D1%81%D0%B5%D0%BB%D1%8F_Facebook&amp;diff=9039</id>
		<title>Подключение пикселя Facebook</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%B8%D0%BA%D1%81%D0%B5%D0%BB%D1%8F_Facebook&amp;diff=9039"/>
		<updated>2019-03-22T12:28:48Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этой статье мы рассмотрим добавление пикселя Facebook на ваш сайт на примере шаблона &amp;quot;Demomarket&amp;quot;.&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
Для начала необходимо, следуя инструкциям Фейсбука, создать сам пиксель и получить его код.&lt;br /&gt;
Полученный код необходимо вставить перед закрывающим тегом &amp;lt;/head&amp;gt; в шаблоне вашего сайта, в случае шаблона demomarket этот код находится в файле: ~/templates/demomarket/php/layout/head.phtml&lt;br /&gt;
&lt;br /&gt;
Вставляем полученный код пикселя в самый конец файла:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Facebook Pixel Code --&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  !function(f,b,e,v,n,t,s)&lt;br /&gt;
  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?&lt;br /&gt;
  n.callMethod.apply(n,arguments):n.queue.push(arguments)};&lt;br /&gt;
  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version=&amp;#039;2.0&amp;#039;;&lt;br /&gt;
  n.queue=[];t=b.createElement(e);t.async=!0;&lt;br /&gt;
  t.src=v;s=b.getElementsByTagName(e)[0];&lt;br /&gt;
  s.parentNode.insertBefore(t,s)}(window, document,&amp;#039;script&amp;#039;,&lt;br /&gt;
  &amp;#039;https://connect.facebook.net/en_US/fbevents.js&amp;#039;);&lt;br /&gt;
  fbq(&amp;#039;init&amp;#039;, ваш_идентификатор&amp;#039;);&lt;br /&gt;
  fbq(&amp;#039;track&amp;#039;, &amp;#039;PageView&amp;#039;);&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;noscript&amp;gt;&lt;br /&gt;
&amp;lt;img height=&amp;quot;1&amp;quot; width=&amp;quot;1&amp;quot; style=&amp;quot;display:none&amp;quot; src=&amp;quot;https://www.facebook.com/tr?id=ваш_идентификатор&amp;amp;ev=PageView&amp;amp;noscript=1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/noscript&amp;gt;&lt;br /&gt;
&amp;lt;!-- End Facebook Pixel Code --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь пиксель установлен на вашем сайте и вы можете настраивать его работу, согласно рекомендациям Фейсбука.&lt;br /&gt;
&lt;br /&gt;
Для того, чтобы проверить работу пикселя, можно отправить тестовый трафик в панели управления пикселем. Для этого нужно выбрать опцию “Настроить” в правом верхнем углу панели управления пикселем и, затем, выбрать опцию “Установить пиксель”. После шага получения кода он предложит вам протестировать работу пикселя, послав тестовый трафик на страницу, которую вы укажете.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Screenshot 3.png]]&lt;br /&gt;
&lt;br /&gt;
Если статус пикселя изменится на “Активен” — вы установили пиксель, и он работает корректно.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 [[category:Верстка в XSLT]][[Категория:Сторонние сервисы и программы]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%BE%D0%B2_%D0%B2_TinyMCE&amp;diff=9031</id>
		<title>Подключение плагинов в TinyMCE</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BF%D0%BB%D0%B0%D0%B3%D0%B8%D0%BD%D0%BE%D0%B2_%D0%B2_TinyMCE&amp;diff=9031"/>
		<updated>2019-03-22T08:21:28Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Задача ==&lt;br /&gt;
&lt;br /&gt;
Иногда возникает необходимость расширить или уменьшить функциональность визуального редактора TinyMCE при помощи изменения подключенных плагинов. &lt;br /&gt;
&lt;br /&gt;
== Решение == &lt;br /&gt;
&lt;br /&gt;
Для решения данной задачи нужно в конфигурационном файле /js/cms/wysiwyg/tinymce47/tinymce_custom.js добавить параметр plugins с массивом используемых плагинов.&lt;br /&gt;
&lt;br /&gt;
Например, нам необходимо в визуальном редакторе использовать такие теги, как &amp;lt;html&amp;gt;, &amp;lt;head&amp;gt;, &amp;lt;body&amp;gt; или &amp;lt;style&amp;gt;, тогда в список плагинов необходимо добавить плагин fullpage.&lt;br /&gt;
&lt;br /&gt;
Тогда JS код в файле tinymce_custom.js будет выглядеть следующим образом:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
window.mceCustomSettings = {&lt;br /&gt;
	// Файл с кастомным CSS&lt;br /&gt;
	// @link https://www.tinymce.com/docs/configure/content-appearance/#content_css&lt;br /&gt;
	content_css : &amp;#039;/js/cms/wysiwyg/tinymce47/tinymce_custom.css&amp;#039;&lt;br /&gt;
	plugins: [&amp;quot;fullpage&amp;quot;, &amp;quot;anchor&amp;quot;, &amp;quot;advlist&amp;quot;, &amp;quot;charmap&amp;quot;, &amp;quot;codemirror&amp;quot;, &amp;quot;contextmenu&amp;quot;, &amp;quot;fullscreen&amp;quot;, &amp;quot;image&amp;quot;, &amp;quot;link&amp;quot;, &amp;quot;lists&amp;quot;, &amp;quot;media&amp;quot;, &amp;quot;paste&amp;quot;, &amp;quot;searchreplace&amp;quot;, &amp;quot;table&amp;quot;, &amp;quot;textcolor&amp;quot;, &amp;quot;visualchars&amp;quot;],&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Настройки в файле tinymce_custom.js заменяют исходные настройки, поэтому необходимо взять все плагины, которые используются, и добавить к ним нужный нам плагин fullpage.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Решение проблем и ошибок]][[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9E%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%86%D0%B5%D0%BD%D1%8B_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B0_%D0%BD%D0%B0_%D1%81%D0%B0%D0%B9%D1%82%D0%B5_%D0%B2_%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%B9_%D0%B2%D0%B0%D0%BB%D1%8E%D1%82%D0%B5&amp;diff=9017</id>
		<title>Отображение цены товара на сайте в другой валюте</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9E%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%86%D0%B5%D0%BD%D1%8B_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B0_%D0%BD%D0%B0_%D1%81%D0%B0%D0%B9%D1%82%D0%B5_%D0%B2_%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%B9_%D0%B2%D0%B0%D0%BB%D1%8E%D1%82%D0%B5&amp;diff=9017"/>
		<updated>2019-02-11T11:05:07Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Задача== &lt;br /&gt;
Изменение валюты, в которой отображаются цены на сайте, на доллары (USD), евро (EUR) или любую другую.&lt;br /&gt;
&lt;br /&gt;
==Решение== &lt;br /&gt;
&lt;br /&gt;
Для реализации этой задачи версия системы должна быть не ниже 2.8.4.&lt;br /&gt;
&lt;br /&gt;
В конфигурационном файле (config.ini) установим валюту по умолчанию, допустим: default-currency = &amp;quot;RUR&amp;quot;,&lt;br /&gt;
а для автоматического переключения валюты на сайте, воспользуемся кастомным макросом, который пропишем в файле &lt;br /&gt;
/classes/modules/custom.php для старой реализации модулей&lt;br /&gt;
или&lt;br /&gt;
/classes/components/custom.php для новой реализации модулей, после слов: //TODO: Write your own macroses here&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
public function setcurrency($currencyCode = &amp;#039;RUR&amp;#039;){&lt;br /&gt;
	$inst = cmsController::getInstance()-&amp;gt;getModule(&amp;quot;emarket&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
	$selectedCurrency = $inst-&amp;gt;getCurrency($currencyCode);&lt;br /&gt;
  &lt;br /&gt;
	if ($currencyCode &amp;amp;&amp;amp; $selectedCurrency) {&lt;br /&gt;
		$defaultCurrency = $inst-&amp;gt;getDefaultCurrency();&lt;br /&gt;
&lt;br /&gt;
		if (permissionsCollection::getInstance()-&amp;gt;isAuth()){&lt;br /&gt;
			$customer = customer::get();&lt;br /&gt;
			if($customer-&amp;gt;preffered_currency != $selectedCurrency-&amp;gt;id) {&lt;br /&gt;
				if($selectedCurrency-&amp;gt;id == $defaultCurrency-&amp;gt;id) {&lt;br /&gt;
					$customer-&amp;gt;preffered_currency = null;&lt;br /&gt;
				} else {&lt;br /&gt;
					$customer-&amp;gt;preffered_currency = $selectedCurrency-&amp;gt;id;&lt;br /&gt;
				}&lt;br /&gt;
				$customer-&amp;gt;commit();&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			setcookie(&amp;#039;customer_currency&amp;#039;, $selectedCurrency-&amp;gt;id, (time() + 2678400), &amp;#039;/&amp;#039;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TPL шаблонизатор===&lt;br /&gt;
&lt;br /&gt;
Вызов макроса необходимо прописать в шаблонах страниц, допустим в любом месте тэга &amp;lt;body&amp;gt;. &lt;br /&gt;
Для tpl шаблонов вызов следующий:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
%custom setcurrency(&amp;#039;USD&amp;#039;)%&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
%custom setcurrency()%&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
для смены валюты отображения цен на валюту по умолчанию.&lt;br /&gt;
&lt;br /&gt;
В результате, при использовании макроса:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
%emarket price(%id%, &amp;#039;short&amp;#039;)%&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цена будет указана в валюте, выбор которой был сделан в кастомном методе setcurrency(), &amp;#039;short&amp;#039; - два шаблона, в папках:&lt;br /&gt;
* \tpls\emarket\&lt;br /&gt;
* \tpls\emarket\currency\&lt;br /&gt;
&lt;br /&gt;
===XSLT шаблонизатор===&lt;br /&gt;
&lt;br /&gt;
Для XSLT-Шаблонизатора, необходимо в основном xsl-шаблоне сайта, в котором прописан тег &amp;#039;&amp;#039;&amp;#039;head&amp;#039;&amp;#039;&amp;#039; и &amp;#039;&amp;#039;&amp;#039;body&amp;#039;&amp;#039;&amp;#039;, &lt;br /&gt;
необходимо прописать вызов:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:value-of select=&amp;quot;document(&amp;#039;udata://custom/setcurrency/USD/&amp;#039;)&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или &lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:value-of select=&amp;quot;document(&amp;#039;udata://custom/setcurrency/&amp;#039;)&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
для смены валюты отображения цен на валюту по умолчанию.&lt;br /&gt;
&lt;br /&gt;
в теге head.&lt;br /&gt;
&lt;br /&gt;
===PHP шаблонизатор===&lt;br /&gt;
&lt;br /&gt;
В PHP шаблонизаторе нужно вызвать этот макрос перед тем как отображать цены товаров.&lt;br /&gt;
&lt;br /&gt;
Оптимальным вариантом будет вызвать его в точке входа в шаблон, например для шаблона demomarket это будет файл&lt;br /&gt;
&lt;br /&gt;
/templates/demomarket/php/common.phtml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$this-&amp;gt;macros(&amp;#039;custom&amp;#039;, &amp;#039;setcurrency&amp;#039;, array(&amp;#039;USD&amp;#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
или&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$this-&amp;gt;macros(&amp;#039;custom&amp;#039;, &amp;#039;setcurrency&amp;#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
для смены валюты отображения цен на валюту по умолчанию.&lt;br /&gt;
&lt;br /&gt;
===AJAX запрос===&lt;br /&gt;
&lt;br /&gt;
Так же сменить валюту на сайте можно AJAX запросом на адрес:&lt;br /&gt;
&lt;br /&gt;
http://mysite.ru/udata://custom/setcurrency/USD/&lt;br /&gt;
&lt;br /&gt;
Для изменения цен на сайте необходимо после запроса перезагрузить страницу.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Модуль Интернет магазин]][[Категория:Написание кастомных макросов]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9E%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%86%D0%B5%D0%BD%D1%8B_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B0_%D0%BD%D0%B0_%D1%81%D0%B0%D0%B9%D1%82%D0%B5_%D0%B2_%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%B9_%D0%B2%D0%B0%D0%BB%D1%8E%D1%82%D0%B5&amp;diff=9016</id>
		<title>Отображение цены товара на сайте в другой валюте</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9E%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B5_%D1%86%D0%B5%D0%BD%D1%8B_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B0_%D0%BD%D0%B0_%D1%81%D0%B0%D0%B9%D1%82%D0%B5_%D0%B2_%D0%B4%D1%80%D1%83%D0%B3%D0%BE%D0%B9_%D0%B2%D0%B0%D0%BB%D1%8E%D1%82%D0%B5&amp;diff=9016"/>
		<updated>2019-02-11T11:04:29Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
==Задача== &lt;br /&gt;
Изменение валюты, в которой отображаются цены на сайте, на доллары (USD), евро (EUR) или любую другую.&lt;br /&gt;
&lt;br /&gt;
==Решение== &lt;br /&gt;
&lt;br /&gt;
Для реализации этой задачи версия системы должна быть не ниже 2.8.4.&lt;br /&gt;
&lt;br /&gt;
В конфигурационном файле (config.ini) установим валюту по умолчанию, допустим: default-currency = &amp;quot;RUR&amp;quot;,&lt;br /&gt;
а для автоматического переключения валюты на сайте, воспользуемся кастомным макросом, который пропишем в файле &lt;br /&gt;
/classes/modules/custom.php для старой реализации модулей&lt;br /&gt;
или&lt;br /&gt;
/classes/components/custom.php для новой реализации модулей&lt;br /&gt;
, после слов: //TODO: Write your own macroses here&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
public function setcurrency($currencyCode = &amp;#039;RUR&amp;#039;){&lt;br /&gt;
	$inst = cmsController::getInstance()-&amp;gt;getModule(&amp;quot;emarket&amp;quot;);&lt;br /&gt;
   &lt;br /&gt;
	$selectedCurrency = $inst-&amp;gt;getCurrency($currencyCode);&lt;br /&gt;
  &lt;br /&gt;
	if ($currencyCode &amp;amp;&amp;amp; $selectedCurrency) {&lt;br /&gt;
		$defaultCurrency = $inst-&amp;gt;getDefaultCurrency();&lt;br /&gt;
&lt;br /&gt;
		if (permissionsCollection::getInstance()-&amp;gt;isAuth()){&lt;br /&gt;
			$customer = customer::get();&lt;br /&gt;
			if($customer-&amp;gt;preffered_currency != $selectedCurrency-&amp;gt;id) {&lt;br /&gt;
				if($selectedCurrency-&amp;gt;id == $defaultCurrency-&amp;gt;id) {&lt;br /&gt;
					$customer-&amp;gt;preffered_currency = null;&lt;br /&gt;
				} else {&lt;br /&gt;
					$customer-&amp;gt;preffered_currency = $selectedCurrency-&amp;gt;id;&lt;br /&gt;
				}&lt;br /&gt;
				$customer-&amp;gt;commit();&lt;br /&gt;
			}&lt;br /&gt;
		} else {&lt;br /&gt;
			setcookie(&amp;#039;customer_currency&amp;#039;, $selectedCurrency-&amp;gt;id, (time() + 2678400), &amp;#039;/&amp;#039;);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===TPL шаблонизатор===&lt;br /&gt;
&lt;br /&gt;
Вызов макроса необходимо прописать в шаблонах страниц, допустим в любом месте тэга &amp;lt;body&amp;gt;. &lt;br /&gt;
Для tpl шаблонов вызов следующий:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
%custom setcurrency(&amp;#039;USD&amp;#039;)%&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
%custom setcurrency()%&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
для смены валюты отображения цен на валюту по умолчанию.&lt;br /&gt;
&lt;br /&gt;
В результате, при использовании макроса:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
%emarket price(%id%, &amp;#039;short&amp;#039;)%&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
цена будет указана в валюте, выбор которой был сделан в кастомном методе setcurrency(), &amp;#039;short&amp;#039; - два шаблона, в папках:&lt;br /&gt;
* \tpls\emarket\&lt;br /&gt;
* \tpls\emarket\currency\&lt;br /&gt;
&lt;br /&gt;
===XSLT шаблонизатор===&lt;br /&gt;
&lt;br /&gt;
Для XSLT-Шаблонизатора, необходимо в основном xsl-шаблоне сайта, в котором прописан тег &amp;#039;&amp;#039;&amp;#039;head&amp;#039;&amp;#039;&amp;#039; и &amp;#039;&amp;#039;&amp;#039;body&amp;#039;&amp;#039;&amp;#039;, &lt;br /&gt;
необходимо прописать вызов:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:value-of select=&amp;quot;document(&amp;#039;udata://custom/setcurrency/USD/&amp;#039;)&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
или &lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:value-of select=&amp;quot;document(&amp;#039;udata://custom/setcurrency/&amp;#039;)&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
для смены валюты отображения цен на валюту по умолчанию.&lt;br /&gt;
&lt;br /&gt;
в теге head.&lt;br /&gt;
&lt;br /&gt;
===PHP шаблонизатор===&lt;br /&gt;
&lt;br /&gt;
В PHP шаблонизаторе нужно вызвать этот макрос перед тем как отображать цены товаров.&lt;br /&gt;
&lt;br /&gt;
Оптимальным вариантом будет вызвать его в точке входа в шаблон, например для шаблона demomarket это будет файл&lt;br /&gt;
&lt;br /&gt;
/templates/demomarket/php/common.phtml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$this-&amp;gt;macros(&amp;#039;custom&amp;#039;, &amp;#039;setcurrency&amp;#039;, array(&amp;#039;USD&amp;#039;));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
или&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$this-&amp;gt;macros(&amp;#039;custom&amp;#039;, &amp;#039;setcurrency&amp;#039;);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
для смены валюты отображения цен на валюту по умолчанию.&lt;br /&gt;
&lt;br /&gt;
===AJAX запрос===&lt;br /&gt;
&lt;br /&gt;
Так же сменить валюту на сайте можно AJAX запросом на адрес:&lt;br /&gt;
&lt;br /&gt;
http://mysite.ru/udata://custom/setcurrency/USD/&lt;br /&gt;
&lt;br /&gt;
Для изменения цен на сайте необходимо после запроса перезагрузить страницу.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Модуль Интернет магазин]][[Категория:Написание кастомных макросов]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_(%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8)&amp;diff=9008</id>
		<title>Установка из консоли (командной строки)</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_(%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8)&amp;diff=9008"/>
		<updated>2019-02-05T14:18:28Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Для установки потребуется:&lt;br /&gt;
&lt;br /&gt;
0) Соответствие сервера системным требованиям UMI.CMS:&lt;br /&gt;
&lt;br /&gt;
Ознакомиться с ними можно по ссылке:&lt;br /&gt;
http://www.umi-cms.ru/support/umi_cms_system_requirements/&lt;br /&gt;
&lt;br /&gt;
Консольный инсталлятор проверяет соответствие системным требованиям при установке. Если вы используете отдельно консольный php и отдельно модуль apache - обратите внимание, что требования должны соблюдаться для обоих из них (иногда они используют разные конфигурационные файлы).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Консольный инсталлятор:&lt;br /&gt;
&lt;br /&gt;
Скачать его можно по ссылке:&lt;br /&gt;
[[Файл:Installer.zip]]&lt;br /&gt;
&lt;br /&gt;
Файл installer.php должен быть помещён в корневую директорию сайта, на который производится установка UMI.CMS. Рекомендуется, чтобы эта директория была пустой. Необходимо чтобы она имела права на чтение и запись из php (если затрудняетесь выбрать - ставьте 777).&lt;br /&gt;
&lt;br /&gt;
Права на сам файл installer.php должны быть такими, чтобы php мог его переписать.&lt;br /&gt;
&lt;br /&gt;
Инсталлятор обращается к внешним ресурсам для скачивания необходимых файлов и проверки аутентификационных данных. На хостинге для консольного php должны быть разрешены исходящие соединения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Файл install.ini с настройками для установки конкретного сайта:&lt;br /&gt;
&lt;br /&gt;
Скачать пример этого файла можно по ссылке:&lt;br /&gt;
http://www.umi-cms.ru/install/files/hosters/install.ini&lt;br /&gt;
&lt;br /&gt;
Права на файл install.ini должны быть такими, чтобы php мог его переписать. Файл install.ini должен быть помещён в ту же директорию, где находится installer.php, до начала установки. После установки его рекомендуется удалять.&lt;br /&gt;
&lt;br /&gt;
В файле указаны доступы к базе данных. Перед началом установки она уже должна существовать. Рекомендуется, чтобы она была пустая.&lt;br /&gt;
&lt;br /&gt;
Если вы уже пользовались консольным установщиком UMI.CMS, то многие параметры менять не потребуется. Просто проверьте их корректность и правильный синтаксис. Подробная инструкция ниже.&lt;br /&gt;
&lt;br /&gt;
Файл должен быть сохранен в кодировке utf-8. Значения параметров, содержащие не латинские символы, а также спецсимволы необходимо брать в двойные кавычки &amp;quot;&amp;quot;; (например, пароль)&lt;br /&gt;
&lt;br /&gt;
Пример файла:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
;=======================================================&lt;br /&gt;
;= инструкции для инсталлятора umi.cms в режиме CLI&lt;br /&gt;
;= Обязательные секции и их опции отмечены *&lt;br /&gt;
;=======================================================&lt;br /&gt;
&lt;br /&gt;
; информация о PHP &lt;br /&gt;
[SERVER]&lt;br /&gt;
; phppath=/usr/local/bin/php - больше не используется.&lt;br /&gt;
; phpini=/etc/php5/cli/php.ini - больше не используется.&lt;br /&gt;
 &lt;br /&gt;
;Информация о лицензии *&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
;Информация о лицензии *&lt;br /&gt;
[LICENSE]&lt;br /&gt;
domain=example.com		; доменное имя *&lt;br /&gt;
ip=127.0.1.7			; ip - адрес *&lt;br /&gt;
key=*-*-*			; лицензионный ключ *&lt;br /&gt;
 &lt;br /&gt;
;Доступ к базе данных. *&lt;br /&gt;
;База данных должна быть создана&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
[DB]&lt;br /&gt;
host=localhost			; имя хоста *&lt;br /&gt;
user=root			; логин *&lt;br /&gt;
password=&amp;quot;;\pass;&amp;quot;		; пароль *&lt;br /&gt;
dbname=installer		; имя базы *&lt;br /&gt;
&lt;br /&gt;
;Информация о супервайзере *&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
[SUPERVISOR]&lt;br /&gt;
login=sv			; логин для входа в админку *&lt;br /&gt;
password=&amp;quot;1&amp;quot;			; пароль *&lt;br /&gt;
lname=Installer			; фамилия&lt;br /&gt;
fname=cli			; имя&lt;br /&gt;
mname=Vasilievich		; отчество&lt;br /&gt;
&lt;br /&gt;
[BRAND]&lt;br /&gt;
;Ссылка &amp;quot;Купить UMI.CMS&amp;quot;&lt;br /&gt;
buy-lbl=&amp;quot;Купить UMI.CMS&amp;quot;	; Текст ссылки&lt;br /&gt;
buy-link=&amp;quot;http://www.umi-cms.ru/purchase/how-to-buy/&amp;quot; ; Ru URL&lt;br /&gt;
en-buy-lbl=&amp;quot;Buy UMI.CMS&amp;quot;	; Link text&lt;br /&gt;
en-buy-link=&amp;quot;http://www.umi-cms.ru/purchase/how-to-buy/&amp;quot; ; En URL&lt;br /&gt;
&lt;br /&gt;
[BACKUP]&lt;br /&gt;
mode = &amp;quot;none&amp;quot; ; all или none&lt;br /&gt;
&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;_blank&amp;quot;		; Имя предустановленного демо-сайта (demomarket,demodizzy,demohunt,demoold,demooldschool,_blank)&lt;br /&gt;
&lt;br /&gt;
[SETUP]&lt;br /&gt;
sleep=500		; Время простоя для снижения нагрузки на сервер. Указывается в миллисекундах. Одна миллисекунда - одна тясячная одной секунды (500 = полсекунды)&lt;br /&gt;
download_by=1024	; Размер запрашиваемого пакета с сервера обновлений. Указывается в килобайтах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно: процесс установки с дефолтными значениями специально замедлен для слабых хостингов, поэтому с ними система может ставиться долго. Используйте следующие параметры для более быстрой установки или (наоборот) для экономии ресурсов сервера:&lt;br /&gt;
&lt;br /&gt;
[SETUP]&lt;br /&gt;
sleep=1 ; Пауза между запросами в миллисекундах, чем меньше - тем быстрее.&lt;br /&gt;
download_by=1024 ; Размер запрашиваемого пакета с сервера обновлений. Указывается в килобайтах, чем больше - тем быстрее.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Выбор соответствующего демо-сайта для установки:&lt;br /&gt;
&lt;br /&gt;
Консольный установщик может устанавливать любой из демо-сайтов UMI.CMS, с учётом ограничений, описанных далее. Примеры этих сайтов можно увидеть по ссылке: http://demo.umi-cms.ru/ . Демо-сайт государственной организации (Gov) в настоящее время автоматически не устанавливается.&lt;br /&gt;
&lt;br /&gt;
Клиент вправе выбирать любой демо-сайт для любой редакции UMI.CMS. Однако следует учесть, что некоторые демосайты (например интернет-магазины) неразумно использовать для младших редакций, в которых нет соответствующих модулей (например модуля магазина). Но с другой стороны, если клиент докупил необходимые модули, то он сможет получить соответствующий демо-сайт (набор модулей определяется по лицензионному ключу). В силу этих причин установщик может выдать ошибку http://errors.umi-cms.ru/14022/ , если данный демосайт не подходит.&lt;br /&gt;
&lt;br /&gt;
Если хостер не предоставляет клиентам выбор демо-сайта (как в большинстве случаев, когда он предлагает только Commerce Trial), то рекомендуется использовать следующие:&lt;br /&gt;
&lt;br /&gt;
Для редакции Commerce Trial:&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;demomarket&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Либо сайт без шаблонов (не рекомендуется):&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;_blank&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Персональный гейт для выдачи лицензионных ключей UMI.CMS:&lt;br /&gt;
&lt;br /&gt;
Со стороны компании &amp;quot;Юмисофт&amp;quot; существует специальный гейт, выдающий лицензионные ключи необходимого типа (Commerce Trial). При регистрации хостера на гейте ему выдаётся уникальный идентификатор (ID), а также инструкции, куда отсылать запросы на получение лицензионных ключей.&lt;br /&gt;
&lt;br /&gt;
Если вы уже пользуетесь таким гейтом, то в 99% случаев вам не нужно ничего менять.&lt;br /&gt;
&lt;br /&gt;
Если вы НЕ регистрировались на этом гейте и НЕ получали свой уникальный ID, обратитесь на partner@umisoft.ru за ним. Полученный ID нужно будет использовать в запросе лицензионных ключей UMI.CMS (см. ниже).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Инструкция:&lt;br /&gt;
&lt;br /&gt;
* Загрузите файл installer.php в корень сервера (DOCUMENT_ROOT) &lt;br /&gt;
* Создайте файл install.ini в (DOCUMENT_ROOT), укажите в нем все необходимые данные. Кодировка файла utf-8&lt;br /&gt;
* Зайдите на сервер по ssh.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	ssh example.com -llogin&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Сделайте корневую директорию сервера (DOCUMENT_ROOT) текущей.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	cd /home/www/example.com/htdocs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Запустите инсталлятор&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	php -f installer.php&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если консольный инсталлятор потребляет слишком много ресурсов сервера (процессор, память и т.д.) - обратитесь к специальным настройкам install.ini, позволяющих умерить их потребление. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Коды ошибок:&lt;br /&gt;
&lt;br /&gt;
Практически все коды доступны по ссылке вида http://errors.umi-cms.ru/15000/&lt;br /&gt;
где 15000 - числовой код ошибки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Справочная информация:&lt;br /&gt;
&lt;br /&gt;
Описание гейта для выдачи ключей:&lt;br /&gt;
&lt;br /&gt;
Хостер должен получать очередной ключ на каждый очередной экземпляр системы, устанавливаемой клиенту. Для получения ключа нужно обращаться по URL:&lt;br /&gt;
&lt;br /&gt;
для редакции Commerce Trial:&lt;br /&gt;
http://updateserver.umihost.ru/udata/custom/generateLicenseGate/SFNUFTDJYFT/client@email.ru/FirstName/LastName/client.domain.ru/client.ip.address/trial&lt;br /&gt;
&lt;br /&gt;
SFNUFTDJYFT - пример уникального ID вашего хостинга (см. выше про выдачу ключа персонального гейта)&lt;br /&gt;
следующие параметры по порядку:&lt;br /&gt;
e-mail клиента&lt;br /&gt;
имя клиента&lt;br /&gt;
фамилия клиента&lt;br /&gt;
домен клиента&lt;br /&gt;
IP-адрес, на котором расположен сайт с этим доменом&lt;br /&gt;
&lt;br /&gt;
В результате выполнения этого запроса вы получаете XML-данные. Из них вам нужно извлечь значение параметра &amp;quot;domain-keycode&amp;quot; - это доменный ключ, который нужно записать в файл install.ini для инсталлятора UMI.CMS. После этого запустить инсталлятор.&lt;br /&gt;
[[Категория:Вопросы установки настройки и переноса]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_(%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8)&amp;diff=9007</id>
		<title>Установка из консоли (командной строки)</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_(%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8)&amp;diff=9007"/>
		<updated>2019-02-05T14:16:58Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Для установки потребуется:&lt;br /&gt;
&lt;br /&gt;
0) Соответствие сервера системным требованиям UMI.CMS:&lt;br /&gt;
&lt;br /&gt;
Ознакомиться с ними можно по ссылке:&lt;br /&gt;
http://www.umi-cms.ru/support/umi_cms_system_requirements/&lt;br /&gt;
&lt;br /&gt;
Консольный инсталлятор проверяет соответствие системным требованиям при установке. Если вы используете отдельно консольный php и отдельно модуль apache - обратите внимание, что требования должны соблюдаться для обоих из них (иногда они используют разные конфигурационные файлы).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Консольный инсталлятор:&lt;br /&gt;
&lt;br /&gt;
Скачать его можно по ссылке:&lt;br /&gt;
[[Файл:Installer.zip]]&lt;br /&gt;
&lt;br /&gt;
Файл installer.php должен быть помещён в корневую директорию сайта, на который производится установка UMI.CMS. Рекомендуется, чтобы эта директория была пустой. Необходимо чтобы она имела права на чтение и запись из php (если затрудняетесь выбрать - ставьте 777).&lt;br /&gt;
&lt;br /&gt;
Права на сам файл installer.php должны быть такими, чтобы php мог его переписать.&lt;br /&gt;
&lt;br /&gt;
Инсталлятор обращается к внешним ресурсам для скачивания необходимых файлов и проверки аутентификационных данных. На хостинге для консольного php должны быть разрешены исходящие соединения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Файл install.ini с настройками для установки конкретного сайта:&lt;br /&gt;
&lt;br /&gt;
Скачать пример этого файла можно по ссылке:&lt;br /&gt;
http://www.umi-cms.ru/install/files/hosters/install.ini&lt;br /&gt;
&lt;br /&gt;
Права на файл install.ini должны быть такими, чтобы php мог его переписать. Файл install.ini должен быть помещён в ту же директорию, где находится installer.php, до начала установки. После установки его рекомендуется удалять.&lt;br /&gt;
&lt;br /&gt;
В файле указаны доступы к базе данных. Перед началом установки она уже должна существовать. Рекомендуется, чтобы она была пустая.&lt;br /&gt;
&lt;br /&gt;
Если вы уже пользовались консольным установщиком UMI.CMS, то многие параметры менять не потребуется. Просто проверьте их корректность и правильный синтаксис. Подробная инструкция ниже.&lt;br /&gt;
&lt;br /&gt;
Файл должен быть сохранен в кодировке utf-8. Значения параметров, содержащие не латинские символы, а также спецсимволы необходимо брать в двойные кавычки &amp;quot;&amp;quot;; (например, пароль)&lt;br /&gt;
&lt;br /&gt;
Пример файла:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
;=======================================================&lt;br /&gt;
;= инструкции для инсталлятора umi.cms в режиме CLI&lt;br /&gt;
;= Обязательные секции и их опции отмечены *&lt;br /&gt;
;=======================================================&lt;br /&gt;
&lt;br /&gt;
; информация о PHP &lt;br /&gt;
[SERVER]&lt;br /&gt;
; phppath=/usr/local/bin/php - больше не используется.&lt;br /&gt;
; phpini=/etc/php5/cli/php.ini - больше не используется.&lt;br /&gt;
 &lt;br /&gt;
;Информация о лицензии *&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
;Информация о лицензии *&lt;br /&gt;
[LICENSE]&lt;br /&gt;
domain=example.com		; доменное имя *&lt;br /&gt;
ip=127.0.1.7			; ip - адрес *&lt;br /&gt;
key=*-*-*			; лицензионный ключ *&lt;br /&gt;
 &lt;br /&gt;
;Доступ к базе данных. *&lt;br /&gt;
;База данных должна быть создана&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
[DB]&lt;br /&gt;
host=localhost			; имя хоста *&lt;br /&gt;
user=root			; логин *&lt;br /&gt;
password=&amp;quot;;\pass;&amp;quot;		; пароль *&lt;br /&gt;
dbname=installer		; имя базы *&lt;br /&gt;
&lt;br /&gt;
;Информация о супервайзере *&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
[SUPERVISOR]&lt;br /&gt;
login=sv			; логин для входа в админку *&lt;br /&gt;
password=&amp;quot;1&amp;quot;			; пароль *&lt;br /&gt;
lname=Installer			; фамилия&lt;br /&gt;
fname=cli			; имя&lt;br /&gt;
mname=Vasilievich		; отчество&lt;br /&gt;
&lt;br /&gt;
[BRAND]&lt;br /&gt;
;Ссылка &amp;quot;Купить UMI.CMS&amp;quot;&lt;br /&gt;
buy-lbl=&amp;quot;Купить UMI.CMS&amp;quot;	; Текст ссылки&lt;br /&gt;
buy-link=&amp;quot;http://www.umi-cms.ru/purchase/how-to-buy/&amp;quot; ; Ru URL&lt;br /&gt;
en-buy-lbl=&amp;quot;Buy UMI.CMS&amp;quot;	; Link text&lt;br /&gt;
en-buy-link=&amp;quot;http://www.umi-cms.ru/purchase/how-to-buy/&amp;quot; ; En URL&lt;br /&gt;
&lt;br /&gt;
[BACKUP]&lt;br /&gt;
mode = &amp;quot;none&amp;quot; ; all или none&lt;br /&gt;
&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;_blank&amp;quot;		; Имя предустановленного демо-сайта (demomarket,demodizzy,demohunt,demoold,demooldschool,_blank)&lt;br /&gt;
&lt;br /&gt;
[SETUP]&lt;br /&gt;
sleep=500		; Время простоя для снижения нагрузки на сервер. Указывается в миллисекундах. Одна миллисекунда - одна тясячная одной секунды (500 = полсекунды)&lt;br /&gt;
download_by=1024	; Размер запрашиваемого пакета с сервера обновлений. Указывается в килобайтах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно: процесс установки с дефолтными значениями специально замедлен для слабых хостингов, поэтому с ними система может ставиться долго. Используйте следующие параметры для более быстрой установки или (наоборот) для экономии ресурсов сервера:&lt;br /&gt;
&lt;br /&gt;
[SETUP]&lt;br /&gt;
sleep=1 ; Пауза между запросами в миллисекундах, чем меньше - тем быстрее.&lt;br /&gt;
download_by=1024 ; Размер запрашиваемого пакета с сервера обновлений. Указывается в килобайтах, чем больше - тем быстрее.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Выбор соответствующего демо-сайта для установки:&lt;br /&gt;
&lt;br /&gt;
Консольный установщик может устанавливать любой из демо-сайтов UMI.CMS, с учётом ограничений, описанных далее. Примеры этих сайтов можно увидеть по ссылке: http://demo.umi-cms.ru/ . Демо-сайт государственной организации (Gov) в настоящее время автоматически не устанавливается.&lt;br /&gt;
&lt;br /&gt;
Клиент вправе выбирать любой демо-сайт для любой редакции UMI.CMS. Однако следует учесть, что некоторые демосайты (например интернет-магазины) неразумно использовать для младших редакций, в которых нет соответствующих модулей (например модуля магазина). Но с другой стороны, если клиент докупил необходимые модули, то он сможет получить соответствующий демо-сайт (набор модулей определяется по лицензионному ключу). В силу этих причин установщик может выдать ошибку http://errors.umi-cms.ru/14022/ , если данный демосайт не подходит.&lt;br /&gt;
&lt;br /&gt;
Если хостер не предоставляет клиентам выбор демо-сайта (как в большинстве случаев, когда он предлагает только Commerce Trial), то рекомендуется использовать следующие:&lt;br /&gt;
&lt;br /&gt;
Для редакции Commerce Trial:&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;demomarket&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Либо сайт без шаблонов (не рекомендуется):&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;_blank&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Персональный гейт для выдачи лицензионных ключей UMI.CMS:&lt;br /&gt;
&lt;br /&gt;
Со стороны компании &amp;quot;Юмисофт&amp;quot; существует специальный гейт, выдающий лицензионные ключи необходимого типа (Commerce Trial). При регистрации хостера на гейте ему выдаётся уникальный идентификатор (ID), а также инструкции, куда отсылать запросы на получение лицензионных ключей.&lt;br /&gt;
&lt;br /&gt;
Если вы уже пользуетесь таким гейтом, то в 99% случаев вам не нужно ничего менять.&lt;br /&gt;
&lt;br /&gt;
Если вы НЕ регистрировались на этом гейте и НЕ получали свой уникальный ID, обратитесь на partner@umisoft.ru за ним. Полученный ID нужно будет использовать в запросе лицензионных ключей UMI.CMS (см. ниже).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Инструкция:&lt;br /&gt;
&lt;br /&gt;
* Загрузите файл installer.php в корень сервера ([[DOCUMENT_ROOT]]) &lt;br /&gt;
* Создайте файл install.ini в ([[DOCUMENT_ROOT]]), укажите в нем все необходимые данные. Кодировка файла utf-8&lt;br /&gt;
* Зайдите на сервер по [[ssh]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	ssh example.com -llogin&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Сделайте корневую директорию сервера ([[DOCUMENT_ROOT]]) текущей.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	cd /home/www/example.com/htdocs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Запустите инсталлятор&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	php -f installer.php&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если консольный инсталлятор потребляет слишком много ресурсов сервера (процессор, память и т.д.) - обратитесь к специальным настройкам install.ini, позволяющих умерить их потребление. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Коды ошибок:&lt;br /&gt;
&lt;br /&gt;
Практически все коды доступны по ссылке вида http://errors.umi-cms.ru/15000/&lt;br /&gt;
где 15000 - числовой код ошибки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Справочная информация:&lt;br /&gt;
&lt;br /&gt;
Описание гейта для выдачи ключей:&lt;br /&gt;
&lt;br /&gt;
Хостер должен получать очередной ключ на каждый очередной экземпляр системы, устанавливаемой клиенту. Для получения ключа нужно обращаться по URL:&lt;br /&gt;
&lt;br /&gt;
для редакции Commerce Trial:&lt;br /&gt;
http://updateserver.umihost.ru/udata/custom/generateLicenseGate/SFNUFTDJYFT/client@email.ru/FirstName/LastName/client.domain.ru/client.ip.address/trial&lt;br /&gt;
&lt;br /&gt;
SFNUFTDJYFT - пример уникального ID вашего хостинга (см. выше про выдачу ключа персонального гейта)&lt;br /&gt;
следующие параметры по порядку:&lt;br /&gt;
e-mail клиента&lt;br /&gt;
имя клиента&lt;br /&gt;
фамилия клиента&lt;br /&gt;
домен клиента&lt;br /&gt;
IP-адрес, на котором расположен сайт с этим доменом&lt;br /&gt;
&lt;br /&gt;
В результате выполнения этого запроса вы получаете XML-данные. Из них вам нужно извлечь значение параметра &amp;quot;domain-keycode&amp;quot; - это доменный ключ, который нужно записать в файл install.ini для инсталлятора UMI.CMS. После этого запустить инсталлятор.&lt;br /&gt;
[[Категория:Вопросы установки настройки и переноса]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_(%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8)&amp;diff=9006</id>
		<title>Установка из консоли (командной строки)</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_(%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8)&amp;diff=9006"/>
		<updated>2019-02-05T14:16:12Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Для установки потребуется:&lt;br /&gt;
&lt;br /&gt;
0) Соответствие сервера системным требованиям UMI.CMS:&lt;br /&gt;
&lt;br /&gt;
Ознакомиться с ними можно по ссылке:&lt;br /&gt;
http://www.umi-cms.ru/support/umi_cms_system_requirements/&lt;br /&gt;
&lt;br /&gt;
Консольный инсталлятор проверяет соответствие системным требованиям при установке. Если вы используете отдельно консольный php и отдельно модуль apache - обратите внимание, что требования должны соблюдаться для обоих из них (иногда они используют разные конфигурационные файлы).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Консольный инсталлятор:&lt;br /&gt;
&lt;br /&gt;
Скачать его можно по ссылке:&lt;br /&gt;
[[Файл:Installer.zip]]&lt;br /&gt;
&lt;br /&gt;
Файл installer.php должен быть помещён в корневую директорию сайта, на который производится установка UMI.CMS. Рекомендуется, чтобы эта директория была пустой. Необходимо чтобы она имела права на чтение и запись из php (если затрудняетесь выбрать - ставьте 777).&lt;br /&gt;
&lt;br /&gt;
Права на сам файл installer.php должны быть такими, чтобы php мог его переписать.&lt;br /&gt;
&lt;br /&gt;
Инсталлятор обращается к внешним ресурсам для скачивания необходимых файлов и проверки аутентификационных данных. На хостинге для консольного php должны быть разрешены исходящие соединения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Файл install.ini с настройками для установки конкретного сайта:&lt;br /&gt;
&lt;br /&gt;
Скачать пример этого файла можно по ссылке:&lt;br /&gt;
http://www.umi-cms.ru/install/files/hosters/install.ini&lt;br /&gt;
&lt;br /&gt;
Права на файл install.ini должны быть такими, чтобы php мог его переписать. Файл install.ini должен быть помещён в ту же директорию, где находится installer.php, до начала установки. После установки его рекомендуется удалять.&lt;br /&gt;
&lt;br /&gt;
В файле указаны доступы к базе данных. Перед началом установки она уже должна существовать. Рекомендуется, чтобы она была пустая.&lt;br /&gt;
&lt;br /&gt;
Если вы уже пользовались консольным установщиком UMI.CMS, то многие параметры менять не потребуется. Просто проверьте их корректность и правильный синтаксис. Подробная инструкция ниже.&lt;br /&gt;
&lt;br /&gt;
Файл должен быть сохранен в кодировке utf-8. Значения параметров, содержащие не латинские символы, а также спецсимволы необходимо брать в двойные кавычки &amp;quot;&amp;quot;; (например, пароль)&lt;br /&gt;
&lt;br /&gt;
Пример файла:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
;=======================================================&lt;br /&gt;
;= инструкции для инсталлятора umi.cms в режиме CLI&lt;br /&gt;
;= Обязательные секции и их опции отмечены *&lt;br /&gt;
;=======================================================&lt;br /&gt;
&lt;br /&gt;
; информация о PHP &lt;br /&gt;
[SERVER]&lt;br /&gt;
; phppath=/usr/local/bin/php - больше не используется.&lt;br /&gt;
; phpini=/etc/php5/cli/php.ini - больше не используется.&lt;br /&gt;
 &lt;br /&gt;
;Информация о лицензии *&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
;Информация о лицензии *&lt;br /&gt;
[LICENSE]&lt;br /&gt;
domain=example.com		; доменное имя *&lt;br /&gt;
ip=127.0.1.7			; ip - адрес *&lt;br /&gt;
key=*-*-*			; лицензионный ключ *&lt;br /&gt;
 &lt;br /&gt;
;Доступ к базе данных. *&lt;br /&gt;
;База данных должна быть создана&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
[DB]&lt;br /&gt;
host=localhost			; имя хоста *&lt;br /&gt;
user=root			; логин *&lt;br /&gt;
password=&amp;quot;;\pass;&amp;quot;		; пароль *&lt;br /&gt;
dbname=installer		; имя базы *&lt;br /&gt;
&lt;br /&gt;
;Информация о супервайзере *&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
[SUPERVISOR]&lt;br /&gt;
login=sv			; логин для входа в админку *&lt;br /&gt;
password=&amp;quot;1&amp;quot;			; пароль *&lt;br /&gt;
lname=Installer			; фамилия&lt;br /&gt;
fname=cli			; имя&lt;br /&gt;
mname=Vasilievich		; отчество&lt;br /&gt;
&lt;br /&gt;
[BRAND]&lt;br /&gt;
;Ссылка &amp;quot;Купить UMI.CMS&amp;quot;&lt;br /&gt;
buy-lbl=&amp;quot;Купить UMI.CMS&amp;quot;	; Текст ссылки&lt;br /&gt;
buy-link=&amp;quot;http://www.umi-cms.ru/purchase/how-to-buy/&amp;quot; ; Ru URL&lt;br /&gt;
en-buy-lbl=&amp;quot;Buy UMI.CMS&amp;quot;	; Link text&lt;br /&gt;
en-buy-link=&amp;quot;http://www.umi-cms.ru/purchase/how-to-buy/&amp;quot; ; En URL&lt;br /&gt;
&lt;br /&gt;
[BACKUP]&lt;br /&gt;
mode = &amp;quot;none&amp;quot; ; all или none&lt;br /&gt;
&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;_blank&amp;quot;		; Имя предустановленного демо-сайта (demomarket,demodizzy,demohunt,demoold,demooldschool,_blank)&lt;br /&gt;
&lt;br /&gt;
[SETUP]&lt;br /&gt;
sleep=500		; Время простоя для снижения нагрузки на сервер. Указывается в миллисекундах. Одна миллисекунда - одна тясячная одной секунды (500 = полсекунды)&lt;br /&gt;
download_by=1024	; Размер запрашиваемого пакета с сервера обновлений. Указывается в килобайтах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно: процесс установки с дефолтными значениями специально замедлен для слабых хостингов, поэтому с ними система может ставиться долго. Используйте следующие параметры для более быстрой установки или (наоборот) для экономии ресурсов сервера:&lt;br /&gt;
&lt;br /&gt;
[SETUP]&lt;br /&gt;
sleep=1 ; Пауза между запросами в миллисекундах, чем меньше - тем быстрее.&lt;br /&gt;
download_by=1024 ; Размер запрашиваемого пакета с сервера обновлений. Указывается в килобайтах, чем больше - тем быстрее.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Выбор соответствующего демо-сайта для установки:&lt;br /&gt;
&lt;br /&gt;
Консольный установщик может устанавливать любой из демо-сайтов UMI.CMS, с учётом ограничений, описанных далее. Примеры этих сайтов можно увидеть по ссылке: http://demo.umi-cms.ru/ . Демо-сайт государственной организации (Gov) в настоящее время автоматически не устанавливается.&lt;br /&gt;
&lt;br /&gt;
Клиент вправе выбирать любой демо-сайт для любой редакции UMI.CMS. Однако следует учесть, что некоторые демосайты (например интернет-магазины) неразумно использовать для младших редакций, в которых нет соответствующих модулей (например модуля магазина). Но с другой стороны, если клиент докупил необходимые модули, то он сможет получить соответствующий демо-сайт (набор модулей определяется по лицензионному ключу). В силу этих причин установщик может выдать ошибку http://errors.umi-cms.ru/14022/ , если данный демосайт не подходит.&lt;br /&gt;
&lt;br /&gt;
Если хостер не предоставляет клиентам выбор демо-сайта (как в большинстве случаев, когда он предлагает только Commerce Trial), то рекомендуется использовать следующие:&lt;br /&gt;
&lt;br /&gt;
Для редакции Commerce Trial:&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;demomarket&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Либо сайт без шаблонов (не рекомендуется):&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;_blank&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Персональный гейт для выдачи лицензионных ключей UMI.CMS:&lt;br /&gt;
&lt;br /&gt;
Со стороны компании &amp;quot;Юмисофт&amp;quot; существует специальный гейт, выдающий лицензионные ключи необходимого типа (Commerce Trial). При регистрации хостера на гейте ему выдаётся уникальный идентификатор (ID), а также инструкции, куда отсылать запросы на получение лицензионных ключей.&lt;br /&gt;
&lt;br /&gt;
Если вы уже пользуетесь таким гейтом, то в 99% случаев вам не нужно ничего менять.&lt;br /&gt;
&lt;br /&gt;
Если вы НЕ регистрировались на этом гейте и НЕ получали свой уникальный ID, обратитесь на partner@umisoft.ru за ним. Полученный ID нужно будет использовать в запросе лицензионных ключей UMI.CMS (см. ниже).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Инструкция:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Загрузите файл installer.php в корень сервера ([[DOCUMENT_ROOT]]) &lt;br /&gt;
* Создайте файл install.ini в ([[DOCUMENT_ROOT]]), укажите в нем все необходимые данные. Кодировка файла utf-8&lt;br /&gt;
* Зайдите на сервер по [[ssh]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	ssh example.com -llogin&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Сделайте корневую директорию сервера ([[DOCUMENT_ROOT]]) текущей.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	cd /home/www/example.com/htdocs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Запустите инсталлятор&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	php -f installer.php&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если консольный инсталлятор потребляет слишком много ресурсов сервера (процессор, память и т.д.) - обратитесь к специальным настройкам install.ini, позволяющих умерить их потребление. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Коды ошибок:&lt;br /&gt;
&lt;br /&gt;
Практически все коды доступны по ссылке вида http://errors.umi-cms.ru/15000/&lt;br /&gt;
где 15000 - числовой код ошибки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Справочная информация:&lt;br /&gt;
&lt;br /&gt;
Описание гейта для выдачи ключей:&lt;br /&gt;
&lt;br /&gt;
Хостер должен получать очередной ключ на каждый очередной экземпляр системы, устанавливаемой клиенту. Для получения ключа нужно обращаться по URL:&lt;br /&gt;
&lt;br /&gt;
для редакции Commerce Trial:&lt;br /&gt;
http://updateserver.umihost.ru/udata/custom/generateLicenseGate/SFNUFTDJYFT/client@email.ru/FirstName/LastName/client.domain.ru/client.ip.address/trial&lt;br /&gt;
&lt;br /&gt;
SFNUFTDJYFT - пример уникального ID вашего хостинга (см. выше про выдачу ключа персонального гейта)&lt;br /&gt;
следующие параметры по порядку:&lt;br /&gt;
e-mail клиента&lt;br /&gt;
имя клиента&lt;br /&gt;
фамилия клиента&lt;br /&gt;
домен клиента&lt;br /&gt;
IP-адрес, на котором расположен сайт с этим доменом&lt;br /&gt;
&lt;br /&gt;
В результате выполнения этого запроса вы получаете XML-данные. Из них вам нужно извлечь значение параметра &amp;quot;domain-keycode&amp;quot; - это доменный ключ, который нужно записать в файл install.ini для инсталлятора UMI.CMS. После этого запустить инсталлятор.&lt;br /&gt;
[[Категория:Вопросы установки настройки и переноса]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_(%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8)&amp;diff=9005</id>
		<title>Установка из консоли (командной строки)</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_(%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8)&amp;diff=9005"/>
		<updated>2019-02-05T14:15:22Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Для установки потребуется:&lt;br /&gt;
&lt;br /&gt;
0) Соответствие сервера системным требованиям UMI.CMS:&lt;br /&gt;
&lt;br /&gt;
Ознакомиться с ними можно по ссылке:&lt;br /&gt;
http://www.umi-cms.ru/support/umi_cms_system_requirements/&lt;br /&gt;
&lt;br /&gt;
Консольный инсталлятор проверяет соответствие системным требованиям при установке. Если вы используете отдельно консольный php и отдельно модуль apache - обратите внимание, что требования должны соблюдаться для обоих из них (иногда они используют разные конфигурационные файлы).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Консольный инсталлятор:&lt;br /&gt;
&lt;br /&gt;
Скачать его можно по ссылке:&lt;br /&gt;
[[Файл:Installer.zip]]&lt;br /&gt;
&lt;br /&gt;
Файл installer.php должен быть помещён в корневую директорию сайта, на который производится установка UMI.CMS. Рекомендуется, чтобы эта директория была пустой. Необходимо чтобы она имела права на чтение и запись из php (если затрудняетесь выбрать - ставьте 777).&lt;br /&gt;
&lt;br /&gt;
Права на сам файл installer.php должны быть такими, чтобы php мог его переписать.&lt;br /&gt;
&lt;br /&gt;
Инсталлятор обращается к внешним ресурсам для скачивания необходимых файлов и проверки аутентификационных данных. На хостинге для консольного php должны быть разрешены исходящие соединения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Файл install.ini с настройками для установки конкретного сайта:&lt;br /&gt;
&lt;br /&gt;
Скачать пример этого файла можно по ссылке:&lt;br /&gt;
http://www.umi-cms.ru/install/files/hosters/install.ini&lt;br /&gt;
&lt;br /&gt;
Права на файл install.ini должны быть такими, чтобы php мог его переписать. Файл install.ini должен быть помещён в ту же директорию, где находится installer.php, до начала установки. После установки его рекомендуется удалять.&lt;br /&gt;
&lt;br /&gt;
В файле указаны доступы к базе данных. Перед началом установки она уже должна существовать. Рекомендуется, чтобы она была пустая.&lt;br /&gt;
&lt;br /&gt;
Если вы уже пользовались консольным установщиком UMI.CMS, то многие параметры менять не потребуется. Просто проверьте их корректность и правильный синтаксис. Подробная инструкция ниже.&lt;br /&gt;
&lt;br /&gt;
Файл должен быть сохранен в кодировке utf-8. Значения параметров, содержащие не латинские символы, а также спецсимволы необходимо брать в двойные кавычки &amp;quot;&amp;quot;; (например, пароль)&lt;br /&gt;
&lt;br /&gt;
Пример файла:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
;=======================================================&lt;br /&gt;
;= инструкции для инсталлятора umi.cms в режиме CLI&lt;br /&gt;
;= Обязательные секции и их опции отмечены *&lt;br /&gt;
;=======================================================&lt;br /&gt;
&lt;br /&gt;
; информация о PHP &lt;br /&gt;
[SERVER]&lt;br /&gt;
; phppath=/usr/local/bin/php - больше не используется.&lt;br /&gt;
; phpini=/etc/php5/cli/php.ini - больше не используется.&lt;br /&gt;
 &lt;br /&gt;
;Информация о лицензии *&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
;Информация о лицензии *&lt;br /&gt;
[LICENSE]&lt;br /&gt;
domain=example.com		; доменное имя *&lt;br /&gt;
ip=127.0.1.7			; ip - адрес *&lt;br /&gt;
key=*-*-*			; лицензионный ключ *&lt;br /&gt;
 &lt;br /&gt;
;Доступ к базе данных. *&lt;br /&gt;
;База данных должна быть создана&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
[DB]&lt;br /&gt;
host=localhost			; имя хоста *&lt;br /&gt;
user=root			; логин *&lt;br /&gt;
password=&amp;quot;;\pass;&amp;quot;		; пароль *&lt;br /&gt;
dbname=installer		; имя базы *&lt;br /&gt;
&lt;br /&gt;
;Информация о супервайзере *&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
[SUPERVISOR]&lt;br /&gt;
login=sv			; логин для входа в админку *&lt;br /&gt;
password=&amp;quot;1&amp;quot;			; пароль *&lt;br /&gt;
lname=Installer			; фамилия&lt;br /&gt;
fname=cli			; имя&lt;br /&gt;
mname=Vasilievich		; отчество&lt;br /&gt;
&lt;br /&gt;
[BRAND]&lt;br /&gt;
;Ссылка &amp;quot;Купить UMI.CMS&amp;quot;&lt;br /&gt;
buy-lbl=&amp;quot;Купить UMI.CMS&amp;quot;	; Текст ссылки&lt;br /&gt;
buy-link=&amp;quot;http://www.umi-cms.ru/purchase/how-to-buy/&amp;quot; ; Ru URL&lt;br /&gt;
en-buy-lbl=&amp;quot;Buy UMI.CMS&amp;quot;	; Link text&lt;br /&gt;
en-buy-link=&amp;quot;http://www.umi-cms.ru/purchase/how-to-buy/&amp;quot; ; En URL&lt;br /&gt;
&lt;br /&gt;
[BACKUP]&lt;br /&gt;
mode = &amp;quot;none&amp;quot; ; all или none&lt;br /&gt;
&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;_blank&amp;quot;		; Имя предустановленного демо-сайта (demomarket,demodizzy,demohunt,demoold,demooldschool,_blank)&lt;br /&gt;
&lt;br /&gt;
[SETUP]&lt;br /&gt;
sleep=500		; Время простоя для снижения нагрузки на сервер. Указывается в миллисекундах. Одна миллисекунда - одна тясячная одной секунды (500 = полсекунды)&lt;br /&gt;
download_by=1024	; Размер запрашиваемого пакета с сервера обновлений. Указывается в килобайтах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно: процесс установки с дефолтными значениями специально замедлен для слабых хостингов, поэтому с ними система может ставиться долго. Используйте следующие параметры для более быстрой установки или (наоборот) для экономии ресурсов сервера:&lt;br /&gt;
&lt;br /&gt;
[SETUP]&lt;br /&gt;
sleep=1 ; Пауза между запросами в миллисекундах, чем меньше - тем быстрее.&lt;br /&gt;
download_by=1024 ; Размер запрашиваемого пакета с сервера обновлений. Указывается в килобайтах, чем больше - тем быстрее.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Выбор соответствующего демо-сайта для установки:&lt;br /&gt;
&lt;br /&gt;
Консольный установщик может устанавливать любой из демо-сайтов UMI.CMS, с учётом ограничений, описанных далее. Примеры этих сайтов можно увидеть по ссылке: http://demo.umi-cms.ru/ . Демо-сайт государственной организации (Gov) в настоящее время автоматически не устанавливается.&lt;br /&gt;
&lt;br /&gt;
Клиент вправе выбирать любой демо-сайт для любой редакции UMI.CMS. Однако следует учесть, что некоторые демосайты (например интернет-магазины) неразумно использовать для младших редакций, в которых нет соответствующих модулей (например модуля магазина). Но с другой стороны, если клиент докупил необходимые модули, то он сможет получить соответствующий демо-сайт (набор модулей определяется по лицензионному ключу). В силу этих причин установщик может выдать ошибку http://errors.umi-cms.ru/14022/ , если данный демосайт не подходит.&lt;br /&gt;
&lt;br /&gt;
Если хостер не предоставляет клиентам выбор демо-сайта (как в большинстве случаев, когда он предлагает только Commerce Trial), то рекомендуется использовать следующие:&lt;br /&gt;
&lt;br /&gt;
Для редакции Commerce Trial:&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;demomarket&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Либо сайт без шаблонов (не рекомендуется):&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;_blank&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Персональный гейт для выдачи лицензионных ключей UMI.CMS:&lt;br /&gt;
&lt;br /&gt;
Со стороны компании &amp;quot;Юмисофт&amp;quot; существует специальный гейт, выдающий лицензионные ключи необходимого типа (Commerce Trial). При регистрации хостера на гейте ему выдаётся уникальный идентификатор (ID), а так же инструкции куда отсылать запросы на получение лицензионных ключей.&lt;br /&gt;
&lt;br /&gt;
Если вы уже пользуетесь таким гейтом, то в 99% случаев вам не нужно ничего менять.&lt;br /&gt;
&lt;br /&gt;
Если вы НЕ регистрировались на этом гейте и НЕ получали свой уникальный ID, обратитесь на partner@umisoft.ru за ним. Полученный ID нужно будет использовать в запросе лицензионных ключей UMI.CMS (см. ниже).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Инструкция:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Загрузите файл installer.php в корень сервера ([[DOCUMENT_ROOT]]) &lt;br /&gt;
* Создайте файл install.ini в ([[DOCUMENT_ROOT]]), укажите в нем все необходимые данные. Кодировка файла utf-8&lt;br /&gt;
* Зайдите на сервер по [[ssh]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	ssh example.com -llogin&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Сделайте корневую директорию сервера ([[DOCUMENT_ROOT]]) текущей.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	cd /home/www/example.com/htdocs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Запустите инсталлятор&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	php -f installer.php&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если консольный инсталлятор потребляет слишком много ресурсов сервера (процессор, память и т.д.) - обратитесь к специальным настройкам install.ini, позволяющих умерить их потребление. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Коды ошибок:&lt;br /&gt;
&lt;br /&gt;
Практически все коды доступны по ссылке вида http://errors.umi-cms.ru/15000/&lt;br /&gt;
где 15000 - числовой код ошибки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Справочная информация:&lt;br /&gt;
&lt;br /&gt;
Описание гейта для выдачи ключей:&lt;br /&gt;
&lt;br /&gt;
Хостер должен получать очередной ключ на каждый очередной экземпляр системы, устанавливаемой клиенту. Для получения ключа нужно обращаться по URL:&lt;br /&gt;
&lt;br /&gt;
для редакции Commerce Trial:&lt;br /&gt;
http://updateserver.umihost.ru/udata/custom/generateLicenseGate/SFNUFTDJYFT/client@email.ru/FirstName/LastName/client.domain.ru/client.ip.address/trial&lt;br /&gt;
&lt;br /&gt;
SFNUFTDJYFT - пример уникального ID вашего хостинга (см. выше про выдачу ключа персонального гейта)&lt;br /&gt;
следующие параметры по порядку:&lt;br /&gt;
e-mail клиента&lt;br /&gt;
имя клиента&lt;br /&gt;
фамилия клиента&lt;br /&gt;
домен клиента&lt;br /&gt;
IP-адрес, на котором расположен сайт с этим доменом&lt;br /&gt;
&lt;br /&gt;
В результате выполнения этого запроса вы получаете XML-данные. Из них вам нужно извлечь значение параметра &amp;quot;domain-keycode&amp;quot; - это доменный ключ, который нужно записать в файл install.ini для инсталлятора UMI.CMS. После этого запустить инсталлятор.&lt;br /&gt;
[[Категория:Вопросы установки настройки и переноса]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_(%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8)&amp;diff=9004</id>
		<title>Установка из консоли (командной строки)</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_(%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8)&amp;diff=9004"/>
		<updated>2019-02-05T14:08:26Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Для установки потребуется:&lt;br /&gt;
&lt;br /&gt;
0) Соответствие сервера системным требованиям UMI.CMS:&lt;br /&gt;
&lt;br /&gt;
Ознакомиться с ними можно по ссылке:&lt;br /&gt;
http://www.umi-cms.ru/support/umi_cms_system_requirements/&lt;br /&gt;
&lt;br /&gt;
Консольный инсталлятор проверяет соответствие системным требованиям при установке. Если вы используете отдельно консольный php и отдельно модуль apache - обратите внимание, что требования должны соблюдаться для обоих из них (иногда они используют разные конфигурационные файлы).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Консольный инсталлятор:&lt;br /&gt;
&lt;br /&gt;
Скачать его можно по ссылке:&lt;br /&gt;
[[Файл:Installer.zip]]&lt;br /&gt;
&lt;br /&gt;
Файл installer.php должен быть помещён в корневую директорию сайта, на который производится установка UMI.CMS. Рекомендуется, чтобы эта директория была пустой. Необходимо чтобы она имела права на чтение и запись из php (если затрудняетесь выбрать - ставьте 777).&lt;br /&gt;
&lt;br /&gt;
Права на сам файл installer.php должны быть такими, чтобы php мог его переписать.&lt;br /&gt;
&lt;br /&gt;
Инсталлятор обращается к внешним ресурсам для скачивания необходимых файлов и проверки аутентификационных данных. На хостинге для консольного php должны быть разрешены исходящие соединения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Файл install.ini с настройками для установки конкретного сайта:&lt;br /&gt;
&lt;br /&gt;
Скачать пример этого файла можно по ссылке:&lt;br /&gt;
http://www.umi-cms.ru/install/files/hosters/install.ini&lt;br /&gt;
&lt;br /&gt;
Права на файл install.ini должны быть такими, чтобы php мог его переписать. Файл install.ini должен быть помещён в ту же директорию, где находится installer.php, до начала установки. После установки его рекомендуется удалять.&lt;br /&gt;
&lt;br /&gt;
В файле указаны доступы к базе данных. Перед началом установки она уже должна существовать. Рекомендуется, чтобы она была пустая.&lt;br /&gt;
&lt;br /&gt;
Если вы уже пользовались консольным установщиком UMI.CMS, то многие параметры менять не потребуется. Просто проверьте их корректность и правильный синтаксис. Подробная инструкция ниже.&lt;br /&gt;
&lt;br /&gt;
Файл должен быть сохранен в кодировке utf-8. Значения параметров, содержащие не латинские символы, а также спецсимволы необходимо брать в двойные кавычки &amp;quot;&amp;quot;; (например, пароль)&lt;br /&gt;
&lt;br /&gt;
Пример файла:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
;=======================================================&lt;br /&gt;
;= инструкции для инсталлятора umi.cms в режиме CLI&lt;br /&gt;
;= Обязательные секции и их опции отмечены *&lt;br /&gt;
;=======================================================&lt;br /&gt;
&lt;br /&gt;
; информация о PHP &lt;br /&gt;
[SERVER]&lt;br /&gt;
; phppath=/usr/local/bin/php - больше не используется.&lt;br /&gt;
; phpini=/etc/php5/cli/php.ini - больше не используется.&lt;br /&gt;
 &lt;br /&gt;
;Информация о лицензии *&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
;Информация о лицензии *&lt;br /&gt;
[LICENSE]&lt;br /&gt;
domain=example.com		; доменное имя *&lt;br /&gt;
ip=127.0.1.7			; ip - адрес *&lt;br /&gt;
key=*-*-*			; лицензионный ключ *&lt;br /&gt;
 &lt;br /&gt;
;Доступ к базе данных. *&lt;br /&gt;
;База данных должна быть создана&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
[DB]&lt;br /&gt;
host=localhost			; имя хоста *&lt;br /&gt;
user=root			; логин *&lt;br /&gt;
password=&amp;quot;;\pass;&amp;quot;		; пароль *&lt;br /&gt;
dbname=installer		; имя базы *&lt;br /&gt;
&lt;br /&gt;
;Информация о супервайзере *&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
[SUPERVISOR]&lt;br /&gt;
login=sv			; логин для входа в админку *&lt;br /&gt;
password=&amp;quot;1&amp;quot;			; пароль *&lt;br /&gt;
lname=Installer			; фамилия&lt;br /&gt;
fname=cli			; имя&lt;br /&gt;
mname=Vasilievich		; отчество&lt;br /&gt;
&lt;br /&gt;
[BRAND]&lt;br /&gt;
;Ссылка &amp;quot;Купить UMI.CMS&amp;quot;&lt;br /&gt;
buy-lbl=&amp;quot;Купить UMI.CMS&amp;quot;	; Текст ссылки&lt;br /&gt;
buy-link=&amp;quot;http://www.umi-cms.ru/purchase/how-to-buy/&amp;quot; ; Ru URL&lt;br /&gt;
en-buy-lbl=&amp;quot;Buy UMI.CMS&amp;quot;	; Link text&lt;br /&gt;
en-buy-link=&amp;quot;http://www.umi-cms.ru/purchase/how-to-buy/&amp;quot; ; En URL&lt;br /&gt;
&lt;br /&gt;
[BACKUP]&lt;br /&gt;
mode = &amp;quot;none&amp;quot; ; all или none&lt;br /&gt;
&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;_blank&amp;quot;		; Имя предустановленного демо-сайта (demomarket,demodizzy,demohunt,demoold,demooldschool,_blank)&lt;br /&gt;
&lt;br /&gt;
[SETUP]&lt;br /&gt;
sleep=500		; Время простоя для снижения нагрузки на сервер. Указывается в миллисекундах. Одна миллисекунда - одна тясячная одной секунды (500 = полсекунды)&lt;br /&gt;
download_by=1024	; Размер запрашиваемого пакета с сервера обновлений. Указывается в килобайтах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно: процесс установки с дефолтными значениями специально замедлен для слабых хостингов, поэтому с ними система может ставиться долго. Используйте следующие параметры для более быстрой установки или (наоборот) для экономии ресурсов сервера:&lt;br /&gt;
&lt;br /&gt;
[SETUP]&lt;br /&gt;
sleep=1 ; Пауза между запросами в миллисекундах, чем меньше - тем быстрее.&lt;br /&gt;
download_by=1024 ; Размер запрашиваемого пакета с сервера обновлений. Указывается в килобайтах, чем больше - тем быстрее.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Выбор соответствующего демо-сайта для установки:&lt;br /&gt;
&lt;br /&gt;
Консольный установщик может устанавливать любой из демо-сайтов UMI.CMS, с учётом ограничений, описанных далее. Примеры этих сайтов можно увидеть по ссылке: http://demo.umi-cms.ru/ . Демо-сайт государственной организации (Gov) в настоящее время автоматически не устанавливается.&lt;br /&gt;
&lt;br /&gt;
Клиент вправе выбирать любой демо-сайт для любой редакции UMI.CMS. Однако следует учесть, что некоторые демосайты (например интернет-магазины) неразумно использовать для младших редакций, в которых нет соответствующих модулей (например модуля магазина). Но с другой стороны, если клиент докупил необходимые модули, то он сможет получить соответствующий демо-сайт (набор модулей определяется по лицензионному ключу). В силу этих причин установщик может выдать ошибку http://errors.umi-cms.ru/14022/ , если данный демосайт не подходит.&lt;br /&gt;
&lt;br /&gt;
Если хостер не предоставляет клиентам выбор демо-сайта (как в большинстве случаев, когда он предлагает только Commerce Trial), то рекомендуется использовать следующие:&lt;br /&gt;
&lt;br /&gt;
Для редакции Commerce Trial:&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;demodizzy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Либо сайт без шаблонов (не рекомендуется):&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;_blank&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Персональный гейт для выдачи лицензионных ключей UMI.CMS:&lt;br /&gt;
&lt;br /&gt;
Со стороны компании &amp;quot;Юмисофт&amp;quot; существует специальный гейт, выдающий лицензионные ключи необходимого типа (Commerce Trial). При регистрации хостера на гейте ему выдаётся уникальный идентификатор (ID), а так же инструкции куда отсылать запросы на получение лицензионных ключей.&lt;br /&gt;
&lt;br /&gt;
Если вы уже пользуетесь таким гейтом, то в 99% случаев вам не нужно ничего менять.&lt;br /&gt;
&lt;br /&gt;
Если вы НЕ регистрировались на этом гейте и НЕ получали свой уникальный ID, обратитесь на partner@umisoft.ru за ним. Полученный ID нужно будет использовать в запросе лицензионных ключей UMI.CMS (см. ниже).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Инструкция:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Загрузите файл installer.php в корень сервера ([[DOCUMENT_ROOT]]) &lt;br /&gt;
* Создайте файл install.ini в ([[DOCUMENT_ROOT]]), укажите в нем все необходимые данные. Кодировка файла utf-8&lt;br /&gt;
* Зайдите на сервер по [[ssh]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	ssh example.com -llogin&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Сделайте корневую директорию сервера ([[DOCUMENT_ROOT]]) текущей.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	cd /home/www/example.com/htdocs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Запустите инсталлятор&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	php -f installer.php&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если консольный инсталлятор потребляет слишком много ресурсов сервера (процессор, память и т.д.) - обратитесь к специальным настройкам install.ini, позволяющих умерить их потребление. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Коды ошибок:&lt;br /&gt;
&lt;br /&gt;
Практически все коды доступны по ссылке вида http://errors.umi-cms.ru/15000/&lt;br /&gt;
где 15000 - числовой код ошибки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Справочная информация:&lt;br /&gt;
&lt;br /&gt;
Описание гейта для выдачи ключей:&lt;br /&gt;
&lt;br /&gt;
Хостер должен получать очередной ключ на каждый очередной экземпляр системы, устанавливаемой клиенту. Для получения ключа нужно обращаться по URL:&lt;br /&gt;
&lt;br /&gt;
для редакции Commerce Trial:&lt;br /&gt;
http://updateserver.umihost.ru/udata/custom/generateLicenseGate/SFNUFTDJYFT/client@email.ru/FirstName/LastName/client.domain.ru/client.ip.address/trial&lt;br /&gt;
&lt;br /&gt;
SFNUFTDJYFT - пример уникального ID вашего хостинга (см. выше про выдачу ключа персонального гейта)&lt;br /&gt;
следующие параметры по порядку:&lt;br /&gt;
e-mail клиента&lt;br /&gt;
имя клиента&lt;br /&gt;
фамилия клиента&lt;br /&gt;
домен клиента&lt;br /&gt;
IP-адрес, на котором расположен сайт с этим доменом&lt;br /&gt;
&lt;br /&gt;
В результате выполнения этого запроса вы получаете XML-данные. Из них вам нужно извлечь значение параметра &amp;quot;domain-keycode&amp;quot; - это доменный ключ, который нужно записать в файл install.ini для инсталлятора UMI.CMS. После этого запустить инсталлятор.&lt;br /&gt;
[[Категория:Вопросы установки настройки и переноса]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_(%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8)&amp;diff=9003</id>
		<title>Установка из консоли (командной строки)</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_(%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8)&amp;diff=9003"/>
		<updated>2019-02-05T14:07:35Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Для установки потребуется:&lt;br /&gt;
&lt;br /&gt;
0) Соответствие сервера системным требованиям UMI.CMS:&lt;br /&gt;
&lt;br /&gt;
Ознакомиться с ними можно по ссылке:&lt;br /&gt;
http://www.umi-cms.ru/support/umi_cms_system_requirements/&lt;br /&gt;
&lt;br /&gt;
Консольный инсталлятор проверяет соответствие системным требованиям при установке. Если вы используете отдельно консольный php и отдельно модуль apache - обратите внимание, что требования должны соблюдаться для обоих из них (иногда они используют разные конфигурационные файлы).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Консольный инсталлятор:&lt;br /&gt;
&lt;br /&gt;
Скачать его можно по ссылке:&lt;br /&gt;
[[Файл:Installer.zip]]&lt;br /&gt;
&lt;br /&gt;
Файл installer.php должен быть помещён в корневую директорию сайта, на который производится установка UMI.CMS. Рекомендуется, чтобы эта директория была пустой. Необходимо чтобы она имела права на чтение и запись из php (если затрудняетесь выбрать - ставьте 777).&lt;br /&gt;
&lt;br /&gt;
Права на сам файл installer.php должны быть такими, чтобы php мог его переписать.&lt;br /&gt;
&lt;br /&gt;
Инсталлятор обращается к внешним ресурсам для скачивания необходимых файлов и проверки аутентификационных данных. На хостинге для консольного php должны быть разрешены исходящие соединения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Файл install.ini с настройками для установки конкретного сайта:&lt;br /&gt;
&lt;br /&gt;
Скачать пример этого файла можно по ссылке:&lt;br /&gt;
http://www.umi-cms.ru/install/files/hosters/install.ini&lt;br /&gt;
&lt;br /&gt;
Права на файл install.ini должны быть такими, чтобы php мог его переписать. Файл install.ini должен быть помещён в ту же директорию, где находится installer.php, до начала установки. После установки его рекомендуется удалять.&lt;br /&gt;
&lt;br /&gt;
В файле указаны доступы к базе данных. Перед началом установки она уже должна существовать. Рекомендуется, чтобы она была пустая.&lt;br /&gt;
&lt;br /&gt;
Если вы уже пользовались консольным установщиком UMI.CMS, то многие параметры менять не потребуется. Просто проверьте их корректность и правильный синтаксис. Подробная инструкция ниже.&lt;br /&gt;
&lt;br /&gt;
Файл должен быть сохранен в кодировке utf-8. Значения параметров, содержащие не латинские символы, а также спецсимволы необходимо брать в двойные кавычки &amp;quot;&amp;quot;; (например, пароль)&lt;br /&gt;
&lt;br /&gt;
Пример файла:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
;=======================================================&lt;br /&gt;
;= инструкции для инсталлятора umi.cms в режиме CLI&lt;br /&gt;
;= Обязательные секции и их опции отмечены *&lt;br /&gt;
;=======================================================&lt;br /&gt;
&lt;br /&gt;
; информация о PHP &lt;br /&gt;
[SERVER]&lt;br /&gt;
; phppath=/usr/local/bin/php - больше не используется.&lt;br /&gt;
; phpini=/etc/php5/cli/php.ini - больше не используется.&lt;br /&gt;
 &lt;br /&gt;
;Информация о лицензии *&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
;Информация о лицензии *&lt;br /&gt;
[LICENSE]&lt;br /&gt;
domain=example.com		; доменное имя *&lt;br /&gt;
ip=127.0.1.7			; ip - адрес *&lt;br /&gt;
key=*-*-*			; лицензионный ключ *&lt;br /&gt;
 &lt;br /&gt;
;Доступ к базе данных. *&lt;br /&gt;
;База данных должна быть создана&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
[DB]&lt;br /&gt;
host=localhost			; имя хоста *&lt;br /&gt;
user=root			; логин *&lt;br /&gt;
password=&amp;quot;;\pass;&amp;quot;		; пароль *&lt;br /&gt;
dbname=installer		; имя базы *&lt;br /&gt;
&lt;br /&gt;
;Информация о супервайзере *&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
[SUPERVISOR]&lt;br /&gt;
login=sv			; логин для входа в админку *&lt;br /&gt;
password=&amp;quot;1&amp;quot;			; пароль *&lt;br /&gt;
lname=Installer			; фамилия&lt;br /&gt;
fname=cli			; имя&lt;br /&gt;
mname=Vasilievich		; отчество&lt;br /&gt;
&lt;br /&gt;
[BRAND]&lt;br /&gt;
;Ссылка &amp;quot;Купить UMI.CMS&amp;quot;&lt;br /&gt;
buy-lbl=&amp;quot;Купить UMI.CMS&amp;quot;	; Текст ссылки&lt;br /&gt;
buy-link=&amp;quot;http://www.umi-cms.ru/purchase/how-to-buy/&amp;quot; ; Ru URL&lt;br /&gt;
en-buy-lbl=&amp;quot;Buy UMI.CMS&amp;quot;	; Link text&lt;br /&gt;
en-buy-link=&amp;quot;http://www.umi-cms.ru/purchase/how-to-buy/&amp;quot; ; En URL&lt;br /&gt;
&lt;br /&gt;
[BACKUP]&lt;br /&gt;
mode = &amp;quot;none&amp;quot; ; all или none&lt;br /&gt;
&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;_blank&amp;quot;		; Имя предустановленного демо-сайта (demodizzy,demohunt,demoold,demooldschool,_blank)&lt;br /&gt;
&lt;br /&gt;
[SETUP]&lt;br /&gt;
sleep=500		; Время простоя для снижения нагрузки на сервер. Указывается в миллисекундах. Одна миллисекунда - одна тясячная одной секунды (500 = полсекунды)&lt;br /&gt;
download_by=1024	; Размер запрашиваемого пакета с сервера обновлений. Указывается в килобайтах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно: процесс установки с дефолтными значениями специально замедлен для слабых хостингов, поэтому с ними система может ставиться долго. Используйте следующие параметры для более быстрой установки или (наоборот) для экономии ресурсов сервера:&lt;br /&gt;
&lt;br /&gt;
[SETUP]&lt;br /&gt;
sleep=1 ; Пауза между запросами в миллисекундах, чем меньше - тем быстрее.&lt;br /&gt;
download_by=1024 ; Размер запрашиваемого пакета с сервера обновлений. Указывается в килобайтах, чем больше - тем быстрее.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Выбор соответствующего демо-сайта для установки:&lt;br /&gt;
&lt;br /&gt;
Консольный установщик может устанавливать любой из демо-сайтов UMI.CMS, с учётом ограничений, описанных далее. Примеры этих сайтов можно увидеть по ссылке: http://demo.umi-cms.ru/ . Демо-сайт государственной организации (Gov) в настоящее время автоматически не устанавливается.&lt;br /&gt;
&lt;br /&gt;
Клиент вправе выбирать любой демо-сайт для любой редакции UMI.CMS. Однако следует учесть, что некоторые демосайты (например интернет-магазины) неразумно использовать для младших редакций, в которых нет соответствующих модулей (например модуля магазина). Но с другой стороны, если клиент докупил необходимые модули, то он сможет получить соответствующий демо-сайт (набор модулей определяется по лицензионному ключу). В силу этих причин установщик может выдать ошибку http://errors.umi-cms.ru/14022/ , если данный демосайт не подходит.&lt;br /&gt;
&lt;br /&gt;
Если хостер не предоставляет клиентам выбор демо-сайта (как в большинстве случаев, когда он предлагает только Commerce Trial), то рекомендуется использовать следующие:&lt;br /&gt;
&lt;br /&gt;
Для редакции Commerce Trial:&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;demodizzy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Либо сайт без шаблонов (не рекомендуется):&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;_blank&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Персональный гейт для выдачи лицензионных ключей UMI.CMS:&lt;br /&gt;
&lt;br /&gt;
Со стороны компании &amp;quot;Юмисофт&amp;quot; существует специальный гейт, выдающий лицензионные ключи необходимого типа (Commerce Trial). При регистрации хостера на гейте ему выдаётся уникальный идентификатор (ID), а так же инструкции куда отсылать запросы на получение лицензионных ключей.&lt;br /&gt;
&lt;br /&gt;
Если вы уже пользуетесь таким гейтом, то в 99% случаев вам не нужно ничего менять.&lt;br /&gt;
&lt;br /&gt;
Если вы НЕ регистрировались на этом гейте и НЕ получали свой уникальный ID, обратитесь на partner@umisoft.ru за ним. Полученный ID нужно будет использовать в запросе лицензионных ключей UMI.CMS (см. ниже).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Инструкция:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Загрузите файл installer.php в корень сервера ([[DOCUMENT_ROOT]]) &lt;br /&gt;
* Создайте файл install.ini в ([[DOCUMENT_ROOT]]), укажите в нем все необходимые данные. Кодировка файла utf-8&lt;br /&gt;
* Зайдите на сервер по [[ssh]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	ssh example.com -llogin&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Сделайте корневую директорию сервера ([[DOCUMENT_ROOT]]) текущей.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	cd /home/www/example.com/htdocs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Запустите инсталлятор&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	php -f installer.php&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если консольный инсталлятор потребляет слишком много ресурсов сервера (процессор, память и т.д.) - обратитесь к специальным настройкам install.ini, позволяющих умерить их потребление. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Коды ошибок:&lt;br /&gt;
&lt;br /&gt;
Практически все коды доступны по ссылке вида http://errors.umi-cms.ru/15000/&lt;br /&gt;
где 15000 - числовой код ошибки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Справочная информация:&lt;br /&gt;
&lt;br /&gt;
Описание гейта для выдачи ключей:&lt;br /&gt;
&lt;br /&gt;
Хостер должен получать очередной ключ на каждый очередной экземпляр системы, устанавливаемой клиенту. Для получения ключа нужно обращаться по URL:&lt;br /&gt;
&lt;br /&gt;
для редакции Commerce Trial:&lt;br /&gt;
http://updateserver.umihost.ru/udata/custom/generateLicenseGate/SFNUFTDJYFT/client@email.ru/FirstName/LastName/client.domain.ru/client.ip.address/trial&lt;br /&gt;
&lt;br /&gt;
SFNUFTDJYFT - пример уникального ID вашего хостинга (см. выше про выдачу ключа персонального гейта)&lt;br /&gt;
следующие параметры по порядку:&lt;br /&gt;
e-mail клиента&lt;br /&gt;
имя клиента&lt;br /&gt;
фамилия клиента&lt;br /&gt;
домен клиента&lt;br /&gt;
IP-адрес, на котором расположен сайт с этим доменом&lt;br /&gt;
&lt;br /&gt;
В результате выполнения этого запроса вы получаете XML-данные. Из них вам нужно извлечь значение параметра &amp;quot;domain-keycode&amp;quot; - это доменный ключ, который нужно записать в файл install.ini для инсталлятора UMI.CMS. После этого запустить инсталлятор.&lt;br /&gt;
[[Категория:Вопросы установки настройки и переноса]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_(%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8)&amp;diff=9002</id>
		<title>Установка из консоли (командной строки)</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B8%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D0%B8_(%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8)&amp;diff=9002"/>
		<updated>2019-02-05T14:07:07Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Для установки потребуется:&lt;br /&gt;
&lt;br /&gt;
0) Соответствие сервера системным требованиям UMI.CMS:&lt;br /&gt;
&lt;br /&gt;
Ознакомиться с ними можно по ссылке:&lt;br /&gt;
http://www.umi-cms.ru/support/umi_cms_system_requirements/&lt;br /&gt;
&lt;br /&gt;
Консольный инсталлятор проверяет соответствие системным требованиям при установке. Если вы используете отдельно консольный php и отдельно модуль apache - обратите внимание, что требования должны соблюдаться для обоих из них (иногда они используют разные конфигурационные файлы).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1) Консольный инсталлятор:&lt;br /&gt;
&lt;br /&gt;
Скачать его можно по ссылке:&lt;br /&gt;
[[Файл:Installer.zip]]&lt;br /&gt;
&lt;br /&gt;
Файл installer.php должен быть помещён в корневую директорию сайта, на который производится установка UMI.CMS. Рекомендуется, чтобы эта директория была пустой. Необходимо чтобы она имела права на чтение и запись из php (если затрудняетесь выбрать - ставьте 777).&lt;br /&gt;
&lt;br /&gt;
Права на сам файл installer.php должны быть такими, чтобы php мог его переписать.&lt;br /&gt;
&lt;br /&gt;
Инсталлятор обращается к внешним ресурсам для скачивания необходимых файлов и проверки аутентификационных данных. На хостинге для консольного php должны быть разрешены исходящие соединения.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2) Файл install.ini с настройками для установки конкретного сайта:&lt;br /&gt;
&lt;br /&gt;
Скачать пример этого файла можно по ссылке:&lt;br /&gt;
http://www.umi-cms.ru/install/files/hosters/install.ini&lt;br /&gt;
&lt;br /&gt;
Права на файл install.ini должны быть такими, чтобы php мог его переписать. Файл install.ini должен быть помещён в ту же директорию, где находится installer.php, до начала установки. После установки его рекомендуется удалять.&lt;br /&gt;
&lt;br /&gt;
В файле указаны доступы к базе данных. Перед началом установки она уже должна существовать. Рекомендуется, чтобы она была пустая.&lt;br /&gt;
&lt;br /&gt;
Если вы уже пользовались консольным установщиком UMI.CMS, то многие параметры менять не потребуется. Просто проверьте их корректность и правильный синтаксис. Подробная инструкция ниже.&lt;br /&gt;
&lt;br /&gt;
Файл должен быть сохранен в кодировке utf-8! Значения параметров, содержащие не латинские символы, а так же спецсимволы необходимо брать в двойные кавычки &amp;quot;&amp;quot;; (например пароль)&lt;br /&gt;
&lt;br /&gt;
Пример файла:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
;=======================================================&lt;br /&gt;
;= инструкции для инсталлятора umi.cms в режиме CLI&lt;br /&gt;
;= Обязательные секции и их опции отмечены *&lt;br /&gt;
;=======================================================&lt;br /&gt;
&lt;br /&gt;
; информация о PHP &lt;br /&gt;
[SERVER]&lt;br /&gt;
; phppath=/usr/local/bin/php - больше не используется.&lt;br /&gt;
; phpini=/etc/php5/cli/php.ini - больше не используется.&lt;br /&gt;
 &lt;br /&gt;
;Информация о лицензии *&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
;Информация о лицензии *&lt;br /&gt;
[LICENSE]&lt;br /&gt;
domain=example.com		; доменное имя *&lt;br /&gt;
ip=127.0.1.7			; ip - адрес *&lt;br /&gt;
key=*-*-*			; лицензионный ключ *&lt;br /&gt;
 &lt;br /&gt;
;Доступ к базе данных. *&lt;br /&gt;
;База данных должна быть создана&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
[DB]&lt;br /&gt;
host=localhost			; имя хоста *&lt;br /&gt;
user=root			; логин *&lt;br /&gt;
password=&amp;quot;;\pass;&amp;quot;		; пароль *&lt;br /&gt;
dbname=installer		; имя базы *&lt;br /&gt;
&lt;br /&gt;
;Информация о супервайзере *&lt;br /&gt;
;-------------------------------------------------------&lt;br /&gt;
[SUPERVISOR]&lt;br /&gt;
login=sv			; логин для входа в админку *&lt;br /&gt;
password=&amp;quot;1&amp;quot;			; пароль *&lt;br /&gt;
lname=Installer			; фамилия&lt;br /&gt;
fname=cli			; имя&lt;br /&gt;
mname=Vasilievich		; отчество&lt;br /&gt;
&lt;br /&gt;
[BRAND]&lt;br /&gt;
;Ссылка &amp;quot;Купить UMI.CMS&amp;quot;&lt;br /&gt;
buy-lbl=&amp;quot;Купить UMI.CMS&amp;quot;	; Текст ссылки&lt;br /&gt;
buy-link=&amp;quot;http://www.umi-cms.ru/purchase/how-to-buy/&amp;quot; ; Ru URL&lt;br /&gt;
en-buy-lbl=&amp;quot;Buy UMI.CMS&amp;quot;	; Link text&lt;br /&gt;
en-buy-link=&amp;quot;http://www.umi-cms.ru/purchase/how-to-buy/&amp;quot; ; En URL&lt;br /&gt;
&lt;br /&gt;
[BACKUP]&lt;br /&gt;
mode = &amp;quot;none&amp;quot; ; all или none&lt;br /&gt;
&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;_blank&amp;quot;		; Имя предустановленного демо-сайта (demodizzy,demohunt,demoold,demooldschool,_blank)&lt;br /&gt;
&lt;br /&gt;
[SETUP]&lt;br /&gt;
sleep=500		; Время простоя для снижения нагрузки на сервер. Указывается в миллисекундах. Одна миллисекунда - одна тясячная одной секунды (500 = полсекунды)&lt;br /&gt;
download_by=1024	; Размер запрашиваемого пакета с сервера обновлений. Указывается в килобайтах.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Важно: процесс установки с дефолтными значениями специально замедлен для слабых хостингов, поэтому с ними система может ставиться долго. Используйте следующие параметры для более быстрой установки или (наоборот) для экономии ресурсов сервера:&lt;br /&gt;
&lt;br /&gt;
[SETUP]&lt;br /&gt;
sleep=1 ; Пауза между запросами в миллисекундах, чем меньше - тем быстрее.&lt;br /&gt;
download_by=1024 ; Размер запрашиваемого пакета с сервера обновлений. Указывается в килобайтах, чем больше - тем быстрее.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3) Выбор соответствующего демо-сайта для установки:&lt;br /&gt;
&lt;br /&gt;
Консольный установщик может устанавливать любой из демо-сайтов UMI.CMS, с учётом ограничений, описанных далее. Примеры этих сайтов можно увидеть по ссылке: http://demo.umi-cms.ru/ . Демо-сайт государственной организации (Gov) в настоящее время автоматически не устанавливается.&lt;br /&gt;
&lt;br /&gt;
Клиент вправе выбирать любой демо-сайт для любой редакции UMI.CMS. Однако следует учесть, что некоторые демосайты (например интернет-магазины) неразумно использовать для младших редакций, в которых нет соответствующих модулей (например модуля магазина). Но с другой стороны, если клиент докупил необходимые модули, то он сможет получить соответствующий демо-сайт (набор модулей определяется по лицензионному ключу). В силу этих причин установщик может выдать ошибку http://errors.umi-cms.ru/14022/ , если данный демосайт не подходит.&lt;br /&gt;
&lt;br /&gt;
Если хостер не предоставляет клиентам выбор демо-сайта (как в большинстве случаев, когда он предлагает только Commerce Trial), то рекомендуется использовать следующие:&lt;br /&gt;
&lt;br /&gt;
Для редакции Commerce Trial:&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;demodizzy&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Либо сайт без шаблонов (не рекомендуется):&lt;br /&gt;
[DEMOSITE]&lt;br /&gt;
name=&amp;quot;_blank&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4) Персональный гейт для выдачи лицензионных ключей UMI.CMS:&lt;br /&gt;
&lt;br /&gt;
Со стороны компании &amp;quot;Юмисофт&amp;quot; существует специальный гейт, выдающий лицензионные ключи необходимого типа (Commerce Trial). При регистрации хостера на гейте ему выдаётся уникальный идентификатор (ID), а так же инструкции куда отсылать запросы на получение лицензионных ключей.&lt;br /&gt;
&lt;br /&gt;
Если вы уже пользуетесь таким гейтом, то в 99% случаев вам не нужно ничего менять.&lt;br /&gt;
&lt;br /&gt;
Если вы НЕ регистрировались на этом гейте и НЕ получали свой уникальный ID, обратитесь на partner@umisoft.ru за ним. Полученный ID нужно будет использовать в запросе лицензионных ключей UMI.CMS (см. ниже).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5) Инструкция:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Загрузите файл installer.php в корень сервера ([[DOCUMENT_ROOT]]) &lt;br /&gt;
* Создайте файл install.ini в ([[DOCUMENT_ROOT]]), укажите в нем все необходимые данные. Кодировка файла utf-8&lt;br /&gt;
* Зайдите на сервер по [[ssh]]&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	ssh example.com -llogin&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Сделайте корневую директорию сервера ([[DOCUMENT_ROOT]]) текущей.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	cd /home/www/example.com/htdocs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* Запустите инсталлятор&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
	php -f installer.php&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если консольный инсталлятор потребляет слишком много ресурсов сервера (процессор, память и т.д.) - обратитесь к специальным настройкам install.ini, позволяющих умерить их потребление. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6) Коды ошибок:&lt;br /&gt;
&lt;br /&gt;
Практически все коды доступны по ссылке вида http://errors.umi-cms.ru/15000/&lt;br /&gt;
где 15000 - числовой код ошибки.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Справочная информация:&lt;br /&gt;
&lt;br /&gt;
Описание гейта для выдачи ключей:&lt;br /&gt;
&lt;br /&gt;
Хостер должен получать очередной ключ на каждый очередной экземпляр системы, устанавливаемой клиенту. Для получения ключа нужно обращаться по URL:&lt;br /&gt;
&lt;br /&gt;
для редакции Commerce Trial:&lt;br /&gt;
http://updateserver.umihost.ru/udata/custom/generateLicenseGate/SFNUFTDJYFT/client@email.ru/FirstName/LastName/client.domain.ru/client.ip.address/trial&lt;br /&gt;
&lt;br /&gt;
SFNUFTDJYFT - пример уникального ID вашего хостинга (см. выше про выдачу ключа персонального гейта)&lt;br /&gt;
следующие параметры по порядку:&lt;br /&gt;
e-mail клиента&lt;br /&gt;
имя клиента&lt;br /&gt;
фамилия клиента&lt;br /&gt;
домен клиента&lt;br /&gt;
IP-адрес, на котором расположен сайт с этим доменом&lt;br /&gt;
&lt;br /&gt;
В результате выполнения этого запроса вы получаете XML-данные. Из них вам нужно извлечь значение параметра &amp;quot;domain-keycode&amp;quot; - это доменный ключ, который нужно записать в файл install.ini для инсталлятора UMI.CMS. После этого запустить инсталлятор.&lt;br /&gt;
[[Категория:Вопросы установки настройки и переноса]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Installer.zip&amp;diff=9001</id>
		<title>Файл:Installer.zip</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Installer.zip&amp;diff=9001"/>
		<updated>2019-02-05T13:52:39Z</updated>

		<summary type="html">&lt;p&gt;Whoa: Whoa загрузил новую версию Файл:Installer.zip&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Краткое описание ==&lt;br /&gt;
Файл для установки сиистемы в консольном режиме&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Installer.zip&amp;diff=9000</id>
		<title>Файл:Installer.zip</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Installer.zip&amp;diff=9000"/>
		<updated>2019-02-05T13:52:09Z</updated>

		<summary type="html">&lt;p&gt;Whoa: Whoa загрузил новую версию Файл:Installer.zip&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Краткое описание ==&lt;br /&gt;
Файл для установки сиистемы в консольном режиме&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Installer.zip&amp;diff=8999</id>
		<title>Файл:Installer.zip</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Installer.zip&amp;diff=8999"/>
		<updated>2019-02-05T13:51:59Z</updated>

		<summary type="html">&lt;p&gt;Whoa: Whoa загрузил новую версию Файл:Installer.zip&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Краткое описание ==&lt;br /&gt;
Файл для установки сиистемы в консольном режиме&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D0%B2_YML_(sales_notes)&amp;diff=8998</id>
		<title>Экспорт в YML (sales notes)</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D0%B2_YML_(sales_notes)&amp;diff=8998"/>
		<updated>2019-02-01T09:57:38Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Иногда требуется кастомизировать экспорт каталога в YML. Например, если мы хотим, чтобы условия продажи товара ([https://yandex.ru/support/partnermarket/elements/sales_notes.html sales_notes] в yml) отличались у товаров, которые присутствуют на складе и у тех, которые доступны только на заказ. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Решение&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Общий принцип кастомизации описан в статье [http://wiki.umisoft.ru/Настройка_экспорта_в_YML_Яндекс-маркет &amp;quot;Настройка экспорта в YML Яндекс-маркет&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Для решения нашей задачи обратимcя к свойству товаров &amp;quot;Общее количество на складах&amp;quot; (идентификатор [common_quantity]). Если значение данного свойства у товара будет равно 0, то условия продажи будут передаваться в YML как для товаров доступных только под заказ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;#039;xml&amp;#039;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:when test=&amp;quot;.//property[@name = &amp;#039;common_quantity&amp;#039;]/value &amp;gt; 0&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;sales_notes&amp;gt;100%&amp;lt;/sales_notes&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;sales_notes&amp;gt;50%&amp;lt;/sales_notes&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Мы использовали элемент &amp;lt;xsl:choose&amp;gt; для вычисления выражения. В атрибуте &amp;#039;test&amp;#039; элемента &amp;lt;xsl:when&amp;gt; производим сравнение данных. Если тестовое выражение не будет соответствовать истине, то элемент &amp;lt;xsl:otherwise&amp;gt; передаст значение &amp;#039;sales_notes&amp;#039; соответствующее товару под заказ.&lt;br /&gt;
&lt;br /&gt;
 [[category:Модуль Обмен данными]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D0%B2_YML_(sales_notes)&amp;diff=8997</id>
		<title>Экспорт в YML (sales notes)</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D0%B2_YML_(sales_notes)&amp;diff=8997"/>
		<updated>2019-02-01T09:57:29Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Задача&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Иногда требуется кастомизировать экспорт каталога в YML. Например, если мы хотим, чтобы условия продажи товара ([https://yandex.ru/support/partnermarket/elements/sales_notes.html sales_notes] в yml) отличались у товаров, которые присутствуют на складе и у тех, которые доступны только на заказ. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Решение&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Общий принцип кастомизации описан в статье [http://wiki.umisoft.ru/Настройка_экспорта_в_YML_Яндекс-маркет &amp;quot;Настройка экспорта в YML Яндекс-маркет&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Для решения нашей задачи обратимcя к свойству товаров &amp;quot;Общее количество на складах&amp;quot; (идентификатор [common_quantity]). Если значение данного свойства у товара будет равно 0, то условия продажи будут передаваться в YML как для товаров доступных только под заказ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;#039;xml&amp;#039;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:when test=&amp;quot;.//property[@name = &amp;#039;common_quantity&amp;#039;]/value &amp;gt; 0&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;sales_notes&amp;gt;100%&amp;lt;/sales_notes&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;sales_notes&amp;gt;50%&amp;lt;/sales_notes&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Мы использовали элемент &amp;lt;xsl:choose&amp;gt; для вычисления выражения. В атрибуте &amp;#039;test&amp;#039; элемента &amp;lt;xsl:when&amp;gt; производим сравнение данных. Если тестовое выражение не будет соответствовать истине, то элемент &amp;lt;xsl:otherwise&amp;gt; передаст значение &amp;#039;sales_notes&amp;#039; соответствующее товару под заказ.&lt;br /&gt;
&lt;br /&gt;
 [[category:Модуль Обмен данными]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D0%B2_YML_(sales_notes)&amp;diff=8996</id>
		<title>Экспорт в YML (sales notes)</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D0%B2_YML_(sales_notes)&amp;diff=8996"/>
		<updated>2019-02-01T09:57:15Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Задача&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Иногда требуется кастомизировать экспорт каталога в YML. Например, если мы хотим, чтобы условия продажи товара ([https://yandex.ru/support/partnermarket/elements/sales_notes.html sales_notes] в yml) отличались у товаров, которые присутствуют на складе и у тех, которые доступны только на заказ. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Решение&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Общий принцип кастомизации описан в статье [http://wiki.umisoft.ru/Настройка_экспорта_в_YML_Яндекс-маркет &amp;quot;Настройка экспорта в YML Яндекс-маркет&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Для решения нашей задачи обратимcя к свойству товаров &amp;quot;Общее количество на складах&amp;quot; (идентификатор [common_quantity]). Если значение данного свойства у товара будет равно 0, то условия продажи будут передаваться в YML как для товаров доступных только под заказ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;#039;xml&amp;#039;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:when test=&amp;quot;.//property[@name = &amp;#039;common_quantity&amp;#039;]/value &amp;gt; 0&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;sales_notes&amp;gt;100%&amp;lt;/sales_notes&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;sales_notes&amp;gt;50%&amp;lt;/sales_notes&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Мы использовали элемент &amp;lt;xsl:choose&amp;gt; для вычисления выражения. В атрибуте &amp;#039;test&amp;#039; элемента &amp;lt;xsl:when&amp;gt; производим сравнение данных. Если тестовое выражение не будет соответствовать истине, то элемент &amp;lt;xsl:otherwise&amp;gt; передаст значение &amp;#039;sales_notes&amp;#039; соответствующее товару под заказ.&lt;br /&gt;
&lt;br /&gt;
 [[category:Модуль Обмен данными]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D0%B2_YML_(sales_notes)&amp;diff=8995</id>
		<title>Экспорт в YML (sales notes)</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D0%B2_YML_(sales_notes)&amp;diff=8995"/>
		<updated>2019-02-01T09:55:13Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Задача&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Иногда требуется кастомизировать экспорт каталога в YML. Например, если мы хотим, чтобы условия продажи товара ([https://yandex.ru/support/partnermarket/elements/sales_notes.html sales_notes] в yml) отличались у товаров, которые присутствуют на складе и у тех, которые доступны только на заказ. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Решение&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Общий принцип кастомизации описан в статье [http://wiki.umisoft.ru/Настройка_экспорта_в_YML_Яндекс-маркет &amp;quot;Настройка экспорта в YML Яндекс-маркет&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Для решения нашей задачи обратимcя к свойству товаров &amp;quot;Общее количество на складах&amp;quot; (идентификатор [common_quantity]). Если значение данного свойства у товара будет равно 0, то условия продажи будут передаваться в YML как для товаров доступных только под заказ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;#039;xml&amp;#039;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:when test=&amp;quot;.//property[@name = &amp;#039;common_quantity&amp;#039;]/value &amp;gt; 0&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;sales_notes&amp;gt;100%&amp;lt;/sales_notes&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;sales_notes&amp;gt;50%&amp;lt;/sales_notes&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Мы использовали элемент &amp;lt;xsl:choose&amp;gt; для вычисления выражения. В атрибуте &amp;#039;test&amp;#039; элемента &amp;lt;xsl:when&amp;gt; производим сравнение данных. Если тестовое выражение не будет соответствовать истине, то элемент &amp;lt;xsl:otherwise&amp;gt; передаст значение &amp;#039;sales_notes&amp;#039; соответствующее товару под заказ.&lt;br /&gt;
&lt;br /&gt;
 [[category:Модуль Обмен данными]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D0%B2_YML_(sales_notes)&amp;diff=8994</id>
		<title>Экспорт в YML (sales notes)</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D0%B2_YML_(sales_notes)&amp;diff=8994"/>
		<updated>2019-02-01T09:54:24Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Задача&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Иногда требуется кастомизировать экспорт каталога в YML. Например, если мы хотим, чтобы условия продажи товара ([https://yandex.ru/support/partnermarket/elements/sales_notes.html sales_notes] в yml) отличались у товаров которые присутствуют на складе и у тех, которые доступны только на заказ. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Решение&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Общий принцип кастомизации описан в статье [http://wiki.umisoft.ru/Настройка_экспорта_в_YML_Яндекс-маркет &amp;quot;Настройка экспорта в YML Яндекс-маркет&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Для решения нашей задачи мы обратимcя к свойству товаров &amp;quot;Общее количество на складах&amp;quot; (идентификтаор [common_quantity]). Если значение данного свойства у товара будет равно 0, то условия продажи будут передаваться в YML как для товаров доступных только под заказ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;#039;xml&amp;#039;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:when test=&amp;quot;.//property[@name = &amp;#039;common_quantity&amp;#039;]/value &amp;gt; 0&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;sales_notes&amp;gt;100%&amp;lt;/sales_notes&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;sales_notes&amp;gt;50%&amp;lt;/sales_notes&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Мы использовали элемент &amp;lt;xsl:choose&amp;gt; для вычисления выражения. В атрибуте &amp;#039;test&amp;#039; элемента &amp;lt;xsl:when&amp;gt; производим сравнение данных. Если тестовое выражение не будет соответствовать истине, то элемент &amp;lt;xsl:otherwise&amp;gt; передаст значение &amp;#039;sales_notes&amp;#039; соответствующее товару под заказ.&lt;br /&gt;
&lt;br /&gt;
 [[category:Модуль Обмен данными]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D0%B2_YML_(sales_notes)&amp;diff=8993</id>
		<title>Экспорт в YML (sales notes)</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D0%B2_YML_(sales_notes)&amp;diff=8993"/>
		<updated>2019-02-01T09:54:17Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Задача&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Иногда требуется кастомизировать экспорт каталога в YML. Например, если мы хотим, чтобы условия продажи товара ([https://yandex.ru/support/partnermarket/elements/sales_notes.html sales_notes] в yml) отличались у товаров которые присутствуют на складе и у тех, которые доступны только на заказ. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Решение&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Общий принцип кастомизации описан в статье [http://wiki.umisoft.ru/Настройка_экспорта_в_YML_Яндекс-маркет &amp;quot;Настройка экспорта в YML Яндекс-маркет&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
Для решения нашей задачи мы обратимcя к свойству товаров &amp;quot;Общее количество на складах&amp;quot; (идентификтаор [common_quantity]). Если значение данного свойства у товара будет равно 0, то условия продажи будут передаваться в YML как для товаров доступных только под заказ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;#039;xml&amp;#039;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:when test=&amp;quot;.//property[@name = &amp;#039;common_quantity&amp;#039;]/value &amp;gt; 0&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;sales_notes&amp;gt;100%&amp;lt;/sales_notes&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;sales_notes&amp;gt;50%&amp;lt;/sales_notes&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Мы использовали элемент &amp;lt;xsl:choose&amp;gt; для вычисления выражения. В атрибуте &amp;#039;test&amp;#039; элемента &amp;lt;xsl:when&amp;gt; производим сравнение данных. Если тестовое выражение не будет соответствовать истине, то элемент &amp;lt;xsl:otherwise&amp;gt; передаст значение &amp;#039;sales_notes&amp;#039; соответствующее товару под заказ.&lt;br /&gt;
&lt;br /&gt;
 [[category:Модуль Обмен данными]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D0%B2_YML_(sales_notes)&amp;diff=8992</id>
		<title>Экспорт в YML (sales notes)</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82_%D0%B2_YML_(sales_notes)&amp;diff=8992"/>
		<updated>2019-02-01T09:53:56Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Задача&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Иногда требуется кастомизировать экспорт каталога в YML. Например, если мы хотим, чтобы условия продажи товара ([https://yandex.ru/support/partnermarket/elements/sales_notes.html sales_notes] в yml) отличались у товаров которые присутствуют на складе и у тех, которые доступны только на заказ. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Решение&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Общий принцип кастомизации описан в статье [http://wiki.umisoft.ru/Настройка_экспорта_в_YML_Яндекс-маркет &amp;quot;Настройка экспорта в YML Яндекс-маркет&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Для решения нашей задачи мы обратимcя к свойству товаров &amp;quot;Общее количество на складах&amp;quot; (идентификтаор [common_quantity]). Если значение данного свойства у товара будет равно 0, то условия продажи будут передаваться в YML как для товаров доступных только под заказ.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;#039;xml&amp;#039;&amp;gt;&lt;br /&gt;
&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:when test=&amp;quot;.//property[@name = &amp;#039;common_quantity&amp;#039;]/value &amp;gt; 0&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;sales_notes&amp;gt;100%&amp;lt;/sales_notes&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:when&amp;gt;&lt;br /&gt;
    &amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;
        &amp;lt;sales_notes&amp;gt;50%&amp;lt;/sales_notes&amp;gt;&lt;br /&gt;
    &amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;
&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Мы использовали элемент &amp;lt;xsl:choose&amp;gt; для вычисления выражения. В атрибуте &amp;#039;test&amp;#039; элемента &amp;lt;xsl:when&amp;gt; производим сравнение данных. Если тестовое выражение не будет соответствовать истине, то элемент &amp;lt;xsl:otherwise&amp;gt; передаст значение &amp;#039;sales_notes&amp;#039; соответствующее товару под заказ.&lt;br /&gt;
&lt;br /&gt;
 [[category:Модуль Обмен данными]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D1%81%D0%B0%D0%B9%D1%82_%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD-%D0%BA%D0%BE%D0%BD%D1%81%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D0%BD%D1%82%D0%B0_Jivosite&amp;diff=8991</id>
		<title>Добавление на сайт онлайн-консультанта Jivosite</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D1%81%D0%B0%D0%B9%D1%82_%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD-%D0%BA%D0%BE%D0%BD%D1%81%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D0%BD%D1%82%D0%B0_Jivosite&amp;diff=8991"/>
		<updated>2019-02-01T09:46:17Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для всех версий системы.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Онлайн-чат или онлайн-консультант — это программное обеспечение, которое устанавливается на сайтах для осуществления поддержки пользователей. &lt;br /&gt;
&lt;br /&gt;
На данный момент существует большое количество сервисов, предоставляющих функционал онлайн-консультанта. В этой статье мы рассмотрим пример установки онлайн-чата Jivosite на UMI.CMS с шаблоном demomarket. Однако данное руководство подойдёт в качестве наглядного пособия для сайтов с любым шаблоном и для любых сервисов, предоставляющих функционал онлайн-чата. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Порядок действий:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
1) Сначала необходимо получить код чата. Для этого нужно зарегистрироваться по адресу [https://app.jivosite.com app.jivosite.com], на последней шаге регистрации будет сформирован код чата с индивидуальным идентификатором. Код будет иметь следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- BEGIN JIVOSITE CODE {literal} --&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;#039;text/javascript&amp;#039;&amp;gt;&lt;br /&gt;
(function(){ var widget_id = &amp;#039;xxxxxxxxxxx&amp;#039;;var d=document;var w=window;function l(){var s = document.createElement(&amp;#039;script&amp;#039;); s.type = &amp;#039;text/javascript&amp;#039;; s.async = true;s.src = &amp;#039;//code.jivosite.com/script/widget/&amp;#039;+widget_id; var ss = document.getElementsByTagName(&amp;#039;script&amp;#039;)[0]; ss.parentNode.insertBefore(s, ss);}if(d.readyState==&amp;#039;complete&amp;#039;){l();}else{if(w.attachEvent){w.attachEvent(&amp;#039;onload&amp;#039;,l);}else{w.addEventListener(&amp;#039;load&amp;#039;,l,false);}}})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;!-- {/literal} END JIVOSITE CODE →&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Если во время регистрации у вас возникнут какие-либо затруднения, обратитесь в поддержку сервиса [https://www.jivosite.ru/support/ Jivosite].&lt;br /&gt;
&lt;br /&gt;
2) Согласно инструкции Jivosite, код чата необходимо добавить перед закрывающим тегом &amp;lt;/body&amp;gt;. В шаблоне demomarket структура всех страниц сайта описана в файле index.phtml, который можно найти в директории /templates/demomarket/php/layout/&lt;br /&gt;
&lt;br /&gt;
Согласно инструкции, добавляем код чата в указанном месте. &lt;br /&gt;
&lt;br /&gt;
3) Теперь необходимо авторизоваться по адресу [https://app.jivosite.com app.jivosite.com] с помощью электронной почты и пароля, указанных при регистрации. После авторизации можно приступать к общению с посетителями. &lt;br /&gt;
&lt;br /&gt;
 [[category:Сторонние сервисы и программы]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D1%81%D0%B0%D0%B9%D1%82_%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD-%D0%BA%D0%BE%D0%BD%D1%81%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D0%BD%D1%82%D0%B0_Jivosite&amp;diff=8990</id>
		<title>Добавление на сайт онлайн-консультанта Jivosite</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D1%81%D0%B0%D0%B9%D1%82_%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD-%D0%BA%D0%BE%D0%BD%D1%81%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D0%BD%D1%82%D0%B0_Jivosite&amp;diff=8990"/>
		<updated>2019-02-01T09:44:39Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для всех версий системы.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Онлайн-чат или онлайн-консультант — это программное обеспечение, которое устанавливается на сайтах для осуществления поддержки пользователей. &lt;br /&gt;
&lt;br /&gt;
На данный момент существует большое количество сервисов, предоставляющих функционал онлайн-консультанта. В этой статье мы рассмотрим пример установки онлайн-чата Jivosite на UMI.CMS с шаблоном demomarket. Однако данное руководство подойдёт в качестве наглядного пособия для сайтов с любым шаблоном и для любых сервисов, предоставляющих функционал онлайн-чата. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Порядок действий:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
1) Сначала необходимо получить код чата. Для этого нужно зарегистрироваться по адресу [https://app.jivosite.com app.jivosite.com], на последней шаге регистрации будет сформирован код чата с индивидуальным идентификатором. Код будет иметь следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- BEGIN JIVOSITE CODE {literal} --&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;#039;text/javascript&amp;#039;&amp;gt;&lt;br /&gt;
(function(){ var widget_id = &amp;#039;xxxxxxxxxxx&amp;#039;;var d=document;var w=window;function l(){var s = document.createElement(&amp;#039;script&amp;#039;); s.type = &amp;#039;text/javascript&amp;#039;; s.async = true;s.src = &amp;#039;//code.jivosite.com/script/widget/&amp;#039;+widget_id; var ss = document.getElementsByTagName(&amp;#039;script&amp;#039;)[0]; ss.parentNode.insertBefore(s, ss);}if(d.readyState==&amp;#039;complete&amp;#039;){l();}else{if(w.attachEvent){w.attachEvent(&amp;#039;onload&amp;#039;,l);}else{w.addEventListener(&amp;#039;load&amp;#039;,l,false);}}})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;!-- {/literal} END JIVOSITE CODE →&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Если во время регистрации у Вас возникнут какие-либо затруднения, обратитесь в поддержку сервиса [https://www.jivosite.ru/support/ Jivosite].&lt;br /&gt;
&lt;br /&gt;
2) Согласно инструкции Jivosite, код чата необходимо добавить перед закрывающим тегом &amp;lt;/body&amp;gt;. В шаблоне demomarket структура всех страниц сайта описана в файле index.phtml, который можно найти в директории ./templates/demomarket/php/layout/&lt;br /&gt;
&lt;br /&gt;
Согласно инструкции добавляем код чата в указанном месте. &lt;br /&gt;
&lt;br /&gt;
3) Теперь необходимо авторизоваться по адресу [https://app.jivosite.com app.jivosite.com] с помощью электронной почты и пароля указанных при регистрации на сервисе. После авторизации можно приступать к общению с посетителями. &lt;br /&gt;
&lt;br /&gt;
 [[category:Сторонние сервисы и программы]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D1%81%D0%B0%D0%B9%D1%82_%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD-%D0%BA%D0%BE%D0%BD%D1%81%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D0%BD%D1%82%D0%B0_Jivosite&amp;diff=8989</id>
		<title>Добавление на сайт онлайн-консультанта Jivosite</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D1%81%D0%B0%D0%B9%D1%82_%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD-%D0%BA%D0%BE%D0%BD%D1%81%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D0%BD%D1%82%D0%B0_Jivosite&amp;diff=8989"/>
		<updated>2019-02-01T09:44:01Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для всех версий системы.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Онлайн-чат или онлайн-консультант — это программное обеспечение, которое устанавливается на сайтах для осуществления поддержки пользователей. &lt;br /&gt;
&lt;br /&gt;
На данный момент существует большое количество сервисов, предоставляющих функционал онлайн-консультанта. В этой статье мы рассмотрим пример установки онлайн-чата Jivosite на UMI.CMS с шаблоном demomarket. Однако данное руководство подойдёт в качестве наглядного пособия для сайтов с любым шаблоном и для любых сервисов, предоставляющих функционал онлайн-чата. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Порядок действий:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
1) Сначала необходимо получить код счётчика. Для этого необходимо зарегистрироваться по адресу [https://app.jivosite.com app.jivosite.com], на последней шаге регистрации будет сформирован код чата с Вашим индивидуальным идентификатором. Код будет иметь следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- BEGIN JIVOSITE CODE {literal} --&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;#039;text/javascript&amp;#039;&amp;gt;&lt;br /&gt;
(function(){ var widget_id = &amp;#039;xxxxxxxxxxx&amp;#039;;var d=document;var w=window;function l(){var s = document.createElement(&amp;#039;script&amp;#039;); s.type = &amp;#039;text/javascript&amp;#039;; s.async = true;s.src = &amp;#039;//code.jivosite.com/script/widget/&amp;#039;+widget_id; var ss = document.getElementsByTagName(&amp;#039;script&amp;#039;)[0]; ss.parentNode.insertBefore(s, ss);}if(d.readyState==&amp;#039;complete&amp;#039;){l();}else{if(w.attachEvent){w.attachEvent(&amp;#039;onload&amp;#039;,l);}else{w.addEventListener(&amp;#039;load&amp;#039;,l,false);}}})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;!-- {/literal} END JIVOSITE CODE →&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Если во время регистрации у Вас возникнут какие-либо затруднения, обратитесь в поддержку сервиса [https://www.jivosite.ru/support/ Jivosite].&lt;br /&gt;
&lt;br /&gt;
2) Согласно инструкции Jivosite, код чата необходимо добавить перед закрывающим тегом &amp;lt;/body&amp;gt;. В шаблоне demomarket структура всех страниц сайта описана в файле index.phtml, который можно найти в директории ./templates/demomarket/php/layout/&lt;br /&gt;
&lt;br /&gt;
Согласно инструкции добавляем код чата в указанном месте. &lt;br /&gt;
&lt;br /&gt;
3) Теперь необходимо авторизоваться по адресу [https://app.jivosite.com app.jivosite.com] с помощью электронной почты и пароля указанных при регистрации на сервисе. После авторизации можно приступать к общению с посетителями. &lt;br /&gt;
&lt;br /&gt;
 [[category:Сторонние сервисы и программы]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D1%81%D0%B0%D0%B9%D1%82_%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD-%D0%BA%D0%BE%D0%BD%D1%81%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D0%BD%D1%82%D0%B0_Jivosite&amp;diff=8988</id>
		<title>Добавление на сайт онлайн-консультанта Jivosite</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%B0_%D1%81%D0%B0%D0%B9%D1%82_%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD-%D0%BA%D0%BE%D0%BD%D1%81%D1%83%D0%BB%D1%8C%D1%82%D0%B0%D0%BD%D1%82%D0%B0_Jivosite&amp;diff=8988"/>
		<updated>2019-02-01T09:42:50Z</updated>

		<summary type="html">&lt;p&gt;Whoa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Актуально для всех версий системы.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
В статье описывается добавление чата в шаблон Demomarket. &lt;br /&gt;
&lt;br /&gt;
Онлайн-чат или онлайн-консультант - это программное обеспечение, которое устанавливается на интернет-сайтах для осуществления поддержки пользователей. &lt;br /&gt;
&lt;br /&gt;
На данный момент существует большое количество сервисов предоставляющих функционал онлайн-консультанта. В данной статье мы рассмотрим пример по установке онлайн-чата Jivosite на UMI.CMS с шаблоном demomarket. Однако, данное руководство подойдёт в качестве наглядного пособия для сайтов на UMI.CMS с любым шаблоном и для любых сервисов, предоставляющих функционал онлайн-чата. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Порядок действий:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
1) Сначала необходимо получить код счётчика. Для этого необходимо зарегистрироваться по адресу [https://app.jivosite.com app.jivosite.com], на последней шаге регистрации будет сформирован код чата с Вашим индивидуальным идентификатором. Код будет иметь следующий вид:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- BEGIN JIVOSITE CODE {literal} --&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;#039;text/javascript&amp;#039;&amp;gt;&lt;br /&gt;
(function(){ var widget_id = &amp;#039;xxxxxxxxxxx&amp;#039;;var d=document;var w=window;function l(){var s = document.createElement(&amp;#039;script&amp;#039;); s.type = &amp;#039;text/javascript&amp;#039;; s.async = true;s.src = &amp;#039;//code.jivosite.com/script/widget/&amp;#039;+widget_id; var ss = document.getElementsByTagName(&amp;#039;script&amp;#039;)[0]; ss.parentNode.insertBefore(s, ss);}if(d.readyState==&amp;#039;complete&amp;#039;){l();}else{if(w.attachEvent){w.attachEvent(&amp;#039;onload&amp;#039;,l);}else{w.addEventListener(&amp;#039;load&amp;#039;,l,false);}}})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;!-- {/literal} END JIVOSITE CODE →&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Если во время регистрации у Вас возникнут какие-либо затруднения, обратитесь в поддержку сервиса [https://www.jivosite.ru/support/ Jivosite].&lt;br /&gt;
&lt;br /&gt;
2) Согласно инструкции Jivosite, код чата необходимо добавить перед закрывающим тегом &amp;lt;/body&amp;gt;. В шаблоне demomarket структура всех страниц сайта описана в файле index.phtml, который можно найти в директории ./templates/demomarket/php/layout/&lt;br /&gt;
&lt;br /&gt;
Согласно инструкции добавляем код чата в указанном месте. &lt;br /&gt;
&lt;br /&gt;
3) Теперь необходимо авторизоваться по адресу [https://app.jivosite.com app.jivosite.com] с помощью электронной почты и пароля указанных при регистрации на сервисе. После авторизации можно приступать к общению с посетителями. &lt;br /&gt;
&lt;br /&gt;
 [[category:Сторонние сервисы и программы]]&lt;/div&gt;</summary>
		<author><name>Whoa</name></author>
		
	</entry>
</feed>