hexes Опубликовано 25 декабря, 2010 Жалоба Поделиться Опубликовано 25 декабря, 2010 Каким образом ограничить количество выводимых на главной "хитов" и сделать их рандомными?Т.е. всего в базе 15 хитов, выводится случайным образом один. Цитата Ссылка на сообщение Поделиться на другие сайты
JustAlexNsk Опубликовано 25 декабря, 2010 Жалоба Поделиться Опубликовано 25 декабря, 2010 Гї Г§ГГ Гѕ ГЄГ ГЄ 8) Цитата Ссылка на сообщение Поделиться на другие сайты
Danya Опубликовано 26 декабря, 2010 Жалоба Поделиться Опубликовано 26 декабря, 2010 как? Цитата Ссылка на сообщение Поделиться на другие сайты
hexes Опубликовано 27 декабря, 2010 Автор Жалоба Поделиться Опубликовано 27 декабря, 2010 Да, и как же? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 28 декабря, 2010 Жалоба Поделиться Опубликовано 28 декабря, 2010 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_priceFROM products LEFT JOIN categories ON categories.category_id = products.category_id LEFT JOIN brands ON products.brand_id = brands.brand_idWHERE products.enabled=1AND categories.enabled=1AND products.hit=1ORDER BY RAND()";$this->db->query($query);$products = $this->db->results();Это для того чтобы товары отображались рандомно, а вот как ограничить количество выводимых хитов я пока не знаю, как разберусь сразу отпишусь.P.S. Это для версии 1.1 для версии 1.4.3 код будет позже. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 28 декабря, 2010 Жалоба Поделиться Опубликовано 28 декабря, 2010 Для вывода определенного количества хитов выполните следующиеПодайте 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_priceFROM products LEFT JOIN categories ON categories.category_id = products.category_id LEFT JOIN brands ON products.brand_id = brands.brand_idWHERE products.enabled=1AND categories.enabled=1AND products.hit=1ORDER 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>С Вас пивасик =) Цитата Ссылка на сообщение Поделиться на другие сайты
JustAlexNsk Опубликовано 29 декабря, 2010 Жалоба Поделиться Опубликовано 29 декабря, 2010 запросы к базе .. создание новых таблиц .. зачем? вот пример для случайного показа 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 и все работает. без лишних движений Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 29 декабря, 2010 Жалоба Поделиться Опубликовано 29 декабря, 2010 # JustAlexNskНу а если менеджер по контенту захочет поменять количество рандомных хитов, то ему что в код php нужно лезть чтобы поменять, при этом незная что такое php вообще?Имхо через админку проще менять нежели постоянно php код редактировать под количество хитов. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.