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

Opencart 3 route=common/home


Recommended Posts

Важно: ето для Opencart 3 не работает для ocStore 3.

 

Еще уточняю: я болгарка, на русском пишу как могу :)

 

Проблема удалить /index.php?route=common/home стоить давно еще с версия 1 и били многие решенеия, но самое грамотное я нашла у наших бразилских колег.

В Бразилии Опенкарт на первом месте в ел комерции и там есть очен много хороших разрабочиков.

У них есть своя локализированная версия опенкарта на гитхабе, свой форум и маркетплейс и некоторие модули они размещают и на оффсайт.

https://www.opencartbrasil.com.br/

Модификатор для SEO URLs для стандартних страниц, включая главная на гитхаб:

https://github.com/opencartbrasil/todas-urls-amigaveis

на оффсайт:

https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=22038

там еще стоит и версия для опенкарт 2

 

Плюс в том что етот модификатор очень гибкий, примерно можно добавить кустомние страници, чистий ocmod - ненужно трогать htaccess. Не конфликтирует с модуль Марка Мультиязик для Опенкарт 2.

 

В оригинале все урли на португальском, я сделала первевод на английском.

Я еще убрала сео урли для корзина и чекоут, потому что для сео корзини нужно еще править common.js на гитхабе ест указания как ето сделать если нужно. Checkout и success тоже самое, есть разние чекоути и некоторие методи оплати имеют свой  success. То что нужно можно добавить в начале модификатора(в $new_urls = array(.

Сам код(перевод на анлийском)

Spoiler

<?xml version="1.0" encoding="UTF-8"?>
<modification>
  <name>SEO Common Pages OpenCart 3.0.x</name>
  <code>seo-url-common-pages</code>
  <version>3.0.1</version>
  <author>OpenCart Brasil mod by agatha65</author>
  <file path="catalog/controller/startup/seo_url.php">
    <operation>
      <search><![CDATA[class ControllerStartupSeoUrl extends Controller {]]></search>
      <add position="after"><![CDATA[
        private $new_urls = array(
            'common/home' => '',
            'account/account' => 'account/my-account',
            'account/wishlist' => 'account/wishlist',
            'account/register' => 'account/register',
            'account/login' => 'account/login',
            'account/forgotten' => 'account/forgotten-password',
            'account/edit' => 'account/edit',
            'account/password' => 'account/change-password',
            'account/address' => 'account/address',
            'account/address/edit' => 'account/address/edit',
            'account/address/delete' => 'account/address/delete',
            'account/address/add' => 'account/address/add',
            'account/reward' => 'account/points',
            'account/logout' => 'account/logout',
            'account/order' => 'account/order-history',
            'account/order/info' => 'account/order-history/info',
            'account/order/reorder' => 'account/order-history/reorder',
            'account/newsletter' => 'account/newsletter',
            'account/download' => 'account/downloads',
            'account/transaction' => 'account/transactions',
            'account/recurring' => 'account/recurring',
            'account/return' => 'account/return',
            'account/return/add' => 'account/return/add',
            'account/return/success' => 'account/return/success',
            'account/voucher' => 'account/voucher/purchase',
            'account/voucher/success' => 'account/voucher/success',
            'account/tracking' => 'account/affiliate/generate-links',
            'account/affiliate/edit' => 'account/affiliate/edit',
            'affiliate/register' => 'affiliate/register',
            'affiliate/login' => 'affiliate/login',
            'information/sitemap' => 'sitemap',
            'product/special' => 'specials',
            'product/manufacturer' => 'brands',
            'product/compare' => 'product-compare',
            'product/search' => 'search'
        );
      ]]></add>
    </operation>
    <operation>
      <search><![CDATA[$this->request->get['route'] = 'error/not_found';]]></search>
      <add position="replace"><![CDATA[
        if (in_array($this->request->get['_route_'], $this->new_urls)) {
            $this->request->get['route'] = array_search($this->request->get['_route_'], $this->new_urls);
        } else {
            $this->request->get['route'] = 'error/not_found';
        }
      ]]></add>
    </operation>
    <operation>
      <search index="1"><![CDATA[unset($data[$key]);]]></search>
      <add position="replace"><![CDATA[
            unset($data[$key]);
        } else {
            $this->new_urls = array_flip($this->new_urls);
            if (in_array($data['route'], $this->new_urls)) {
                $url = '/' . array_search($data['route'], $this->new_urls);
            }
            $this->new_urls = array_flip($this->new_urls);
      ]]></add>
    </operation>
  </file>
</modification>

 

seo-urls-common-pages.ocmod.zip

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

16 минут назад, buslikdrev сказал:

Почему?

Потому, что в штатной теме cкрипт common.js содержит такой код:

if (getURLVar('route') == 'checkout/cart' || getURLVar('route') == 'checkout/checkout') {

И при включенном SEO_URL не обновляется корзина, при удалении элеменов на странице корзины.

Такая же беда и в двойке. И во многих темах.

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

1 минуту назад, buslikdrev сказал:

При seo_url удаляет, при seo_pro только не удаляло, если прописать seo_url (в ocstore костыль в common.js добавляли), я тогда просто на кнопке удаления менял тип кнопки с button на submit, как на кнопке обновить.

Речь про чистый OpenCart из коробки.

А как лечить - это уже другой момент. Нет там ничего сложного.

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

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

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

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

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

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

Вхід

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

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

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

Important Information

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