Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

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


Рекомендованные сообщения

Для тех кто использует в своем магазине Модуль новостей "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 месяц спустя...

пожалуйста, помогите решить 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 недели спустя...

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

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

Ссылка на комментарий
Поделиться на других сайтах


  • 6 месяцев спустя...

Когда вношу изменения в 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 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.