Полный путь у производителя Opencart/OcStore 3.x

Тема в разделе "Общие вопросы", создана пользователем Иван Николаев, 6 июл 2022.

  1. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
    Снова здравствуйте!

    Хочу исправить косяк с полным путем у производителя в Opencart/OcStore 3.x.

    По-умолчанию путь такой: site.ru/apple, хочу чтобы был site.ru/brands/apple

    Нашёл фикс для 2 версии
    Код:
    <file path="catalog/controller/startup/seo_pro.php">
            <operation error="skip">
                <search><![CDATA[
                    case 'manufacturer_id':
                ]]></search>
                <add position="replace"><![CDATA[// case 'manufacturer_id':]]></add>
            </operation>
            <operation error="skip">
                <search><![CDATA[
                        case 'path':
                ]]></search>
                <add position="before"><![CDATA[
                        // customized SEO PRO: Фикс для ссылок производителей
                        case 'manufacturer_id':
                            $queries[] = 'product/manufacturer';
                            $queries[] = $key . '=' . $value;
                            unset($data[$key]);
                            break;]]></add>
            </operation>
        </file>
    
    Сделал для 3 версии
    Код:
    <file path="system/library/seopro.php">
            <operation error="skip">
                <search><![CDATA[
                    $queries[] = 'manufacturer_id=' . $manufacturer_id;
                ]]></search>
                <add position="before"><![CDATA[
                    $queries[] = 'product/manufacturer';
                ]]></add>
            </operation>
        </file>
    
    Теперь когда при нажатии на производителя открывается ссылка site.ru/brands/apple, но отображается на странице страница "Список производителей".

    Помогите, решить проблему, пожалуйста.
     
  2. Blast

    Blast Продвинутый пользователь

    Сообщения:
    209
    Симпатии:
    74
    Код:
    <file path="system/library/seopro.php">
            <operation error="skip">
                <search><![CDATA[
                    $queries[] = 'manufacturer_id=' . $manufacturer_id;
                ]]></search>
                <add position="before"><![CDATA[
                    $data['route'] = 'product/manufacturer/info';
                    $queries[] = 'product/manufacturer';
                ]]></add>
            </operation>
        </file>
    попробуйте так
     
  3. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
    Нет, не работает. Может тут что-то лишнее?
    Код:
                    case 'manufacturer_id':
                        $manufacturer_id = (int)$value;
                        $data['route'] = 'product/manufacturer/info';
                        $queries[] = 'product/manufacturer';
                        $queries[] = 'manufacturer_id=' . $manufacturer_id;
                        $postfix = true;
                        unset($data[$key]);
                        break;
     
  4. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
    Ребята, у кого-нибудь еще есть идеи?
     
  5. Tom

    Tom Специалист

    Сообщения:
    674
    Симпатии:
    204
  6. Blast

    Blast Продвинутый пользователь

    Сообщения:
    209
    Симпатии:
    74
    не, страница бренда не открывается все равно

    Код:
    <file path="system/library/seopro.php">
            <operation error="skip">
                <search><![CDATA[
                    $queries[] = 'manufacturer_id=' . $manufacturer_id;
                ]]></search>
                <add position="before"><![CDATA[
                    $this->request->get['route'] = 'product/manufacturer/info';
                    $queries[] = 'product/manufacturer';
                ]]></add>
            </operation>
        </file>
    вот так видимо
     
    kolbasoed и Иван Николаев нравится это.
  7. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
    Покажите свой код, пожалуйста. Может Вы что-то своё поставили.
     
  8. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
    Спасибо @Blast

    Работает, но теперь если бренда нет - он перекидывает на список брендов. Как исправить, чтобы на 404 страницу перекидывал?
     
    Последнее редактирование: 7 июл 2022
  9. Blast

    Blast Продвинутый пользователь

    Сообщения:
    209
    Симпатии:
    74
    скорее всего что-то в методе prepareRoute в seopro нужно добавлять. какие-то условия на роут
     
  10. Tom

    Tom Специалист

    Сообщения:
    674
    Симпатии:
    204
    После того как написал, экспериментировал с ещё одним моментом в брендах. Видимо поэтому не работало.
     
  11. Tom

    Tom Специалист

    Сообщения:
    674
    Симпатии:
    204
    Нет бренда или нет в бренде товара?
     
  12. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
    Когда бренда нет - выкидывает на страницу списка брендов, а должен на страницу 404 отдавать.
     
  13. Tom

    Tom Специалист

    Сообщения:
    674
    Симпатии:
    204
    Нет бренда в списке брендов...ничего не понял. Ну да бог с ним.
     
  14. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
    Пример:
    1. http://tomtest.tw1.ru/brands/apple открывает бренд Apple
    2. http://tomtest.tw1.ru/brands/apple1 редиректит на страницу "Список брендов", а должен на страницу 404, как тут https://demo-opencart.ru/index.php?route=product/manufacturer/info&manufacturer_id=1
     
  15. Tom

    Tom Специалист

    Сообщения:
    674
    Симпатии:
    204
    Теперь понятно. Выше тогда ответ .
     
  16. Pie

    Pie Активный пользователь

    Сообщения:
    121
    Симпатии:
    28
    чтобы решение Blast заработало, надо бы добавить функцию которая будет по id и по seo url проверять производителя вот тут
    if (rawurldecode($url) != rawurldecode($seo)) {
    если нету, то редиректить на 404
    изначально подход не верный в решении задачи
    я б написал, но сео про не использую, фу фу фу
     
  17. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
    Почему? Что в нём не так?
     
  18. Pie

    Pie Активный пользователь

    Сообщения:
    121
    Симпатии:
    28
    все нормально, просто мне не нравится и я не работаю с ним и не допиливаю никому
     
    Иван Николаев нравится это.
  19. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
  20. Иван Николаев

    Иван Николаев Пользователь

    Сообщения:
    108
    Симпатии:
    7
    Всё переделал, но не работает нормально(