Перейти к содержанию

Как визуально отображать знак рубля (Лебедева), но в коде оставить руб.


Перейти к решению Решений mpn2005,

Рекомендуемые сообщения

Может кто-то решал такую задачу? В настройках Система-Валюта я прописываю значок рубля ₽ и в коде сайта соответственно он же выводится

<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. Спасибо)

Ссылка на комментарий
Поделиться на другие сайты

В 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, в зависимости от вашей конкретной ситуации.

Это лишь общая концепция того, как можно достичь желаемого результата. Пожалуйста, убедитесь, что вносите изменения в соответствии с вашими потребностями и требованиями вашего сайта. Не забудьте сделать резервную копию файлов перед внесением изменений, чтобы избежать потери данных. Если у вас возникнут вопросы или затруднения, не стесняйтесь обращаться за дополнительной помощью.

Ссылка на комментарий
Поделиться на другие сайты

В 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, '₽');
    });
});


Все переключалки на сайте стали глючить (при наведении на карточку товара), такие как быстрый просмотр товара, добавление в избранное, изменение цвета при наведении. Цвет при наведении не менялся, а быстрый просмотр и добавление в избранное мерцало как не в себе) Пока не справился с этой напастью)

Ссылка на комментарий
Поделиться на другие сайты

Да это же был просто пример для направления мысли. 
Попробуйте менять цену исключительно внутри некоего общего класса ( в опенкарт это обычно 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. Но и здесь опять таки разные мелочи типа пересчёта цены итп.

Нет предела совершенству))) Пробуйте, ну и выложите потом лично выстраданное решение для всех. 

Ссылка на комментарий
Поделиться на другие сайты

  • Решение

Ещё замену можно сделать на уровне php.

В файле system/framework.php
Перед строкой:

$response->output();

 

Добавить вот это:

if ($application_config == 'catalog') {
    $response->setOutput(str_replace(' руб.', '₽', $response->getOutput()));
}

 

Результат:

Спойлер

image.png

 

Ссылка на комментарий
Поделиться на другие сайты

В 26.05.2024 в 15:49, mpn2005 сказал:

Ещё замену можно сделать на уровне php.

В файле system/framework.php
Перед строкой:

$response->output();

 

Добавить вот это:

if ($application_config == 'catalog') {
    $response->setOutput(str_replace(' руб.', '₽', $response->getOutput()));
}

 

О да! Спасибо, большое) Это гениальнейшее решение. Простое, и запустилось сразу, без танцев с бубном и вроде бы ничего не лагает) Благодарочка!

Ссылка на комментарий
Поделиться на другие сайты

В 26.05.2024 в 18:18, chixx сказал:

 

О да! Спасибо, большое) Это гениальнейшее решение. Простое, и запустилось сразу, без танцев с бубном и вроде бы ничего не лагает) Благодарочка!

так в этом же случае в коде, который отдается браузеру, уже будет "₽" а не "руб." вроде как

Ссылка на комментарий
Поделиться на другие сайты

В 26.05.2024 в 22:34, Blast сказал:

так в этом же случае в коде, который отдается браузеру, уже будет "₽" а не "руб." вроде как

Похоже на то, что-то я не сразу заметил. Потому что вот тут руб.

 

Спойлер

image.thumb.png.ac13e7fd4e7ad753e30f2046b335200a.png

 

А вот тут нет

 

Спойлер

image.png.7324dff723c37086d80101c74afa93e1.png

 

Я запутался))))

 

Получается надо как-то так?

Цитата

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);

}

 

Изменено пользователем chixx
Ссылка на комментарий
Поделиться на другие сайты

В 26.05.2024 в 23:34, Blast сказал:

так в этом же случае в коде, который отдается браузеру, уже будет "₽" а не "руб." вроде как

Да именно так. Замена будет в исходном коде страницы.

 

В 26.05.2024 в 23:40, chixx сказал:

Похоже на то, что-то я не сразу заметил. Потому что вот тут руб.

Там нет пробела перед 'руб.'
Вообще там должно быть значение цены без валюты, насколько я помню.
Похоже на какой-то жуткий хардкод.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...