Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Модуль новостей "News Module" для OpenCart v.1.5.1


Recommended Posts

Для тех кто использует в своем магазине Модуль новостей "News Module" для OpenCart v.1.5.1 предлагаю способ прикручивания ЧПУ к новостям.

Откройте файл catalog/controller/common/seo_pro.php

После

case 'category_id':

Добавьте

case 'news_id':

Там же найдите строку

$get = array('path', 'product_id', 'manufacturer_id', 'category_id', 'information_id');

И замените ее на

$get = array('path', 'product_id', 'manufacturer_id', 'category_id', 'information_id', 'news_id');

В админке включите ЧПУ. Способ вывода - SEO pro

Если Вывод ЧПУ в админке включен default, тогда нужно:

Открыть файл catalog/controller/common/seo_url.php

После

if ($url[0] == 'manufacturer_id') {

$this->request->get['manufacturer_id'] = $url[1];

}

Добавьте

if ($url[0] == 'news_id') {

$this->request->get['news_id'] = $url[1];

}

Там же после

} elseif (isset($this->request->get['manufacturer_id'])) {

$this->request->get['route'] = 'product/manufacturer/product';

Добавьте

} elseif (isset($this->request->get['news_id'])) {

$this->request->get['route'] = 'information/news';

Там же найдите строку

if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/product' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) {

И замените ее на

if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/product' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/news' && $key == 'news_id') || ($data['route'] == 'information/information' && $key == 'information_id')) {

На этом все, сохраняем файл и загружаем на сервер. Все работает проверял сам. Вот демо магазина с новостями где работает ЧПУ

  • +1 1
Надіслати
Поділитися на інших сайтах


После

case 'category_id':

Добавьте

case 'news_id':

Там же найдите строку

$get = array('path', 'product_id', 'manufacturer_id', 'category_id', 'information_id');

И замените ее на

$get = array('path', 'product_id', 'manufacturer_id', 'category_id', 'information_id', 'news_id');

Забыли еще кое что:

после

elseif (isset($this->request->get['information_id'])) {
				$this->request->get['route'] = 'information/information';
			}
нужно добавить
elseif (isset($this->request->get['news_id'])) {
				$this->request->get['route'] = 'information/news';
			}

Без этого не будет перекидывать на нужный компонент news.

  • +1 1
Надіслати
Поділитися на інших сайтах

Поставил, сделал как описано. Но почему то при нажатии на кнопку подробнее какой либо новости, новость не открывается. В адресной строке ссылка меняется типа "сайт/новость-1" а открыта при этом главная страница сайта !

Как решить эту проблему ?

Надіслати
Поділитися на інших сайтах


кстати, а можно ли сделать так, чтобы Новости индексировались поисковиком?

или они индексируются по умолчанию, как и весь контент на сайте, просто нужно время?

Надіслати
Поділитися на інших сайтах


  • 1 month later...

пожалуйста, помогите решить 2 вопроса:

- как сделать SEO путь (news/) ко всем новостям (а не index.php?route=information/news) и следовательно, если мы прописываем чпу для новости, она не должна отображаться в корне (news/name_news/);

- тот же вопрос к хлебным крошкам, путь на главную сейчас выглядит: /index.php?route=common/home, хотелось бы исправить на /.

Надіслати
Поділитися на інших сайтах


второй вопрос победил так:

в seo_pro:

заменил: $link .= 'index.php?route=' . $route;

на

if ($route == "common/home") {

$link = "/";

} else { $link .= 'index.php?route=' . $route;

}

первый вопрос всё ещё актуален

Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

Сделал так как у Вас описано, теперь при переходе на новость - ЧПУ формируется, но на самой странице пишется что "Запрашиваемая страница не найдена!"

А так же url формируется как sitename/newsname - это верно? И может есть идеи как прикрутить ссылки на новость в сайтмап?

Надіслати
Поділитися на інших сайтах


  • 6 months later...

Когда вношу изменения в seo_url.php, вместо сайта получаю ошибку:

Parse error: syntax error, unexpected T_PUBLIC in vqmodvqcachevq2-catalog_controller_common_seo_url.php on line 106

На этой строке находится следующий код:

public function rewrite($link) {
  if ($this->config->get('config_seo_url')) {
   $url_data = parse_url(str_replace('&', '&', $link));

   $url = '';

   $data = array();

   parse_str($url_data['query'], $data);

   foreach ($data as $key => $value) {
	if (isset($data['route'])) {
	[b] if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/product' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/news' && $key == 'news_id') || ($data['route'] == 'information/information' && $key == 'information_id')) {[/b]

Видно, что ошибка возникает в функции, где содержится измененный код, третья его часть. Но при этом ошибка исчезает после удаления вот этого кода:

} elseif (isset($this->request->get['news_id'])) {
$this->request->get['route'] = 'information/news';

При этом урл становится ЧПУ-шным, но вида «http://site.ru/novost», и открывается не новость, и не страница ошибки, а главная страница сайта.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.