Jump to content


Photo
- - - - -

Как не терять трафик из товарных карточек, если товара нет в наличии?

search search url

Best Answer mr.varhola , 22 February 2024 - 17:11

У меня недавно появилась подобная задача, решил её в шаблоне тизера, ну и в нужных шаблонах модуля item по аналогии:

<?//  Проверяем доступное количество товара, скрываем варианты которых нет в наличии или удаляем карточку товара целиком если нет в доступности ни одного варианта

$CB_price = 'b446414f-849a-4684-8015-252eda980a98';   //  Прописываем ID своего элемента
$CB_SKU = $this->_item->getElement($CB_price)->data()->variations;

$noUseVariant = array_shift($CB_SKU);  //  Удаляем первый элемент массива, я так сделал у себя так как у товаров есть вариации и стоимость с остатками заполняются только у них.

$cvvInStock = 0;
foreach($CB_SKU as $currVariant){
    if($currVariant['_balance']['value'] == '0'){
        $cvv = $currVariant['ab454a37-1fb1-4774-b017-2211be448553']['value'];?>
        <script>
            jQuery(".teaserId-<?=$item->id;?> input[value='<?=$cvv;?>']").next().addClass('dspn');  //  Скрываем вариации товара которых нет в наличии
        </script>
    <?} else if($currVariant['_balance']['value'] != '0'){
        if($cvvInStock == 0){
            $cvv = $currVariant['ab454a37-1fb1-4774-b017-2211be448553']['value']; ?>
            <script>
                setTimeout(function (){
                    jQuery(".teaserId-<?=$item->id;?> input[value='<?=$cvv;?>']").next().click();  //  Кликаем на вариацию которая есть в наличии
                },3000);
            </script>
        <?}
        $cvvInStock = 1;
    }
}
if($cvvInStock == 0){?>
    <script>
        jQuery(".teaserId-<?=$item->id;?>").remove();  //  Удаляем карточку тизера в случае если нет в наличии ни одной вариации товара
    </script>
<?}?>

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


Карточка товара, при этом, остается на месте  (fingers)


.teaserId-<?=$item->id;?> - это класс родительского блока карточки товара

 

Go to the full post


8 replies to this topic

#1 Александр Иванов VL.

Александр Иванов VL.
  • JBZoo User (rus)
  • User rate: 0.7
  • posts: 134
  • topics: 26

Posted 03 February 2017 - 13:49

Как не терять трафик из товарных карточек, если товара нет в наличии?
Здравствуйте!
Тема из этой статьи https://siteclinic.r...net-v-nalichii/
 
Вопрос: Как сделать чтобы товары «Нет в наличии» не выводились (скрыть) в карточке товара и в поиске по сайту тоже?
Но при этом при поиске через "поисковики яндекса, гугла и т.д." - страничка отображалась (выводилась) без перенаправления.
Возможно такое?
Еще интересует чтобы работал и в "Полнотекстовый поиск с разбиением по категориям и релевантной сортировкой" http://forum.jbzoo.c...em-po-kategori/

  • 0

#2 SmetDenis

SmetDenis
  • Administrators
  • User rate: 139.4
  • posts: 16232
  • topics: 200

Posted 04 February 2017 - 23:51

Таких функций у нас не предусмотрено.


  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#3 Александр Иванов VL.

Александр Иванов VL.
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0.7
  • posts: 134
  • topics: 26

Posted 05 February 2017 - 10:07

Жаль что его пока нет(((, нужно будет как то его сделать.


  • 0

#4 CB9TOIIIA

CB9TOIIIA
  • Administrators
  • User rate: 230.6
  • posts: 3680
  • topics: 235

Posted 06 February 2017 - 13:50

"Как сделать чтобы товары «Нет в наличии» не выводились (скрыть) в карточке товара и в поиске по сайту тоже?" Но при этом при поиске через "поисковики яндекса, гугла и т.д." - страничка отображалась (выводилась) без перенаправления.

 

 

Хм... так у Связного и МТС вроде.

 

Пока на ум приходит - смотреть referrer и менять state - но вот как его обратно убрать потом. Хотя... если if условие на referer сделать если только.


  • 0

#5 Александр Иванов VL.

Александр Иванов VL.
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0.7
  • posts: 134
  • topics: 26

Posted 14 February 2017 - 17:59

Такое точно есть у http://www.nix.ru 

Например:

1. В поиске яндекса

https://yandex.ru/se... характеристики

2. Переход из поиска яндекса
3. Поиск на сайте http://www.nix.ru 

Edited by Александр Иванов VL., 14 February 2017 - 18:03.

  • 0

#6 CB9TOIIIA

CB9TOIIIA
  • Administrators
  • User rate: 230.6
  • posts: 3680
  • topics: 235

Posted 17 March 2017 - 10:52

Реализовал: Механизм скрытия товара из категорий при остатке 0, при этом сама страница товара остается доступной по прямому URL, для того чтоб не терять индекс ПС  (fingers)


Edited by CB9TOIIIA, 17 March 2017 - 12:45.

  • 0

#7 mr.varhola

mr.varhola
  • JBZoo User (rus)
  • User rate: 1.9
  • posts: 514
  • topics: 116

Posted 31 January 2024 - 21:17

А где сам механизм то?))

как реализовал?


  • 1

#8 CB9TOIIIA

CB9TOIIIA
  • Administrators
  • User rate: 230.6
  • posts: 3680
  • topics: 235

Posted 20 February 2024 - 08:11

А где сам механизм то?))

как реализовал?

 

7 лет назад назад что-то делал xD на самом деле на странице категории такой ID скрывался (версткой или программно) - т.е. пользователь не видел его. Т.е. правки были на category макете, тем самым по прямому URL он как бы оставался, но ни через поиск - ни через категорию не находился.


  • 0

#9 mr.varhola

mr.varhola
  • JBZoo User (rus)
  • User rate: 1.9
  • posts: 514
  • topics: 116

Posted 22 February 2024 - 17:11   Best Answer

У меня недавно появилась подобная задача, решил её в шаблоне тизера, ну и в нужных шаблонах модуля item по аналогии:

<?//  Проверяем доступное количество товара, скрываем варианты которых нет в наличии или удаляем карточку товара целиком если нет в доступности ни одного варианта

$CB_price = 'b446414f-849a-4684-8015-252eda980a98';   //  Прописываем ID своего элемента
$CB_SKU = $this->_item->getElement($CB_price)->data()->variations;

$noUseVariant = array_shift($CB_SKU);  //  Удаляем первый элемент массива, я так сделал у себя так как у товаров есть вариации и стоимость с остатками заполняются только у них.

$cvvInStock = 0;
foreach($CB_SKU as $currVariant){
    if($currVariant['_balance']['value'] == '0'){
        $cvv = $currVariant['ab454a37-1fb1-4774-b017-2211be448553']['value'];?>
        <script>
            jQuery(".teaserId-<?=$item->id;?> input[value='<?=$cvv;?>']").next().addClass('dspn');  //  Скрываем вариации товара которых нет в наличии
        </script>
    <?} else if($currVariant['_balance']['value'] != '0'){
        if($cvvInStock == 0){
            $cvv = $currVariant['ab454a37-1fb1-4774-b017-2211be448553']['value']; ?>
            <script>
                setTimeout(function (){
                    jQuery(".teaserId-<?=$item->id;?> input[value='<?=$cvv;?>']").next().click();  //  Кликаем на вариацию которая есть в наличии
                },3000);
            </script>
        <?}
        $cvvInStock = 1;
    }
}
if($cvvInStock == 0){?>
    <script>
        jQuery(".teaserId-<?=$item->id;?>").remove();  //  Удаляем карточку тизера в случае если нет в наличии ни одной вариации товара
    </script>
<?}?>

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


Карточка товара, при этом, остается на месте  (fingers)


.teaserId-<?=$item->id;?> - это класс родительского блока карточки товара

 

Attached Thumbnails

  • 22-02-2024 19-11-10.jpg

Edited by mr.varhola, 22 February 2024 - 17:12.

  • 1





Also tagged with one or more of these keywords: search, search url

Click to return to top of page in style!