Замена метода go to для подсчета переходов по баннеру

Материал из Umicms
Версия от 16:25, 13 июня 2011; VITL' (обсуждение | вклад) (Новая страница: «По некоторым причинам, в какой-то момент может возникнуть причина поменять в баннере подо…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

По некоторым причинам, в какой-то момент может возникнуть причина поменять в баннере подобную ссылку:

/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.