— Некоторые пункты должны вести на внешний источник, а значит, открывать в новом окне.
Принцип:
Добавляем параметр target, который будет добавлять этот же параметр в тег А
Решение:
1) в конфиге, в меню третьего уровня (тема experience)
\common\templates\skin\experience\settings\config\menu.php
Вместо:
'link7' => array(
'text' => '<i class="fa fa-book"></i> Обучение',
'link' => '/category/main/',
),
пишем:
'link7' => array(
'text' => '<i class="fa fa-book"></i> Обучение',
'link' => '/category/main/',
'options' => array(
'target' => '_blank',
)
2. \engine\classes\modules\menu\entity\ItemOptions.entity.class.php
В самый конец, перед }
Вставляем:
/**
* Возвращает таргет
*
* @return string|null
*/
public function getTargetLink() {
return isset($this->_aData['target']) ? $this->_aData['target'] : NULL;
}
3. \engine\classes\modules\menu\entity\Item.entity.class.php
Находим:
$sActive = $this->getActive();
вставляем перед ним:
$aParams['[[item_target]]'] = '';
if (($this->getOptions() && ($sLinkTitle = $this->getOptions()->getTargetLink()))) {
$aParams['[[item_target]]'] = "target='{$sLinkTitle}'";
}
тут же, находим:
$sCurrentLink = "<a {$this->_aData['item_flags']['link_id']} [[link_class]] [[link_title]]
добавляем после кода [[link_title]]:
[[item_target]]
Всё. Готово.
Это не самый идеальный метод, т.к. при обновлении версии движка это может потереться. Но другого я не нашёл.
0 комментариев