# Шорткоды

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

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

> **`[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 %}
