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.
47 комментариев
не работает для категорий, как можно поправить? pav blog 1.1 ocstore 1.5.5.1.1
А как выглядит урл категории без сео? По идее все должно работать. Попробуйте кеш почистить в папке system/cache/
чистил не помогает, урл /index.php?route=pavblog/category&id=25
все должно работать. Переменные те же. Возможно вы не прописали 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.
Спасибо за комментарий.
Есть решение для 2.0?
https://opencartforum.com/files/file/2577-seo-pro-%D0%B4%D0%BB%D1%8F-opencart/
К сожалению, не располагаю SEO_PRO 2.0, но если у вас есть — можете предоставить (через форму обратной связи в контактах) для изучения и я постараюсь вам подсказать.
Мне лично кажется что он не очень сильно изменился, т.к. в логах изменений указан только один пункт: «исправил работу модуля с ssl», что вряд ли повлекло за собой кардинальные изменения.
Ссылка в первом сообщении.
Извините, почему-то думал что он платный)
Ну быстро осмотрев модуль могу сказать что сам модуль не изменен на первый взгляд, просто его адаптировали для Opencart 2.x.
Так что кажется все будет работать, попробуйте.
К сожалению не работает.
Значит нужно будет тестировать. Спасибо за комментарий, постараюсь в ближайшее время решить данную проблему. Следите за новостями чтобы первым узнать о решении.
Спасибо, удачного дня!
Не удалось посмотреть?
К сожалению пока нет. Думаю ближе к выходным. Спасибо что напомнили, кстати)
Здравствуйте, решения под 2,х еще не появилось ?
1) Pav Blog не видел под OC 2.x, возможно свяжусь с разработчиками чтобы утвердить адаптацию под OC 2.x и дальнейшее распространение моими силами, но пока все в планах — праздники.
2) SEO PRO роде работает с OC 2.x, не пробовал, если работает, то и данное решение будет работать.
а нет такого же для Blog / news?
был бы — выложил бы. Могу сделать вам отдельно, под заказ.
Пишите на почту.
Добрый день, наткнулся на грабли) Не подхватывает УРЛ для записей блога, с категориями все норм. В базе роуты забиты, кэш чищен, seo_pro.php пробовал Ваш подкидывать..
видел такое было в коментах у «Griha Shapovalov 2015.10.13 08:57», куда копать не подскажете?
зы. спс за мануал)
Честно, не помню уже, 10 месяц-то прошлого года! 🙂
Надо смотреть в конкретном случае.
Подскажите пожалуйста, после установки осталась пустой одна таблица категорий блога — oc_pavblog_category — соответственно, в админке всё отображается, но нет категорий блога, хотя есть сами блоги. Ни отредактировать, ни добавить свою категорию. Как в MySQL таблицу oc_pavblog_category добавить колонки category_id, image… right, keyword с их начальными данными???
Может кто-то сделает мне дамп этой одной таблички для импорта в MySQL?
Заранее спасибо!
Здравствуйте, спасибо за комментарий!
Не качайте модули и дополнения с ненадежных источников.
Вот оригинальная сборка: http://www.pavothemes.com/opencart-modules/25-pav-blog-module.html
Спасибо за комментарий.
Здравствуйте! Пробовал это применить на сборку 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?
Да, должно работать для всей ветки 1.5.x
Добрый день,
Спасибо за статью, всё понятно описано, мне очень понравилось. При разработке интернет-магазина на OpenCart будет очень полезно такое подробное описание, что очень важно.