[Помогите] oc store SEO мультиязык . не работает!!!

Тема в разделе "OpenCart", создана пользователем rengen1234, 25 июл 2018.

  1. rengen1234

    rengen1234

    Регистрация:
    25 июл 2018
    Сообщения:
    12
    Симпатии:
    0
    Добрый день . Подскажите , установил SEO мультиязык согласно инструкции. Перестал работать переключатель языков в шапке сайта . Все остальное работает правильно ,чпу ссылки разных языков появились и ушли в индекс и переключаються только в ручном режиме . Стоит Версия ocStore 2.3.0.2.3 с темой Journal и SEO мультиязык ver.: 11.0. C чем это может быть связано? спасибо...
     
  2. MGT1

    MGT1

    Регистрация:
    5 янв 2013
    Сообщения:
    900
    Симпатии:
    218
    ссылку на сайт и модуль можно?
    --- Добавлено, 26 июл 2018 ---
    Адаптация в модуля под одну из самых навороченых шаблоно-систем есть?


    ССылку на модуль. Логи ошибок
     
    Последнее редактирование: 26 июл 2018
  3. rengen1234

    rengen1234

    Регистрация:
    25 июл 2018
    Сообщения:
    12
    Симпатии:
    0
    http://tex-prom.com.ua
     
  4. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    На фронтенде с переключателем проблем нет.
    Что у вас в контроллере common/language/language в кеше модификаторов?
     
  5. rengen1234

    rengen1234

    Регистрация:
    25 июл 2018
    Сообщения:
    12
    Симпатии:
    0
    вот и я думаю ,что , что-то с кешем. но не могу до конца понять . такое чувство что кеш jornal перечит кешу плагина.(( но не понимаю где(((
     
  6. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Вы на вопрос не ответили. Покажите содержимое файла.
     
  7. rengen1234

    rengen1234

    Регистрация:
    25 июл 2018
    Сообщения:
    12
    Симпатии:
    0
    Я прошу прощения там несколько файлов. можно ваш скайп ?
    --- Добавлено, 28 июл 2018 ---
    вот файл темы джорнал, переключения выпадающего меню
    PHP:
    <?php $type $this->journal2->settings->get(Journal2Utils::getDevice() === 'desktop' 'language_display' 'language_display_mobile''flag'); ?>
    <?php 
    if (count($languages) > 1): ?>
    <?php
        $current_language 
    '';
        foreach (
    $languages as $language) {
            if (
    $language['code'] == $code) {
                switch (
    $type) {
                    case 
    'flag':
                        
    $current_language "<img width=\"16\" height=\"11\" src=\"" Journal2Utils::getLanguageFlag($language) . "\" alt=\"{$language['name']}\" />";
                        break;
                    case 
    'text':
                        
    $current_language "{$language['name']}";
                        break;
                    case 
    'full':
                        
    $current_language "<img width=\"16\" height=\"11\" src=\"" Journal2Utils::getLanguageFlag($language) . "\" alt=\"{$language['name']}\" /><span class=\"language-text\">{$language['name']}</span>";
                        break;
                }
            }
        }
    ?>
    <form action="<?php echo $action?>" method="post" enctype="multipart/form-data">
        <div id="language" class="<?php echo $this->journal2->settings->get('language_display''never') === 'full' 'full-text' ''?>">
            <div class="btn-group">
                <button class="dropdown-toggle" type="button" data-hover="dropdown">
                    <div><?php echo $current_language?></div>
                </button>
                <ul class="dropdown-menu">
                    <?php foreach ($languages as $language): ?>
                        <?php if ($type === 'flag'): ?>
                            <li><a onclick="$(this).closest('form').find('input[name=\'code\']').val('<?php echo $language['code']; ?>'); $(this).closest('form').submit();"><img width="16" height="11" src="<?php echo Journal2Utils::getLanguageFlag($language); ?>" alt="<?php echo $language['name']; ?>" title="<?php echo $language['name']; ?>" /></a></li>
                        <?php endif; ?>
                        <?php if ($type === 'text'): ?>
                            <li><a onclick="$(this).closest('form').find('input[name=\'code\']').val('<?php echo $language['code']; ?>'); $(this).closest('form').submit();"><?php echo $language['name']; ?></a></li>
                        <?php endif; ?>
                        <?php if ($type === 'full'): ?>
                            <li><a onclick="$(this).closest('form').find('input[name=\'code\']').val('<?php echo $language['code']; ?>'); $(this).closest('form').submit();"><img width="16" height="11" src="<?php echo Journal2Utils::getLanguageFlag($language); ?>" alt="<?php echo $language['name']; ?>" title="<?php echo $language['name']; ?>" /><span class="language-text"><?php echo $language['name']; ?></span></a></li>
                        <?php endif; ?>
                    <?php endforeach; ?>
                </ul>
            </div>
            <input type="hidden" name="code" value="" />
            <input type="hidden" name="redirect" value="<?php echo $redirect?>" />
        </div>
    </form>
    <?php endif; ?>
     
    Lasted edited by : 29 июл 2018
  8. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Скайпом не пользуюсь уже несколько лет и бесплатную поддержку осуществляю только через форум!

    Я же написал, что с переключателем проблем нет, надо смотреть контроллер.
     
  9. rengen1234

    rengen1234

    Регистрация:
    25 июл 2018
    Сообщения:
    12
    Симпатии:
    0
    я не понимаю какой именно файл контроллера вам надо ... он как бы не один в платформе
     
  10. rengen1234

    rengen1234

    Регистрация:
    25 июл 2018
    Сообщения:
    12
    Симпатии:
    0
    не подскажите путь к файлу контроллера?
    --- Добавлено, 28 июл 2018 ---
    Вот файл самого контроллера языка catalog/controller/common
    PHP:
    <?php
    class ControllerCommonLanguage extends Controller {
        public function 
    index() {
            
    $this->load->language('common/language');

            
    $data['text_language'] = $this->language->get('text_language');

            
    $data['action'] = $this->url->link('common/language/language''', isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1')));

            
    $data['code'] = $this->session->data['language'];

            
    $this->load->model('localisation/language');

            
    $data['languages'] = array();

            
    $results $this->model_localisation_language->getLanguages();

            foreach (
    $results as $result) {
                if (
    $result['status']) {
                    
    $data['languages'][] = array(
                        
    'name' => $result['name'],
                        
    'code' => $result['code']
                    );
                }
            }

            if (!isset(
    $this->request->get['route'])) {
                
    $data['redirect'] = $this->url->link('common/home');
            } else {
                
    $url_data $this->request->get;

                
    $route $url_data['route'];

                unset(
    $url_data['route']);

                
    $url '';

                if (
    $url_data) {
                    
    $url '&' urldecode(http_build_query($url_data'''&'));
                }

                
    $data['redirect'] = $this->url->link($route$url, isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1')));
            }

            return 
    $this->load->view('common/language'$data);
        }

        public function 
    language() {
            if (isset(
    $this->request->post['code'])) {
                
    $this->session->data['language'] = $this->request->post['code'];
            }

            if (isset(
    $this->request->post['redirect'])) {
                
    $this->response->redirect($this->request->post['redirect']);
            } else {
                
    $this->response->redirect($this->url->link('common/home'));
            }
        }
    }
     
    Lasted edited by : 28 июл 2018
  11. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Это оригинальный? В кеше OCMOD этого файла нет?

    И пользуйтесь кнопкой вставки кода в редакторе, а то ж оно нечитабельно.
     
  12. rengen1234

    rengen1234

    Регистрация:
    25 июл 2018
    Сообщения:
    12
    Симпатии:
    0
    да оригинальный
     
  13. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    А в кеше OCMOD его нет?
    Кеш OCMOD - это здесь: /system/storage/modification.

    И заодно поищите там же /catalog/controller/startup/startup.php.

    У вас где-то язык сбрасывается уже после переключения. Возможно, из-за неправильного редиректа. А неправильный он потому, что ОК из коробки не поддерживает язык в ссылках и под это должен быть модификатор.
     
  14. rengen1234

    rengen1234

    Регистрация:
    25 июл 2018
    Сообщения:
    12
    Симпатии:
    0
    /system/storage/cache/cache.language.1532873645
    PHP:
    {"ru-ru":{"language_id":"1","name":"RU ","code":"ru-ru","locale":"ru_RU.UTF-8,ru_RU,russian","image":"ru.png","directory":"russian","sort_order":"1","status":"1"},"uk-ua":{"language_id":"3","name":"UA ","code":"uk-ua","locale":"ua_UA.UTF-8,ua_UA,ua_UA,ua","image":"","directory":"","sort_order":"2","status":"1"}}
    catalog/controller/startup/startup.php.
    PHP:
    <?php
    class ControllerStartupStartup extends Controller {
        public function 
    index() {
            
    // Store
            
    if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
                
    $query $this->db->query("SELECT * FROM " DB_PREFIX "store WHERE REPLACE(`ssl`, 'www.', '') = '" $this->db->escape('https://' str_replace('www.'''$_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");
            } else {
                
    $query $this->db->query("SELECT * FROM " DB_PREFIX "store WHERE REPLACE(`url`, 'www.', '') = '" $this->db->escape('http://' str_replace('www.'''$_SERVER['HTTP_HOST']) . rtrim(dirname($_SERVER['PHP_SELF']), '/.\\') . '/') . "'");
            }
         
            if (isset(
    $this->request->get['store_id'])) {
                
    $this->config->set('config_store_id', (int)$this->request->get['store_id']);
            } else if (
    $query->num_rows) {
                
    $this->config->set('config_store_id'$query->row['store_id']);
            } else {
                
    $this->config->set('config_store_id'0);
            }
         
            if (!
    $query->num_rows) {
                
    $this->config->set('config_url'HTTP_SERVER);
                
    $this->config->set('config_ssl'HTTPS_SERVER);
            }
         
            
    // Settings
            
    $query $this->db->query("SELECT * FROM `" DB_PREFIX "setting` WHERE store_id = '0' OR store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY store_id ASC");
         
            foreach (
    $query->rows as $result) {
                if (!
    $result['serialized']) {
                    
    $this->config->set($result['key'], $result['value']);
                } else {
                    
    $this->config->set($result['key'], json_decode($result['value'], true));
                }
            }

            
    // Url
            
    $this->registry->set('url', new Url($this->config->get('config_url'), $this->config->get('config_secure') ? $this->config->get('config_ssl') : $this->config->get('config_url')));
         
            
    // Language
            
    $code '';
         
            
    $this->load->model('localisation/language');
         
            
    $languages $this->model_localisation_language->getLanguages();
         
            if (isset(
    $this->session->data['language'])) {
                
    $code $this->session->data['language'];
            }
                 
            if (isset(
    $this->request->cookie['language']) && !array_key_exists($code$languages)) {
                
    $code $this->request->cookie['language'];
            }
         
            
    // Language Detection
            
    if (!empty($this->request->server['HTTP_ACCEPT_LANGUAGE']) && !array_key_exists($code$languages)) {
                
    $detect '';
             
                
    $browser_languages explode(','$this->request->server['HTTP_ACCEPT_LANGUAGE']);
             
                
    // Try using local to detect the language
                
    foreach ($browser_languages as $browser_language) {
                    foreach (
    $languages as $key => $value) {
                        if (
    $value['status']) {
                            
    $locale explode(','$value['locale']);
                         
                            if (
    in_array($browser_language$locale)) {
                                
    $detect $key;
                                break 
    2;
                            }
                        }
                    }
                }        
             
                if (!
    $detect) {
                    
    // Try using language folder to detect the language
                    
    foreach ($browser_languages as $browser_language) {
                        if (
    array_key_exists(strtolower($browser_language), $languages)) {
                            
    $detect strtolower($browser_language);
                         
                            break;
                        }
                    }
                }
             
                
    $code $detect $detect '';
            }
         
            if (!
    array_key_exists($code$languages)) {
                
    $code $this->config->get('config_language');
            }
         
            if (!isset(
    $this->session->data['language']) || $this->session->data['language'] != $code) {
                
    $this->session->data['language'] = $code;
            }
                 
            if (!isset(
    $this->request->cookie['language']) || $this->request->cookie['language'] != $code) {
                
    setcookie('language'$codetime() + 60 60 24 30'/'$this->request->server['HTTP_HOST']);
            }
                 
            
    // Overwrite the default language object
            
    $language = new Language($code);
            
    $language->load($code);
         
            
    $this->registry->set('language'$language);
         
            
    // Set the config language_id
            
    $this->config->set('config_language_id'$languages[$code]['language_id']);

            
    // Set multiLanguage settings
            
    $langdata $this->config->get('config_langdata');
            if (isset(
    $langdata[$languages[$code]['language_id']])) {
                foreach (
    $langdata[$languages[$code]['language_id']] as $key => $value) {
                    
    $this->config->set('config_' $key$value);
                }
            }


            
    // Customer
            
    $customer = new Cart\Customer($this->registry);
            
    $this->registry->set('customer'$customer);
         
            
    // Customer Group
            
    if ($this->customer->isLogged()) {
                
    $this->config->set('config_customer_group_id'$this->customer->getGroupId());
            } elseif (isset(
    $this->session->data['customer']) && isset($this->session->data['customer']['customer_group_id'])) {
                
    // For API calls
                
    $this->config->set('config_customer_group_id'$this->session->data['customer']['customer_group_id']);
            } elseif (isset(
    $this->session->data['guest']) && isset($this->session->data['guest']['customer_group_id'])) {
                
    $this->config->set('config_customer_group_id'$this->session->data['guest']['customer_group_id']);
            }
         
            
    // Tracking Code
            
    if (isset($this->request->get['tracking'])) {
                
    setcookie('tracking'$this->request->get['tracking'], time() + 3600 24 1000'/');
         
                
    $this->db->query("UPDATE `" DB_PREFIX "marketing` SET clicks = (clicks + 1) WHERE code = '" $this->db->escape($this->request->get['tracking']) . "'");
            }    
         
            
    // Affiliate
            
    $this->registry->set('affiliate', new Cart\Affiliate($this->registry));
         
            
    // Currency
            
    $code '';
         
            
    $this->load->model('localisation/currency');
         
            
    $currencies $this->model_localisation_currency->getCurrencies();
         
            if (isset(
    $this->session->data['currency'])) {
                
    $code $this->session->data['currency'];
            }
         
            if (isset(
    $this->request->cookie['currency']) && !array_key_exists($code$currencies)) {
                
    $code $this->request->cookie['currency'];
            }
         
            if (!
    array_key_exists($code$currencies)) {
                
    $code $this->config->get('config_currency');
            }
         
            if (!isset(
    $this->session->data['currency']) || $this->session->data['currency'] != $code) {
                
    $this->session->data['currency'] = $code;
            }
         
            if (!isset(
    $this->request->cookie['currency']) || $this->request->cookie['currency'] != $code) {
                
    setcookie('currency'$codetime() + 60 60 24 30'/'$this->request->server['HTTP_HOST']);
            }    
         
            
    $this->registry->set('currency', new Cart\Currency($this->registry));
         
            
    // Tax
            
    $this->registry->set('tax', new Cart\Tax($this->registry));
         
            if (isset(
    $this->session->data['shipping_address'])) {
                
    $this->tax->setShippingAddress($this->session->data['shipping_address']['country_id'], $this->session->data['shipping_address']['zone_id']);
            } elseif (
    $this->config->get('config_tax_default') == 'shipping') {
                
    $this->tax->setShippingAddress($this->config->get('config_country_id'), $this->config->get('config_zone_id'));
            }

            if (isset(
    $this->session->data['payment_address'])) {
                
    $this->tax->setPaymentAddress($this->session->data['payment_address']['country_id'], $this->session->data['payment_address']['zone_id']);
            } elseif (
    $this->config->get('config_tax_default') == 'payment') {
                
    $this->tax->setPaymentAddress($this->config->get('config_country_id'), $this->config->get('config_zone_id'));
            }

            
    $this->tax->setStoreAddress($this->config->get('config_country_id'), $this->config->get('config_zone_id'));
         
            
    // Weight
            
    $this->registry->set('weight', new Cart\Weight($this->registry));
         
            
    // Length
            
    $this->registry->set('length', new Cart\Length($this->registry));
         
            
    // Cart
            
    $this->registry->set('cart', new Cart\Cart($this->registry));
         
            
    // Encryption
            
    $this->registry->set('encryption', new Encryption($this->config->get('config_encryption')));
         
            
    // OpenBay Pro
            
    $this->registry->set('openbay', new Openbay($this->registry));                
        }
    }

    вот то что в кеше и стартапе . но я до конца не понимаю всего что написано((
     
  15. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Вы читать умеете? Я же даже путь указал, где искать, а вы просто кинули первый попавшийся кеш. Кеш OCMOD и кеш данных (который вы кинули) - это абсолютно разные вещи! С таким же успехом вы могли бы кинуть содержимое роботса.

    Я так понимаю, этот файл тоже не из кеша OCMOD.


    Нет смысла кидать сюда оригинальные файлы! Я их и на Гитхабе посмотреть могу. Мне нужно увидеть, как эти файлы были модифицированы модулем "SEO мультиязык" и были ли модифицированы вообще.
     
  16. rengen1234

    rengen1234

    Регистрация:
    25 июл 2018
    Сообщения:
    12
    Симпатии:
    0
    я тогда не понимаю до конца что мне надо посмотреть ... ((( в пути котором вы указали в кеше относительно языка только 1 файл и я эго скинул
    возможно ли что изза файла кеша не правильно работеет язык?
     
  17. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Что вы там видите?
     
  18. rengen1234

    rengen1234

    Регистрация:
    25 июл 2018
    Сообщения:
    12
    Симпатии:
    0
    я вычитал относительно самого 1 го файла что

    Уберите лишние теги <form ...> </form> <input ...>
    Добавьте или измените тегам <a> атрибут href, он должен быть href="<?php echo $language['url']; ?>"

    но при изменении <?php echo $language['code']; ?> на <?php echo $language['url']; ?> . и дальнейшем попыткам переключения выбивает ошибку (страница не найдена)


    PHP:
    <?php
     $current_language 
    '';
     foreach (
    $languages as $language) {
     if (
    $language['code'] == $code) {
     switch (
    $type) {
     case 
    'flag':
     
    $current_language "<img width=\"16\" height=\"11\" src=\"" Journal2Utils::getLanguageFlag($language) . "\" alt=\"{$language['name']}\" />";
     break;
     case 
    'text':
     
    $current_language "{$language['name']}";
     break;
     case 
    'full':
     
    $current_language "<img width=\"16\" height=\"11\" src=\"" Journal2Utils::getLanguageFlag($language) . "\" alt=\"{$language['name']}\" /><span class=\"language-text\">{$language['name']}</span>";
     break;
     }
     }
     }
    ?>
    <form action="<?php echo $action?>" method="post" enctype="multipart/form-data">
     
    <div id="language" class="<?php echo $this->journal2->settings->get('language_display''never') === 'full' 'full-text' ''?>">
     
    <div class="btn-group">
     <button class="dropdown-toggle" type="button" data-hover="dropdown">
     
    <div><?php echo $current_language?></div>

     </button>
     <ul class="dropdown-menu">
     <?php foreach ($languages as $language): ?>
     <?php if ($type === 'flag'): ?>
     <li><a onclick="$(this).closest('form').find('input[name=\'code\']').val('<?php echo $language['code']; ?>'); $(this).closest('form').submit();"><img width="16" height="11" src="<?php echo Journal2Utils::getLanguageFlag($language); ?>" alt="<?php echo $language['name']; ?>" title="<?php echo $language['name']; ?>" /></a></li>
     <?php endif; ?>
     <?php if ($type === 'text'): ?>
     <li><a onclick="$(this).closest('form').find('input[name=\'code\']').val('<?php echo $language['code']; ?>'); $(this).closest('form').submit();"><?php echo $language['name']; ?></a></li>
     <?php endif; ?>
     <?php if ($type === 'full'): ?>
     <li><a onclick="$(this).closest('form').find('input[name=\'code\']').val('<?php echo $language['code']; ?>'); $(this).closest('form').submit();"><img width="16" height="11" src="<?php echo Journal2Utils::getLanguageFlag($language); ?>" alt="<?php echo $language['name']; ?>" title="<?php echo $language['name']; ?>" /><span class="language-text"><?php echo $language['name']; ?></span></a></li>
     <?php endif; ?>
     <?php endforeach; ?>
     </ul>
     </div>

     <input type="hidden" name="code" value="" />
     <input type="hidden" name="redirect" value="<?php echo $redirect?>" />
     </div>

    </form>
    <?php endif; ?>
    --- Добавлено, 29 июл 2018 ---
    [​IMG]
    --- Добавлено, 29 июл 2018 ---
    https://ibb.co/mPKNjT ссылка на фото что я там вижу . не понимаю чего фотки не вставляются с обменника(
     
    Последнее редактирование: 29 июл 2018
  19. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Вот то, что вы видите в /system/storage/modification - это всё и есть кеш OCMOD и все файлы искать надо там!

    Потому что вы вставляете ссылку не на изображение, а на страницу фотохостинга, где оно выводится. Нужно вставлять именно на файл изображения.
     
  20. rengen1234

    rengen1234

    Регистрация:
    25 июл 2018
    Сообщения:
    12
    Симпатии:
    0
    понял спасибо
    [​IMG]