Автор Тема: Популярные-последние товары на главной  (Прочитано 4415 раз)

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

Оффлайн Rinat

  • Старый лис
  • *****
  • Сообщений: 602
  • Авторитет: 36
    • Просмотр профиля
Написал тут.  Возможно что-то где-то будет лучше, с удовольствием буду рад, если код модифицирован

Идет как файл evalmod
<?php

/* Кол-во дней за которые смотреть заходы */
$days   14;
/* Максимальное кол-во выводимых товаров */
$limit  10;
/* Вид URL вашего каталога */
$url    '/catalog.html?itemid=';


$interval       =  86400*$days;
$time_interval  time() - $interval;


$sql "SHOW COLUMNS FROM `sf_catalog_catalog1_items`";


  
$cols $kernel->db_get_list($sql);

  foreach(
$cols as $item)
  {
      
$col_row[$item['Field']] = '%'.$item['Field'].'%';
  }




    
$sql "SELECT
    b.* 
    FROM `sf_stat_uri`
    LEFT JOIN `sf_catalog_catalog1_items` AS b
    ON (SUBSTR(`uri`,22) = b.id)
    WHERE `tstc`>="
.$time_interval."
    AND LEFT(`uri`, "
.strlen($url).") ='".$url."'
    AND `available` = 1
    GROUP BY SUBSTR(`uri`,22) ORDER BY  COUNT(uri) DESC LIMIT 0, "
.$limit;




    
$row $kernel->db_get_list($sql);


    
$templates $kernel->pub_template_parse('modules/evalmod/templates_user/pop_goods.html');
    
$content $templates['cat_item'];



     


    
$block '';    
    foreach(
$row as $item)
    {
    
$block .= str_replace($col_row$item$content);


  
    
//Сначала размеры большого изображения
                
if (file_exists($kernel->pub_site_root_get().'/'.$item['image']))
                {
                    
$size = @getimagesize($item['image']);
                    if (
$size)
                    {
                        
$block str_replace('%image_width%'$size[0], $block);
                        
$block str_replace('%image_height%'$size[1], $block);
                    }
                }
                
//кроме этого надо добавить переменные для малого и исходного изображения
                
$path_parts pathinfo($item['image']);
                
$path_small $path_parts['dirname'].'/tn/'.$path_parts['basename'];
                
$path_source $path_parts['dirname'].'/source/'.$path_parts['basename'];

                if (
file_exists($path_small))
                {
                    
//размеры маленького изображения, если есть
                    
$size = @getimagesize($path_small);
                    if (
$size)
                    {
                        
$block str_replace('%image_small_width%'$size[0], $block);
                        
$block str_replace('%image_small_height%'$size[1], $block);
                    }
                    
$block str_replace('%image_small%'$path_small$block);
                }

                if (
file_exists($path_source))
                { 
//размеры исходного изображения, если есть
                    
$size = @getimagesize($path_source);
                    if (
$size)
                    {
                        
$block str_replace('%image_source_width%'$size[0], $block);
                        
$block str_replace('%image_source_height%'$size[1], $block);
                    }
                    
$block str_replace('%image_source%'$path_source$block);
                }
   



    }
              echo 
$block;
?>




modules/evalmod/templates_user/pop_goods.html

<!-- @cat_item -->
<div class ="good_item">
    <div class ="good_price1">
    Стоимость
    </div>
    <div class ="good_price2">
        %price%.   
    </div>
    <div class="good_image">
    <img src="%image_small%" />
    </div>
    <div class="good_title">
    <a href="catalog.html?itemid=%id">%name%</a>
    </div>

    <a href="basket.html?catalog_basket_additemid=%id%&redir2=index.html">
    <div class="add_to_basket">
    <div class="basket_icon">
    <img src="images/basket_icon.png"/>
    </div>
       
    <div class ="basket_text">
       
    Добавить в корзину
    </div>
                       
    </div>
    </a>
    </div>





« Последнее редактирование: 01 сентября 2014, 01:41:30 от Rinat »

Оффлайн Rinat

  • Старый лис
  • *****
  • Сообщений: 602
  • Авторитет: 36
    • Просмотр профиля
Re: Популярные товары на главной
« Ответ #1 : 01 сентября 2014, 01:41:13 »
А вот последние товары на главной. Принцип такой же, просто запрос в базу данных другой.

<?php



/* Вид URL вашего каталога */
$url    '/catalog.html?itemid=';

/* Максимальное кол-во выводимых товаров */
$limit  10;






$sql "SHOW COLUMNS FROM `sf_catalog_catalog1_items`";


  
$cols $kernel->db_get_list($sql);

  foreach(
$cols as $item)
  {
      
$col_row[$item['Field']] = '%'.$item['Field'].'%';
  }




    
$sql "SELECT
    * FROM 
    `sf_catalog_catalog1_items` 
        ORDER BY id DESC
  LIMIT 0, "
.$limit;


    
$row $kernel->db_get_list($sql);


    
$templates $kernel->pub_template_parse('modules/evalmod/templates_user/last_goods.html');
    
$content $templates['cat_item'];



     


    
$block '';    
    foreach(
$row as $item)
    {

    
$item['price'] =   substr($item['price'], 0, -3);
  

    
$block .= str_replace($col_row$item$content);


    
//Сначала размеры большого изображения
                
if (file_exists($kernel->pub_site_root_get().'/'.$item['image']))
                {
                    
$size = @getimagesize($item['image']);
                    if (
$size)
                    {
                        
$block str_replace('%image_width%'$size[0], $block);
                        
$block str_replace('%image_height%'$size[1], $block);
                    }
                }
                
//кроме этого надо добавить переменные для малого и исходного изображения
                
$path_parts pathinfo($item['image']);
                
$path_small $path_parts['dirname'].'/tn/'.$path_parts['basename'];
                
$path_source $path_parts['dirname'].'/source/'.$path_parts['basename'];

                if (
file_exists($path_small))
                {
                    
//размеры маленького изображения, если есть
                    
$size = @getimagesize($path_small);
                    if (
$size)
                    {
                        
$block str_replace('%image_small_width%'$size[0], $block);
                        
$block str_replace('%image_small_height%'$size[1], $block);
                    }
                    
$block str_replace('%image_small%'$path_small$block);
                }

                if (
file_exists($path_source))
                { 
//размеры исходного изображения, если есть
                    
$size = @getimagesize($path_source);
                    if (
$size)
                    {
                        
$block str_replace('%image_source_width%'$size[0], $block);
                        
$block str_replace('%image_source_height%'$size[1], $block);
                    }
                    
$block str_replace('%image_source%'$path_source$block);
                }
   



    }
              echo 
$block;




?>

« Последнее редактирование: 01 сентября 2014, 14:14:13 от Rinat »

Оффлайн sollers

  • Новичок
  • *
  • Сообщений: 12
  • Авторитет: 0
  • Пол: Мужской
    • Просмотр профиля
Re: Популярные-последние товары на главной
« Ответ #2 : 19 июня 2015, 19:22:19 »
Хорошие варианты, обязательно попробую.
Сам сделал намного проще. Хиты продаж оформил как ленту новостей. В шаблоне ленты указал
<!-- @content -->
<div id="lenta">
<h3>Хиты продаж</h3>
<ul>
                    %rows%
</ul>
</div>

<!-- @rows -->
<li>
%image%<br />
<h5>%source%</h5>
<p>%description_short%</p>

</li>

<!-- @image -->
<img src="%image_thumb%" border="0" alt="%header%" align="left" title="%header%"/>


<!-- @source -->
<a href="%source_name%">%header%</a>
то есть идет переход на элемент каталога. сделал так, не потому что не мог придумать другое решение, просто есть потребность выводить как хиты продаж то, что нужно мне, а не то, что люди реально массово берут.
пользоваться просто - заполняю форму Добавить новость, указываю ссылку источник - на элемент каталога

Оффлайн Rinat

  • Старый лис
  • *****
  • Сообщений: 602
  • Авторитет: 36
    • Просмотр профиля
Re: Популярные-последние товары на главной
« Ответ #3 : 20 июня 2015, 13:01:14 »
К сожалению писал это, когда не очень хорошо знал тонкости движка.
На самом деле все это хорошо делается с помощью фильтров