Битрикс — алфавитный перечень товаров

04.06.2018  09:08

Возникла задача сделать алфавитный указатель товаров, берём комплексный компонент каталога, рукожопим section.php:

$IBLOCK_ID = 12;//ну, по хорошему надо брать из массива arParams
$c = 0;
CModule::IncludeModule("iblock");
CModule::IncludeModule("catalog");
//CModule::IncludeModule("sale");
//простой getlist. Для красоты можно навернуть кэширование
$arSelect = array(
		"ID",
		"NAME",
		"IBLOCK_ID",
		"IBLOCK_SECTION_ID",//added
		"*",//added
		"DETAIL_TEXT",
		"ACTIVE",
		"ACTIVE_DATE",
		"SORT",
		"CATALOG_QUANTITY",
		"DETAIL_PICTURE",
		"PROPERTY_CML2_ARTICLE",
	);
	$arFilter = array(
		"IBLOCK_ID" => $IBLOCK_ID,
		"IBLOCK_ACTIVE" => "Y",
		"SECTION_ID" => 1204,
		//"ACTIVE_DATE" => "Y",
		//"ACTIVE" => "Y",
	);
	$r = CIBlockElement::GetList(
		array(), 
		$arFilter, 
		false, 
		false, 
		$arSelect
	);
	while ( $arCurrentItem = $r->GetNext() ) {
		$firstLetter = mb_substr($arCurrentItem["NAME"], 0, 1, 'utf-8');
		$arr[] = $firstLetter;
		$c++;
	}
//оставим в массиве только уникальные значения
	$arr = array_unique($arr);
//отсортируем массив по алфавиту
	natsort($arr);
	foreach($arr as $v){
		if ($v == $_REQUEST['first']) {
			$addClass = ' class="active nav-current-page"';
		}
		else $addClass = '';
		$letters .= '
  • '.$v.'
  • '; }


    Всё, выводим получившийся список и добавляем в arrFilter условия (до подключения catalog.section).
    if(!empty($letters)){? >
    
    < ?}? >
    


    перейти в Блог | Блог (стр. 2)

    Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


    Ключевые слова (тэги): 1С-Битрикс 40  PHP 52  web-программирование 76  

    Вам есть что сказать — ну я же чую.
    Высказаться о наболевшем, я выслушаю:
    Имя


    email (не публикуется)