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

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

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

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

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

comments powered by HyperComments

Не забудь подписаться на группы в социальных сетях, чтобы всегда быть вкурсе последних событий!

Dmitry
2014-10-01 11:31:59
не работает для категорий, как можно поправить? pav blog 1.1 ocstore 1.5.5.1.1
Nikita Sp
2014-10-01 11:33:41
А как выглядит урл категории без сео? По идее все должно работать. Попробуйте кеш почистить в папке system/cache/
Dmitry
2014-10-01 13:09:41
чистил не помогает, урл /index.php?route=pavblog/category&id=25
Nikita Sp
2014-10-01 13:11:55
все должно работать. Переменные те же. Возможно вы не прописали SEO адрес для категории, или не верно установили SEO pro. Еще раз очистите кэш - бывает глючит. Проверьте в БД сохраняются ли в таблицу url'ов сео урлы блога.
Dmitry
2014-10-01 16:24:52
нет, все прописано и в бд есть алиасы, но для категорий не заменяет url, для статей все ок. Для какой версии блога ваш код? может в 1.1. поменялось что
Nikita Sp
2014-10-01 16:30:13
Вспомнил! Спасибо что напомнили! Сейчас допишу.Необходимо или руками в БД, или используя SEO Manager добавить/првоерить чтобы были записи: pavblog/blogs - blog pavblog/category=1 - blog т.е. прописать SEO урл для этих ссылок как blog (или то что у вас используется как директория для блога)
Nikita Sp
2014-10-01 16:40:36
статью дополнил - можете посмотреть скрины.
Антон
2015-01-27 17:34:16
Подскажите как в блоге этом изменить название главной категории ROOT,предположим на Blogs .Спасибо!
Nikita Sp
2015-01-27 17:36:44
В статье же написано: "Для генерации SEO url категорий необходимо еще добавить вручную в базе данных или с помощью SEO Manager два сео урл: для основной категории блога с ID=1 и для самого блога. Вместо ключа “blog” вы можете использовать любое другое слово, оно будет использоваться как база для блога: http://text1.ru/your-base/category/post.html https://nikita-sp.com.ua/wp-content/uploads/2014/08/pavblogseo.jpg https://nikita-sp.com.ua/wp-content/uploads/2014/08/pavblogseo-database.jpg"
Антон
2015-02-08 18:40:16
Это понятно.Но в хлебных крошках в любом случае будет присутствовать "root" и вопрос был именно об этом.
Nikita Sp
2015-02-08 18:41:49
категория Root переименовывается в БД ручками в таблице DB_PREFIX.pavblog_category_description и PROFIT
Василий Скробов
2015-07-31 20:58:03
Все круто, работает, спасибо. Но проблема добавление блога в карту сайта не решена(
Nikita Sp
2015-07-31 20:59:22
Это абсолютно отдельный модуль будет.
Алексей Погорелов
2015-09-12 15:57:46
Во-первых в статье не написан путь к файлу сео про, поди догадайся, не все же знают или могут знать где искать, я делал правки в файле по адресу /catalog/controller/common/ . но сеоурлы не появились и при прописания их в адресной строке правильно открывает страницу. но урл переадресовывает на урл без чпу, в pavblog_category_description категории рут не существует, а таблицы профит нет вообще, ......................."Для генерации SEO url категорий необходимо еще добавить вручную в базе данных или с помощью SEO Manager два сео урл: для основной категории блога с ID=1 и для самого блога...................зашел в бд а там все и так есть. то что вы пишите тут прописывать, но ничего не работает
Nikita Sp
2015-09-12 16:04:40
1) Не нужно отправлять по несколько раз одно и тоже сообщение, т.к. они проходят просто премодерацию. 2) Дописал путь к файлу, в статью, спасибо. Просто я думал это уже очевидно. 3) Категория ROOT существует, она создается еще при установке. Проверьте файл install.php в admin/model/pavblog/install.php. см. скрин. 4) PROFIT - это не название таблицы, а окончание инструкции (profit (с англ.) - получение прибыли), т.е. последний этап. 5) По умолчанию SEO url не создаются для данных адресов, так что в таблице их быть сначала не должно. 6) Если у вас у одного не работает, а у всех работает - дело не в инструкции. В таком случае могу только предложить свою помощь. Спасибо за комментарий.
Алексей Погорелов
2015-09-14 22:57:16
от помощи не отказался бы
Nikita Sp
2015-09-14 22:58:38
В таком случае пишите свои контакты сюда или через форму обратной связи в разделе контакты.
Griha Shapovalov
2015-10-13 16:52:31
Для категорий чпу работают, для статей - нет. Так и должно быть?)
Nikita Sp
2015-10-13 16:53:48
Видимо вы что-то не верно настриваете. Нужен FTP и адрес для диагностики.
Griha Shapovalov
2015-10-13 19:06:30
Написал Вам на фейсбуке
Nikita Sp
2015-10-13 19:30:30
ответил
Игорь_Тернополь
2015-11-09 16:02:01
Есть решение для 2.0? https://opencartforum.com/files/file/2577-seo-pro-%D0%B4%D0%BB%D1%8F-opencart/
Nikita Sp
2015-11-09 16:05:10
К сожалению, не располагаю SEO_PRO 2.0, но если у вас есть - можете предоставить (через форму обратной связи в контактах) для изучения и я постараюсь вам подсказать. Мне лично кажется что он не очень сильно изменился, т.к. в логах изменений указан только один пункт: "исправил работу модуля с ssl", что вряд ли повлекло за собой кардинальные изменения.
Игорь_Тернополь
2015-11-09 17:00:50
Ссылка в первом сообщении.
Nikita Sp
2015-11-09 17:02:33
Извините, почему-то думал что он платный) Ну быстро осмотрев модуль могу сказать что сам модуль не изменен на первый взгляд, просто его адаптировали для Opencart 2.x. Так что кажется все будет работать, попробуйте.
Игорь_Тернополь
2015-11-09 17:26:31
К сожалению не работает.
Nikita Sp
2015-11-09 17:29:42
Значит нужно будет тестировать. Спасибо за комментарий, постараюсь в ближайшее время решить данную проблему. Следите за новостями чтобы первым узнать о решении. Спасибо, удачного дня!
Игорь_Тернополь
2015-11-17 02:39:30
Не удалось посмотреть?
Nikita Sp
2015-11-17 02:41:06
К сожалению пока нет. Думаю ближе к выходным. Спасибо что напомнили, кстати)
Kimgim
2016-01-02 18:35:15
Здравствуйте, решения под 2,х еще не появилось ?
Nikita Sp
2016-01-02 18:37:57
1) Pav Blog не видел под OC 2.x, возможно свяжусь с разработчиками чтобы утвердить адаптацию под OC 2.x и дальнейшее распространение моими силами, но пока все в планах - праздники. 2) SEO PRO роде работает с OC 2.x, не пробовал, если работает, то и данное решение будет работать.
Михаил
2016-03-04 00:38:43
а нет такого же для Blog / news?
Nikita Sp
2016-03-04 00:39:16
был бы - выложил бы. Могу сделать вам отдельно, под заказ. Пишите на почту.
Евгений Смирнов
2016-03-10 19:57:41
Добрый день, наткнулся на грабли) Не подхватывает УРЛ для записей блога, с категориями все норм. В базе роуты забиты, кэш чищен, seo_pro.php пробовал Ваш подкидывать.. видел такое было в коментах у "Griha Shapovalov 2015.10.13 08:57", куда копать не подскажете? зы. спс за мануал)
Nikita Sp
2016-03-10 20:08:53
Честно, не помню уже, 10 месяц-то прошлого года! :) Надо смотреть в конкретном случае.
RoooM
2016-04-18 04:30:31
Подскажите пожалуйста, после установки осталась пустой одна таблица категорий блога - oc_pavblog_category - соответственно, в админке всё отображается, но нет категорий блога, хотя есть сами блоги. Ни отредактировать, ни добавить свою категорию. Как в MySQL таблицу oc_pavblog_category добавить колонки category_id, image... right, keyword с их начальными данными??? Может кто-то сделает мне дамп этой одной таблички для импорта в MySQL? Заранее спасибо!
Nikita Sp
2016-04-18 04:33:30
Здравствуйте, спасибо за комментарий! Не качайте модули и дополнения с ненадежных источников. Вот оригинальная сборка: http://www.pavothemes.com/opencart-modules/25-pav-blog-module.html Спасибо за комментарий.
Максим
2016-06-09 00:10:34
Здравствуйте! Пробовал это применить на сборку 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?
Nikita Sp
2016-06-09 00:11:29
могу вам отдельно помочь, пока времени на написание/редактирование статей, к сожалению нет. Напишите мне на почту в разделе контакты и мы попробуем решить проблему. Спасибо.
Андрей Ерофеев
2016-08-18 12:00:05
Здравствуйте. У меня не работает чпу для статей. Для категорий работает.
Андрей Ерофеев
2016-08-18 12:00:09
Здравствуйте. Как вы решили данную задачу?
Nikita Sp
2016-08-18 12:01:22
Добрый день! Скорей всего вы не верно настроили или что-то не верно установили. Спасибо за комментарий!
Андрей Ерофеев
2016-08-18 16:20:44
Я читал в комментариях что у человека была похожая проблема. Как ее удалось решить? Просто в какую сторону копать?
Nikita Sp
2016-08-18 16:28:12
она сама решилась, скорей всего либо кеш не почистили либо что-то не так сделали. А я написал "ответил" про сообщение на facebook. Спасибо за комментарий.
Вверх!

Меню блога

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

Облако тегов