Шорткоды
Для подстановки в тексте региона/города используются шорткоды, их можно посмотреть в разделе «Шорткоды»
[mregionmorphos entity="multiregion" case="предложный"]
// Екатеринбург
[mregionmorphos entity="ASMP_City" field="city" case="дательный"]
// Екатеринбургу*
*выводится название города определенного по GeoIP, оно может отличаться от названия текущего региона, т.к. регион может быть привязан к области или нескольким городам
Для подстановки в тексте данных текущего региона, данные выводятся с помощью XSL-шаблона где можно задать свою верстку (название, описание региона, телефоны, email, адреса и др)
[multiregion regionsMode="current" directory="TRUE" xsl="МультирегиональностьКонтакты"]
  • regionsMode — режим показа регионов, может принимать следующие значения:
    • none - не показывать регионы (по умолчанию)
    • current - текущий регион
    • all - все регионы
  • directory — (TRUE|FALSE) режим показа данных региона (телефоны, email, адреса), по умолчанию FALSE
  • xsl — XSL-шаблон

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

mregionmorphos
multiregion
$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();
$args += array(
'regionsMode' => 'current',
'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();
Copy link