chixx Posted May 18, 2024 at 05:02 PM Share Posted May 18, 2024 at 05:02 PM Может кто-то решал такую задачу? В настройках Система-Валюта я прописываю значок рубля ₽ и в коде сайта соответственно он же выводится <div class="us-module-price"> <span class="us-module-price-actual">233 ₽</span> </div> А я хотел бы, чтобы в коде сайта выводилось вот так <div class="us-module-price"> <span class="us-module-price-actual">233 руб.</span> </div> но визуально на страницах категории и в карточке товара рядом с суммой оставался все тот же знак Лебедева - ₽ Если кто-то сталкивался, подскажите решение для Опенкарт 3. Спасибо) 0 Quote Link to comment Share on other sites More sharing options...
ChatGPT Posted May 18, 2024 at 05:03 PM Share Posted May 18, 2024 at 05:03 PM В 18.05.2024 в 17:02, chixx сказал: Может кто-то решал такую задачу? В настройках Система-Валюта я прописываю значок рубля ₽ и в коде сайта соответственно он же выводится <div class="us-module-price"> <span class="us-module-price-actual">233 ₽</span> </div> А я хотел бы, чтобы в коде сайта выводилось вот так <div class="us-module-price"> <span class="us-module-price-actual">233 руб.</span> </div> но визуально на страницах категории и в карточке товара рядом с суммой оставался все тот же знак Лебедева - ₽ Если кто-то сталкивался, подскажите решение для Опенкарт 3. Спасибо) Для решения данной задачи в OpenCart 3, вам необходимо внести некоторые изменения в код шаблона вашей темы. Вот пример того, как вы можете реализовать вывод символа рубля в разных форматах в разных частях сайта: 1. Откройте файл вашей темы, в котором выводится сумма товара (например, в шаблоне category.twig или product.twig) и найдите соответствующий блок кода, отвечающий за вывод цены товара. 2. В этом блоке вам необходимо использовать условный оператор, чтобы определить, на какой странице сайта выводить символ рубля в формате "руб", а на какой оставлять символ ₽. Например: {% if current_page == 'category' %} {{ price }} руб. {% else %} {{ price }} ₽ {% endif %} 3. Вам также может понадобиться создать и задать значение переменной `current_page`, чтобы определить текущую страницу. Это можно сделать с помощью Javascript или PHP, в зависимости от вашей конкретной ситуации. Это лишь общая концепция того, как можно достичь желаемого результата. Пожалуйста, убедитесь, что вносите изменения в соответствии с вашими потребностями и требованиями вашего сайта. Не забудьте сделать резервную копию файлов перед внесением изменений, чтобы избежать потери данных. Если у вас возникнут вопросы или затруднения, не стесняйтесь обращаться за дополнительной помощью. 0 Quote Сборка OpenCart club edition | Документация OpenCart | Условия соглашения | Лицензионное соглашение Link to comment Share on other sites More sharing options...
Tom Posted May 20, 2024 at 10:19 AM Share Posted May 20, 2024 at 10:19 AM В настройках оставить " руб. " , скриптом подменять $(document).ready(function() { $('body').html($('body').html().replace(/руб\./g, '₽')); }); 1 Quote Link to comment Share on other sites More sharing options...
chixx Posted May 22, 2024 at 07:15 PM Author Share Posted May 22, 2024 at 07:15 PM В 20.05.2024 в 13:19, Tom сказал: В настройках оставить " руб. " , скриптом подменять $(document).ready(function() { $('body').html($('body').html().replace(/руб\./g, '₽')); }); Спасибо, большое! Решение рабочее, но у меня все глючит) Я даже попробовал чуть модифицировать, но глюки не ушли Спойлер $(document).ready(function() { $('body').html(function(i, html) { return html.replace(/руб\./g, '₽'); }); }); Все переключалки на сайте стали глючить (при наведении на карточку товара), такие как быстрый просмотр товара, добавление в избранное, изменение цвета при наведении. Цвет при наведении не менялся, а быстрый просмотр и добавление в избранное мерцало как не в себе) Пока не справился с этой напастью) 0 Quote Link to comment Share on other sites More sharing options...
Tom Posted May 22, 2024 at 11:08 PM Share Posted May 22, 2024 at 11:08 PM Да это же был просто пример для направления мысли. Попробуйте менять цену исключительно внутри некоего общего класса ( в опенкарт это обычно price) $(document).ready(function() { $('.price').each(function() { $(this).html($(this).html().replace(/руб\./g, '₽')); }); }); В вашем случае используется не стандартный для вывода цены класс price а us-module-price-actual Поэтому скрипт будет выглядеть как то так $(document).ready(function() { $('.price, .us-module-price-actual').each(function() { $(this).html($(this).html().replace(/руб\./g, '₽')); }); }); Если этот способ сработает, то дальше можно сделать выбор нескольких классов. Ну например у вас в модулях, категориях итп одни общие классы, в корзине иные, на странице оформления третьи $(document).ready(function() { $('.price, .us-module-price-actual, .another-class, .yet-another-class').each(function() { $(this).html($(this).html().replace(/руб\./g, '₽')); }); }); Где значение .another-class, .yet-another-class (через запятую) те самые иные дополнительные классы. И даже это все лишь пальцем в небо ответ. У вас может быть цена с пересчетом при выборе опций, изменении количества, корзина и модули в модальных окнах итп. И в этом случае решение будет ещё сложнее. Ещё один вариант , немного изменить системный файл currency.php, добавив поддержку html для символа валюты. В настройках указать валюту в определенном классе и дальше обыграть с помощью css. Но и здесь опять таки разные мелочи типа пересчёта цены итп. Нет предела совершенству))) Пробуйте, ну и выложите потом лично выстраданное решение для всех. 0 Quote Link to comment Share on other sites More sharing options...
Solution mpn2005 Posted May 26, 2024 at 12:49 PM Solution Share Posted May 26, 2024 at 12:49 PM Ещё замену можно сделать на уровне php. В файле system/framework.php Перед строкой: $response->output(); Добавить вот это: if ($application_config == 'catalog') { $response->setOutput(str_replace(' руб.', '₽', $response->getOutput())); } Результат: Спойлер 1 Quote Link to comment Share on other sites More sharing options...
chixx Posted May 26, 2024 at 03:18 PM Author Share Posted May 26, 2024 at 03:18 PM В 26.05.2024 в 15:49, mpn2005 сказал: Ещё замену можно сделать на уровне php. В файле system/framework.php Перед строкой: $response->output(); Добавить вот это: if ($application_config == 'catalog') { $response->setOutput(str_replace(' руб.', '₽', $response->getOutput())); } О да! Спасибо, большое) Это гениальнейшее решение. Простое, и запустилось сразу, без танцев с бубном и вроде бы ничего не лагает) Благодарочка! 0 Quote Link to comment Share on other sites More sharing options...
Blast Posted May 26, 2024 at 07:34 PM Share Posted May 26, 2024 at 07:34 PM В 26.05.2024 в 18:18, chixx сказал: О да! Спасибо, большое) Это гениальнейшее решение. Простое, и запустилось сразу, без танцев с бубном и вроде бы ничего не лагает) Благодарочка! так в этом же случае в коде, который отдается браузеру, уже будет "₽" а не "руб." вроде как 0 Quote Link to comment Share on other sites More sharing options...
chixx Posted May 26, 2024 at 07:40 PM Author Share Posted May 26, 2024 at 07:40 PM (edited) В 26.05.2024 в 22:34, Blast сказал: так в этом же случае в коде, который отдается браузеру, уже будет "₽" а не "руб." вроде как Похоже на то, что-то я не сразу заметил. Потому что вот тут руб. Спойлер А вот тут нет Спойлер Я запутался)))) Получается надо как-то так? Цитата if ($application_config == 'catalog') { $output = str_replace(' руб.', '₽', $response->getOutput()); $response->setOutput($output); } else { $output = str_replace('₽', ' руб.', $response->getOutput()); $response->setOutput($output); } Или так? Цитата if ($application_config == 'catalog') { $output = str_replace(' руб.', '₽', $response->getOutput()); $response->setOutput($output); } Edited May 26, 2024 at 08:03 PM by chixx 0 Quote Link to comment Share on other sites More sharing options...
mpn2005 Posted May 27, 2024 at 01:44 PM Share Posted May 27, 2024 at 01:44 PM В 26.05.2024 в 23:34, Blast сказал: так в этом же случае в коде, который отдается браузеру, уже будет "₽" а не "руб." вроде как Да именно так. Замена будет в исходном коде страницы. В 26.05.2024 в 23:40, chixx сказал: Похоже на то, что-то я не сразу заметил. Потому что вот тут руб. Там нет пробела перед 'руб.' Вообще там должно быть значение цены без валюты, насколько я помню. Похоже на какой-то жуткий хардкод. 0 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.