Перейти к содержанию
Официальный форум поддержки Simpla

Универсальный виджет для товаров


Перейти к решению Решено mishanya,

Рекомендуемые сообщения

Приветствую!

 

Спасибо большое, Noxter-у за плагин, что опубликован здесь

 

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

 

Вставляю в main.tpl

{get_products var=custom_products category_id=77 limit=5}
{if $custom_products}
<div class="max huawei">
    <div class="related">
                <ul class="catprods">
               {foreach $custom_products as $product}
                {include file='product_iteam.tpl'}
                {/foreach}
                </ul></div>
</div>
{/if}

Но ничего не выходит.


но если вместо category_id=77 вставляю к примеру brand_id=24, то отображаются товары бренда.

 

По совету Noxter-а поставил иначе:

{get_products var=custom_products category_id=[77] limit=5}

тоже ничего.

 

Подскажите, в чем проблема и где копать. Уже не знаю, заменил даже папку Smarty и файл api/Products.php, думал в них может что-то сменили ранее, не помогло.

 

Спасибо за любую информацию.

Ссылка на сообщение
Поделиться на другие сайты

если у вас категории вида:

 

кат1

кат77

-кат771

-кат772

кат3

 

и вы указываете для поиска кат77 - то ничего не будет. Потому что товары находятся в кат771 и кат772

Ссылка на сообщение
Поделиться на другие сайты

если у вас категории вида:

 

кат1

кат77

-кат771

-кат772

кат3

 

и вы указываете для поиска кат77 - то ничего не будет. Потому что товары находятся в кат771 и кат772

Вы совершенно правы. Именно таким образом расположены категории. Для проверки указал категорию к примеру "кат771" и товары отобразились.

 

А как можно вывести товары родительской категории, ведь в админке отображаются товары той же "кат77"?

Ссылка на сообщение
Поделиться на другие сайты
{get_products var=custom_products category_id=$category->children limit=5}

перед этим нужно выбрать нужную категорию.

Изменено пользователем mishanya
Ссылка на сообщение
Поделиться на другие сайты

 

{get_products var=custom_products category_id=$category->children limit=5}

перед этим нужно выбрать нужную категорию.

Спасибо Мишаня. А как нужно выбрать нужную категорию.

то есть так?

{get_products var=custom_products category_id=77 limit=5}
{get_products var=custom_products category_id=$category->children limit=5}
Ссылка на сообщение
Поделиться на другие сайты
  • Решение

версия 2.3

 

тогда так. в виджете что вы скопировали код у Noxter ПЕРЕД

 foreach($this->products->get_products($params) as $p)
	 $products[$p->id] = $p;

добавить

if($params['category_id']){
        $category = $this->categories->get_category((int)$params['category_id']);
	$params['category_id'] = $category->children;
}

и вызвать

 

{get_products var=custom_products category_id=77 limit=5}

где 77 айди родительской категории

Ссылка на сообщение
Поделиться на другие сайты

Мишаня, Гениально! Спасибо огромное.

 

а как внедрить в этот

{get_products var=custom_products category_id=77 limit=5}

чтобы товары рандомно отображались?

в других случаях чтобы featured/ is_new / discounted товары из этой категории отображались?

Ссылка на сообщение
Поделиться на другие сайты

пользуйтесь поиском. вывод рандомных товаров http://forum.simplacms.ru/topic/5150-%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D1%8B%D0%B9-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4-%D1%80%D0%B5%D0%BA%D0%BE%D0%BC%D0%B5%D0%BD%D0%B4%D1%83%D0%B5%D0%BC%D1%8B%D1%85-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2-%D0%BD%D0%B0-%D0%B3%D0%BB%D0%B0%D0%B2/

 

 

в других случаях чтобы featured/ is_new / discounted товары из этой категории отображались?

 

так же как я выше писал сделать для других плагинов в view/View.php

Ссылка на сообщение
Поделиться на другие сайты

Мишаня, огромное спасибо. Все отлично работает теперь.

еще один вопросик немного не в тему.

 

Как вывести к примеру рядом с этим блоком количество товаров из той или иной категории?

 

попытался вставить

{api module=products method=count_products var=count category_id='77' visible=1}
{$count}

показывает "0".

Ссылка на сообщение
Поделиться на другие сайты

Мишаня, огромное спасибо. Все отлично работает теперь.

еще один вопросик немного не в тему.

 

Как вывести к примеру рядом с этим блоком количество товаров из той или иной категории?

 

попытался вставить

{api module=products method=count_products var=count category_id='77' visible=1}
{$count}

показывает "0".

 

ну так правильно показывает 0. вы делаете то же что в первом посту. передаете родительскую категорию а товары в дочерних

Ссылка на сообщение
Поделиться на другие сайты

Вообще-то с версии 2.3.7 есть универсальный плагин (немного недоработанный) для всего API.

Вот тут читаем http://simpla-addons.org/blog/news/obnovlenie-simpla-237-ot-21-aprelya-2015 пробуем сами.

Ссылка на сообщение
Поделиться на другие сайты

ну так правильно показывает 0. вы делаете то же что в первом посту. передаете родительскую категорию а товары в дочерних

я прошу прощение, Мишаня. вставил это в View.php

// Количество активных товаров
		$count_products = $this->products->count_products( array('visible'=>1) );
		$this->design->assign('count_catalog', $count_products);
		

после

if($params['category_id']){
        $category = $this->categories->get_category((int)$params['category_id']);
		$params['category_id'] = $category->children;
		}

а в шаблоне

{$count_catalog}

ничего не выходит.

Как можно это связать вместе с указанной категории?

{get_products var=custom_products category_id=77 limit=5}

 

Спасибо.

Ссылка на сообщение
Поделиться на другие сайты

Во первых, Ваш фрагмент

// Количество активных товаров
		$count_products = $this->products->count_products( array('visible'=>1) );
		$this->design->assign('count_catalog', $count_products);
считает кол-во ВСЕХ активных товаров  вообще.

Если надо в категории, то менять примерно так

$count_products = $this->products->count_products( array('visible'=>1, 'category_id'=>77) );

Или вместо 77 вставлять список подкатегорий

$count_products = $this->products->count_products( array('visible'=>1, 'category_id'=>array(77,86,16,209)) );

 

Во-вторых, будет или нет работать вставка {$count_catalog}, зависит от того, в какой шаблон это вставляете.

 

Если определяли переменую в View.php, то работать будет только в index.tpl.

Если хотите, что работало в products.tpl, то и фрагмент то надо вставлять в ProductsView.php...

Ссылка на сообщение
Поделиться на другие сайты

 

Если определяли переменую в View.php, то работать будет только в index.tpl.

Бред сивой кобылы :)

Почему-то все, что в этом файле определяется работает во ВСЕХ шаблонах...

Вот пример, проверте:

			// Передаем в дизайн то, что может понадобиться в нем
			$this->design->assign('currencies',	$this->currencies);
			$this->design->assign('currency',	$this->currency);
			$this->design->assign('user',       $this->user);
			$this->design->assign('group',      $this->group);
			
			$this->design->assign('config',		$this->config);
			$this->design->assign('settings',	$this->settings);
Ссылка на сообщение
Поделиться на другие сайты

 

Во первых, Ваш фрагмент

// Количество активных товаров
		$count_products = $this->products->count_products( array('visible'=>1) );
		$this->design->assign('count_catalog', $count_products);
считает кол-во ВСЕХ активных товаров  вообще.

Если надо в категории, то менять примерно так

$count_products = $this->products->count_products( array('visible'=>1, 'category_id'=>77) );

Или вместо 77 вставлять список подкатегорий

$count_products = $this->products->count_products( array('visible'=>1, 'category_id'=>array(77,86,16,209)) );

 

Во-вторых, будет или нет работать вставка {$count_catalog}, зависит от того, в какой шаблон это вставляете.

 

Если определяли переменую в View.php, то работать будет только в index.tpl.

Если хотите, что работало в products.tpl, то и фрагмент то надо вставлять в ProductsView.php...

пытаюсь вставить в main.tpl.

сделал все это в View.php, нее помогло. ничего не выдает.

Ссылка на сообщение
Поделиться на другие сайты

Я уже жалею что статью написал, не думал что возникнет столько проблем в простом, рабочем решении.

Noxter, Ваше решение отличное. Спасибо большое.

Оно работает и вопросов по нему впрочем не остались ))

 

это я уже дополнительный "не в тему" вопрос поднял по количеству товаров в той или иной категории.

Ссылка на сообщение
Поделиться на другие сайты

Noxter, Ваше решение отличное. Спасибо большое.

Оно работает и вопросов по нему впрочем не остались ))

 

это я уже дополнительный "не в тему" вопрос поднял по количеству товаров в той или иной категории.

Подсчёт кол-ва товаров в категории в симпле есть, нужно раскомментировать небольшой участок кода в api/Categories.php, но при большом кол-ве товаров может тормозить.
Ссылка на сообщение
Поделиться на другие сайты

Подсчёт кол-ва товаров в категории в симпле есть, нужно раскомментировать небольшой участок кода в api/Categories.php, но при большом кол-ве товаров может тормозить.

Товаров немного будет. Максимум 250 товаров.

я уже вроде нашел этот код.

Подскажи пожалуйста, как его в шаблоне вывести?

Ссылка на сообщение
Поделиться на другие сайты

Товаров немного будет. Максимум 250 товаров.

я уже вроде нашел этот код.

Подскажи пожалуйста, как его в шаблоне вывести?

К примеру вот так:
{foreach $categories as $c}
{$c->products_count}
{/foreach}
Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...