Ejemplo n.º 1
0
 /**
  * Получение информации о корневой странице
  * @param array $aStrings
  * @return array
  */
 public function showBasePage($aStrings = array())
 {
     $result = array();
     // Алиас текущей страницы
     $alias = end($aStrings);
     if ($alias == $this->base->getLang()) {
         $data = $this->base->getRow('pages', 'alias', $alias);
         if (isset($data['id']) && (int) $data['id'] > 0) {
             System_Settings::setCurrentData('pages', $data['id']);
         }
         return $data;
     } else {
         $result = $this->base->getRows('pages', 'alias', $alias);
     }
     $data = array();
     // выбираем нужную страницу
     $tmp = $aStrings;
     array_shift($tmp);
     $link = '/' . implode('/', $tmp) . '/';
     $link1 = '/' . implode('/', $tmp) . '.html';
     for ($i = 0; $i < count($result); $i++) {
         if ($result[$i]['link'] == $link || $result[$i]['link'] == $link1) {
             $data = $result[$i];
         }
     }
     if (empty($data)) {
         array_pop($aStrings);
         $data = $this->showBasePage($aStrings);
     }
     if (isset($data['id']) && (int) $data['id'] > 0) {
         System_Settings::setCurrentData('pages', $data['id']);
     }
     return $data;
 }
Ejemplo n.º 2
0
 /**
  * Получение карточки товара
  * @param string $alias
  * @param string $image_size
  * @param string $icon_size
  * @param string $set_image
  * @return array|bool
  */
 public function getProduct($alias, $image_size = '460x460', $icon_size = '64x64', $set_image = '160x160')
 {
     $query = 'CALL get_catalog_product(:alias)';
     $data = PdoWrap::selectRow($query, array(':alias' => $alias));
     if (!isset($data['id']) || $data['id'] == 0 || $data['group_link'] . $data['alias'] . '.html' != $_SERVER['REQUEST_URI']) {
         return false;
     }
     System_Settings::setCurrentData('catalog_items', $data['id']);
     // Получение title, Meta description, Meta keywords если они отсутствуют у элемента
     if ($data['head_title'] == '' || $data['meta_keywords'] == '' || $data['meta_keywords'] == '') {
         // Получение всех родительских групп товара
         $base = new TreeTable(DOC, $this->base->getLang(), PREF);
         $parent_groups = $base->enumPath('catalog_groups', $data['group_id']);
         $j = 0;
         for ($i = count($parent_groups) - 1; $i >= 0; $i--) {
             if ($j == 0) {
                 $data['type'] = $parent_groups[$i]['name'];
             }
             if ($j == 1 && $parent_groups[$i]['tree_level'] > 1) {
                 $data['brand'] = $parent_groups[$i]['name'];
             }
             $j++;
         }
         if ($data['head_title'] == '') {
             $head_title_template = '';
             for ($i = count($parent_groups) - 1; $i >= 0; $i--) {
                 if ($parent_groups[$i]['meta_title_template'] != '') {
                     $head_title_template = $parent_groups[$i]['meta_title_template'];
                     break;
                 }
             }
             if ($head_title_template != '') {
                 foreach ($data as $key => $value) {
                     $head_title_template = str_replace('{' . $key . '}', $value, $head_title_template);
                 }
                 $data['head_title'] = preg_replace('/{(.+?)}/i', '', $head_title_template);
             }
         }
         if ($data['meta_description'] == '') {
             $meta_description_template = '';
             for ($i = count($parent_groups) - 1; $i >= 0; $i--) {
                 if ($parent_groups[$i]['meta_description_template'] != '') {
                     $meta_description_template = $parent_groups[$i]['meta_description_template'];
                     break;
                 }
             }
             if ($meta_description_template != '') {
                 foreach ($data as $key => $value) {
                     $meta_description_template = str_replace('{' . $key . '}', $value, $meta_description_template);
                 }
                 $data['meta_description'] = preg_replace('/{(.+?)}/i', '', $meta_description_template);
             }
         }
         if ($data['meta_keywords'] == '') {
             $meta_keywords_template = '';
             for ($i = count($parent_groups) - 1; $i >= 0; $i--) {
                 if ($parent_groups[$i]['meta_keywords_template'] != '') {
                     $meta_keywords_template = $parent_groups[$i]['meta_keywords_template'];
                     break;
                 }
             }
             if ($meta_keywords_template != '') {
                 foreach ($data as $key => $value) {
                     $meta_keywords_template = str_replace('{' . $key . '}', $value, $meta_keywords_template);
                 }
                 $data['meta_keywords'] = preg_replace('/{(.+?)}/i', '', $meta_keywords_template);
             }
         }
     }
     /*
     // Получение списка групп зарактеристи
     $query = 'CALL get_catalog_features_groups(:item_id)';
     $data['features_groups'] = PdoWrap::select($query, array(':item_id' => $data['id']));
     // Получение списка характеристик
     $data['features'] = $this->getFeaturesForItemForCard($data['id'], $data['group_id']);
     */
     // Получение изображений
     $data['images'] = $this->__getImages($data['id']);
     $images_count = count($data['images']);
     for ($i = 0; $i < $images_count; $i++) {
         Files::setImageSize($image_size);
         $data['images'][$i]['image_link'] = Files::getImageLink($data['images'][$i]['image']);
         Files::setImageSize($icon_size);
         $data['images'][$i]['icon_link'] = Files::getImageLink($data['images'][$i]['image']);
         Files::setImageSize($set_image);
         $data['images'][$i]['set_link'] = Files::getImageLink($data['images'][$i]['image']);
     }
     /*
     // Получение компллектов
     $data['set'] = $this->getRelationList(PREF.'catalog_set',PREF.'catalog_items', 'item_id1', 'item_id2', $data['id']);
     */
     // Получение данных каталога
     $data['other_products'] = $this->getItems($data['group_id'], 'date_add', 'DESC', 12, 1);
     /*
             // Получение комплектаций
             $data['complects'] = parent::getRelationListWithDefault(PREF.'catalog_complect_relations', PREF.'catalog_complect', 'item_id', 'complect_id', $data['id']);
     
     // Получение списка характеристик для комплекта
             for($i=0;$i<count($data['complects']);$i++) {
                 $data['complects'][$i]['features'] = parent::getRelationList(PREF.'catalog_complect_values', PREF.'catalog_features', 'complect_id', 'feature_id', $data['complects'][$i]['id']);
             }
     */
     return $data;
 }
Ejemplo n.º 3
0
 private function showItemById($id)
 {
     $data = $this->object->getRow('news_items', $id);
     $page_title = $data['head_title'] != '' ? $data['head_title'] : $data['name'];
     $this->setPageTitle($page_title);
     $this->setH1($data['name']);
     $this->setMetaDescription($data['meta_description']);
     $this->setMetaKeywords($data['meta_keywords']);
     System_Settings::setCurrentData('news_items', $data['id']);
     $this->tpl = 'item';
     $this->smarty->assign('data', $data);
 }
Ejemplo n.º 4
0
                     $view_history = array_values($view_history);
     
                     if(!empty($view_history)) {
                         $views_data = $object->getSeveralItemsByIds($view_history);
     
                         // Выгрузка переменных в шаблон
                         $smarty->assign(array('views_data' => $views_data));
                     }
                 }
                 else {
                     setcookie('view_history', $data['id'], time()+150000000, '/');
                 } */
 } else {
     // Получение группы
     $group = $object->getRowByField('catalog_groups', 'alias', end($module_aString));
     System_Settings::setCurrentData('catalog_groups', $group['id']);
     // вывод 404
     if (!isset($group['id']) || $group['link'] != $page['link'] . implode('/', $module_aString) . '/') {
         require_once DOC . '/error404.php';
         exit;
     }
     $page_tmp_link = explode('/', $group['link']);
     $page_tmp_link = array_merge($page_tmp_link, self::getModuleAString());
     $page_tmp_link = array_unique($page_tmp_link);
     // переопределяем данные
     $page['name'] = $group['name'];
     $page['h1'] = $group['name'];
     $page['text'] = $group['text'];
     $page['text2'] = $group['text2'];
     $page['link'] = implode('/', $page_tmp_link) . '/';
     $page['head_title'] = $group['head_title'];