Здравствуй, уважаемый друг!

Кажется, ты используешь AdBlock. Этот проект развивается и существует за счет доходов от рекламы.
Добавь, пожалуйста, нас в исключения.

Спасибо за понимание.

Теперь мы команда!

SEO urls для Pav Blog News Module под OpenCart

5 августа 2014 в 15:22 Автор: Nikita_Sp в категории Плагины и модули, Статьи о php 44 комментария

Создавая интернет-магазины, часто выбирают 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

SEO url для PavBlog 1.1 on Opencart 1.5.4.1 - SEO manager update

SEO url для PavBlog 1.1 on Opencart 1.5.4.1 - Database update

На этом все, пользуйтесь, благодарите, пишите комментарии, ставьте лайки!
Всем спасибо за внимание, всегда ваш Nikita_Sp.

Вверх!

Меню блога

Категории блога

Облако тегов