# Шорткоды

Для подстановки в тексте данных текущего  региона/города используются шорткоды, их можно посмотреть в разделе **«Шорткоды»**

`// Екатеринбург`

> **`[mregionmorphos entity="multiregion" case="предложный"]`**

`// Екатеринбургу*`

> **`[mregionmorphos entity="ASMP_City" field="city" case="дательный"]`**

`// email@current.region - вывод Email текущего региона через функцию getEmail(1)`

> **`[mregionmorphos entity="multiregion" field="getEmail,1"]`**

{% hint style="warning" %}
\*выводится название города определенного по GeoIP, оно может отличаться от названия текущего региона, т.к. регион может быть привязан к области или нескольким городам
{% endhint %}

Для подстановки в тексте данных регионов, данные выводятся с помощью XSL-шаблона где можно задать свою верстку (название, описание региона, телефоны, email, адреса и др)

> **`[multiregion regionsMode="all" directory="TRUE" xsl="МультирегиональностьКонтакты"]`**

* ***regionsMode** — режим показа регионов, может принимать следующие значения:*&#x20;
  * *none - не показывать регионы (по умолчанию), в XML остается только текущий*
  * *all - все регионы*
* ***directory** — (TRUE|FALSE) режим показа данных региона (телефоны, email, адреса), по умолчанию FALSE*
* ***xsl** — XSL-шаблон*

#### Полный код шорткодов

{% tabs %}
{% tab title="mregionmorphos" %}
{% code lineNumbers="true" %}

```php
$args += array(
	'entity' => 'multiregion',
	'field' => 'name',
);

ob_start();

if (Core::moduleIsActive('multiregion'))
{
	$value = NULL;

	$entity = $args['entity'];
	$aFields = explode(',', $args['field']);
	$field = $aFields[0];
	array_shift($aFields);

	if(isset(Core_Page::instance()->$entity->$field))
	{
		$value = Core_Page::instance()->$entity->$field;
	}
	elseif(isset(Core_Page::instance()->$entity) && method_exists(Core_Page::instance()->$entity, $field))
	{
		$value = call_user_func_array(array(Core_Page::instance()->$entity, $field), $aFields);
	}
	elseif(isset($_SESSION) && Core_Array::get(Core_Array::getSession($entity, array()), $field))
	{
	    $value = Core_Array::get(Core_Array::getSession($entity, array()), $field);
	}

	if($value && isset($args['case']))
	{
		$value = Morphos_Geographical::getCase($value, $args['case']);
	}

	echo $value;
}

return ob_get_clean();
```

{% endcode %}
{% endtab %}

{% tab title="multiregion" %}

```php
$args += array(
	'regionsMode' => 'none',
	'xsl' => 'МультирегиональностьКонтакты',
	'directory' => TRUE,
);

ob_start();

if (Core::moduleIsActive('multiregion'))
{

	$MultiRegion_Controller_Show = new MultiRegion_Controller_Show(
		Core_Entity::factory('Site', CURRENT_SITE)
	);

	$oXsl = Core_Entity::factory('Xsl')->getByName($args['xsl']);

	if ($oXsl)
	{
		$MultiRegion_Controller_Show
			->regionsMode($args['regionsMode'])
			->directory($args['directory'])
			->xsl($oXsl);

		$MultiRegion_Controller_Show->show();
	}
	else
	{
		?>Ошибка, XSL не найден!<?php
	}
}

return ob_get_clean();
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://support.morozovpimnev.ru/multiregion/shortkody.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
