Вывод количества объектов в категории TPL — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Актуально для версии 2.9.6''' Задача - вывести количество товаров напротив каждой подкатег…»)
 
 
(не показаны 2 промежуточные версии этого же участника)
Строка 2: Строка 2:
  
 
Задача - вывести количество товаров напротив каждой подкатегории(к примеру чтоб напротив категории аксессуары стояла цифра 3, то есть количество аксессуаров)
 
Задача - вывести количество товаров напротив каждой подкатегории(к примеру чтоб напротив категории аксессуары стояла цифра 3, то есть количество аксессуаров)
Для начала создадим usel запрос вот такого содержания
 
<source lang="xml">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<selection>
 
<target result="pages">
 
  <type module="catalog" method="object" />
 
  <category depth="2">{1}</category>
 
</target>
 
</selection>
 
</source>
 
Назовём его amount.xml и положим в паку /usels.
 
  
Теперь добавим шаблон выборки usel, т.е. добавим файл default2.xml в папку tpls/data/usel/ с содержанием
+
В файле classes/modules/custom.php после строки //TODO: Write your own macroses here пропишем следующий макрос:
 +
 
 
<source lang="php">
 
<source lang="php">
<?php
+
public function productsCount($pageId) {
 
 
$FORMS = Array();
 
  
$FORMS['elements_block'] = <<<END
+
    $objectTypesCollection = umiObjectTypesCollection::getInstance();
%total%
+
    $hierarchy = umiHierarchy::getInstance();
END;
+
 +
    $product_basetype_id = $objectTypesCollection->getBaseType( 'catalog', 'object' );
 +
    $product_hierarchy_type_id = $objectTypesCollection->getType( $product_basetype_id )->getHierarchyTypeId();
 +
 +
    $unactive_product = false;
 +
    $unvisible_product = true;
 +
 +
    $count = $hierarchy->getChildsCount( $pageId, $unactive_product, $unvisible_product, 0, $product_hierarchy_type_id);
 +
 +
    return($count);
 +
}
  
 
?>
 
?>
Строка 43: Строка 41:
 
добавляем следующий код
 
добавляем следующий код
 
<source lang="php">
 
<source lang="php">
%data doSelection('default2', amount, %pid%)%
+
%custom productsCount(%id%)%
 
</source>
 
</source>
  

Текущая версия на 10:47, 2 июня 2014

Актуально для версии 2.9.6

Задача - вывести количество товаров напротив каждой подкатегории(к примеру чтоб напротив категории аксессуары стояла цифра 3, то есть количество аксессуаров)

В файле classes/modules/custom.php после строки //TODO: Write your own macroses here пропишем следующий макрос:

public function productsCount($pageId) {

    $objectTypesCollection = umiObjectTypesCollection::getInstance();
    $hierarchy = umiHierarchy::getInstance();
			
    $product_basetype_id = $objectTypesCollection->getBaseType( 'catalog', 'object' );
    $product_hierarchy_type_id = $objectTypesCollection->getType( $product_basetype_id )->getHierarchyTypeId();
			
    $unactive_product = false;
    $unvisible_product = true;
			
    $count = $hierarchy->getChildsCount( $pageId, $unactive_product, $unvisible_product, 0, $product_hierarchy_type_id);
			
    return($count);
}

?>

Затем идём в шаблон, отвечающий за вывод подкатегорий и в блок

$FORMS['menu_line_level1_a'] = <<<END

<div>
	<a href="%link%" umi:element-id="%id%" umi:field-name="name">%text%</a>
</div>
%sub_menu%

END;

после

<a href="%link%" umi:element-id="%id%" umi:field-name="name">%text%</a>

добавляем следующий код

%custom productsCount(%id%)%

В нашем случае это шаблон /tpls/content/menu/default.tpl Всё, теперь у нас напротив категорий выводится количество товаров в этой категории.