Jump to content

Recommended Posts

Всем привет! Нужна помощь.

Есть Opencart 1.5.6 + PAVBLOG и установленный SEO PRO

Причина в блоге не работают категории и статьи. Вот ссылка 

https://ukryantar.com/blogs/

FAQ по типу этого 


 http://www.pavothemes.com/guides/pavblog/

https://nikita-sp.com.ua/2014/08/seo-urls-dlya-pav-blog-news-module-pod-opencart.html 

 

и другие не работают.

 

Вот мой SEO PRO (Он мультиязычный).

Готов даже оплатить доработку с блогом. Рад буду советам так же.

Spoiler

<?php
class ControllerCommonSeoPro extends Controller {
    private $cache_data = null;
    private $languages = array();
    private $config_language;

    public function __construct($registry) {
        parent::__construct($registry);
        $this->cache_data = $this->cache->get('seo_pro');
        if (!$this->cache_data) {
            $query = $this->db->query("SELECT LOWER(`keyword`) as 'keyword', `query` FROM " . DB_PREFIX . "url_alias");
            $this->cache_data = array();
            foreach ($query->rows as $row) {
                $this->cache_data['keywords'][$row['keyword']] = $row['query'];
                $this->cache_data['queries'][$row['query']] = $row['keyword'];
            }
            $this->cache->set('seo_pro', $this->cache_data);
        }

        $query = $this->db->query("SELECT `value` FROM `" . DB_PREFIX . "setting` WHERE `key` = 'config_language'");
        $this->config_language = $query->row['value'];

        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "language WHERE status = '1'");

        foreach ($query->rows as $result) {
            $this->languages[$result['code']] = $result;
        }

    }

    public function index() {

// language
        $code = $this->config_language;

        if(isset($this->request->get['_route_'])) {

            $route_ = $this->request->get['_route_'];

            $tokens = explode('/', $this->request->get['_route_']);

            if(array_key_exists($tokens[0], $this->languages)) {
                $code = $tokens[0];
                $this->request->get['_route_'] = substr($this->request->get['_route_'], strlen($code) + 1);
            }

            if(trim($this->request->get['_route_']) == '' || trim($this->request->get['_route_']) == 'index.php') {
                unset($this->request->get['_route_']);
            }
        }

        if ($code == $this->config_language &&
                    isset($this->request->cookie['language']) &&
                        $this->request->cookie['language'] != $code &&
                            isset($this->request->server['HTTP_X_REQUESTED_WITH']) &&
                                strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
                $code = $this->request->cookie['language'];
        }

        if(!isset($this->session->data['language']) || $this->session->data['language'] != $code) {
            $this->session->data['language'] = $code;
        }


        $xhttprequested = isset($this->request->server['HTTP_X_REQUESTED_WITH']) && $this->request->server['HTTP_X_REQUESTED_WITH'] == 'xmlhttprequest';

        $captcha = isset($this->request->get['route']) && $this->request->get['route']=='product/product/captcha';

        if(!$xhttprequested && !$captcha) {
            setcookie('language', $code, time() + 60 * 60 * 24 * 30, '/', $this->request->server['HTTP_HOST']);
        }


        $this->config->set('config_language_id', $this->languages[$code]['language_id']);
        $this->config->set('config_language', $this->languages[$code]['code']);

        $language = new Language($this->languages[$code]['directory']);
        $language->load($this->languages[$code]['filename']);
        $this->registry->set('language', $language);


        // Add rewrite to url class
        if ($this->config->get('config_seo_url')) {
            $this->url->addRewrite($this);
        } else {
            return;
        }

        // Decode URL
        if (!isset($this->request->get['_route_'])) {
            $this->validate();
        } else {
            $route_ = $route = $this->request->get['_route_'];
            unset($this->request->get['_route_']);
            $parts = explode('/', trim(utf8_strtolower($route), '/'));
            list($last_part) = explode('.', array_pop($parts));
            array_push($parts, $last_part);

            $rows = array();
            foreach ($parts as $keyword) {
                if (isset($this->cache_data['keywords'][$keyword])) {
                    $rows[] = array('keyword' => $keyword, 'query' => $this->cache_data['keywords'][$keyword]);
                }
            }

            if (count($rows) == sizeof($parts)) {
                $queries = array();
                foreach ($rows as $row) {
                    $queries[utf8_strtolower($row['keyword'])] = $row['query'];
                }

                reset($parts);
                foreach ($parts as $part) {
                    $url = explode('=', $queries[$part], 2);

                    if ($url[0] == 'category_id') {
                        if (!isset($this->request->get['path'])) {
                            $this->request->get['path'] = $url[1];
                        } else {
                            $this->request->get['path'] .= '_' . $url[1];
                        }
                    } elseif (count($url) > 1) {
                        $this->request->get[$url[0]] = $url[1];
                    }
                }
            } else {
                $this->request->get['route'] = 'error/not_found';
            }

            if (isset($this->request->get['product_id'])) {
                $this->request->get['route'] = 'product/product';
                if (!isset($this->request->get['path'])) {
                    $path = $this->getPathByProduct($this->request->get['product_id']);
                    if ($path) $this->request->get['path'] = $path;
                }
            } elseif (isset($this->request->get['path'])) {
                $this->request->get['route'] = 'product/category';
            } elseif (isset($this->request->get['manufacturer_id'])) {
                $this->request->get['route'] = 'product/manufacturer/info';
            } elseif (isset($this->request->get['information_id'])) {
                $this->request->get['route'] = 'information/information';
            } elseif(isset($this->cache_data['queries'][$route_])) {
                    header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');
                    $this->response->redirect($this->cache_data['queries'][$route_]);
            } else {
                
                /** BEGIN PROCESSING TO DECORD REQUET SEO URL FOR PAVO BLOG MODULE **/
 if( isset($url) && count($url) == 2 && ( preg_match( "#pavblog#", $url[0] )) ){
 unset($this->request->get['pavblog/category']);
 unset($this->request->get['pavblog/blog']);
 unset($queries);
 $this->request->get['route'] = $url[0];
 $this->request->get['id'] = $url[1];
 } /** END OF PROCESSING TO DECORD REQUET SEO URL FOR PAVO BLOG MODULE **/
                
                
                if (isset($queries[$parts[0]])) {
                    $this->request->get['route'] = $queries[$parts[0]];
                }
            }


            $this->validate();

            if (isset($this->request->get['route'])) {
                return $this->forward($this->request->get['route']);
            }
        }
    }

    public function rewrite($link, $code = '') {
        if(!$code) {
            $code = $this->session->data['language'];
        }
        if (!$this->config->get('config_seo_url')) return $link;

        $seo_url = '';

        $component = parse_url(str_replace('&amp;', '&', $link));

        $data = array();
        parse_str($component['query'], $data);

        $route = $data['route'];
        unset($data['route']);

        switch ($route) {
            case 'product/product':
                if (isset($data['product_id'])) {
                    $tmp = $data;
                    $data = array();
                    if ($this->config->get('config_seo_url_include_path')) {
                        $data['path'] = $this->getPathByProduct($tmp['product_id']);
                        if (!$data['path']) return $link;
                    }
                    $data['product_id'] = $tmp['product_id'];
                    if (isset($tmp['tracking'])) {
                        $data['tracking'] = $tmp['tracking'];
                    }
                }
                break;

            case 'product/category':
                if (isset($data['path'])) {
                    $category = explode('_', $data['path']);
                    $category = end($category);
                    $data['path'] = $this->getPathByCategory($category);
                    if (!$data['path']) return $link;
                }
                break;

            case 'product/product/review':
            case 'information/information/info':
                return $link;
                break;

            default:
                break;
        }

        if ($component['scheme'] == 'https') {
            $link = $this->config->get('config_ssl');
        } else {
            $link = $this->config->get('config_url');
        }

        if ($code != $this->config_language){
            $link .= $code . '/index.php?route=' . $route;
        } else{
            $link .= 'index.php?route=' . $route;
        }

        if (count($data)) {
            $link .= '&amp;' . urldecode(http_build_query($data, '', '&amp;'));
        }

        $queries = array();
        foreach ($data as $key => $value) {
            switch ($key) {
                case 'product_id':
                case 'manufacturer_id':
                case 'category_id':
                case 'information_id':

                case 'search':
                case 'sub_category':
                case 'description':

                    $queries[] = $key . '=' . $value;
                    unset($data[$key]);
                    $postfix = 1;
                    break;

                case 'path':
                    $categories = explode('_', $value);
                    foreach ($categories as $category) {
                        $queries[] = 'category_id=' . $category;
                    }
                    unset($data[$key]);
                    break;

                default:
                    break;
            }
        }

        if(empty($queries)) {
            $queries[] = $route;
        }

        $rows = array();
        foreach($queries as $query) {
            if(isset($this->cache_data['queries'][$query])) {
                $rows[] = array('query' => $query, 'keyword' => $this->cache_data['queries'][$query]);
            }
        }

        if(count($rows) == count($queries)) {
            $aliases = array();
            foreach($rows as $row) {
                $aliases[$row['query']] = $row['keyword'];
            }
            foreach($queries as $query) {
                $seo_url .= '/' . rawurlencode($aliases[$query]);
            }
        }

        if ($seo_url == '') return $link;

        if($code != $this->config_language) {
            $seo_url = $code . '/' . trim($seo_url, '/');
        } else {
            $seo_url = trim($seo_url, '/');
        }

        if ($component['scheme'] == 'https') {
            $seo_url = $this->config->get('config_ssl') . $seo_url;
        } else {
            $seo_url = $this->config->get('config_url') . $seo_url;
        }

        if (isset($postfix)) {
            $seo_url .= trim($this->config->get('config_seo_url_postfix'));
        } else {
            $seo_url .= '/';
        }

        if(substr($seo_url, -2) == '//') {
            $seo_url = substr($seo_url, 0, -1);
        }


        if (count($data)) {
            $seo_url .= '?' . urldecode(http_build_query($data, '', '&amp;'));
        }

        return $seo_url;
    }

    private function getPathByProduct($product_id) {
        $product_id = (int)$product_id;
        if ($product_id < 1) return false;

        static $path = null;
        if (!is_array($path)) {
            $path = $this->cache->get('product.seopath');
            if (!is_array($path)) $path = array();
        }

        if (!isset($path[$product_id])) {
            $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . $product_id . "' ORDER BY main_category DESC LIMIT 1");

            $path[$product_id] = $this->getPathByCategory($query->num_rows ? (int)$query->row['category_id'] : 0);

            $this->cache->set('product.seopath', $path);
        }

        return $path[$product_id];
    }

    private function getPathByCategory($category_id) {
        $category_id = (int)$category_id;
        if ($category_id < 1) return false;

        static $path = null;
        if (!is_array($path)) {
            $path = $this->cache->get('category.seopath');
            if (!is_array($path)) $path = array();
        }

        if (!isset($path[$category_id])) {
            $max_level = 10;

            $sql = "SELECT CONCAT_WS('_'";
            for ($i = $max_level-1; $i >= 0; --$i) {
                $sql .= ",t$i.category_id";
            }
            $sql .= ") AS path FROM " . DB_PREFIX . "category t0";
            for ($i = 1; $i < $max_level; ++$i) {
                $sql .= " LEFT JOIN " . DB_PREFIX . "category t$i ON (t$i.category_id = t" . ($i-1) . ".parent_id)";
            }
            $sql .= " WHERE t0.category_id = '" . $category_id . "'";

            $query = $this->db->query($sql);

            $path[$category_id] = $query->num_rows ? $query->row['path'] : false;

            $this->cache->set('category.seopath', $path);
        }

        return $path[$category_id];
    }

    private function validate() {
        if (isset($this->request->get['route']) && $this->request->get['route'] == 'error/not_found') {
            return;
        }
        if(empty($this->request->get['route'])) {
            $this->request->get['route'] = 'common/home';
        }

        if (isset($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
            return;
        }

        if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
            $url = str_replace('&amp;', '&', $this->config->get('config_ssl') . ltrim($this->request->server['REQUEST_URI'], '/'));
            $seo = str_replace('&amp;', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'SSL'));
        } else {
            $url = str_replace('&amp;', '&',
                substr($this->config->get('config_url'), 0, strpos($this->config->get('config_url'), '/', 10)) // leave only domain
                . $this->request->server['REQUEST_URI']);
            $seo = str_replace('&amp;', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'NONSSL'));
        }

        if (rawurldecode($url) != rawurldecode($seo)) {

            header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');

            $this->response->redirect($seo);
        }
    }

    private function getQueryString($exclude = array()) {
        if (!is_array($exclude)) {
            $exclude = array();
            }

        return urldecode(
            http_build_query(
                array_diff_key($this->request->get, array_flip($exclude))
                )
            );
        }
    }
 

 

Edited by natural

Share this post


Link to post
Share on other sites

Зачем 1.5 если есть 2.3?

Share this post


Link to post
Share on other sites
1 hour ago, splka said:

Зачем 1.5 если есть 2.3?

К сожалению обновится проблема в данный момент. 

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.


  • Similar Content

    • By legioner26
      399.00 руб
      Скачать/Купить дополнение


      SEO Генератор мета тегов (категории, товары), SEO URL
      Модуль SEO генератор мета описания позволяет провести оптимизацию всех категорий и товаров. Очень прост в эксплуатации
      Можно перезаписать meta по все товарам, категориям, либо модуль будет сам будет искать не заполненные meta и сохранять информацию о заполнении.
      Все что от Вас требуется, это задать шаблон для заполнения meta.
       
      Также добавлена возможность автоматической массовой генерации отсутствующих SEO URL в товарах и категориях,
      при нажатии на кнопку Обновить ЧПУ (SEO URL)  модуль проставить URL во всех товарах и категориях в которых они отсутствуют.
       
      Возможность устранения дублей SEO URL
       
      ПРИМЕР заполнения прилагается в скриншоте.
       
      УСТАНОВКА
      1. Установить модификатор через Установку дополнения, очистить кешь.
      2. Скопировать папку admin в корень сайта.
      УСТАНОВКА для ОС 3.х
       Устанавливаем архив Uodate-Meta3x.ocmod.zip через Установку расширений, чистим кеш.
      ПРИМЕЧАНИЕ
      Модуль не закублен с открытым исходным кодом, не требует ключа активации.
      Тех. поддержка осуществляется для клиентов купившим модуль для конкретного ресурса, поэтому при покупке обязательно указываем Ваш домен.
       
      ___________________
       
      Также советую приобрести модуль от разработчика @chukcha Редирект Универсал 
      Незаменимый инструмент для редиректов, имеется 410 жизненно важный для удаленных товаров.
       
      Добавил legioner26 Добавлено 31.03.2019 Категория SEO, карта сайта, оптимизация Системные требования Сайт разработчика Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 3.0
      2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1 Обращение к серверу разработчика Нет Старая цена 850  
    • By legioner26
      Модуль SEO генератор мета описания позволяет провести оптимизацию всех категорий и товаров. Очень прост в эксплуатации
      Можно перезаписать meta по все товарам, категориям, либо модуль будет сам будет искать не заполненные meta и сохранять информацию о заполнении.
      Все что от Вас требуется, это задать шаблон для заполнения meta.
       
      Также добавлена возможность автоматической массовой генерации отсутствующих SEO URL в товарах и категориях,
      при нажатии на кнопку Обновить ЧПУ (SEO URL)  модуль проставить URL во всех товарах и категориях в которых они отсутствуют.
       
      Возможность устранения дублей SEO URL
       
      ПРИМЕР заполнения прилагается в скриншоте.
       
      УСТАНОВКА
      1. Установить модификатор через Установку дополнения, очистить кешь.
      2. Скопировать папку admin в корень сайта.
      УСТАНОВКА для ОС 3.х
       Устанавливаем архив Uodate-Meta3x.ocmod.zip через Установку расширений, чистим кеш.
      ПРИМЕЧАНИЕ
      Модуль не закублен с открытым исходным кодом, не требует ключа активации.
      Тех. поддержка осуществляется для клиентов купившим модуль для конкретного ресурса, поэтому при покупке обязательно указываем Ваш домен.
       
      ___________________
       
      Также советую приобрести модуль от разработчика @chukcha Редирект Универсал 
      Незаменимый инструмент для редиректов, имеется 410 жизненно важный для удаленных товаров.
       
    • By smartcoder
      500.00 руб
      Скачать/Купить дополнение


      Дополнительные услуги (создание сайта, мелкие доработки, правки по сайту, загрузка товаров на сайт, разработка модуля для Opencart)
      Мелкие правки по сайту - от 500руб
      Разработка модулей для Opencart - от 2000руб
      Наполнение товарами - от 2500руб
      Автоматизация интернет-магазинов - от 8000руб
      Интеграция API сервисов - от 15000руб
      Разработка сервисов (Laravel, Yii2) - от 180000руб.
       
      Что нужно, для оценки стоимости работ?
      Четкое и подробное описание задачи. Формирование цены происходит из расчета цены за 1 час работы.
      В среднем работа стоит 1000руб./час. В случае дополнительных доработок или правок оплаченного задания, производится перерасчет дополнительного затраченного времени.
       
      Сроки
      Сроки разработки определяет программист для каждого проекта индивидуально.
      По времени исполнения зачастую зависит от своевременного предоставления программисту доступов к проекту заказчика. Программист не несет ответственности за упущенную прибыль заказчика, в случае нарушения ранее оговоренных сроков.
       
      Перед покупкой напишите в личные сообщения к @smartcoder для уточнения деталей.
       
       
      ------------------------------------------------------------------------------
      Доработка сайта - от 500руб
      Стоимость услуги «Доработка сайта» зависит от масштабности проекта и его текущего состояния, от движка, а также от задач, которые вы для него ставите.
       
      Если вам необходимо выполнить доработки по сайту, воспользуйтесь нашими услугами.
      Обновить информацию Исправить ошибки Поправить верстку  
      Мы располагаем собственным штатом программистов и готовы решить любые задачи по вашему сайту вне зависимости от того, на какой технологии он построен.
       
      Доработать можно любой сайт?
      Да, абсолютно любой, но иногда изменение сайта несет за собой переделку порядка 80% всего сайта. В таких случаях лучшее решение – создать сайт с нуля. Мы всегда предупреждаем о такой ситуации прежде чем начинать работу с проектом
      Перед покупкой напишите в личные сообщения к @smartcoder для уточнения деталей.
      ------------------------------------------------------------------------------
      Разработка модуля для Opencart - от 2000руб
      Разработка модуля любой сложности для Opencart.
       
      Какие модули вы уже разрабатывали?
      Модули доставки Модули оплаты Модуль по работе с клиентами Модули по работе с товарами Автоматизация прайс-листов Заказ в один клик Модуль по работе с бонусами, акциями и скидками.  
      При разработке учитываются индивидуальные пожелания, работа функционала, оформления блоков, дизайн и т.д.
      Перед покупкой напишите в личные сообщения к @smartcoder для уточнения деталей.
      ------------------------------------------------------------------------------
      Наполнение товарами магазина - от 2500руб
      Добавление товаров по вашим прайс-листам. Наименование товаров, цены, атрибуты, описание, характеристики и др.
       
      Что нужно для наполнения сайта товарами?
      Для наполнения нужен прайс-лист, в формате Excel или CSV или в YML(Яндекс).
       
      Сколько товаров можно добавить в магазин Opencart?
      Максимальный заказ, который был реализован с автоматическим изменением остатков и цен - это 500 000 товаров (возможно и более, если это вам нужно).
      Для магазинов в 3-5 тысяч товаров, это стандартный заказ, в которых не возникает проблем на большинстве хостингов.
       
      Какой нужен хостинг?
      Если вы используете достаточно большое количество товара и у вас планируется хороший трафик пользователей, то стоит задуматься о VDS (виртуальный сервер с максимальными привилегиями). Такое необходимо для магазинов больше 10тыс. товаров и больше 500 посетителей в день. 
      Перед покупкой напишите в личные сообщения к @smartcoder для уточнения деталей.
      ------------------------------------------------------------------------------
      Автоматизация интернет-магазина - от 8000руб
      Автоматизация наполнения товарами, обновление цен и остатков Автоматическое наполнение магазина новыми товарами* Автоматическое заполнение количества актуальных остатков Автоматическое изменение цены поставщика. Перед покупкой напишите в личные сообщения к @smartcoder для уточнения деталей.
      ------------------------------------------------------------------------------
      Интеграция API сервисов - от 15000руб
      Интеграция с любым API сервисом любой сложности, интеграция с телефонией, оплатой, доставкой и другими сервисами.
       
      Что такое интеграция API сервисов?
      Интеграция по API - это взаимодействие вашего сайта на Opencart с различными сервисами по интерфейсу API (application programming interface). Например вам нужно связать ваш сайт, с партнерским сайтом, либо вам нужно настроить взаимодействие с сервисом доставки или взаимодействие с банком.
       
      Сколько стоит интеграция с моим сервисом?
      Для оценки интеграции, нужно взглянуть на документацию сервиса по API, с которым предстоит работать, для этого предварительно напишите в сообщении для уточнении цены.
      Перед покупкой напишите в личные сообщения к @smartcoder для уточнения деталей.
      ------------------------------------------------------------------------------
      Разработка сервисов - от 180000руб
      Разработка сервисов любой сложности.
       
      О каких сервисах идет речь?
      Речь идет о ваших собственных сервисах, которые могут быть публичными или только внутренние (только для вашей компании).
       
      Как узнать стоимость моего сервиса?
      Для того, чтобы узнать точную стоимость, необходимо составить четкое ТЗ, возможно так же спросить примерную стоимость, но нужно понимать что при наличии четкого ТЗ, эта сумма может меняться.
      Перед покупкой напишите в личные сообщения к @smartcoder для уточнения деталей.
       
      Добавил smartcoder Добавлено 02.08.2018 Категория Услуги  
    • By smartcoder
      Мелкие правки по сайту - от 500руб
      Разработка модулей для Opencart - от 2000руб
      Наполнение товарами - от 2500руб
      Автоматизация интернет-магазинов - от 8000руб
      Интеграция API сервисов - от 15000руб
      Разработка сервисов (Laravel, Yii2) - от 180000руб.
       
      Что нужно, для оценки стоимости работ?
      Четкое и подробное описание задачи. Формирование цены происходит из расчета цены за 1 час работы.
      В среднем работа стоит 1000руб./час. В случае дополнительных доработок или правок оплаченного задания, производится перерасчет дополнительного затраченного времени.
       
      Сроки
      Сроки разработки определяет программист для каждого проекта индивидуально.
      По времени исполнения зачастую зависит от своевременного предоставления программисту доступов к проекту заказчика. Программист не несет ответственности за упущенную прибыль заказчика, в случае нарушения ранее оговоренных сроков.
       
      Перед покупкой напишите в личные сообщения к @smartcoder для уточнения деталей.
       
       
      ------------------------------------------------------------------------------
      Доработка сайта - от 500руб
      Стоимость услуги «Доработка сайта» зависит от масштабности проекта и его текущего состояния, от движка, а также от задач, которые вы для него ставите.
       
      Если вам необходимо выполнить доработки по сайту, воспользуйтесь нашими услугами.
      Обновить информацию Исправить ошибки Поправить верстку  
      Мы располагаем собственным штатом программистов и готовы решить любые задачи по вашему сайту вне зависимости от того, на какой технологии он построен.
       
      Доработать можно любой сайт?
      Да, абсолютно любой, но иногда изменение сайта несет за собой переделку порядка 80% всего сайта. В таких случаях лучшее решение – создать сайт с нуля. Мы всегда предупреждаем о такой ситуации прежде чем начинать работу с проектом
      Перед покупкой напишите в личные сообщения к @smartcoder для уточнения деталей.
      ------------------------------------------------------------------------------
      Разработка модуля для Opencart - от 2000руб
      Разработка модуля любой сложности для Opencart.
       
      Какие модули вы уже разрабатывали?
      Модули доставки Модули оплаты Модуль по работе с клиентами Модули по работе с товарами Автоматизация прайс-листов Заказ в один клик Модуль по работе с бонусами, акциями и скидками.  
      При разработке учитываются индивидуальные пожелания, работа функционала, оформления блоков, дизайн и т.д.
      Перед покупкой напишите в личные сообщения к @smartcoder для уточнения деталей.
      ------------------------------------------------------------------------------
      Наполнение товарами магазина - от 2500руб
      Добавление товаров по вашим прайс-листам. Наименование товаров, цены, атрибуты, описание, характеристики и др.
       
      Что нужно для наполнения сайта товарами?
      Для наполнения нужен прайс-лист, в формате Excel или CSV или в YML(Яндекс).
       
      Сколько товаров можно добавить в магазин Opencart?
      Максимальный заказ, который был реализован с автоматическим изменением остатков и цен - это 500 000 товаров (возможно и более, если это вам нужно).
      Для магазинов в 3-5 тысяч товаров, это стандартный заказ, в которых не возникает проблем на большинстве хостингов.
       
      Какой нужен хостинг?
      Если вы используете достаточно большое количество товара и у вас планируется хороший трафик пользователей, то стоит задуматься о VDS (виртуальный сервер с максимальными привилегиями). Такое необходимо для магазинов больше 10тыс. товаров и больше 500 посетителей в день. 
      Перед покупкой напишите в личные сообщения к @smartcoder для уточнения деталей.
      ------------------------------------------------------------------------------
      Автоматизация интернет-магазина - от 8000руб
      Автоматизация наполнения товарами, обновление цен и остатков Автоматическое наполнение магазина новыми товарами* Автоматическое заполнение количества актуальных остатков Автоматическое изменение цены поставщика. Перед покупкой напишите в личные сообщения к @smartcoder для уточнения деталей.
      ------------------------------------------------------------------------------
      Интеграция API сервисов - от 15000руб
      Интеграция с любым API сервисом любой сложности, интеграция с телефонией, оплатой, доставкой и другими сервисами.
       
      Что такое интеграция API сервисов?
      Интеграция по API - это взаимодействие вашего сайта на Opencart с различными сервисами по интерфейсу API (application programming interface). Например вам нужно связать ваш сайт, с партнерским сайтом, либо вам нужно настроить взаимодействие с сервисом доставки или взаимодействие с банком.
       
      Сколько стоит интеграция с моим сервисом?
      Для оценки интеграции, нужно взглянуть на документацию сервиса по API, с которым предстоит работать, для этого предварительно напишите в сообщении для уточнении цены.
      Перед покупкой напишите в личные сообщения к @smartcoder для уточнения деталей.
      ------------------------------------------------------------------------------
      Разработка сервисов - от 180000руб
      Разработка сервисов любой сложности.
       
      О каких сервисах идет речь?
      Речь идет о ваших собственных сервисах, которые могут быть публичными или только внутренние (только для вашей компании).
       
      Как узнать стоимость моего сервиса?
      Для того, чтобы узнать точную стоимость, необходимо составить четкое ТЗ, возможно так же спросить примерную стоимость, но нужно понимать что при наличии четкого ТЗ, эта сумма может меняться.
      Перед покупкой напишите в личные сообщения к @smartcoder для уточнения деталей.
       
    • By legioner26
      399.00 руб
      Скачать/Купить дополнение


      Сортировка товаров в заказе по категориям с учетом остатков
      Разработан модификатор с сортировкой товаров в заказе по категориям в админ панели, в пользовательской части, в письме заказчику и письме администратора магазина.
      Данный функционал в разы упрощает работу менеджеров в подборе номенклатуры для выставления счетов.
      Так же в админке в заказах добавлена колонка производителя, фото товара и учет остатков по складу с возможностью сохранять выбор.
      Установка:
      Устанавливаете модификатор через "Установка расширений", далее в модификаторах чистим кешь и обновляем.
       
      Добавил legioner26 Добавлено 27.12.2017 Категория Покупки, оформление заказа, корзина Системные требования Сайт разработчика Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1
      2.0 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Нет Старая цена 800  
  • 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.