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

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

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

Создание сайтов Харьков

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

5 августа 2014 в 15:22 Автор: Nikita_Sp в категории Плагины и модули, Статьи о 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

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.

47 комментариев

    • А как выглядит урл категории без сео? По идее все должно работать. Попробуйте кеш почистить в папке system/cache/

    • все должно работать. Переменные те же. Возможно вы не прописали SEO адрес для категории, или не верно установили SEO pro. Еще раз очистите кэш — бывает глючит. Проверьте в БД сохраняются ли в таблицу url’ов сео урлы блога.

  • нет, все прописано и в бд есть алиасы, но для категорий не заменяет url, для статей все ок. Для какой версии блога ваш код? может в 1.1. поменялось что

    • Вспомнил! Спасибо что напомнили! Сейчас допишу.Необходимо или руками в БД, или используя SEO Manager добавить/првоерить чтобы были записи:

      pavblog/blogs — blog
      pavblog/category=1 — blog

      т.е. прописать SEO урл для этих ссылок как blog (или то что у вас используется как директория для блога)

  • Подскажите как в блоге этом изменить название главной категории ROOT,предположим на Blogs .Спасибо!

    • В статье же написано:

      «Для генерации SEO url категорий необходимо еще добавить вручную в базе данных или с помощью SEO Manager два сео урл: для основной категории блога с ID=1 и для самого блога. Вместо ключа “blog” вы можете использовать любое другое слово, оно будет использоваться как база для блога: http://text1.ru/your-base/category/post.html

      http://nikita-sp.com.ua/wp-content/uploads/2014/08/pavblogseo.jpg

      http://nikita-sp.com.ua/wp-content/uploads/2014/08/pavblogseo-database.jpg«

      • Это понятно.Но в хлебных крошках в любом случае будет присутствовать «root» и вопрос был именно об этом.

        • категория Root переименовывается в БД ручками в таблице DB_PREFIX.pavblog_category_description
          и PROFIT

          • Во-первых в статье не написан путь к файлу сео про, поди догадайся, не все же знают или могут знать где искать, я делал правки в файле по адресу /catalog/controller/common/ . но сеоурлы не появились и при прописания их в адресной строке правильно открывает страницу. но урл переадресовывает на урл без чпу, в pavblog_category_description категории рут не существует, а таблицы профит нет вообще, …………………..»Для генерации SEO url категорий необходимо еще добавить вручную в базе данных или с помощью SEO Manager два сео урл: для основной категории блога с ID=1 и для самого блога……………….зашел в бд а там все и так есть. то что вы пишите тут прописывать, но ничего не работает

          • 1) Не нужно отправлять по несколько раз одно и тоже сообщение, т.к. они проходят просто премодерацию.
            2) Дописал путь к файлу, в статью, спасибо. Просто я думал это уже очевидно.
            3) Категория ROOT существует, она создается еще при установке. Проверьте файл install.php в admin/model/pavblog/install.php. см. скрин.
            4) PROFIT — это не название таблицы, а окончание инструкции (profit (с англ.) — получение прибыли), т.е. последний этап.
            5) По умолчанию SEO url не создаются для данных адресов, так что в таблице их быть сначала не должно.
            6) Если у вас у одного не работает, а у всех работает — дело не в инструкции. В таком случае могу только предложить свою помощь.

            Спасибо за комментарий.

          • от помощи не отказался бы

          • В таком случае пишите свои контакты сюда или через форму обратной связи в разделе контакты.

  • Все круто, работает, спасибо. Но проблема добавление блога в карту сайта не решена(

    • Видимо вы что-то не верно настриваете. Нужен FTP и адрес для диагностики.

          • Здравствуйте. Как вы решили данную задачу?

          • Добрый день!
            Скорей всего вы не верно настроили или что-то не верно установили.
            Спасибо за комментарий!

          • Я читал в комментариях что у человека была похожая проблема. Как ее удалось решить? Просто в какую сторону копать?

          • она сама решилась, скорей всего либо кеш не почистили либо что-то не так сделали.
            А я написал «ответил» про сообщение на facebook.
            Спасибо за комментарий.

    • К сожалению, не располагаю SEO_PRO 2.0, но если у вас есть — можете предоставить (через форму обратной связи в контактах) для изучения и я постараюсь вам подсказать.

      Мне лично кажется что он не очень сильно изменился, т.к. в логах изменений указан только один пункт: «исправил работу модуля с ssl», что вряд ли повлекло за собой кардинальные изменения.

        • Извините, почему-то думал что он платный)
          Ну быстро осмотрев модуль могу сказать что сам модуль не изменен на первый взгляд, просто его адаптировали для Opencart 2.x.

          Так что кажется все будет работать, попробуйте.

          • К сожалению не работает.

          • Значит нужно будет тестировать. Спасибо за комментарий, постараюсь в ближайшее время решить данную проблему. Следите за новостями чтобы первым узнать о решении.
            Спасибо, удачного дня!

          • К сожалению пока нет. Думаю ближе к выходным. Спасибо что напомнили, кстати)

    • 1) Pav Blog не видел под OC 2.x, возможно свяжусь с разработчиками чтобы утвердить адаптацию под OC 2.x и дальнейшее распространение моими силами, но пока все в планах — праздники.

      2) SEO PRO роде работает с OC 2.x, не пробовал, если работает, то и данное решение будет работать.

    • был бы — выложил бы. Могу сделать вам отдельно, под заказ.
      Пишите на почту.

  • Добрый день, наткнулся на грабли) Не подхватывает УРЛ для записей блога, с категориями все норм. В базе роуты забиты, кэш чищен, seo_pro.php пробовал Ваш подкидывать..

    видел такое было в коментах у «Griha Shapovalov 2015.10.13 08:57», куда копать не подскажете?

    зы. спс за мануал)

    • Честно, не помню уже, 10 месяц-то прошлого года! 🙂
      Надо смотреть в конкретном случае.

  • Подскажите пожалуйста, после установки осталась пустой одна таблица категорий блога — oc_pavblog_category — соответственно, в админке всё отображается, но нет категорий блога, хотя есть сами блоги. Ни отредактировать, ни добавить свою категорию. Как в MySQL таблицу oc_pavblog_category добавить колонки category_id, image… right, keyword с их начальными данными???
    Может кто-то сделает мне дамп этой одной таблички для импорта в MySQL?
    Заранее спасибо!

  • Здравствуйте! Пробовал это применить на сборку ocstore 2.1.0.2 — не работает. Находил Pavblog 2 rus https://opencartforum.com/files/file/2804-pavblog-2-rus/, устанавливал на чистый ocstore — работает блог и чпу. Но если ставлю на готовый магазин (ocstore 2.1.0.2 + тема kstore от pavothemes) — появляются ошибки, а если ставлю стандартный Pavblog, то работает нормально, но нет чпу. Можете подправить свой вариант чпу для opencart 2?

    • могу вам отдельно помочь, пока времени на написание/редактирование статей, к сожалению нет.
      Напишите мне на почту в разделе контакты и мы попробуем решить проблему.

      Спасибо.

  • Здравствуйте. У меня не работает чпу для статей. Для категорий работает.

  • Добрый день.
    Уточните пожалуйста, это подойдет для версии движка 1.5.6?

  • Добрый день,
    Спасибо за статью, всё понятно описано, мне очень понравилось. При разработке интернет-магазина на OpenCart будет очень полезно такое подробное описание, что очень важно.

Добавить комментарий для RoooM Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вверх!

Меню блога

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

Облако тегов