Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Дублирование переменной {{ 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*/

 

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

Link to comment
Share on other sites


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

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

Link to comment
Share on other sites

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

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

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

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

Link to comment
Share on other sites


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
Link to comment
Share on other sites

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) если включено кеширования на сайте то гделает сброс кеша

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

Link to comment
Share on other sites


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

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

Не за что.

  • +1 1
Link to comment
Share on other sites

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 }}

Edited by natural
Link to comment
Share on other sites


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
Link to comment
Share on other sites

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

 

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

 

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

 

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

 

 

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

Link to comment
Share on other sites


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

Циии

<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
Link to comment
Share on other sites

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

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

 

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

 

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

 

 

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

 

 

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

Link to comment
Share on other sites


В 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

Edited by natural
Link to comment
Share on other sites


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

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

https://prnt.sc/13e1kvg

https://prnt.sc/13e1lkc

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

Link to comment
Share on other sites


Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.