Module Changelog:

  • 2015-02-10: Module updated, now it have option to hide default language in URL.
  • 2015-02-11: bugfix: text_home, button_cart, etc. Fixed wrong language initialization.
  • 2015-04-08: please use fixed sitemap.xml generator
  • 2016-01: less problem with curl and API => change 303 redirect to 301. Compatibility with / 2102 (was incompatible only in language resources)

Module description

SeoPro is an alternative for default "seo_url" library. What you will have using SeoPro:

  • each product have single physical URL and one fixed breadcrumb as result;
  • product still can be assigned to multiple categories;
  • store doesn't have multiple addresses pointing to one page;
  • all database queries to url_alias are cached (increased performance);
  • nice URLs on any route;
  • language code included in URL: Google can index product descriptions in all languages - multilanguage URLs! Hreflang support.
  • optional hide default language code in URL

Tested on Opencart v2.0.1.1 (oc2011),,,

Should work on oc2010, maybe oc2000. Using oc2000 not recommended: upgrade to oc2011 instead.

This repository contains all modified files, so you can compare them with yours. You can use Total Commander (Windows), WinMerge (Windows), Meld (Linux) to compare files and folders. The upload folder contains new module files, and dev-modified folder - all modified core files.

If you are looking for older version (for Opencart v1564), switch to oc1564 branch:


To get support please contact us via support forum topic

Languages: English, Russian, Ukrainian.

If you buy installation and setup service, please fill order comments with:

  • FTP access (hostname, login, password)
  • Opencart admin access (login, password and URL if it non-standard)


  • execute SQL query

    ALTER TABLE `product_to_category` ADD `main_category` tinyint(1) NOT NULL DEFAULT '0';
    ALTER TABLE `product_to_category` ADD INDEX `main_category` (`main_category`);

    if you use prefix, add it to the table name (for example: oc_product_to_category);

    If you got warning Error Code: 1060. Duplicate column name 'main_category' then previous version of seopro extension had been installed. It is OK, please continue installation.

  • Open file index.php, find

    $controller->addPreAction(new Action('common/seo_url'));

    and replace this line with following

    if (!$seo_type = $config->get('config_seo_url_type')) {
        $seo_type = 'seo_url';
    $controller->addPreAction(new Action('common/' . $seo_type));

    ATTN (Windows users): Please do not use stupid Windows Notepad, use Notepad++ for editing files. Files must be saved in UTF-8 encoding without BOM.


  • Q: why not include this SQL query in OCMOD istaller?
  • A: because installer will fail if you have used (or tried to use) SeoPro. And we can't said something like "just delete this column if you want an automated install", because you might have lot of products edited and main_category used in your setup.

    It pretty simple to do this query manually.

    index.php cannot be modified via OCMOD, so you need to do it manually anyway.

ATTN: our OCMOD Multiline fix required for automated install

Please see OCMOD Multiline fix (ru, en).

If you receive

Fatal error: Call to undefined method ControllerCatalogProduct::getAllCategories()
in ***/system/modification/admin/controller/catalog/product.php on line 1036

this might be caused by absence of the Multiline OCMOD fix.

Finalize install: check personal settings, switch to SeoPro

  • rename .htaccess.txt to .htaccess, check RewriteBase setting

    RewriteBase /
    # RewriteBase /shop/
    RewriteRule ^sitemap.xml$       index.php?route=feed/google_sitemap [L]
    RewriteRule ^ru/sitemap.xml$ ru/index.php?route=feed/google_sitemap [L]
    RewriteRule ^en/sitemap.xml$ en/index.php?route=feed/google_sitemap [L]

    add rules for all languages you use on the site;

  • Go to Admin backend:

    • install extension,
    • go to the "Extensions / Modifications" menu and click "Refresh" button,
    • go to the "Extensions / Modules" menu and install [OCJazz] SeoPro module,
    • edit products, go to "Links" tab and set "Main category",
    • edit categories (seokeyword field must be filled everywhere, in all categories),
    • go to shop settings, tab Server:
      • turn "Use SEO URLs" on,
      • switch "SEO URL Type" from default (SeoUrl) to SeoPro,
      • select "SEO URL for product with categories"
        • if YES, the URL will be like,
        • if NO - like
      • select "SEO URL ending" (for example: ".html") or leave it empty

What the main idea of SeoPro and what the difference from default SeoUrl

In Russian:

Product can be assigned to SEVERAL categories in Opencart. This is why product can have different URLs out of the box with standard SeoUrl (seo_url) library.

  • How this works with default SeoUrl?

    By specifying CANONICAL meta tag. Product can have several physical addresess in the shop, have categories and subcategories in URL, and so on. But all of them point to one canonical address: This is canonical address of the product page.

    There is all okay for search engines. Opencart tolds the right logical address to search engines, shop have multiple physical addresess for product pages.

    Webmaster tools logs this situation and show the stats: how many physical pages point to their canonical address and therefore not counted as different pages.

  • How this solved with SeoPro?

    SeoPro adds the MAIN CATEGORY term for products and changes the library that forms URLs. Product still can be assigned to several categories, but you must decide: which category is main (canonical address).

    This allows to recover full category path from any point, when we have only product_id and don't have the path parameter. As result - we now able to have the unified product URL (with full path) in modules on home page: such as Bestsellers module, for example. The Opencart engine can now return one unified URL for product.

    Canonical URL = physical URL. No more physical address duplicates pointing to one canonical URL.

    Canonical address of the product now can contain full category path. Or do not use categories-ased path -- this can be selected in settings.

See also:


Author: Yesvik, 2011 (, ocStore)


Opencart 2.x

Opencart / ocStore 1.5.x

Opencart 2.0 Opencart (should work),,,, (tested)
Languages English, Russian, Ukrainian
OCMOD Yes, available. Semi-automatic installation.

Отличный модуль-ничего лишнего и все понятно


Спасибо. Установка прошла без проблем, всё работает. Opencart


Если версия Opencart 2.1.02 нужно вот это делать? Перед установкой SeoPro надо установить "OCMOD Multiline fix"


Ответ: Да

Пишу здесь, т.к.:
Message not delivered. There was a problem delivering your message to See the technical details below, or try resending in a few minutes.
The response from the remote server was:

550 5.7.1 <>: user not found


Скачав для 2.1.x, ставив на (trs- Звісно прийшлось трішки пошукати де нестиковки, але запрацювало...
Зі знайденого:
1) addPreAction призначаються вже не в index.php, а в system/framework.php і беруться з system/config.catalog.php - там і треба замінити ''startup/seo_url' на 'common/seo_pro' - і це працюватиме тільки для каталога, не для адмінки (кому в ній ЧПУ здалися?)
2) модулі для адмінки тепер мають бути в папці extension/module, хоча працює фдмінка й так, але нікрасіво... А щоб перенести, то треба й самому модулі поправити шляхи.
3) для "Multiline OCMOD fix" вже міняти треба не там
4) не всі заміни OCMOD знаходять відповідне місце (наприклад куди втулити функцію getAlterLanguageLinks)

Шкода, що "Автозаполнения SEO-URL при создании и редактировании товаров" платне.


Спасибо большое за проделанную работу, очень полезная вещь! Успехов!

Write a review

Note: HTML is not translated!
    Bad           Good

SeoPro for Opencart 2.0.x / 2.1.x

  • Brand: OpencartJazz
  • Product Code: ocj-seopro-oc2
  • Availability: In Stock
  • Free

Available Options

Related Products

Tags: seo