[Помогите] Убрать слеш в урл категории

Тема в разделе "OpenCart", создана пользователем ivanuch90, 20 авг 2013.

  1. ivanuch90

    ivanuch90

    Регистрация:
    1 апр 2013
    Сообщения:
    205
    Симпатии:
    44
    Всем привет, подскажите кто знает как убрать в урл категории слеш в конце добавить просто .html, а в производителе наоборот, добавить в конце / ?
    OcStore 1.5.4.1
     
    qsqq нравится это.
  2. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    890
    В стандартном seo_url нет такой проблемы со слешем, ето тольео в seo_pro
    можно в модуле catalog/controller/common/seo_pro.php костыль сделать типа такой вот
    вместо етого
    PHP:
            if (isset($postfix)) {
                
    $seo_url .= trim($this->config->get('config_seo_url_postfix'));
            } else {
                
    $seo_url .= '/';
            }
    ето (костыль)
    PHP:
            if (isset($postfix)) {
                
    $seo_url .= trim($this->config->get('config_seo_url_postfix'));
            } elseif (
    $route == 'product/category') {
                
    $seo_url .= '.html';
            } else {
                
    $seo_url .= '/';
            }
     
    Ваган нравится это.
  3. Ваган

    Ваган

    Регистрация:
    8 ноя 2013
    Сообщения:
    37
    Симпатии:
    1
    А как в той же версии opencarta в категориях добавить слеш / в конце вместо .html
     
  4. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    890
    а так разве не работает изначально?
     
  5. Ваган

    Ваган

    Регистрация:
    8 ноя 2013
    Сообщения:
    37
    Симпатии:
    1
    Щас такой вид домен/zhenskiye/norka Применил ваш костыль стало домен/zhenskiye/norka.html может в .htaccess что то убирает его?
     
  6. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    890
    PHP:
             if (isset($postfix)) {
                
    $seo_url .= trim($this->config->get('config_seo_url_postfix'));
            } elseif (
    $route == 'product/category') {
                
    $seo_url .= '/';
            } else {
                
    $seo_url .= '/';
            } 
     
    Ваган нравится это.
  7. Ваган

    Ваган

    Регистрация:
    8 ноя 2013
    Сообщения:
    37
    Симпатии:
    1
    И так тоже пробовал, все равно убирает слеш. Даже ради эксперимента ставил так ///////////// и это тоже обрезает. но если поставлю ./ то показывает только точку.
     
  8. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    890
    где-то дальше идет подрез слеша, покажите свой файл catalog/controller/common/seo_pro.php
     
  9. Ваган

    Ваган

    Регистрация:
    8 ноя 2013
    Сообщения:
    37
    Симпатии:
    1
    --- Добавлено, 10 фев 2014 ---
    Нашел решение, спасибо Вам и вашему костылю. Надо чуть изменить:
    if (isset($postfix)) {$seo_url .= trim($this->config->get('config_seo_url_postfix'));
    } elseif ($route == 'product/category') {
    $seo_url .= '/';
    } else {$seo_url .= '/';
    }
    На этот:
    if (isset($postfix)) {$seo_url .= trim($this->config->get('config_seo_url_postfix'));
    } elseif ($route == 'product/category') {
    $seo_url .= '/';
    }
    В этом: $seo_url = trim($seo_url, '//'); убрать слеши и получится $seo_url = trim($seo_url, '');

    Но вот в чем вопрос, не будут ли подводные камни?
     
    Lasted edited by : 10 фев 2014
  10. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    890
    если есть сомнения насчет безопасности то можите трим не убирать, после него конкатнуть в конец слеш при етом ничего ненадо менять с того что меняли выше.
    после
    PHP:
    $seo_url trim($seo_url'//');
    вставляем
    PHP:
    $seo_url = . '/';
    но ето если сомнения закрались
     
  11. Ваган

    Ваган

    Регистрация:
    8 ноя 2013
    Сообщения:
    37
    Симпатии:
    1
    конкатнуть - ?

    Делаю как вы показали и все ломается и не работает.
     
  12. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    890
    сорри, ошибся, спешил на работу
    так надо
    PHP:
     $seo_url .= '/'
     
  13. Ваган

    Ваган

    Регистрация:
    8 ноя 2013
    Сообщения:
    37
    Симпатии:
    1
    Спасибо так работает, но теперь почему то страницы с .html стали такие .html/
    Как сделать чтоб / в конце был только в категориях
     
  14. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    890
    PHP:
    if ($route == 'product/category') {
    $seo_url .= '/';
    }
    вместо того что выше
     
  15. Ваган

    Ваган

    Регистрация:
    8 ноя 2013
    Сообщения:
    37
    Симпатии:
    1
    А если вот этот отрезок кода

    PHP:
           
            
    if (isset($postfix)) {$seo_url .= trim($this->config->get('config_seo_url_postfix'));
            } elseif (
    $route == 'product/category') {
            
    $seo_url .= '/';
            } else {
    $seo_url .= '/';
            }

            
    $seo_url trim($seo_url'//');

    Заменить на этот
    PHP:
    if (isset($postfix)) {$seo_url .= trim($this->config->get('config_seo_url_postfix'));
            } else {
            
    $seo_url .= '/';
            }

            
    $seo_url trim($seo_url'//');

            if (
    $route == 'product/category') {
            
    $seo_url .= '/';
            }
     
    Последнее редактирование: 10 фев 2014
  16. Ваган

    Ваган

    Регистрация:
    8 ноя 2013
    Сообщения:
    37
    Симпатии:
    1
    А что Вы скажете про этот вариант? Он тоже действует вроде!
    PHP:
    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_url0, -1);
            }
     
  17. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    890
    ну знаете, трим можно заменить многими реплейсами сабстрингами и т.д... скажем так, у вас велосипед поедет быстрее если вы его покрасите на другой цвет?
    Или от перестановки доданков сумма не меняется....
     
    $iD нравится это.
  18. Ваган

    Ваган

    Регистрация:
    8 ноя 2013
    Сообщения:
    37
    Симпатии:
    1
    Да, но как бы и нет! С выше указанным кодом у меня почему то не получалось сравнивать:
    PHP:
    <li <?php if ($home.$_SERVER['REQUEST_URI'] == $shopping_cart) { ?>class="active"<?php ?>><span class="hidden-link" data-link="<?php echo $shopping_cart?>" rel="nofollow"><noindex><?php echo $text_shopping_cart?></noindex></span></li>
    для определение на какой странице находишься, чтобы показать в меню.