public static function displayAd($params, &$tpl)
 {
     $place = $params['place'];
     $page = Display::get("adPage");
     if (empty($page)) {
         return "";
     }
     if (!self::$adsLoaded) {
         $page = Display::get("adPage");
         $cache = Cacher::getInstance();
         //get Ads ids on current page
         if (($data = $cache->load("adsOnPage" . $page)) === null) {
             $data = Model::factoryInstance("ad")->getAdsOnPage($page);
             $cache->save($data, null, null, array("adCriteria", "ad"));
         }
         self::$adsOnPage = $data;
         //load predefined settings
         if (($data = $cache->load("adsPredefinitions")) === null) {
             $data = Model::factoryInstance("ad")->getAllPredefinitions();
             $cache->save($data, null, null, array("adCriteria", "ad"));
         }
         self::$predefinitions = $data;
         if (preg_match("#^(site|keyword|category|letter|tag)#", $page, $match)) {
             self::$predefinitionTypeName = $match[1];
         }
         //load ads html content
         if (($data = $cache->load("adsAllCriterias")) === null) {
             $data = Model::factoryInstance("adCriteria")->getArray(null, "htmlContent");
             $cache->save($data, null, null, array("adCriteria"));
         }
         self::$adCriterias = $data;
         self::$adsLoaded = true;
         self::$pageIsPredefinied = !empty(self::$adsOnPage['predefine']);
     }
     $htmlContent = "";
     if (!empty(self::$adsOnPage['general']) && !empty(self::$adsOnPage[$place])) {
         $adCriterionId = self::$adsOnPage[$place];
         if (!empty(self::$adCriterias[$adCriterionId])) {
             $htmlContent = self::$adCriterias[$adCriterionId];
         }
     } else {
         if (self::$pageIsPredefinied && (!isset(self::$adsOnPage['general']) || self::$adsOnPage['general'] == 1)) {
             if (!empty(self::$predefinitions[self::$predefinitionTypeName][$place])) {
                 $adCriterionId = self::$predefinitions[self::$predefinitionTypeName][$place];
                 if (!empty(self::$adCriterias[$adCriterionId])) {
                     $htmlContent = self::$adCriterias[$adCriterionId];
                 }
             }
         }
     }
     return $htmlContent;
 }