 
			
				18.10.2020, 14:35
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 18.10.2020 
					
					
					
						Сообщений: 3
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Как вывести уведомление на странице при определенном условии?
			 
			
		
		
		
		Добрый день! 
Подскажите, пожалуйста, как с помощью скрипта выводить на странице информационную строчку при определенном условии?
 
Например, на сайте есть позиции, у которых вместо цены стоит значение "Цена по запросу*". Нужно сделать так, чтобы при условии, если в заказе есть такие позиции, появлялось информационное уведомление для клиента (в виде обычной строкой).
 
Пример как должно быть во вложении.
 
Скажу сразу, что в JS абсолютный новичок, только постигаю азы, а сделать это необходимо как можно скорее   
Заранее спасибо за помощь!  
		
	
		
		
			
		
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.10.2020, 15:29
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Opencart? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.10.2020, 17:49
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 18.10.2020 
					
					
					
						Сообщений: 3
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от laimas
			 
		
	 | 
 
	| 
		Opencart?
	 | 
 
	
 
 Да, он самый.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.10.2020, 19:30
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от For_que
			
		
	 | 
 
	| 
		Да, он самый.
	 | 
 
	
 
 Можно добавить код в common.js, но стоит установить какую либо новую тему, которая использует свой модифицированный common.js, и добавленный код работать не будет.
 
Можно в шаблон страницы соответствующей добавить такой код, но исходники нельзя трогать, так как чей либо модификатор может и не отработать корректно.
 
Учитывая все это и то, что JS тут боком, и это должно быть заботой сервера, нужно написать модификатор, который модифицирует контроллер, шаблон и языковый файл заказа, а ведь такие же цены будут отображаться и в корзине, поэтому и ее контроллер, шаблон и языковый файл нужно тоже модифицировать. После чего поместить файл модификатора в каталог system и обновить модификаторы в админке. Теперь все будет работать и ничему не мешать.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.10.2020, 20:27
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 18.10.2020 
					
					
					
						Сообщений: 3
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		@laimas спасибо за ответ! 
Как вы описали это правильно, но нам нужен, можно сказать, костыль. Код планируется вставить только в шаблон чекаута. Никаких модификаций больше с сайтом не планировалось.
 
Нам удалось это сделать с помощью php метода: 
<?php if ($product['price'] =='0.00 р.'){ echo '*ТЕКСТ'; }?>, 
но он срабатывает не совсем правильно. Хватает значение последнего товара в цикле и, если этот товар с ценой, то уведомление не появляется. 
 
Посоветовали это сделать, прописав код скрипта JS в шаблоне, но вот какой код - вот в чем вопрос. 
Как я понимаю, должно быть что-то вроде: Если на текущей странице присутствует "ВОТ ЭТОТ ТЕКСТ", то в определенном месте вывести "вот эту" надпись.
 
Логика, в целом понятна, а вот знаний JS не хватает, чтобы это реализовать   .  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.10.2020, 20:59
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 03.02.2020 
					
					
					
						Сообщений: 2,777
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от For_que
			
		
	 | 
 
	| 
		Как я понимаю, должно быть что-то вроде: Если на текущей странице присутствует "ВОТ ЭТОТ ТЕКСТ", то в определенном месте вывести "вот эту" надпись
	 | 
 
	
 
 Ну если условие только такое, то в head поместить такой скрипт
 
<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>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось voraa, 18.10.2020 в 21:09.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.10.2020, 21:00
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от For_que
			
		
	 | 
 
	
		Код планируется вставить только в шаблон чекаута 
Нам удалось это сделать с помощью php метода
	 | 
 
	
 
 А подумать, прежде чем костылять? Не хотите делать как это полагается, костыляйте, но если завтра захочется/потребуется кроме русского поддержку другого языка?
 
	
 
	| 
		
			Сообщение от For_que
			
		
	 | 
 
	| 
		Никаких модификаций больше с сайтом не планировалось.
	 | 
 
	
 
 Модификаторы, это то, что нужно сесть и почитать, в сети найдете, не так это и сложно. 
А вы сейчас можете зарекаться, что вам ничего не надо, завтра же прицепите какую либо хню по способу оплаты или еще чего, что точно затрагивает продажи, тогда что?
 
Открывайте код контроллера заказа, в нем найдете формирование массива товаров для страницы заказа. Вот там как раз и будет условие, если цены нет, то вместо нее из язкового файла будет браться значение переменной определяющей текст "Запрос цены". Нужно через модификатор добавить здесь переменную, например:
 
$data['noprice'] = '';
//далее в формировании массива, если есть товар без цены, то
$data['noprice'] = $this->language->get('text_noprice');
где 'text_noprice', это текст который вы хотите показать "В вашей корзине ....", который также через модификатор в языковый файл добавить под этой переменной.
 
В файл шаблона через модификатор, в конце таблицы с товарами добавить {{ noprice }}
 
Вот как надо делать, а не слушать советчиков малограмотных, и самому не делать через попу, чтобы потом не жалеть.  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось laimas, 18.10.2020 в 21:09.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.10.2020, 21:02
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от voraa
			
		
	 | 
 
	| 
		Ну если условие только такое, то в head поместить такой скрипт
	 | 
 
	
 
 Не поместите вы так скрипта, в этой CMS, как и в других подобных, есть справила добавления скриптов, а подобные самописки просто не выводятся на страницу.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.10.2020, 21:38
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 14.01.2015 
					
					
					
						Сообщений: 12,989
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Файл модификатора, это обычный 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, следовательно и шаблон с этим же именем, и файл языка, будут. Проверьте.  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось laimas, 18.10.2020 в 21:45.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |