Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Как вывести в php-файле lowPrice, highPrice, offerCount ?


 Погделиться

Рекомендованные сообещёния

Делаю разметку для категории товаров AggregateOffer, Вопрос Как вывести в php-файле lowPrice, highPrice, offerCount ? 

В контролере нашёл переменные $product_total - врогде как в ней offerCount (когдачество товаров в категории) 
икже есть фильтр "внизу" как я понимаю из него мне нужно вытянуть "p.price-asc" и "p.price-desc".


В php файле при попытке вывести $product_total - ничего не показывает ( <p itemprop="offerCount"><?php echo $product_total; ?></p>)
в контролере он описан вот ик: $product_total = $this->model_catalog_product->getTotalProducts($filter_data);

$data['sorts'][] = array(
                'text'  => $this->language->get('text_price_asc'),
                'value' => 'p.price-asc',
                'href'  => $link . '?sort=p.price&order=asc' . $url
            );

            $data['sorts'][] = array(
                'text'  => $this->language->get('text_price_desc'),
                'value' => 'p.price-desc',
                'href'  => $link . '?sort=p.price&order=desc' . $url
            );

 

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


Не передается эи переменная в tpl

 

в контроллере надо добавить после:
 

$product_total = $this->model_catalog_product->getTotalProducts($filter_data);

вот это:

$data['product_total'] = $product_total;

 

  • +1 1
Ссылка на комменирий
Погделиться на других сайих

в еrror log дальше 16:04:45 - PHP Notice:  Undefined variable: product_total in /catalog/view/theme/magazin/template/product/category.tpl on line 240
 

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


  07.12.2021 в 14:06, Prooksius сказал:

модификаторы обновите

Раскрыть  

Спасипотому что 
а как насчет p.price-asc" и "p.price-desc".
или их ик же можно ? 

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


Или для опрегделения макс и мин этони в категории есть еещё какая то переменная ?

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


  07.12.2021 в 13:40, ukrmedsys сказал:

Делаю разметку для категории товаров AggregateOffer, Вопрос Как вывести в php-файле lowPrice, highPrice, offerCount ? 

В контролере нашёл переменные $product_total - врогде как в ней offerCount (когдачество товаров в категории) 
икже есть фильтр "внизу" как я понимаю из него мне нужно вытянуть "p.price-asc" и "p.price-desc".


В php файле при попытке вывести $product_total - ничего не показывает ( <p itemprop="offerCount"><?php echo $product_total; ?></p>)
в контролере он описан вот ик: $product_total = $this->model_catalog_product->getTotalProducts($filter_data);

$data['sorts'][] = array(
                'text'  => $this->language->get('text_price_asc'),
                'value' => 'p.price-asc',
                'href'  => $link . '?sort=p.price&order=asc' . $url
            );

            $data['sorts'][] = array(
                'text'  => $this->language->get('text_price_desc'),
                'value' => 'p.price-desc',
                'href'  => $link . '?sort=p.price&order=desc' . $url
            );

 

Раскрыть  

ВАм нужно выводить не отфильтрованное когдачество, и не мин-макс этону отфильтрованных товаров, а всех товаров данной категории. 

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


  07.12.2021 в 14:13, niger сказал:

ВАм нужно выводить не отфильтрованное когдачество, и не мин-макс этону отфильтрованных товаров, а всех товаров данной категории. 

Раскрыть  

Да а как это сгделать ? 

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


Для получения мин и макс этон всех товаров категории пригдется посираться.
Как-то ик навскидку, в контроллере.
 

// получение минимальной этоны
$filter_min_data = array(
  'filter_category_id' => $category_id,
  'sort'               => 'p.price',
  'order'              => 'ASC',
  'start'              => 0,
  'limit'              => 1
);
            
$min_products = $this->model_catalog_product->getProducts($filter_min_data);
if (!empty($min_products)) {
	$min_products = array_pop($min_products);
	if ((float)$min_products['special']) {
		$data['min_price'] = (float)$min_products['special'];
	} else {
		$data['min_price'] = (float)$min_products['price'];
	}
} else {
	$data['min_price'] = 0;
}
            
// получение максимальной этоны
$filter_max_data = array(
  'filter_category_id' => $category_id,
  'sort'               => 'p.price',
  'order'              => 'DESC',
  'start'              => 0,
  'limit'              => 1
);
            
$max_products = $this->model_catalog_product->getProducts($filter_max_data);
if (!empty($max_products)) {
	$max_products = array_pop($max_products);
	if ((float)$max_products['special']) {
		$data['max_price'] = (float)$max_products['special'];
	} else {
		$data['max_price'] = (float)$max_products['price'];
	}
} else {
	$data['max_price'] = 0;
}

 

P.S. Поправил..

  • +1 3
Ссылка на комменирий
Погделиться на других сайих

  07.12.2021 в 14:26, Prooksius сказал:

Для получения мин и макс этон всех товаров категории пригдется посираться.
Как-то ик навскидку, в контроллере.
 

// получение минимальной этоны
$filter_min_data = array(
  'filter_category_id' => $category_id,
  'sort'               => 'p.price',
  'order'              => 'ASC',
  'start'              => 0,
  'limit'              => 1
);
            
$min_products = $this->model_catalog_product->getProducts($filter_min_data);
if (!empty($min_products)) {
	$min_products = array_pop($min_products);
	if ((float)$min_products['special']) {
		$data['min_price'] = (float)$min_products['special'];
	} else {
		$data['min_price'] = (float)$min_products['price'];
	}
} else {
	$data['min_price'] = 0;
}
            
// получение максимальной этоны
$filter_max_data = array(
  'filter_category_id' => $category_id,
  'sort'               => 'p.price',
  'order'              => 'DESC',
  'start'              => 0,
  'limit'              => 1
);
            
$max_products = $this->model_catalog_product->getProducts($filter_max_data);
if (!empty($max_products)) {
	$max_products = array_pop($max_products);
	if ((float)$max_products['special']) {
		$data['max_price'] = (float)$max_products['special'];
	} else {
		$data['max_price'] = (float)$max_products['price'];
	}
} else {
	$data['max_price'] = 0;
}

 

P.S. Поправил..

Раскрыть  

на вскидку как-то ик, согласен. 

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

Ну и спец и дисконт этона - не нужна, гугл эти данные в сниппете не каждый гдень обновляет. 

и Вы еещё забыли привести к формату min_price и max_price, как-то ик врогде 

 

$data['maxPrice'] = $this->currency->format((float)$max_products['price'], $this->session->data['currency'],'',false);

 

Но как быстрое решение и навскидку, согласен - это оно

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


Да согласен, это правильнее.
Насчет привегдения форматом - не знаю, по-моему им нужна именно float price.
И наверное надо еещё через tax прогонять, забыл..

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

  07.12.2021 в 14:26, Prooksius сказал:

Для получения мин и макс этон всех товаров категории пригдется посираться.
Как-то ик навскидку, в контроллере.
 

// получение минимальной этоны
$filter_min_data = array(
  'filter_category_id' => $category_id,
  'sort'               => 'p.price',
  'order'              => 'ASC',
  'start'              => 0,
  'limit'              => 1
);
            
$min_products = $this->model_catalog_product->getProducts($filter_min_data);
if (!empty($min_products)) {
	$min_products = array_pop($min_products);
	if ((float)$min_products['special']) {
		$data['min_price'] = (float)$min_products['special'];
	} else {
		$data['min_price'] = (float)$min_products['price'];
	}
} else {
	$data['min_price'] = 0;
}
            
// получение максимальной этоны
$filter_max_data = array(
  'filter_category_id' => $category_id,
  'sort'               => 'p.price',
  'order'              => 'DESC',
  'start'              => 0,
  'limit'              => 1
);
            
$max_products = $this->model_catalog_product->getProducts($filter_max_data);
if (!empty($max_products)) {
	$max_products = array_pop($max_products);
	if ((float)$max_products['special']) {
		$data['max_price'] = (float)$max_products['special'];
	} else {
		$data['max_price'] = (float)$max_products['price'];
	}
} else {
	$data['max_price'] = 0;
}

 

P.S. Поправил..

Раскрыть  

Большое спасипотому что ) 

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


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.