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

Вы уж извините, если я чего не понимаю, но все же помогите.
Кинул в папку 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}
 
вот тут я немного "лоханулся", если вставить этот код
Код:
{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}
в шаблоне, в то место где требуется вывод - что произойдет?*
 
То
вот тут я немного "лоханулся", если вставить этот код
Код:
{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}
в шаблоне, в то место где требуется вывод - что произойдет?*
То же ничего не происходит...выводится этот код и все...
 
На днях решил этот вопрос. Выкладываю рабочее решение.

из /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 == 1 || (!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'] == 1 )

        $smarty->assign( 'show_subcategories_products', 1 );

 

    $callBackParam = array();

    $products    = array();

    $callBackParam['categoryID']    = $categoryID;

    $callBackParam['enabled']        = 1;

 

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

        $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='.$categoryID, CONF_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)>1 );

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

    $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 номер категории.

Кстате, нигде не нашел нормальной инструкции. Если кому помог - плюсуйте))
 
Подскажите как вывести все товары на главной странице и разбить их постранично по 20 шт на снранице в порядке убывания по дате добавления!???? Очень нужно за ранее спасибо!
 
На днях решил этот вопрос. Выкладываю рабочее решение.
Кстате, нигде не нашел нормальной инструкции. Если кому помог - плюсуйте))
У меня не работает, пишет продуктов не найдено, через {debug} в переменной {$categoryID} почему-то 0
 
У меня не работает, пишет продуктов не найдено, через {debug} в переменной {$categoryID} почему-то 0

кстате, можешь выслать твой вариант решения проблемы? Хотел связаться, но в силу ограничений не смог))) сделал свое. так бы я не заморачивался вовсе))
 
Побывал, но выводит только < Нет продуктов > . Кто решил? Нужна помощь.
 
Последнее редактирование:
Назад
Сверху