<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.umisoft.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D1%83%D1%82%D0%B5%D0%B9_%D0%B2_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5</id>
	<title>Кастомизация маршрутизации путей в системе - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.umisoft.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9A%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D1%83%D1%82%D0%B5%D0%B9_%D0%B2_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5"/>
	<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9A%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D1%83%D1%82%D0%B5%D0%B9_%D0%B2_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5&amp;action=history"/>
	<updated>2026-05-12T17:47:32Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9A%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D1%83%D1%82%D0%B5%D0%B9_%D0%B2_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5&amp;diff=9302&amp;oldid=prev</id>
		<title>Aposio в 13:19, 28 августа 2019</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9A%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D1%83%D1%82%D0%B5%D0%B9_%D0%B2_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5&amp;diff=9302&amp;oldid=prev"/>
		<updated>2019-08-28T13:19:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Версия 13:19, 28 августа 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l74&quot; &gt;Строка 74:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 74:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Теперь при переходе по адресу site.ru/order/ будет открываться страница &amp;quot;Оформление заказа в один клик&amp;quot;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Теперь при переходе по адресу site.ru/order/ будет открываться страница &amp;quot;Оформление заказа в один клик&amp;quot;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[category:Написание кастомных макросов]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[category:Написание кастомных макросов&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]][[category:Вопросы и уроки разработки сайтов на UMI.CMS&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Aposio</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.umisoft.ru/index.php?title=%D0%9A%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D1%83%D1%82%D0%B5%D0%B9_%D0%B2_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5&amp;diff=9300&amp;oldid=prev</id>
		<title>Vitaliks: Новая страница: «&#039;&#039;&#039;Актуально для версии 20&#039;&#039;&#039;  == Задача == Иногда появляется необходимость, что-бы по определ…»</title>
		<link rel="alternate" type="text/html" href="https://wiki.umisoft.ru/index.php?title=%D0%9A%D0%B0%D1%81%D1%82%D0%BE%D0%BC%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BC%D0%B0%D1%80%D1%88%D1%80%D1%83%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_%D0%BF%D1%83%D1%82%D0%B5%D0%B9_%D0%B2_%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B5&amp;diff=9300&amp;oldid=prev"/>
		<updated>2019-08-28T09:13:12Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «&amp;#039;&amp;#039;&amp;#039;Актуально для версии 20&amp;#039;&amp;#039;&amp;#039;  == Задача == Иногда появляется необходимость, что-бы по определ…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&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;
Например сделать чтобы по адресу site.ru/order/ открывалось &amp;quot;Оформление заказа в один клик&amp;quot; site.ru/emarket/purchasing_one_step/&lt;br /&gt;
&lt;br /&gt;
== Решение ==&lt;br /&gt;
Эту задачу можно решить при помощи кастомизации роутинга (маршрутизации) в системе. Для этого мы воспользуемся событием &amp;#039;routing&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Создать слушатель этого события можно в любом модуле, но лучше создавать его в рамках того модуля для которого необходимо выполнить маршрутизацию. &lt;br /&gt;
&lt;br /&gt;
Создадим слушатель в модуле Интернет-магазин (emarket), для этого в директории /classes/components/emarket/ добавим файл &amp;#039;&amp;#039;&amp;#039;custom_events.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;
	new umiEventListener(&amp;quot;routing&amp;quot;, &amp;quot;emarket&amp;quot;, &amp;quot;route&amp;quot;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В файл &amp;#039;&amp;#039;&amp;#039;customMacros.php&amp;#039;&amp;#039;&amp;#039; добавляем метод для обработки события и класс &amp;#039;&amp;#039;&amp;#039;FakeRouter&amp;#039;&amp;#039;&amp;#039; с методом &amp;#039;&amp;#039;&amp;#039;analyzePath&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;
	use UmiCms\Service;&lt;br /&gt;
	/**&lt;br /&gt;
	 * Класс пользовательских макросов&lt;br /&gt;
	 */&lt;br /&gt;
	class EmarketCustomMacros {&lt;br /&gt;
		/**&lt;br /&gt;
		 * @var emarket $module&lt;br /&gt;
		 */&lt;br /&gt;
		public $module;&lt;br /&gt;
 &lt;br /&gt;
		public function route(iUmiEventPoint $eventPoint) {&lt;br /&gt;
			if (Service::Request()-&amp;gt;isAdmin() || $eventPoint-&amp;gt;getMode() !== &amp;#039;before&amp;#039;) {&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
 &lt;br /&gt;
			$request = Service::Request();&lt;br /&gt;
			$path = $request-&amp;gt;getPath();&lt;br /&gt;
 &lt;br /&gt;
			if ($path == &amp;#039;order&amp;#039;) {&lt;br /&gt;
				$router = new FakeRouter(&amp;#039;emarket&amp;#039;,&amp;#039;purchasing_one_step&amp;#039;);&lt;br /&gt;
				$eventPoint-&amp;gt;setParam(&amp;#039;router&amp;#039;, $router);&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
 &lt;br /&gt;
	class FakeRouter {&lt;br /&gt;
 &lt;br /&gt;
		private $module;&lt;br /&gt;
 &lt;br /&gt;
		private $method;&lt;br /&gt;
 &lt;br /&gt;
		private $elementId;&lt;br /&gt;
 &lt;br /&gt;
		function __construct($module, $method, $elementId = false) {&lt;br /&gt;
			$this-&amp;gt;module = $module;&lt;br /&gt;
			$this-&amp;gt;method = $method;&lt;br /&gt;
			$this-&amp;gt;elementId = $elementId;			&lt;br /&gt;
		}&lt;br /&gt;
 &lt;br /&gt;
		public function analyzePath() {&lt;br /&gt;
			$cmsController = cmsController::getInstance();&lt;br /&gt;
			$cmsController-&amp;gt;setCurrentModule($this-&amp;gt;module);&lt;br /&gt;
			$cmsController-&amp;gt;setCurrentMethod($this-&amp;gt;method);&lt;br /&gt;
			$cmsController-&amp;gt;setCurrentElementId($this-&amp;gt;elementId);		&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Теперь при переходе по адресу site.ru/order/ будет открываться страница &amp;quot;Оформление заказа в один клик&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[category:Написание кастомных макросов]]&lt;/div&gt;</summary>
		<author><name>Vitaliks</name></author>
		
	</entry>
</feed>