Как вывести уведомление на странице при определенном условии?
Вложений: 1
Добрый день!
Подскажите, пожалуйста, как с помощью скрипта выводить на странице информационную строчку при определенном условии? Например, на сайте есть позиции, у которых вместо цены стоит значение "Цена по запросу*". Нужно сделать так, чтобы при условии, если в заказе есть такие позиции, появлялось информационное уведомление для клиента (в виде обычной строкой). Пример как должно быть во вложении. Скажу сразу, что в JS абсолютный новичок, только постигаю азы, а сделать это необходимо как можно скорее :( Заранее спасибо за помощь! |
Opencart?
|
Цитата:
|
Цитата:
Можно в шаблон страницы соответствующей добавить такой код, но исходники нельзя трогать, так как чей либо модификатор может и не отработать корректно. Учитывая все это и то, что JS тут боком, и это должно быть заботой сервера, нужно написать модификатор, который модифицирует контроллер, шаблон и языковый файл заказа, а ведь такие же цены будут отображаться и в корзине, поэтому и ее контроллер, шаблон и языковый файл нужно тоже модифицировать. После чего поместить файл модификатора в каталог system и обновить модификаторы в админке. Теперь все будет работать и ничему не мешать. |
@laimas спасибо за ответ!
Как вы описали это правильно, но нам нужен, можно сказать, костыль. Код планируется вставить только в шаблон чекаута. Никаких модификаций больше с сайтом не планировалось. Нам удалось это сделать с помощью php метода: <?php if ($product['price'] =='0.00 р.'){ echo '*ТЕКСТ'; }?>, но он срабатывает не совсем правильно. Хватает значение последнего товара в цикле и, если этот товар с ценой, то уведомление не появляется. Посоветовали это сделать, прописав код скрипта JS в шаблоне, но вот какой код - вот в чем вопрос. Как я понимаю, должно быть что-то вроде: Если на текущей странице присутствует "ВОТ ЭТОТ ТЕКСТ", то в определенном месте вывести "вот эту" надпись. Логика, в целом понятна, а вот знаний JS не хватает, чтобы это реализовать :(. |
Цитата:
<script> document.addEventListener('DOMContentLoaded', () => { if (document.body.textContent.indexOf("ВОТ ЭТОТ ТЕКСТ") >= 0) { let oprmest = document.getElementById('oprmest'); // Находим то "определенное место" oprmest.innerHTML = "вот эта надпись"; } }) </script> Или заранее приготовить надпись, но пока невидимую <div id='oprmest' style="display:none;">вот эта надпись</div> А когда надо показывать <script> document.addEventListener('DOMContentLoaded', () => { if (document.body.textContent.indexOf("ВОТ ЭТОТ ТЕКСТ") >= 0) { let oprmest = document.getElementById('oprmest'); // Находим то "определенное место" oprmest.style.display = 'block'; } }) </script> |
Цитата:
Цитата:
А вы сейчас можете зарекаться, что вам ничего не надо, завтра же прицепите какую либо хню по способу оплаты или еще чего, что точно затрагивает продажи, тогда что? Открывайте код контроллера заказа, в нем найдете формирование массива товаров для страницы заказа. Вот там как раз и будет условие, если цены нет, то вместо нее из язкового файла будет браться значение переменной определяющей текст "Запрос цены". Нужно через модификатор добавить здесь переменную, например: $data['noprice'] = ''; //далее в формировании массива, если есть товар без цены, то $data['noprice'] = $this->language->get('text_noprice'); где 'text_noprice', это текст который вы хотите показать "В вашей корзине ....", который также через модификатор в языковый файл добавить под этой переменной. В файл шаблона через модификатор, в конце таблицы с товарами добавить {{ noprice }} Вот как надо делать, а не слушать советчиков малограмотных, и самому не делать через попу, чтобы потом не жалеть. |
Цитата:
|
Файл модификатора, это обычный xml-фал. Не составит труда его написать:
<?xml version="1.0" encoding="utf-8"?> <modification> <name>Add message</name> <code>default</code> <version>1.0</version> <author>Main</author> <!-- Добвление текста в языковый файл --> <file path="catalog/language/ru-ru/checkout/checkout.php"> <operation error="skip"> <search> <![CDATA[$_['column_total']]]> </search> <add position="after"> <![CDATA[$_['text_noprice'] = 'У вас в корзине есть ......';]]> </add> </operation> </file> </modification> Сюда же добавляется и для шаблона, причем всех тем будет затронуто, для файлов <file path="catalog/view/theme/*/template/checkout/checkout.twig">, и для контроллера, своя секция <file></file>. Если вы такое <?php if ($product['price'] =='0.00 р.'){ echo '*ТЕКСТ'; }?> вытворяете, то открыв страницу контроллера заказов, найдете место где нужно добавить ранее описанный код. То есть, объявить переменную пустую, а в цикле проверять, если есть товар без цены, определить вывод текста. Ищите в сети описание файла модификатора, не сложно, разберетесь. PS. Хотя, может и подзабыл, но вроде бы как вывод товаров, это контроллер confirm.php, следовательно и шаблон с этим же именем, и файл языка, будут. Проверьте. |
Часовой пояс GMT +3, время: 01:12. |