Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Алфавит для элементов.

00 голосов
4
Хотелось бы сделать следующее:
Вывести алфавиты А Б В Г Д Е Е Ж З....
A B C D E F G...
И при нажатии на определенную букву, выводился список элементов, чье название начинается на эту букву.

Не жду подробного решения, но очень хочу чтобы подсказали в какую сторону рыть.
спросил 04 Фев, 14 от Kiriel (2,010 баллов)

4 Ответы

00 голосов
Посмотрите в сторону фильтров: http://dev.1c-bitrix.ru/api_help/iblock/filter.php

Код
<?
// найти элементы у которых название начинается на "A"
$res = CIBlockElement::GetList(Array(), Array(">=NAME"=>"A", "<NAME"=>"B"));

// найти элементы с идентификатором большим 100
$res = CIBlockElement::GetList(Array(), Array(">ID"=>"100"));
?>
ответил 14 Июнь, 14 от Thieve (460 баллов)
00 голосов
Сделать наименования директорий:
Цитата
Артур Глазов пишет:
А Б В Г Д Е Е Ж З.... A B C D E F G...

и в этих директориях заводить элементы соответственно начинающиеся на соответствующую букву.

Далее кастомизировать компонент catalog...
ответил 12 Окт, 14 от EDKA (980 баллов)
00 голосов
Здесь пример, как можно сделать алфавитный индекс по задействованным символам в именах элементов:
http://dev.1c-bitrix.ru/community/forums/messages/forum6/topic31893/message176345/#message176345

А фильтровать элементы так:
$arFilter = array(
'NAME' => $sRequestLetter.'%'
);
где $sRequestLetter - это выбранная буква(ы) алфавитного индекса.
ответил 13 Фев, 15 от Delp (7,220 баллов)
00 голосов
Цитата
Артур Глазов пишет:
Хотелось бы сделать следующее: Вывести алфавиты А Б В Г Д Е Е Ж З.... A B C D E F G... И при нажатии на определенную букву, выводился список элементов, чье название начинается на эту букву.

Как здесь: http://thesaurus.rusnano.com/wiki/ ?

Вариант реализации.
1) завести свойство "Первая буква названия". Свойство должно заполняться автоматически в обработчике событий OnBeforeIBlockElementAdd/Update. В обработчике нужно корректно обрабатывать названия, начинающиеся с цифры или символа типа кавычек;
2) для построения рубрикатора использовать CIBlockElement::GetList с группировкой по свойству "Первая буква названия". Т.е.:
Код
$res = CIBlockElement::GetList(
    false,
    array(
        'IBLOCK_ID' => ...,
        'ACTIVE' => 'Y',
    ),
    array('PROPERTY_FIRST_LETTER')
);

Получишь набор записей {PROPERTY_FIRST_LETTER_VALUE, CNT}: буква и кол-во активных элементов, начинающихся с этой буквы.
ответил 24 Май, 15 от Ly (4,580 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 02 Апр, 14 от ROKKI (160 баллов)
0 голосов
3 ответов
спросил 02 Март, 14 от Kania (5,180 баллов)
0 голосов
0 ответов
0 голосов
7 ответов
спросил 22 Авг, 13 от Dantey (160 баллов)
0 голосов
1 ответ
спросил 25 Окт, 17 от аноним