Шорткоды

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

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

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

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

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

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

[mregionmorphos entity="multiregion" field="getEmail,1"]

*выводится название города определенного по GeoIP, оно может отличаться от названия текущего региона, т.к. регион может быть привязан к области или нескольким городам

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

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

  • regionsMode — режим показа регионов, может принимать следующие значения:

    • none - не показывать регионы (по умолчанию), в XML остается только текущий

    • all - все регионы

  • directory — (TRUE|FALSE) режим показа данных региона (телефоны, email, адреса), по умолчанию FALSE

  • xsl — XSL-шаблон

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

$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();

Last updated