[Помощь] Вывод товаров на главную из категории

Тема в разделе "WebAsyst", создана пользователем droni4, 24 дек 2011.

Модераторы: mdss
  1. vicsk

    vicsk Постоялец

    Регистр.:
    19 янв 2010
    Сообщения:
    147
    Симпатии:
    8
    Вы уж извините, если я чего не понимаю, но все же помогите.
    Кинул в папку kernel/includes/smarty/plugins/ файл function.cat_1.php с содержимым:
    Код:
    <?php
     
    function smarty_function_cat_1 ($params, &$smarty){
      $default_limit = 4;
      $limit = (isset ($params['limit']) && $params['limit'] > 0)? $params['limit'] : $default_limit;
     
      $products = db_phquery_fetch (DBRFETCH_ROW_ALL, 'SELECT `products`.*, `products`.'.LanguagesManager::sql_prepareField('name').' as `name`, `products`.'.LanguagesManager::sql_prepareField('brief_description').' as `brief_description`, `pictures`.`thumbnail` FROM `?#PRODUCTS_TABLE` `products` LEFT JOIN `?#PRODUCT_PICTURES` `pictures` USING (`productID`) WHERE `products`.`enabled` = 1 AND `products`.`categoryID` = 111 ORDER BY `products`.`productID` DESC LIMIT ?', $limit);
     
      foreach ($products as $i => $product){
        $products[$i]['PriceWithUnit'] = show_price ($product['Price']);
      }
     
      if ($products){
        $smarty->assign ('products', $products);
      }
    }
    ?>
    В файле home.html вставил {function.cat_1}
    Помогите куда вставить код:
    Код:
    {foreach from=$products item=product}
      <div>
        <p>
          <a href="{"?productID=`$product.productID`&product_slug=`$product.slug`"|set_query_html}">
            {$product.name}
          </a>
        </p>
        {if $product.thumbnail}
        <p>
          <a href="{"?productID=`$product.productID`&product_slug=`$product.slug`"|set_query_html}">
            <img src="{$smarty.const.URL_PRODUCTS_PICTURES}/{$product.thumbnail}">
          </a>
        </p>
        {/if}
        <p>
          {$product.PriceWithUnit}
        </p>
        <p>
          {$product.brief_description}
        </p>
      </div>
    {/foreach}
     
  2. kadurinho

    kadurinho Shop Script

    Регистр.:
    21 июн 2011
    Сообщения:
    621
    Симпатии:
    261
    вот тут я немного "лоханулся", если вставить этот код
    Код:
    {foreach from=$products item=product}
      <div>
        <p>
          <a href="{"?productID=`$product.productID`&product_slug=`$product.slug`"|set_query_html}">
            {$product.name}
          </a>
        </p>
        {if $product.thumbnail}
        <p>
          <a href="{"?productID=`$product.productID`&product_slug=`$product.slug`"|set_query_html}">
            <img src="{$smarty.const.URL_PRODUCTS_PICTURES}/{$product.thumbnail}">
          </a>
        </p>
        {/if}
        <p>
          {$product.PriceWithUnit}
        </p>
        <p>
          {$product.brief_description}
        </p>
      </div>
    {/foreach}
    в шаблоне, в то место где требуется вывод - что произойдет?*
     
  3. vicsk

    vicsk Постоялец

    Регистр.:
    19 янв 2010
    Сообщения:
    147
    Симпатии:
    8
    То
    То же ничего не происходит...выводится этот код и все...
     
  4. ROMANVL

    ROMANVL Писатель

    Регистр.:
    29 авг 2012
    Сообщения:
    3
    Симпатии:
    1
    На днях решил этот вопрос. Выкладываю рабочее решение.

    из /published/SC/html/scripts/templates/frontend берем category.tpl.html копируем например в catcat.tpl.html - это шаблон вывода товаров из категории в любое место. редактировать ничего не нужно.

    /published/SC/html/scripts/includes копируем category.php в /kernel/includes/smarty/plugins в как пример functions.catcat.php этим мы создаем плагин смарти

    редактируем functions.catcat.php

    PHP:
    <?php

    function smarty_function_catcat ($params, &$smarty){

    $default_catcatid 572;

    $catcatid = (isset ($params['catcatid']) && $params['catcatid'] > 0)? $params['catcatid'] : $default_catcatid;

        
    $Register = &Register::getInstance();

        
    $smarty = &$Register->get(VAR_SMARTY);

        
    /* @var $smarty Smarty */

     

        
    if(isset($_GET['show_all'])){

         

            
    set_query('show_all=','',true);

            
    $show_all true;

            
    $Register->set('show_all'$show_all);

        }

     

        
    $categoryID $catcatid;

     

        if(!
    function_exists('_sortSetting')){function _sortSetting( &$smarty ){

         

            
    $sort_fields = array(

                array(
    'name''NAME'),

                array(
    'Price''PRICE'),

                array(
    'customers_rating''RATING')

            );

            
    $sort_string translate("prd_sort_main_control_string");

            
    $current_sort_field = isset($_GET['sort'])?$_GET['sort']:'';

            
    $current_sort_direction = isset($_GET['direction'])?$_GET['direction']:'';

         

            foreach (
    $sort_fields as $field){

             

                
    $sort_string str_replace"{ASC_".$field[1]."}"$field[0] == $current_sort_field && $current_sort_direction == 'ASC'?translate("str_ascending"):"<a rel='nofollow' href='".xHtmlSetQuery("&sort={$field[0]}&direction=ASC")."'>".translate("str_ascending")."</a>",    $sort_string );

                
    $sort_string str_replace"{DESC_".$field[1]."}"$field[0] == $current_sort_field && $current_sort_direction == 'DESC'?translate("str_descending"):"<a rel='nofollow' href='".xHtmlSetQuery("&sort={$field[0]}&direction=DESC")."'>".translate("str_descending")."</a>",    $sort_string );

            }

            
    $smarty->assign"string_product_sort"$sort_string );

        }}

     

        
    //get selected category info

        
    $category catGetCategoryById$categoryID );

        if ( 
    $categoryID == || (!isset($category['categoryID'])))return;

         

        
    IncrementCategoryViewedTimes($categoryID);

     

        
    //category thumbnail

        
    if (!file_exists(DIR_PRODUCTS_PICTURES.'/'.$category['picture']))$category['picture'] = '';

        
    $smarty->assign('selected_category'$category );

     

        if ( 
    $category['show_subcategories_products'] == )

            
    $smarty->assign'show_subcategories_products');

     

        
    $callBackParam = array();

        
    $products    = array();

        
    $callBackParam['categoryID']    = $categoryID;

        
    $callBackParam['enabled']        = 1;

     

        if (  isset(
    $_GET['search_in_subcategory'])&&$_GET['search_in_subcategory'] == ){

            
    $callBackParam['searchInSubcategories'] = true;

            
    $callBackParam['searchInEnabledSubcategories'] = true;

        }             

     

        if ( isset(
    $_GET['sort']) )$callBackParam['sort'] = $_GET['sort'];

        if ( isset(
    $_GET['direction']) )$callBackParam['direction'] = $_GET['direction'];

     

     

        
    // search parametrs to advanced search

        
    if ( $extraParametrsTemplate != null )$callBackParam['extraParametrsTemplate'] = $extraParametrsTemplate;

        if ( 
    $searchParamName != null )$callBackParam['name'] = $searchParamName;

        if ( 
    $rangePrice != null )$callBackParam['price'] = $rangePrice;

     

        if ( 
    $category['show_subcategories_products'] )$callBackParam['searchInSubcategories'] = true;

     

        
    $count 0;

        
    $navigatorHtml GetNavigatorHtml'categoryID='.$categoryIDCONF_PRODUCTS_PER_PAGE'prdSearchProductByTemplate'$callBackParam$products$offset$count );

     

        
    $show_comparison $category['allow_products_comparison'];

        for(
    $i=0$i<count($products); $i++)$products[$i]['allow_products_comparison'] = $show_comparison;

        if ( 
    CONF_PRODUCT_SORT == '1' )_sortSetting$smarty );

     

        
    $smarty->assign'subcategories_to_be_shown'catGetSubCategoriesSingleLayer($categoryID));

        
    //calculate a path to the category

        
    $smarty->assign'product_category_path',catCalculatePathToCategory($categoryID) );

        
    $smarty->assign'show_comparison'$show_comparison && count($products)>);

        if ( 
    $category['allow_products_search']&&count($products)>1)$smarty->assign'allow_products_search');

        
    $smarty->assign'catalog_navigator'$navigatorHtml );

        
    $smarty->assign'products_to_show'$products);

        
    $smarty->assign'categoryID'$categoryID);

        
    $smarty->assign'main_content_template''catcat.tpl.html');

    }

    ?>
    чтобы вызвать плагин, в админке в любом месте шаблона пишем

    {catcat catcatid=566}

    {include file="catcat.tpl.html"}

    где 566 номер категории.

    Кстате, нигде не нашел нормальной инструкции. Если кому помог - плюсуйте))
     
    Catboy нравится это.
  5. KPACHODAP

    KPACHODAP DELETED

    Регистр.:
    21 дек 2009
    Сообщения:
    638
    Симпатии:
    110
    Подскажите как вывести все товары на главной странице и разбить их постранично по 20 шт на снранице в порядке убывания по дате добавления!???? Очень нужно за ранее спасибо!
     
  6. vicsk

    vicsk Постоялец

    Регистр.:
    19 янв 2010
    Сообщения:
    147
    Симпатии:
    8
    У меня не работает, пишет продуктов не найдено, через {debug} в переменной {$categoryID} почему-то 0
     
  7. ROMANVL

    ROMANVL Писатель

    Регистр.:
    29 авг 2012
    Сообщения:
    3
    Симпатии:
    1
    кстате, можешь выслать твой вариант решения проблемы? Хотел связаться, но в силу ограничений не смог))) сделал свое. так бы я не заморачивался вовсе))
     
  8. rusel666

    rusel666 Постоялец

    Регистр.:
    11 мар 2009
    Сообщения:
    143
    Симпатии:
    11
    Побывал, но выводит только < Нет продуктов > . Кто решил? Нужна помощь.
     
    Последнее редактирование: 16 сен 2016