Форум программистов, компьютерный форум, киберфорум
1С Битрикс
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Веб-Разработчик
 Аватар для Itachi261092
82 / 82 / 9
Регистрация: 23.01.2012
Сообщений: 702

Модификация компонена для вставки картинок в меню

02.09.2013, 18:06. Показов 2423. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте Уважаемые Форумчане, у меня возник такой траббл. есть инфоблок с товарами. в нём родительские разделы и в каждом из них ещё много подразделов. Родительские (назовём их главные, лежат в корне) имеют картинку (Preview_picture). Мне нужно на сайте сформировать меню таким образом, чтобы данные из инфоблока продукции обрабатывались и выводились в него. я воспользовался стандартным компонентом SECTIONS, но не нашёл в нём импорта картинки раздела в само меню. то есть у меня в коде меню должно присутствовать что то типа
PHP
1
2
3
4
5
6
7
8
9
10
$aMenuLinks = Array(
    Array(
        "ололо",
        "#",
        Array(),
        Array([PREVIEW_PICTURE] => "ид картинки"),
        ""
    )
);
?>
но стандартный компонент не может этого сделать. он добавляет только три парметра:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$aMenuLinks = Array(
    Array(
        "ололо",
        "#",
        Array(),
        Array([FROM_IBLOCK] => 1
                    [IS_PARENT] => 
                    [DEPTH_LEVEL] => 1),
        ""
    )
);
?>
Я попытался кастомизировать код компонента, но у меня не добавляется параметр картинки. пустая переменная в общем. прилагаю изменённый код компонента:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
if(!isset($arParams["CACHE_TIME"]))
    $arParams["CACHE_TIME"] = 36000000;
 
$arParams["ID"] = intval($arParams["ID"]);
$arParams["IBLOCK_ID"] = intval($arParams["IBLOCK_ID"]);
 
$arParams["DEPTH_LEVEL"] = intval($arParams["DEPTH_LEVEL"]);
if($arParams["DEPTH_LEVEL"]<=0)
    $arParams["DEPTH_LEVEL"]=1;
 
$arResult["SECTIONS"] = array();
$arResult["ELEMENT_LINKS"] = array();
 
if($this->StartResultCache())
{
    if(!CModule::IncludeModule("iblock"))
    {
        $this->AbortResultCache();
    }
    else
    {
        $arFilter = array(
            "IBLOCK_ID"=>$arParams["IBLOCK_ID"],
            "GLOBAL_ACTIVE"=>"Y",
            "IBLOCK_ACTIVE"=>"Y",
            "<="."DEPTH_LEVEL" => $arParams["DEPTH_LEVEL"],
        );
        $arOrder = array(
            "left_margin"=>"asc",
        );
 
        $rsSections = CIBlockSection::GetList($arOrder, $arFilter, false, array(
            "ID",
            "DEPTH_LEVEL",
            "NAME",
            "SECTION_PAGE_URL",
            "PREVIEW_PICTURE"
        ));
        if($arParams["IS_SEF"] !== "Y")
            $rsSections->SetUrlTemplates("", $arParams["SECTION_URL"]);
        else
            $rsSections->SetUrlTemplates("", $arParams["SEF_BASE_URL"].$arParams["SECTION_PAGE_URL"]);
        while($arSection = $rsSections->GetNext())
        {
            $arResult["SECTIONS"][] = array(
                "ID" => $arSection["ID"],
                "DEPTH_LEVEL" => $arSection["DEPTH_LEVEL"],
                "~NAME" => $arSection["~NAME"],
                "~SECTION_PAGE_URL" => $arSection["~SECTION_PAGE_URL"],
                "PREVIEW_PICTURE" => $arSection["PREVIEW_PICTURE"],
            );
            $arResult["ELEMENT_LINKS"][$arSection["ID"]] = array();
        }
        $this->EndResultCache();
    }
}
 
//In "SEF" mode we'll try to parse URL and get ELEMENT_ID from it
if($arParams["IS_SEF"] === "Y")
{
    $engine = new CComponentEngine($this);
    if (CModule::IncludeModule('iblock'))
    {
        $engine->addGreedyPart("#SECTION_CODE_PATH#");
        $engine->setResolveCallback(array("CIBlockFindTools", "resolveComponentEngine"));
    }
    $componentPage = $engine->guessComponentPath(
        $arParams["SEF_BASE_URL"],
        array(
            "section" => $arParams["SECTION_PAGE_URL"],
            "detail" => $arParams["DETAIL_PAGE_URL"],
        ),
        $arVariables
    );
    if($componentPage === "detail")
    {
        CComponentEngine::InitComponentVariables(
            $componentPage,
            array("SECTION_ID", "ELEMENT_ID"),
            array(
                "section" => array("SECTION_ID" => "SECTION_ID"),
                "detail" => array("SECTION_ID" => "SECTION_ID", "ELEMENT_ID" => "ELEMENT_ID"),
            ),
            $arVariables
        );
        $arParams["ID"] = intval($arVariables["ELEMENT_ID"]);
    }
}
 
if(($arParams["ID"] > 0) && (intval($arVariables["SECTION_ID"]) <= 0) && CModule::IncludeModule("iblock"))
{
    $arSelect = array("ID", "IBLOCK_ID", "DETAIL_PAGE_URL", "IBLOCK_SECTION_ID");
    $arFilter = array(
        "ID" => $arParams["ID"],
        "ACTIVE" => "Y",
        "IBLOCK_ID" => $arParams["IBLOCK_ID"],
    );
    $rsElements = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
    if(($arParams["IS_SEF"] === "Y") && (strlen($arParams["DETAIL_PAGE_URL"]) > 0))
        $rsElements->SetUrlTemplates($arParams["SEF_BASE_URL"].$arParams["DETAIL_PAGE_URL"]);
    while($arElement = $rsElements->GetNext())
    {
        $arResult["ELEMENT_LINKS"][$arElement["IBLOCK_SECTION_ID"]][] = $arElement["~DETAIL_PAGE_URL"];
    }
}
 
$aMenuLinksNew = array();
$menuIndex = 0;
$previousDepthLevel = 1;
foreach($arResult["SECTIONS"] as $arSection)
{
    if ($menuIndex > 0)
        $aMenuLinksNew[$menuIndex - 1][3]["IS_PARENT"] = $arSection["DEPTH_LEVEL"] > $previousDepthLevel;
    $previousDepthLevel = $arSection["DEPTH_LEVEL"];
 
    $arResult["ELEMENT_LINKS"][$arSection["ID"]][] = urldecode($arSection["~SECTION_PAGE_URL"]);
    $aMenuLinksNew[$menuIndex++] = array(
        htmlspecialcharsbx($arSection["~NAME"]),
        $arSection["~SECTION_PAGE_URL"],
        $arResult["ELEMENT_LINKS"][$arSection["ID"]],
        array(
            "FROM_IBLOCK" => true,
            "IS_PARENT" => false,
            "DEPTH_LEVEL" => $arSection["DEPTH_LEVEL"],
            "PREVIEW_PICTURE" => $arSection["PREVIEW_PICTURE"],
        ),
    );
}
echo "<pre>"; print_r($aMenuLinksNew); echo "</pre>";
return $aMenuLinksNew;
?>
всё где есть код PREVIEW_PICTURE - мои добавления. подскажите пожалуйста кто нибудь, что я не правильно сделал? вроде бы всё так, а выдаёт пустые значения =( буду очень благодарен за помощь
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.09.2013, 18:06
Ответы с готовыми решениями:

Макрос для автоматической вставки картинок из заданной папки в ворд
Доброй ночи. Кто может помочь в создании макроса. Суть такова: есть папка, в которой находятся картинки. Необходимо создать макрос,...

нужна подкачка картинок для меню
нужна подкачка картинок для меню я сделал типа так: var aim1 = new Image(); aim1.src = 'rubrics/a_rubric1.gif'; по моему не пашет ...

Как добавить пункт в контекстное меню Windows для картинок?
Как добавить пункт в контекстное меню Windows для картинок? Т.е. чтобы при вызове контекстного меню над картинкой (.PNG) появился новый...

5
Веб-Разработчик
 Аватар для Itachi261092
82 / 82 / 9
Регистрация: 23.01.2012
Сообщений: 702
04.09.2013, 18:10  [ТС]
Ну и? люди, никто не сталкивался что ли?
0
694 / 534 / 40
Регистрация: 22.06.2009
Сообщений: 1,293
09.09.2013, 17:43
Цитата Сообщение от Itachi261092 Посмотреть сообщение
$rsSections = CIBlockSection::GetList($arOrder, $arFilter, false, array(
* * * * * * "ID",
* * * * * * "DEPTH_LEVEL",
* * * * * * "NAME",
* * * * * * "SECTION_PAGE_URL",
* * * * * * "PREVIEW_PICTURE"
* * * * ));
Это у элементов инфоблока две картинки, для анонса и детальная.
У раздела только одна картинка
http://dev.1c-bitrix.ru/api_he... etlist.php
Нужно просто PICTURE писать.
0
Веб-Разработчик
 Аватар для Itachi261092
82 / 82 / 9
Регистрация: 23.01.2012
Сообщений: 702
10.09.2013, 09:54  [ТС]
Alorian, огромнейшее спасибо!!! заработало!!! вот я дурень то
а вообще так у меня правильно код изменён? то есть в правильных местах добавлены параметры? нет ничего лишнего или наоборот, может быть чего то не хватает? а то я боюсь вдруг сбои какие то могут возникнуть, например с кешированием. там я совсем не трогал код
0
694 / 534 / 40
Регистрация: 22.06.2009
Сообщений: 1,293
10.09.2013, 15:30
Цитата Сообщение от Itachi261092 Посмотреть сообщение
нет ничего лишнего или наоборот, может быть чего то не хватает?
Хз. Мне кажется там какое то месиво на все случаи жизни. Я обычно пишу просто мелкий компонент, который делает один запрос и возвращает массив из пунктов меню. Раза в три меньше кода получается.
0
Веб-Разработчик
 Аватар для Itachi261092
82 / 82 / 9
Регистрация: 23.01.2012
Сообщений: 702
10.09.2013, 15:43  [ТС]
Alorian, Я взял стандартный sections и в него добавил три пункта с PICTURE полем. боюсь сам писать. не дорос ещё. по любому ошибок наляпаю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.09.2013, 15:43
Помогаю со студенческими работами здесь

Макрос вставки картинок и WEND. Где-то простая ошибка
Есть готовый макрос (источник:http://excelvba.ru/code/PastePictures), который вставляет картинку в ячейку с подгонкой размеров ячейки под...

Как убрать ограничения вставки iframe (для вставки видео)?
Подскажите как на dle 10.3 убрать ограничения вставки Iframe(для вставки видео)

Меню из картинок
Здравствуйте! у меня меню из картинок и ссылок. При наведении курсором на ссылку, выпадает под меню. Как сделать, что при наведении на...

Меню из картинок
Помогите пожалуйста! Я видела много разных меню, по мимо полосы в шапке. Есть где около 6 картинок как бы сменяют друг друга по кругу... Я...

Меню из картинок
Добрый вечер. Возникло желание сделать вот такое информационное меню , но с JS почти не работал и не имею понятия как это реализовать,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru