Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Дублирование переменной {{ search }}


Recommended Posts

Всем привет!

Столкнулся с проблемой. В header.twig opencart 3 есть {{ search }}.

Адаптируя шаблон по Bootstrap через классы hidden и visible нужно было вывести два поиск по разные девайсы.

Один работает ок в мобильном а на пк второй мертвый. Переменные одинаковые. Покурил поиск нашел причину с id скрипта common.js

Все вроде ничего и сделал в search.twig отдельный класс и id для второго поиска но тупик как вывести новую переменную ? контроллер писать под неёё ??

Вот сам скрипт

/* PC Search dublicate*/
	$('#search input[name=\'search1\']').parent().find('button').on('click', function() {
        url = $('base').attr('href') + 'index.php?route=product/search';

        var value = $('.my_search input[name=\'search1\']').val();

        if (value) {
            url += '&search=' + encodeURIComponent(value);
        }

        location = url;
    });

    $('#search input[name=\'search1\']').on('keydown', function(e) {
        if (e.keyCode == 13) {
            $('.my_search input[name=\'search1\']').parent().find('button').trigger('click');
        }
    });
/* PC Search dublicate*/

 

Вот шаблон твиг под поиск

<div id="search" class="input-group">
	<div class="inner">
		<input type="text" name="search" value="{{ search }}" placeholder="{{ text_search }}" class="form-control input-lg" />
		<span class="input-group-btn">
			<button type="button" class="btn btn-default btn-lg"></button>
		</span>
	</div>
</div>

/* PC Search dublicate*/
<div id="search" class="input-group my search">
	<div class="inner">
		<input type="text" name="search1" value="{{ search }}" placeholder="{{ text_search }}" class="form-control input-lg" />
		<span class="input-group-btn">
			<button type="button" class="btn btn-default btn-lg"></button>
		</span>
	</div>
</div>

/* PC Search dublicate*/

 

Подскажите если не трудно.

Надіслати
Поділитися на інших сайтах


Проблема не в name="search" а том что у вас два одинаковых div id="search"

под каждый div id="search" и к примеру div id="search1" нужно писать свой обработчик событий js

Надіслати
Поділитися на інших сайтах

21 минуту назад, OCdevWizard сказал:

Проблема не в name="search" а том что у вас два одинаковых div id="search"

под каждый div id="search" и к примеру div id="search1" нужно писать свой обработчик событий js

Ясно спасибо! А Как под 3-ю версию вывести в шаблон ?? какую переменную подствлять ? Если я задаю новый id допустим "seacrhcopy" вывожу как ? {{searchcopy}} ? 

Надіслати
Поділитися на інших сайтах


16 минут назад, natural сказал:

Ясно спасибо! А Как под 3-ю версию вывести в шаблон ?? какую переменную подствлять ? Если я задаю новый id допустим "seacrhcopy" вывожу как ? {{searchcopy}} ? 

 

Пример как можно добавить второй вывод поля от поиска в шапке

 

1) catalog/controller/common/header.php 

 добавляете сюда https://prnt.sc/13b5kvo $data['search_mob'] = $this->load->controller('common/search_mob');

2) catalog/controller/common/search.php дублируете этот файл и переименовываете его в search_mob.php

3) открываете search_mob.php и делаете его так https://prnt.sc/13b5ojn

4) catalog/view/theme/ваша тема/template/common/search.twig дублируете его и переименовывете в search_mob.twig

5) открываете search_mob.twig и меняете там id блока например на https://prnt.sc/13b5r8q

6) открываете catalog/view/javascript/common.js и дописываете код например

 

Спойлер

$('#search-mob input[name=\'search\']').parent().find('button').on('click', function() {
        var url = $('base').attr('href') + 'index.php?route=product/search';

        var value = $('header #search-mob input[name=\'search\']').val();

        if (value) {
            url += '&search=' + encodeURIComponent(value);
        }

        location = url;
    });

    $('#search-mob input[name=\'search\']').on('keydown', function(e) {
        if (e.keyCode == 13) {
            $('header #search-mob input[name=\'search\']').parent().find('button').trigger('click');
        }
    });

 

7) если включено кеширования на сайте то делает сброс кеша

  • +1 1
Надіслати
Поділитися на інших сайтах

1 час назад, OCdevWizard сказал:

 

Пример как можно добавить второй вывод поля от поиска в шапке

 

1) catalog/controller/common/header.php 

 добавляете сюда https://prnt.sc/13b5kvo $data['search_mob'] = $this->load->controller('common/search_mob');

2) catalog/controller/common/search.php дублируете этот файл и переименовываете его в search_mob.php

3) открываете search_mob.php и делаете его так https://prnt.sc/13b5ojn

4) catalog/view/theme/ваша тема/template/common/search.twig дублируете его и переименовывете в search_mob.twig

5) открываете search_mob.twig и меняете там id блока например на https://prnt.sc/13b5r8q

6) открываете catalog/view/javascript/common.js и дописываете код например

 

  Показать контент

$('#search-mob input[name=\'search\']').parent().find('button').on('click', function() {
        var url = $('base').attr('href') + 'index.php?route=product/search';

        var value = $('header #search-mob input[name=\'search\']').val();

        if (value) {
            url += '&search=' + encodeURIComponent(value);
        }

        location = url;
    });

    $('#search-mob input[name=\'search\']').on('keydown', function(e) {
        if (e.keyCode == 13) {
            $('header #search-mob input[name=\'search\']').parent().find('button').trigger('click');
        }
    });

 

7) если включено кеширования на сайте то делает сброс кеша

Ваууу! пасиб. Дайте карту скину вам за помощь))

Надіслати
Поділитися на інших сайтах


25 минут назад, natural сказал:

Ваууу! пасиб. Дайте карту скину вам за помощь))

Не за что.

  • +1 1
Надіслати
Поділитися на інших сайтах

23 часа назад, OCdevWizard сказал:

Не за что.

Не подскажите  еще такой вопрос.

Вывожу для определенной группы покупателей через controller div.

if ($this->customer->isLogged() && $this->customer->getGroupId() == 3) {
                $data['groupdiv'] = '<a href="https://test.com/index.php?route=product/category&path=464"><div class="col-sm-4">
						<div class="small-box acc_box" style="border-bottom:2px solid ;">
							<div class="icon">
							  <i class="fa fa-link" style="color:;"></i>
							</div>
							<div class="inner">
							  <h3 style="color:#888">1</h3>
							  <p style="color:#888;">{{ text_download }}</p>
							</div>
						</div>
					</div></a>';
                }   

Если какой то способ передать на прямую переменную языковую {{ text_download }}  из div который выводится в файл шаблона myaccount.twig ?

Сама {{ text_download }} подключена в котроллере.

$this->load->language('extension/myaccount'); отсюда сама переменная {{ text_download }}

Вся эта вазння выводится как видите через {{ groupdiv }}

Змінено користувачем natural
Надіслати
Поділитися на інших сайтах


9 минут назад, natural сказал:

Не подскажите  еще такой вопрос.

Вывожу для определенной группы покупателей через controller div.


if ($this->customer->isLogged() && $this->customer->getGroupId() == 3) {
                $data['groupdiv'] = '<a href="https://test.com/index.php?route=product/category&path=464"><div class="col-sm-4">
						<div class="small-box acc_box" style="border-bottom:2px solid ;">
							<div class="icon">
							  <i class="fa fa-link" style="color:;"></i>
							</div>
							<div class="inner">
							  <h3 style="color:#888">1</h3>
							  <p style="color:#888;">{{ text_download }}</p>
							</div>
						</div>
					</div></a>';
                }   

Если какой то способ передать на прямую переменную языковую {{ text_download }}  из div который выводится в файл шаблона myaccount.twig ?

Сама {{ text_download }} подключена в котроллере.

$this->load->language('extension/myaccount'); отсюда сама переменная {{ text_download }}

Вся эта вазння выводится как видите через {{ groupdiv }}

 

не очень хорошая реализация делать верстку в контроллере. Лучше бы вы верстку все таки вынесли в темплейт, а для нее просто сделали условие

 

в контроллере:

Цитата

$data['is_group_id_3'] = ($this->customer->isLogged() && $this->customer->getGroupId() == 3) ? true : false;

 

а в теплейте тогда будет так

 

Цитата

{% if is_group_id_3 %}
  <a href="https://test.com/index.php?route=product/category&path=464">
    <div class="col-sm-4">
      <div class="small-box acc_box" style="border-bottom:2px solid ;">
        <div class="icon">
          <i class="fa fa-link" style="color:;"></i>
        </div>
        <div class="inner">
          <h3 style="color:#888">1</h3>
          <p style="color:#888;">{{ text_download }}</p>
        </div>
      </div>
    </div>
  </a>
{% endif %}

 

  • +1 1
Надіслати
Поділитися на інших сайтах

3 минуты назад, OCdevWizard сказал:

 

не очень хорошая реализация делать верстку в контроллере. Лучше бы вы верстку все таки вынесли в темплейт, а для нее просто сделали условие

 

в контроллере:

 

а в теплейте тогда будет так

 

 

попробую отпишусь. Все гениальное просто)) Благодарен Вам!!!

Надіслати
Поділитися на інших сайтах


ну и кстати намного лучше если ссылки прописывать не так как у вас 

Цитата

<a href="https://test.com/index.php?route=product/category&path=464">

 

так вы просто не получите ЧПУ для неё если оно будет задано для категории

 

лучше будет если вы в контроллере заранее сделает так, например

 

Цитата

$data['category_464'] = $this->url->link('product/category', 'path=464');

 

 и в теплейте тогда так

 

Цитата

<a href="{{ category_464 }}">

 

  • +1 1
Надіслати
Поділитися на інших сайтах

15 часов назад, OCdevWizard сказал:

ну и кстати намного лучше если ссылки прописывать не так как у вас 

 

так вы просто не получите ЧПУ для неё если оно будет задано для категории

 

лучше будет если вы в контроллере заранее сделает так, например

 

 

 и в теплейте тогда так

 

 

Благодарен безмерно !)))

Надіслати
Поділитися на інших сайтах


В 23.05.2021 в 18:52, OCdevWizard сказал:

 

Пример как можно добавить второй вывод поля от поиска в шапке

 

1) catalog/controller/common/header.php 

 добавляете сюда https://prnt.sc/13b5kvo $data['search_mob'] = $this->load->controller('common/search_mob');

2) catalog/controller/common/search.php дублируете этот файл и переименовываете его в search_mob.php

3) открываете search_mob.php и делаете его так https://prnt.sc/13b5ojn

4) catalog/view/theme/ваша тема/template/common/search.twig дублируете его и переименовывете в search_mob.twig

5) открываете search_mob.twig и меняете там id блока например на https://prnt.sc/13b5r8q

6) открываете catalog/view/javascript/common.js и дописываете код например

 

  Скрыть контент

$('#search-mob input[name=\'search\']').parent().find('button').on('click', function() {
        var url = $('base').attr('href') + 'index.php?route=product/search';

        var value = $('header #search-mob input[name=\'search\']').val();

        if (value) {
            url += '&search=' + encodeURIComponent(value);
        }

        location = url;
    });

    $('#search-mob input[name=\'search\']').on('keydown', function(e) {
        if (e.keyCode == 13) {
            $('header #search-mob input[name=\'search\']').parent().find('button').trigger('click');
        }
    });

 

7) если включено кеширования на сайте то делает сброс кеша

Все сделал как советовали но что-то не так. Ссылку Вам отправил в л.с. Может посдкажите что с ним не так )) 

https://prnt.sc/13e1kvg

https://prnt.sc/13e1lkc

Змінено користувачем natural
Надіслати
Поділитися на інших сайтах


В 25.05.2021 в 12:52, natural сказал:

Все сделал как советовали но что-то не так. Ссылку Вам отправил в л.с. Может посдкажите что с ним не так )) 

https://prnt.sc/13e1kvg

https://prnt.sc/13e1lkc

нашлось ли решение? по этой инструкции просто форма появляется но почему то не работает

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.