/** * Получение информации о корневой странице * @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; }
/** * Получение карточки товара * @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; }
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); }
$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'];