SEO urls для Pav Blog News Module под OpenCart
5 августа 2014 в 15:22 в категории Плагины и модули, Статьи о php 47 комментариевСоздавая интернет-магазины, часто выбирают CMS OpenCart как основу для разработки. Зачастую возникает необходимость создать раздел «Новости» в разрабатываемом интернет-магазине. Для решения данной задачи существует очень много модулей и альтернатив. В данной статье я предлагаю SEO решение для урлов под модуль Pav Blog News Module под OpenCart.
Для работы вам будут необходимы следующие продукты:
- CMS OpenCart — сам движок
- Pav Blog News Module — собственно новостной плагин (freeware, бесплатный)
- SEO PRO — плагин сео урлов для OpenCart
Когда все установлено и настроено, переходим к правке кода модуля SEO PRO (catalog/controller/common/seo_pro.php), который собственно генерирует и обрабатывает наши ссылки. Нам необходимо будет сделать несколько вставок в исходный код модуля.
Перед (~81 line):
if (isset($queries[$parts[0]])) {
Вставляем:
/** BEGIN PROCESSING TO DECORD REQUET SEO URL FOR PAVO BLOG MODULE **/ if( isset($url) && count($url) == 2 && ( preg_match( "#pavblog#", $url[0] )) ){ unset($this->request->get['pavblog/category']); unset($this->request->get['pavblog/blog']); unset($queries); $this->request->get['route'] = $url[0]; $this->request->get['id'] = $url[1]; } /** END OF PROCESSING TO DECORD REQUET SEO URL FOR PAVO BLOG MODULE **/
Ищем (~140 line):
case 'product/product/review':
Перед этой строкой вставляем:
// Nikita_SP MOD FOR PAV BLOGS case 'pavblog/category': break; case 'pavblog/blog': $isblog = 1; break; // END NIKITA_SP MOD
Ищем цикл SWITCH на ~173 строке:
switch ($key) {
И находим default. Перед ним вставляем:
// Nikita_SP MOD FOR PAV BLOGS case 'id': if(isset($isblog)){ if ($this->config->get('config_seo_url_include_path')) { $blogpath = $this->getPathByBlog($value); if($blogpath){ $categories = explode('_', $blogpath); foreach ($categories as $category) { $queries[] = 'pavblog/category=' . $category; } } } $queries[] = 'pavblog/blog=' . $value; $postfix = 1; }else{ $category = $value; $blogpath = $this->getPathByBlogCat($category); if($blogpath){ $categories = explode('_', $blogpath); foreach ($categories as $category) { $queries[] = 'pavblog/category=' . $category; } } } unset($data[$key]); break; // END NIKITA_SP MOD
Находим ~272 строку:
private function getPathByProduct($product_id) {
И перед ней добавляем функции:
// Nikita_SP MOD FOR PAV BLOG private function getPathByBlog($blog_id) { $blog_id = (int)$blog_id; if ($blog_id < 1) return false; static $path = null; if (!is_array($path)) { $path = $this->cache->get('blog.seopath'); if (!is_array($path)) $path = array(); } if (!isset($path[$blog_id])) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "pavblog_blog WHERE blog_id = '" . $blog_id . "' ORDER BY category_id DESC LIMIT 1"); $path[$blog_id] = $this->getPathByBlogCat($query->num_rows ? (int)$query->row['category_id'] : 0); $this->cache->set('blog.seopath', $path); } return $path[$blog_id]; } private function getPathByBlogCat($category_id) { $category_id = (int)$category_id; if ($category_id < 1) return false; static $path = null; if (!is_array($path)) { $path = $this->cache->get('blogcat.seopath'); if (!is_array($path)) $path = array(); } if (!isset($path[$category_id])) { $max_level = 2; $sql = "SELECT CONCAT_WS('_'"; for ($i = $max_level-1; $i >= 0; --$i) { $sql .= ",t$i.category_id"; } $sql .= ") AS path FROM " . DB_PREFIX . "pavblog_category t0"; for ($i = 1; $i < $max_level; ++$i) { $sql .= " LEFT JOIN " . DB_PREFIX . "pavblog_category t$i ON (t$i.category_id = t" . ($i-1) . ".parent_id)"; } $sql .= " WHERE t0.category_id = '" . $category_id . "'"; $query = $this->db->query($sql); $path[$category_id] = $query->num_rows ? $query->row['path'] : false; $this->cache->set('blogcat.seopath', $path); } return $path[$category_id]; } // END NIKITA_SP MOD
После внесения этих правок в файле кеша SEO PRO вы увидите ваши СЕО УРЛЫ для блога, прописанные в админке.
Скачать файл со всеми изменениями можно тут.
Для генерации SEO url категорий необходимо еще добавить вручную в базе данных или с помощью SEO Manager два сео урл: для основной категории блога с ID=1 и для самого блога. Вместо ключа «blog» вы можете использовать любое другое слово, оно будет использоваться как база для блога: http://text1.ru/your-base/category/post.html
На этом все, пользуйтесь, благодарите, пишите комментарии, ставьте лайки!
Всем спасибо за внимание, всегда ваш Nikita_Sp.