Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 6 Ответов
  • 1604 Просмотров
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
Вот нарыл где-то усовершенствованный код модуля топ 10 и попробовал в нем сделать выборку по данной категории (беру её из строки методом гет). А вот как выбрать по производителю, если находишься на странице manufacturer_id? Я так понимаю, нужно добавить в выборку производителя, но не получается ввиду начальных познаний php. Вобщем, нужна помощь.
Сам код модуля:
Код
//тут, как обычно, всякие require

$ps_product = new ps_product;
// change the number of items you wanna haved listed via module parameters
$num_topsellers = $params->get ('num_topsellers', 10);
$category = $_GET["category_id"];

$list  = "SELECT p.product_id, p.product_sales as sales, p.product_parent_id, d.product_price, p.product_thumb_image, p.product_name, c.category_id, c.category_flypage ";
$list .= "FROM #__{vm}_product p, #__{vm}_product_price d, #__{vm}_product_category_xref pc, #__{vm}_category c WHERE ";
$q = "p.product_publish='Y' AND ";
$q .= "pc.product_id = p.product_id AND ";
$q .= "p.product_id = d.product_id AND ";
$q .= "pc.category_id = $category AND ";
$q .= "p.product_sales > 0 ";
$q .= "GROUP BY p.product_id ";
$q .= "ORDER BY sales DESC, p.product_name ";
$list .= $q . " LIMIT 0, $num_topsellers ";
$db = new ps_DB;
$db->query($list);
$tt_item=0;
$i = 0;
?>
<div class="top_ten_products">
<?php
while ($db->next_record()) {
if ($i == 0) {
$i += 1;
}
else {
$i -= 1;
}
if( !$db->f('category_flypage') ) {
$flypage = ps_product::get_flypage( $db->f('product_id'));
}
else {
$flypage = $db->f('category_flypage');
}
$tt_item++;
$pid = $db->f("product_parent_id")? $db->f("product_parent_id") : $db->f("product_id");
$pricedisplay = $ps_product->show_price($db->f("product_id"));
?>
<div class="top_ten_product">
<a title="<?php echo $db->p("product_name"); ?>" href="<?php  $sess->purl(URL . "index.php?page=shop.product_details&amp;flypage=$flypage&amp;product_id=" . $pid . "&amp;category_id=" . $db->f("category_id"))?>"><img src="components/com_virtuemart/shop_image/product/<?php $db->p("product_thumb_image");?>" border="0" /></a><br />
<strong><?php echo $db->p("product_name"); ?></strong>
<div class="top_ten_price"><?php echo $pricedisplay; ?></div>
<a title="<?php echo $db->p("product_name"); ?>" href="<?php  $sess->purl(URL . "index.php?page=shop.product_details&amp;flypage=$flypage&amp;product_id=" . $pid . "&amp;category_id=" . $db->f("category_id"))?>">+ Product Details</a>
</div>
<?php
} ?>
</div>
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
да, но там потом условие дописать можно будет наверное. Если в $_GET категория - вытягивать по категории. Если производитель - то по нему.
Или нет?
По производителю пока не удалось никак,- не хватает знаний по запросам.
*

beagler

  • Moderator
  • 3276
  • 392 / 4
  • https://alorisman.ru/
Да, только 2 разных запроса делать не смешивать.
Код
$manufacturer = $_GET["manufacturer_id"];

$list  = "SELECT p.product_id, p.product_sales as sales, p.product_parent_id, d.product_price, p.product_thumb_image, p.product_name, c.manufacturer_id, c.mf_name ";
$list .= "FROM #__{vm}_product p, #__{vm}_product_price d, #__{vm}_product_mf_xref pc, #__{vm}_manufacturer c WHERE ";
$q = "p.product_publish='Y' AND ";
$q .= "pc.product_id = p.product_id AND ";
$q .= "p.product_id = d.product_id AND ";
$q .= "pc.manufacturer_id = c.manufacturer_id AND ";
$q .= "pc.manufacturer_id = $manufacturer AND ";
$q .= "p.product_sales > 0 ";
$q .= "GROUP BY p.product_id ";
$q .= "ORDER BY sales DESC, p.product_name ";
$list .= $q . " LIMIT 0, $num_topsellers ";
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
beagler, отлично, работает. Как подкорректирую код на условие "категория - производитель", - выложу здесь для осмотра на всякий. С меня+!
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
Вобщем, в итоге получился вот такой код модуля:
Код
<?php
if( !defined( '_VALID_MOS' ) && !defined( '_JEXEC' ) ) die( 'Direct Access to '.basename(__FILE__).' is not allowed.' );

global $mosConfig_absolute_path, $sess;
  // Load the VirtueMart main parse code
  if( file_exists(dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' )) {
require_once( dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' );
} else {
require_once( dirname(__FILE__).'/../components/com_virtuemart/virtuemart_parser.php' );
}
require_once(CLASSPATH.'ps_product.php');
$ps_product = new ps_product;

// change the number of items you wanna haved listed via module parameters
$num_topsellers = $params->get ('num_topsellers', 10);
$category = $_GET["category_id"];
$manufacturer = $_GET["manufacturer_id"];

if (!empty ($category)) {
$list  = "SELECT p.product_id, p.product_sales as sales, p.product_parent_id, p.product_thumb_image, p.product_name,
d.product_price,
c.category_id, c.category_flypage ";

$list .= "FROM #__{vm}_product p, #__{vm}_product_price d,
#__{vm}_product_category_xref pc, #__{vm}_category c WHERE ";

$q = "p.product_publish='Y' AND ";
$q .= "pc.product_id = p.product_id AND ";
$q .= "p.product_id = d.product_id AND ";

$q .= "pc.category_id = $category AND ";

$q .= "p.product_sales > 0 ";
$q .= "GROUP BY p.product_id ";
$q .= "ORDER BY sales DESC, p.product_name ";
$list .= $q . " LIMIT 0, $num_topsellers ";
}
elseif (!empty ($manufacturer)) {
$list  = "SELECT p.product_id, p.product_sales as sales, p.product_parent_id, p.product_thumb_image, p.product_name,
d.product_price,
c.manufacturer_id, c.mf_name ";

$list .= "FROM #__{vm}_product p, #__{vm}_product_price d,
#__{vm}_product_mf_xref pc, #__{vm}_manufacturer c WHERE ";

$q = "p.product_publish='Y' AND ";
$q .= "pc.product_id = p.product_id AND ";
$q .= "p.product_id = d.product_id AND ";

$q .= "pc.manufacturer_id = c.manufacturer_id AND ";
$q .= "pc.manufacturer_id = $manufacturer AND ";

$q .= "p.product_sales > 0 ";
$q .= "GROUP BY p.product_id ";
$q .= "ORDER BY sales DESC, p.product_name ";
$list .= $q . " LIMIT 0, $num_topsellers ";
}
else {
$list  = "SELECT p.product_id, p.product_sales as sales, p.product_parent_id, p.product_thumb_image, p.product_name,
d.product_price,
c.category_id, c.category_flypage ";

$list .= "FROM #__{vm}_product p, #__{vm}_product_price d,
#__{vm}_product_category_xref pc, #__{vm}_category c WHERE ";

$q = "p.product_publish='Y' AND ";
$q .= "pc.product_id = p.product_id AND ";
$q .= "p.product_id = d.product_id AND ";

$q .= "pc.category_id = c.category_id AND ";

$q .= "p.product_sales > 0 ";
$q .= "GROUP BY p.product_id ";
$q .= "ORDER BY sales DESC, p.product_name ";
$list .= $q . " LIMIT 0, $num_topsellers ";
}

$db = new ps_DB;
$db->query($list);
$tt_item=0;
$i = 0;
?>
<div class="top_ten_products">
<?php
while ($db->next_record()) {
if ($i == 0) {
$i += 1;
}
else {
$i -= 1;
}
if( !$db->f('category_flypage') ) {
$flypage = ps_product::get_flypage( $db->f('product_id'));
}
else {
$flypage = $db->f('category_flypage');
}
$tt_item++;
$pid = $db->f("product_parent_id")? $db->f("product_parent_id") : $db->f("product_id");
$pricedisplay = $ps_product->show_price($db->f("product_id"));
?>
<div class="top_ten_product">
<a title="<?php echo $db->p("product_name"); ?>" href="<?php  $sess->purl(URL . "index.php?page=shop.product_details&amp;flypage=$flypage&amp;product_id=" . $pid . "&amp;category_id=" . $db->f("category_id"))?>"><img src="components/com_virtuemart/shop_image/product/<?php $db->p("product_thumb_image");?>" border="0" /></a><br />
<strong><?php echo $db->p("product_name"); ?></strong>
<div class="top_ten_price"><?php echo $pricedisplay; ?></div>
<a title="<?php echo $db->p("product_name"); ?>" href="<?php  $sess->purl(URL . "index.php?page=shop.product_details&amp;flypage=$flypage&amp;product_id=" . $pid . "&amp;category_id=" . $db->f("category_id"))?>">+ Product Details</a>
</div>
<?php
} ?>
</div>
Если пользователь на главной или еще где, - показывает топ продаваемых из всех товаров. Если на странице категории - топ из этой категории. Если переходим на страницу товаров производителя - топ товаров этого производителя  из разных категорий.

Если можно как-то оптимизировать код, - было бы не плохо.
*

olf

  • Захожу иногда
  • 360
  • 5 / 1
Еще в одном моменте нужна помощь. Получается, если товары в подкатегории, а в самой родительской нету, то на странице родительской товары не выводятся. Как в запросе к родительской можно подвязать товары из подкатегорий?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Нужно вывести случайные товары на главную Joomla

Автор manowar

Ответов: 3
Просмотров: 6249
Последний ответ 13.12.2016, 12:41:12
от vitaliypoli
Описание категории опустить под товары

Автор angelo4ek-001

Ответов: 5
Просмотров: 2323
Последний ответ 12.11.2015, 01:53:39
от fsv
Убрать Недавно просмотренные товары

Автор newjey

Ответов: 48
Просмотров: 34497
Последний ответ 02.12.2013, 17:27:56
от Goofa
Недавно просмотренные товары в горизонтальном виде с картинками

Автор ranaza

Ответов: 5
Просмотров: 2304
Последний ответ 24.10.2013, 14:25:50
от navruz.abdurahmon
Как вывести все товары на странице категории?

Автор xilgiz

Ответов: 1
Просмотров: 1395
Последний ответ 05.04.2013, 15:27:11
от smesharic