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

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

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

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

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 код будет позже.

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

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

Подайте 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>

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

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

запросы к базе .. создание новых таблиц .. зачем? вот пример для случайного показа 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 и все работает. без лишних движений

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

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

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

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

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

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

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

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

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

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

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

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