Jump to content

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 3

Share this post


Link to post
Share on other sites
2 часа назад, Agatha65 сказал:

что для сео корзини нужно еще править common.js

Почему?
 

Странный код в русской сборке ошибка:

Спойлер

    <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>

 

Share this post


Link to post
Share on other sites
16 минут назад, buslikdrev сказал:

Почему?

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

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

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

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

Share this post


Link to post
Share on other sites
29 минут назад, mpn2005 сказал:

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

 

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

Share this post


Link to post
Share on other sites
1 минуту назад, buslikdrev сказал:

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.