Всем привет! Если вы зашли на эту страничку скорей всего у вас интернет магазин на opencart, и на нем установлен модуль блога а именно Pav Blog, и на нем не работает Seo ЧПУ статьей, категорий, ну или же вы только планируете его ставить....
Данный модуль блога для opencart, очень распространен и хорош в применении, но в нем есть маленький недостаток отсутствие поддержки SEO для сборок ocstore или других сборок в которых подключен SeoPro, вернее это даже не недостаток просто автор модуля делал поддержку seo именно для стандартного opencart.
Если же ваш интернет магазин работает именно с включенным SeoPro то для того чтобы заработали чпу ссылки блога, вам потребуется немного подправить сам файл SeoPro.
Сложного здесь ничего нет, но как всегда будьте внимательны и делайте бекапы на всякий случай.
Ну что же давайте уже приступим к выполнению нашей задачи и сделаем правильные чпу ссылки для блога.
Первое что нам нужно сделать так это добавить в базу данных в таблицу oc_url_alias две новых строки а именно выполнить запрос:
1 2 |
INSERT INTO url_alias (query, keyword) VALUES ('pavblog/blogs', 'blog'); INSERT INTO url_alias (query, keyword) VALUES ('pavblog/category=1', 'blog'); |
ну или же если у вас установленный какой либо Seo менеджер то вы можете добавить эти строки через них, общим в таблице у вас должны появится такие строчки:
То есть для категории с ID=1 и для самого блога мы добавляем ключ blog (PS: вместо blog вы можете указать любое другое свое значение)
Ок, с таблицей мы закончили, теперь давайте отредактируем сам файл SeoPro, для этого открываем его по адресу catalog/controller/common/seo_pro.php вашим любимым блокнотом, (рекомендую notepad+) и делаем в нем небольшие изменения.
Перед строчкой:
1 |
if (isset($queries[$parts[0]])) { |
Нам нужно добавить:
1 2 3 4 5 6 7 8 9 |
/* SEO web-ukraine.com PAV BLOG START */ 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]; } /* SEO web-ukraine.com PAV BLOG STOP */ |
Далее находим строчку кода:
1 |
case 'product/product/review': |
И перед ней добавляем:
1 2 3 4 5 6 7 |
// SEO web-ukraine.com PAV BLOG START case 'pavblog/category': break; case 'pavblog/blog': $isblog = 1; break; // SEO web-ukraine.com PAV BLOG STOP |
В цикле SWITCH ниже строчки:
1 |
switch ($key) { |
Ищем default: и перед ним добавляем:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
// SEO web-ukraine.com PAV BLOG START 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; // SEO web-ukraine.com PAV BLOG STOP |
Далее находим рядок с кодом:
1 |
private function getPathByProduct($product_id) { |
И перед ним добавляем:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
// SEO web-ukraine.com PAV BLOG START 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]; } // SEO web-ukraine.com PAV BLOG STOP |
Ну вот в принципе и все, теперь у нас в папке кеша вы сможете увидеть seo страницы которые вы прописывали в админке.
Да, и еще не забывайте очищать кеш чтобы видеть внесенные вами изменения.
Сам модуль блога для opencart вы можете
Или скачать с нашего сервера здесь
Будут вопросы или что то не получается пишите в комментариях, удачи!
4 комментария
Двуязычный сайт на OpenCart 2.2.0.0 (trs.2.0.3.0) связка: SEOPRO+PAV BLOG
Сделал всё по вашей инструкции но вот такая вот беда переадресация ‘pavblog/blogs на blog работает, а вот дальше блог не видит https://yadi.sk/i/_lj1RlSq3Qm5vS (блог создан при отключёном сео про работает)
Данная инструкция писалась для ветки 1.5…
Для вашей версии opencart подсказать не могу так как не проверял на ней, ни сам блог ни связку сео про.
Здесь только помочь могу в индивидуальном порядке.
Понятно, как печально. А сколько это будет стоить?
Оставьте запрос через форму под статьей, с описанием деталей, ссылкой на сайт и.т.д… Мы ознакомимся и дадим ответ!