Jump to content

Recommended Posts

Каким образом ограничить количество выводимых на главной "хитов" и сделать их рандомными?
Т.е. всего в базе 15 хитов, выводится случайным образом один.

Link to post
Share on other sites

Storefront.class.php строка 84 поменяйте содержимое на

// Популярные товары
$query = "SELECT SQL_CALC_FOUND_ROWS *,
products.*, brands.name as brand, brands.url as brand_url,
categories.single_name as category, categories.url as category_url, categories.image as category_image,
products.price*(100-$discount)/100 as discount_price
FROM products LEFT JOIN categories ON categories.category_id = products.category_id LEFT JOIN brands ON products.brand_id = brands.brand_id
WHERE products.enabled=1
AND categories.enabled=1
AND products.hit=1
ORDER BY RAND()";
$this->db->query($query);
$products = $this->db->results();

Это для того чтобы товары отображались рандомно, а вот как ограничить количество выводимых хитов я пока не знаю, как разберусь сразу отпишусь.
P.S. Это для версии 1.1 для версии 1.4.3 код будет позже.

Link to post
Share on other sites

Для вывода определенного количества хитов выполните следующие

Подайте SQL запрос (в phpMyAdmin)

INSERT INTO `settings` VALUES (39, 'hits_num', '2');

В Storefront.class.php после

class Storefront extends Widget
{

Добавьте

var $hits_num = 20; // Количество хитов на главной

Далее после

function fetch_catalog()
{

Вставьте

// берем количество хитов из настроек
if(!empty($this->settings->hits_num))
$this->hits_num = $this->settings->hits_num;

Строка 89 поменяйте содержимое на

// Популярные товары
$query = "SELECT SQL_CALC_FOUND_ROWS *,
products.*, brands.name as brand, brands.url as brand_url,
categories.single_name as category, categories.url as category_url, categories.image as category_image,
products.price*(100-$discount)/100 as discount_price
FROM products LEFT JOIN categories ON categories.category_id = products.category_id LEFT JOIN brands ON products.brand_id = brands.brand_id
WHERE products.enabled=1
AND categories.enabled=1
AND products.hit=1
ORDER BY RAND()
LIMIT $this->hits_num";
$this->db->query($query);
$products = $this->db->results();

В шаблон setup.tpl вставьте следующий код

<tr>
<td class="td_padding">Хитов на главной</td>
<td class="td_padding"><p><input type="text" class="input4" name=hits_num value='{$Settings->hits_num|escape}' /> (1-30)</p></td>
</tr>

С Вас пивасик =)

Link to post
Share on other sites

запросы к базе .. создание новых таблиц .. зачем? вот пример для случайного показа 6 хитов из выбранных в любом колве. в Storefront.class примерно 470 строка ... у меня так:


$query = "SELECT
products.product_id, products.url, products.category_id, products.brand_id, products.model, products.description, products.body,
products.hit, products.order_num, products.small_image, products.large_image, DATE_FORMAT(products.created, '%Y-%m-%d') as created,
DATE_FORMAT(products.modified, '%Y-%m-%d') as modified, products.enabled,
brands.name as brand, brands.url as brand_url,
categories.single_name as category, categories.url as category_url, categories.image as category_image
FROM products LEFT JOIN categories ON categories.category_id = products.category_id
LEFT JOIN brands ON products.brand_id = brands.brand_id
LEFT JOIN products_categories ON products.product_id = products_categories.product_id
WHERE
categories.enabled=1
and products.enabled=1
$id_filter $category_filter $brand_filter $properties_filter $hit_filter
GROUP BY products.product_id
ORDER BY ".(is_null($hit) ? "" : "rand(), ")."products.order_num desc
$limit";





$this->db->query($query);
$temp_products = $this->db->results();
$cnt = 0;
foreach($temp_products as $product) {
$products[$product->product_id] = $product;
$cnt++;
if (!is_null($hit) && $cnt == 6) break;
}




собственно все ... лимит стоит 6 и все работает. без лишних движений

Link to post
Share on other sites

# JustAlexNsk
Ну а если менеджер по контенту захочет поменять количество рандомных хитов, то ему что в код php нужно лезть чтобы поменять, при этом незная что такое php вообще?
Имхо через админку проще менять нежели постоянно php код редактировать под количество хитов.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...