Замена метода go to для подсчета переходов по баннеру
По некоторым причинам, в какой-то момент может возникнуть причина поменять в баннере подобную ссылку:
/banners/go_to/34561/
к примеру на:
/data/go_to/34561/
и также, метод go_to модуля data должен сохранить функциональность, которая была в модуле banners.
Если на сайте используется TPL-шаблонизатор, то необходимо добавить новый метод для модуля banners. В файл classes/modules/banners/__custom.php, после слов //TODO: Write here your own macroses добавим метод:
public function insertbanner($sPlace = "", $iMacrosID=0) {
$result = $this->insert($sPlace, $iMacrosID);
$result = str_replace('/banners/', '/data/', $result);
return $result;
}
и также в папку /classes/modules/banners/ добавим файл permissions.custom.php следующего содержания:
<?php
$permissions = Array('insert' => Array('insertbanner'));
?>
Далее необходимо додавить метод go_to в модуль data. В файл classes/modules/data/__custom.php добавим новый метод:
public function go_to() {
$iObjId = (int) $_REQUEST['param0'];
$oBanner = umiObjectsCollection::getInstance()->getObject($iObjId);
if ($oBanner instanceof umiObject) {
$sUrl = $oBanner->getValue('url');
$iOldClicksCount = $oBanner->getValue('clicks_count');
$oBanner->setValue('clicks_count', ++$iOldClicksCount);
$oBanner->commit();
$this->redirect($sUrl);
}
}
и в папку classes/modules/data/ файл permissions.custom.php:
<?php
$permissions = Array('main' => Array('go_to'));
?>
Для XSLT-шаблонизатора, достаточно добавить только метод go_to, в модуль data, а в самом xsl-шаблоне изменить ссылку:
/banners/go_to/.../
на:
/data/go_to/.../
В итоге, весь функционал баннеров сохраниться, но в html коде будет отсутствовать слово banners.