Замена метода go to для подсчета переходов по баннеру
Материал из Umicms
По некоторым причинам, в какой-то момент может возникнуть причина поменять в баннере подобную ссылку:
/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.
