Форум программистов, компьютерный форум, киберфорум
1С Битрикс
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 18.12.2018
Сообщений: 11

Не получается создать подменю

18.12.2018, 15:02. Показов 6476. Ответов 6

Студворк — интернет-сервис помощи студентам
Есть готовый, функционирующий сайт на битриксе. Мне необходимо добавить один пункт в подменю. Делаю все как указано в массе роликов на youtube, т.е. создать раздел находясь в нужной вкладке меню, и выбрав тип меню(в моем случае Левое, ибо как я понимаю из настроек меню "Тип меню для остальных уровней: Левое"). Однако в моем случае раздел в файлах создается, страница есть и при прямом вводе в ссылки страница открывается, но в меню пункт не отображается. Как я полагаю дело в том, что подгрузка идет из left.menu_ext.php , а не из Меню типа left, и соответственно я делаю не верные действия. Предполагал, что может быть по коду меню самого что-то не так, но ведь остальные пункты выпадающего меню подгружаются, значит и с ним все нормально. Расскажите начинающему юзеру битрикс, как правильно проделать эти действия с добавлением пункта в выпадающее меню. Некоторые файлы прилагаю:
.left.menu_ext.php
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
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
global $APPLICATION;
$aMenuLinksExt = $APPLICATION->IncludeComponent(
    "alexkova.business:menu.sections",
    "",
    Array(
        "IS_SEF" => "Y",
        "ID" => $_REQUEST["ID"],
        "IBLOCK_TYPE" => "content",
        "IBLOCK_ID" => "36",
        "SECTION_URL" => "",
        "DEPTH_LEVEL" => "3",
        "CACHE_TYPE" => "N",
        "CACHE_TIME" => "36000000",
        "SEF_BASE_URL" => "/n-uslugi/",
        "SECTION_PAGE_URL" => "#SECTION_CODE#/",
        "DETAIL_PAGE_URL" => "#SECTION_CODE#/#ELEMENT_CODE#/"
    ),
        false,
        array("HIDE_ICONS" => "Y")
);
 
foreach ($aMenuLinksExt as &$val){
    $val["DEPTH_LEVEL"]++;
}
 
//$aMenuLinks = array_merge($aMenuLinks, $aMenuLinksExt);
$aMenuLinks = $aMenuLinksExt;
?>
Menu.sections
.description.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
 
$arComponentDescription = array(
    "NAME" => GetMessage("T_IBLOCK_DESC_MENU_ITEMS"),
    "DESCRIPTION" => GetMessage("T_IBLOCK_DESC_MENU_ITEMS_DESC"),
    "ICON" => "/images/menu_ext.gif",
    "CACHE_PATH" => "Y",
    "PATH" => array(
        "ID" => "utility",
        "CHILD" => array(
            "ID" => "navigation",
            "NAME" => GetMessage("MAIN_NAVIGATION_SERVICE")
        )
    ),
);
 
?>
.parameters.php
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
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
 
if(!CModule::IncludeModule("iblock"))
    return;
 
$arTypesEx = CIBlockParameters::GetIBlockTypes(Array("all"=>" "));
 
$arIBlocks=Array();
$db_iblock = CIBlock::GetList(Array("SORT"=>"ASC"), Array("SITE_ID"=>$_REQUEST["site"], "TYPE" => ($arCurrentValues["IBLOCK_TYPE"]!="all"?$arCurrentValues["IBLOCK_TYPE"]:"")));
while($arRes = $db_iblock->Fetch())
    $arIBlocks[$arRes["ID"]] = $arRes["NAME"];
 
$arComponentParameters = array(
    "GROUPS" => array(
    ),
    "PARAMETERS" => array(
        "IS_SEF" => array(
            "PARENT" => "BASE",
            "NAME" => GetMessage("CP_BMS_IS_SEF"),
            "TYPE" => "CHECKBOX",
            "DEFAULT" => "N",
            "REFRESH" => "Y",
        ),
        "SEF_BASE_URL" => array(
            "PARENT" => "BASE",
            "NAME"=>GetMessage("CP_BMS_SEF_BASE_URL"),
            "TYPE"=>"STRING",
            "DEFAULT"=>'/catalog/phone/',
        ),
        "SECTION_PAGE_URL" => CIBlockParameters::GetPathTemplateParam(
            "SECTION",
            "SECTION_PAGE_URL",
            GetMessage("CP_BMS_SECTION_PAGE_URL"),
            "#SECTION_ID#/",
            "BASE"
        ),
        "DETAIL_PAGE_URL" => CIBlockParameters::GetPathTemplateParam(
            "DETAIL",
            "DETAIL_PAGE_URL",
            GetMessage("CP_BMS_DETAIL_PAGE_URL"),
            "#SECTION_ID#/#ELEMENT_ID#",
            "BASE"
        ),
        "ID" => Array(
            "PARENT" => "BASE",
            "NAME"=>GetMessage("CP_BMS_ID"),
            "TYPE"=>"STRING",
            "DEFAULT"=>'={$_REQUEST["ID"]}',
        ),
        "IBLOCK_TYPE" => Array(
            "PARENT" => "BASE",
            "NAME"=>GetMessage("CP_BMS_IBLOCK_TYPE"),
            "TYPE"=>"LIST",
            "VALUES"=>$arTypesEx,
            "DEFAULT"=>"catalog",
            "ADDITIONAL_VALUES"=>"N",
            "REFRESH" => "Y",
        ),
        "IBLOCK_ID" => Array(
            "PARENT" => "BASE",
            "NAME"=>GetMessage("CP_BMS_IBLOCK_ID"),
            "TYPE"=>"LIST",
            "VALUES"=>$arIBlocks,
            "DEFAULT"=>'1',
            "MULTIPLE"=>"N",
            "ADDITIONAL_VALUES"=>"N",
            "REFRESH" => "Y",
        ),
        "SECTION_URL" => CIBlockParameters::GetPathTemplateParam(
            "SECTION",
            "SECTION_URL",
            GetMessage("CP_BMS_SECTION_URL"),
            "",
            "BASE"
        ),
        "DEPTH_LEVEL" => Array(
            "PARENT" => "DATA_SOURCE",
            "NAME" => GetMessage("CP_BMS_DEPTH_LEVEL"),
            "TYPE" => "STRING",
            "DEFAULT" => "1",
        ),
        "CACHE_TIME"  =>  Array("DEFAULT"=>36000000),
    ),
);
if($arCurrentValues["IS_SEF"] === "Y")
{
    unset($arComponentParameters["PARAMETERS"]["ID"]);
    unset($arComponentParameters["PARAMETERS"]["SECTION_URL"]);
}
else
{
    unset($arComponentParameters["PARAMETERS"]["SEF_BASE_URL"]);
    unset($arComponentParameters["PARAMETERS"]["DETAIL_PAGE_URL"]);
    unset($arComponentParameters["PARAMETERS"]["SECTION_PAGE_URL"]);
}
?>
component.php
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
/** @var CBitrixComponent $this */
/** @var array $arParams */
/** @var array $arResult */
/** @var string $componentPath */
/** @var string $componentName */
/** @var string $componentTemplate */
/** @global CDatabase $DB */
/** @global CUser $USER */
/** @global CMain $APPLICATION */
 
 
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(
                    "TYPE" => $arParams["IBLOCK_TYPE"],
                    'SITE_ID'=>SITE_ID
                );
                
                $ar_res = CIBlock::GetList(Array(), $arFilter, false)->Fetch();
                
                if(isset($ar_res["PICTURE"]))
                    $arResult["PICTURE"] = $ar_res["PICTURE"];
                            
        $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",
                        "DESCRIPTION",
                        "PICTURE",
                        "DETAIL_PICTURE",
            "SECTION_PAGE_URL",
                        "UF_ICO_LIGHT",                    
                        "UF_ICO_DARK",
                        "UF_ICO_COLOR",
                        "UF_ICO_FONT",
                        "UF_HOVER",
                    
        ));
 
        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())
        {                      
                    $arDesc = explode("#STEXT#", $arSection["DESCRIPTION"]);
                    $sectionDesc = $arDesc[0];
            $arResult["SECTIONS"][] = array(
                "ID" => $arSection["ID"],
                "DEPTH_LEVEL" => $arSection["DEPTH_LEVEL"],
                                "DESCRIPTION" => $sectionDesc,
                                "PICTURE" => $arSection["PICTURE"],
                                "DETAIL_PICTURE" => $arSection["DETAIL_PICTURE"],
                                "UF_ICO_LIGHT" => $arSection["UF_ICO_LIGHT"],
                                "UF_ICO_DARK" => $arSection["UF_ICO_DARK"],
                                "UF_ICO_COLOR" => $arSection["UF_ICO_COLOR"],
                                "UF_ICO_FONT" => $arSection["UF_ICO_FONT"],
                                "UF_HOVER" => $arSection["UF_HOVER"],
                "~NAME" => $arSection["~NAME"],
                "~SECTION_PAGE_URL" => $arSection["~SECTION_PAGE_URL"],
            );
            $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,
                        "DESCRIPTION" => $arSection["DESCRIPTION"],
                        "PICTURE" => $arSection["PICTURE"],
                        "DETAIL_PICTURE" => $arSection["DETAIL_PICTURE"],
                        "ico_light" => $arSection["UF_ICO_LIGHT"],
                        "ico_dark" => $arSection["UF_ICO_DARK"],
                        "ico_color" => $arSection["UF_ICO_COLOR"],
                        "ico_font" => $arSection["UF_ICO_FONT"],
                        "hover" => $arSection["UF_HOVER"],
            "DEPTH_LEVEL" => $arSection["DEPTH_LEVEL"],
        ),
    );
}
    
    return $aMenuLinksNew;
?>
menu.hover
.parameters.php
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
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
 
 
if(!CModule::IncludeModule("iblock"))
    return;
 
/*
if(!CModule::IncludeModule("alexkova.market"))
    return;
*/
 
$arPictureCategories = array("N" => GetMessage("PICTURE_CATEGARIES_N"), "LEFT" => GetMessage("PICTURE_CATEGARIES_LEFT"), "RIGHT" => GetMessage("PICTURE_CATEGARIES_RIGHT"));
$arPictureSection = array("N" => GetMessage("PICTURE_SECTION_N"), "ICO" => GetMessage("PICTURE_SECTION_ICO"), "PICTURE" => GetMessage("PICTURE_SECTION_PICTURE"));
$arViewSubsection = array("LINE" => GetMessage("VIEW_SUBSECTION_LINE"), "COLUMN" => GetMessage("VIEW_SUBSECTION_COLUMN"));
 
$arResolution = array();
for($i=1; $i<=12; $i++) {
    $arResolution[$i] = $i;
}
 
 
$arComponentParameters = array(
    "GROUPS" => array(
                "MENU_HOVER_BLOCKS" => array('NAME'=>GetMessage("MENU_HOVER_BLOCKS"), "SORT" => "100"),
    ),
    "PARAMETERS" => array(
            
                "PICTURE_CATEGARIES" => array(
                    "PARENT" => "MENU_HOVER_BLOCKS",
                    "NAME" => GetMessage("PICTURE_CATEGARIES"),
                    "TYPE" => "LIST",
                    "VALUES" => $arPictureCategories,
                    "DEFAULT" => "N",
                ),
            
                "PICTURE_SECTION" => array(
                    "PARENT" => "MENU_HOVER_BLOCKS",
                    "NAME" => GetMessage("PICTURE_SECTION"),
                    "TYPE" => "LIST",
                    "VALUES" => $arPictureSection,
                    "DEFAULT" => "N",
                ),
            
                "VIEW_SUBSECTION" => array(
                    "PARENT" => "MENU_HOVER_BLOCKS",
                    "NAME" => GetMessage("VIEW_SUBSECTION"),
                    "TYPE" => "LIST",
                    "VALUES" => $arViewSubsection,
                    "DEFAULT" => "LINE",
                ),
            
                "MENU_HOVER_RESOLUTION_LG" => array(
                    "PARENT" => "MENU_HOVER_BLOCKS",
                    "NAME" => GetMessage("MENU_HOVER_RESOLUTION_LG"),
                    "TYPE" => "LIST",
                    "VALUES" => $arResolution,
                    "DEFAULT" => "1",
                ),
            
                "MENU_HOVER_RESOLUTION_MD" => array(
                    "PARENT" => "MENU_HOVER_BLOCKS",
                    "NAME" => GetMessage("MENU_HOVER_RESOLUTION_MD"),
                    "TYPE" => "LIST",
                    "VALUES" => $arResolution,
                    "DEFAULT" => "1",
                ),
            
                "MENU_HOVER_RESOLUTION_SM" => array(
                    "PARENT" => "MENU_HOVER_BLOCKS",
                    "NAME" => GetMessage("MENU_HOVER_RESOLUTION_SM"),
                    "TYPE" => "LIST",
                    "VALUES" => $arResolution,
                    "DEFAULT" => "1",
                ),
            
                "MENU_HOVER_RESOLUTION_XS" => array(
                    "PARENT" => "MENU_HOVER_BLOCKS",
                    "NAME" => GetMessage("MENU_HOVER_RESOLUTION_XS"),
                    "TYPE" => "LIST",
                    "VALUES" => $arResolution,
                    "DEFAULT" => "1",
                ),
             
        "CACHE_TIME"  =>  Array("DEFAULT"=>3600)
    ),
 
);
 
 
?>
component.php
PHP
1
2
3
4
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$this->IncludeComponentTemplate();
return $this->__template->__folder;
?>
menu
.description.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
 
$arComponentDescription = array(
    "NAME" => GetMessage("MAIN_MENU_ITEMS_NAME"),
    "DESCRIPTION" => GetMessage("MAIN_MENU_ITEMS_DESC"),
    "ICON" => "/images/menu.gif",
    "PATH" => array(
        "ID" => "BXReady: Business",
        "NAME" => GetMessage("MAIN_NAVIGATION_SERVICE")
    ),
);
 
?>
.parameters.php
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
134
135
136
137
138
139
140
141
142
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
 
$site = ($_REQUEST["site"] <> ''? $_REQUEST["site"] : ($_REQUEST["src_site"] <> ''? $_REQUEST["src_site"] : false));
$arMenu = GetMenuTypes($site);
 
$arComponentParameters = array(
    "GROUPS" => array(
        "CACHE_SETTINGS" => array(
            "NAME" => GetMessage("COMP_GROUP_CACHE_SETTINGS"),
            "SORT" => 600
        ),
                "MENU_BLOCKS" => array('NAME'=>GetMessage("MENU_BLOCKS"), "SORT" => "120"),
                "MENU_HOVER_BLOCKS" => array('NAME'=>GetMessage("MENU_HOVER_BLOCKS"), "SORT" => "220"),
                "MENU_SEARCH_FORM" => array('NAME'=>GetMessage("MENU_SEARCH_FORM"), "SORT" => "230"),
    ),
    "PARAMETERS" => array(
 
        "ROOT_MENU_TYPE" => Array(
            "NAME"=>GetMessage("MAIN_MENU_TYPE_NAME"),
            "TYPE" => "LIST",
            "DEFAULT"=>'left',
            "VALUES" => $arMenu,
            "ADDITIONAL_VALUES" => "Y",
            "DEFAULT"=>'left',
            "PARENT" => "BASE",
            "COLS" => 45
        ),
 
        "MAX_LEVEL" => Array(
            "NAME"=>GetMessage("MAX_LEVEL_NAME"),
            "TYPE" => "LIST",
            "DEFAULT"=>'1',
            "PARENT" => "ADDITIONAL_SETTINGS",
            "VALUES" => Array(
                1 => "1",
                2 => "2",
                3 => "3",
                4 => "4",
            ),
            "ADDITIONAL_VALUES" => "N",
        ),
 
        "CHILD_MENU_TYPE" => Array(
            "NAME"=>GetMessage("CHILD_MENU_TYPE_NAME"),
            "TYPE" => "LIST",
            "DEFAULT"=>'left',
            "VALUES" => $arMenu,
            "ADDITIONAL_VALUES" => "Y",
            "PARENT" => "ADDITIONAL_SETTINGS",
            "DEFAULT"=>'left',
            "COLS" => 45
        ),
 
        "USE_EXT" => Array(
            "NAME"=>GetMessage("USE_EXT_NAME"),
            "TYPE" => "CHECKBOX",
            "DEFAULT"=>'N',
            "PARENT" => "ADDITIONAL_SETTINGS",
        ),
        
        "DELAY" => Array(
            "NAME"=>GetMessage("DELAY_NAME"),
            "TYPE" => "CHECKBOX",
            "DEFAULT"=>'N',
            "PARENT" => "ADDITIONAL_SETTINGS",
        ),
 
        "ALLOW_MULTI_SELECT" => Array(
            "NAME"=>GetMessage("comp_menu_allow_multi_select"),
            "TYPE" => "CHECKBOX",
            "DEFAULT"=>'N',
            "PARENT" => "ADDITIONAL_SETTINGS",
        ),
 
        "MENU_CACHE_TYPE" => array(
            "PARENT" => "CACHE_SETTINGS",
            "NAME" => GetMessage("COMP_PROP_CACHE_TYPE"),
            "TYPE" => "LIST",
            "VALUES" => array(
                "A" => GetMessage("COMP_PROP_CACHE_TYPE_AUTO"),
                "Y" => GetMessage("COMP_PROP_CACHE_TYPE_YES"),
                "N" => GetMessage("COMP_PROP_CACHE_TYPE_NO"),
            ),
            "DEFAULT" => "N",
            "ADDITIONAL_VALUES" => "N",
        ),
 
        "MENU_CACHE_TIME" => array(
            "PARENT" => "CACHE_SETTINGS",
            "NAME" => GetMessage("COMP_PROP_CACHE_TIME"),
            "TYPE" => "STRING",
            "MULTIPLE" => "N",
            "DEFAULT" => 3600,
            "COLS" => 5,
        ),
 
        "MENU_CACHE_USE_GROUPS" => array(
            "PARENT" => "CACHE_SETTINGS",
            "NAME" => GetMessage("CP_BM_MENU_CACHE_USE_GROUPS"),
            "TYPE" => "CHECKBOX",
            "DEFAULT" => "Y",
        ),
 
        "MENU_CACHE_GET_VARS" => array(
            "PARENT" => "CACHE_SETTINGS",
            "NAME" => GetMessage("CP_BM_MENU_CACHE_GET_VARS"),
            "TYPE" => "STRING",
            "MULTIPLE" => "Y",
            "DEFAULT" => "",
            "COLS" => 15,
        ),
 
    )
);
 
    if(!CModule::IncludeModule("search"))
    return;
    
    if($arCurrentValues["SEARCH_FORM"] === "Y")
    { 
        $NUM_CATEGORIES = intval($arCurrentValues["NUM_CATEGORIES"]);
        if($NUM_CATEGORIES <= 0)
                $NUM_CATEGORIES = 1;
 
        for($i = 0; $i < $NUM_CATEGORIES; $i++)
        {
            $arComponentParameters["GROUPS"]["CATEGORY_".$i] = array(
        "NAME" => GetMessage("CP_BST_NUM_CATEGORY", array("#NUM#" => $i+1)),
                "SORT" => "25".$i
            );
            
            $arComponentParameters["PARAMETERS"]["CATEGORY_".$i."_TITLE"] = array(
                    "PARENT" => "CATEGORY_".$i,
                    "NAME" => GetMessage("CP_BST_CATEGORY_TITLE"),
                    "TYPE" => "STRING",
            );
            
            CSearchParameters::AddFilterParams($arComponentParameters, $arCurrentValues, "CATEGORY_".$i, "CATEGORY_".$i);
        }
    }
?>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.12.2018, 15:02
Ответы с готовыми решениями:

Подменю не получается
Делаю лабораторку по Web - разработки, то есть надо сделать меню, готового шаблона и написать на скрип JQuery, что бы при наведении...

Вместо горизонтального меню с выпадающим подменю почему-то получается вертикальное
Вместо горизонтального меню с выпадающим подменю почему-то получается вертикальное Помогите понять где ошибка? body{ ...

Создать подменю
здравствуйте, подскажите как в ворде у меню 'контекстное меню появляется в тексте With...

6
12 / 12 / 0
Регистрация: 09.08.2016
Сообщений: 11
20.12.2018, 23:01
А там разве для каждого раздела, подраздела не создается папка->файл? Читали принцип создания разделов 1С-Битрикс??
0
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,444
Записей в блоге: 2
21.12.2018, 12:58
Цитата Сообщение от ЮрийЮрьич Посмотреть сообщение
А там разве для каждого раздела, подраздела не создается папка->файл
нет. (можно конечно - но это кустарщина, если нет объективных причин, но я даже придумать такие не могу)

Добавлено через 19 минут
Во первых вам надо убедиться, что ваш компонент, собирающий пункты, работает как надо. alexkova.business:menu.sections - это не стандартное решение. Для этого после его подключения попробуйте его вывести (если битрикс 16 и выше):
например 23 строкой .left.menu_ext.php
PHP
1
2
3
4
Bitrix\Main\Diag\Debug::writeToFile([
     __FILE__,
    $aMenuLinksExt
]);
После этого у вас должен появиться файл в корне сайта __bx_log.log в нем будет выведен этот массив пунктов меню. Где каждый пункт будет описан примерно следующим массивом
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[0] => заголовок пункта
[1] => ссылка пункта
[2] => массив дополнительных подсвечиваемых ссылок
    [
        [0] => ссылка 1
        [1] => ссылка 2
        ....
    ]
[3] => дополнительные параметры передаваемые в шаблон
    [
        [ключ 1] => значение 1
        [ключ 2] => значение 2
        ....
    ]
[4] => условие (если необходимо) отображения пункта (PHP выражение)

Далее. запрещаете себе трогать файлы с именем component.php. Вся кастомизация под проект происходит в шаблонах копонента. При этом шаблон лучше копировать, а не менять текущий. Тем более нельзя ни чего менять в каталоге /bitrix/components/.

Как подкллючается само меню вы здесь не привели. А там вторым параметром указывается имя шаблона компонента. если пусто, то шаблон ".default" соответвенно искать проблему надо в следующих каталога:

/local/templates/<имя_шаблона_компонента>/components/bitrix/menu/<имя_шаблона_компонента>

local - файл где рекомендуется располагать относящееся к проекту (ну кроме основных адресов к которым обращаются на прямую из браузера), если сайт внедряли давно, либо используется шаблон с маркетплейса, то в место local может быть bitrix

имя_шаблона_компонента - к сайту применяется шаблон из списка доступных - смотреть в настройках. ПРи этом шаблонов может быть несколько в зависимости от настройки условий. При этом общие шаблоны компонентов для всех шаблонов сайтов выносят в специальный каталог default

bitrix - идентификатор разработчика. может быть и дугой. Например, для использующегося у вас для формирования списка пунктов меню компонента, разработчик alexkova.business

Далее три стандартных файла:
template.php - собственно сам шаблон, здесь должен бытьь только вывод и ни какой логики
result_modifier.php - может и не быть. Здесь логика, при необходимости.

Эти два файла кешируются. И если включено кеширование - онит выполняются только когда надо обновить кеш.

component_epilog.php - выполняется всегда. Здесь функционал и вывод который должен выполняться на каждом хите без кеширования

Добавлено через 2 минуты
А вообще, как я понимаю, это у вас решение от BXReady. Если оно с активной поддержкой, а вы себя позиционируете как "начинающему юзеру битрикс" может продуктивнее к ним обратиться, чтоб не наломать дров.

Добавлено через 2 минуты
Может чем то поможет статья
1
12 / 12 / 0
Регистрация: 09.08.2016
Сообщений: 11
23.12.2018, 02:55
https://rovids.com/video/%D1%8... NPvt4.html

Это видео всё решило
0
0 / 0 / 0
Регистрация: 18.12.2018
Сообщений: 11
26.12.2018, 10:31  [ТС]
Спасибо огромное за развернутый ответ. Разобрался теперь более менее с структурой и тем, что за что отвечает. И да Вы совершенно правы это bxready)

Добавлено через 1 минуту
Смотрел я и это видео) Нет проблема не в этом и в плане настроек в редакторе все в порядке, просто в моем случае способ добавления в так называемое hover menu другое. Как только полноценно решу вопрос, выложу ответ на топик
0
0 / 0 / 0
Регистрация: 18.12.2018
Сообщений: 11
09.01.2019, 08:40  [ТС]
Решение:
1. Необходимо удалить файл меню типа ***.menu_ext.php в папке где мы делаем подпункты и скопировать туда его снова. И так каждый раз после добавления новых пунктов.
2. После чего создать новый файл меню (в папке пункта меню, в который добавляете выпадающее) того типа который указан как подменю (в моем случае это было меню типа left)
3. Очистить кэш браузера, если не отключено автокэширование.
4. Перейти по каждому из пунктов основного меню на сайте (при переходе, как я понял, на каждую из страниц подгружается ваше новое hover меню)
5. Готово
0
3012 / 1446 / 262
Регистрация: 16.03.2008
Сообщений: 6,444
Записей в блоге: 2
09.01.2019, 09:04
Это не решение. Это похоже на костыль.
1. Это могло бы быть действенным если вы вносите изменения в этот файл. Ну или идентификатор кеша привязан ко времени последнего доступа или создания файла - что было бы бредом с точки зрения разработки.
2. Не совсем понятно. У вас корневые разделы имеют физические каталоги?
3. Кеш браузера не имеет отношения к автокешированию. Скорее всего вам необходимо сброс кеша сайта в админке битрикса. Если сделано все правильно, то достаточно сбросить только кеш меню, если все не так просто - сбрасывать весь кеш.
4. Это тоже "шаманство". Для этого достаточно сбросить кеш сайта (возможно весь) см. п.3. - в админке.

По этому варианты тут такие.
Если у вас первый уровень набирается из инфоблока. То не должно быть физических каталогов с таким же именем. (Можно но тогда вам действительно понадобятся танцы с бубном). В этом случае меню обновляется автоматом если у вас не отключен теггированый кеш. Если оный отключен, или вы разделы добавляете не через апи - поможет сброс кеша сайта в админке.

Если у вас первый уровень набирается из физических разделов, то подменю зависят от файлов меню в соответсвующих каталогах файловой системы. При их редактировании (если через фтп) - сбрасывайте кеш меню сайта в админке.

Если у вас не укладывается не в одно из выше перечисленного - у вас присутствуют грубые ошибки в разработке. Вероятно связанные с не пониманием как работает кеширование. Это можно "вычислить" отключив полностью кеширование - если обновления будут сразу отображаться - занчит оно. (Но не стоит в боевом режиме держать сайт без кеширования).
Если и это не помогает - ваш разработчик установил какой то не костыль, а КОСТЫЛИЩЕ. И лучше его вычислить и выпилить - иначе так и будете мучаться на ровном месте.
В этих случаях (косяки разработки вашего конкретного сайта) действительно может быть ваш алгоритм единственным решением (хотя первый пункт это уже на грани вредительства вашего разработчика или он под кайфом программировал). Для нормального сайта ваши пункты точно не решение.

И в любом случае ваша последовательность не лечение, а путь обхода косяков.

Мой вам совет: привлеките специалиста - пусть даст оценку проблеме. А то так и будет сайт обрастать костылями и превращаться дальше в монстра, который вместо достижения поставленной вами цели, будет сжирать у вас время...
Уж в этом плане в Битрикс все четко и без проблем.

Почитайте документацию - разберитесь вообще как работает меню в бирикс

тыц1
тыц2
тыц3
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.01.2019, 09:04
Помогаю со студенческими работами здесь

Как создать Button с подменю?
Допустим, поставил на WindowsForm одну кнопку, убрал ей границы, как сделать, чтобы при наведении на правый край, вышло меню или подменю? И...

Создание команды в подменю СОЗДАТЬ
Подскажите как добавить этот пункт в подменю СОЗДАТЬ ?

Создать подменю с возвратом к основному меню
нужно сделать меню из 3-ех процедур а четвертым должны быть вызов подменю!!! в подменю тоже 3 процедуры а четвертым пунктом возврат к...

как создать меню с подменю на CakePHP?
Господа профессионалы и разработчики работающие на Кейке и т.д, буду очень признателен Вам, если подскажите или хотя бы направите, как...

Создать подменю для редактирования пользователей
Есть СУБД MSSQL и связанная с ней программа на C# на WINDOWS FORMS так вот нужно чтобы при нажатии на меню - администрирование вывелись...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru