Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С Битрикс
Войти
Регистрация
Восстановить пароль
 
Sesqiw
0 / 0 / 0
Регистрация: 18.12.2018
Сообщений: 3
1

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

18.12.2018, 15:02. Просмотров 265. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.12.2018, 15:02
Ответы с готовыми решениями:

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

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

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

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

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

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

Добавлено через 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
ЮрийЮрьич
0 / 0 / 0
Регистрация: 09.08.2016
Сообщений: 4
23.12.2018, 02:55 4
https://rovids.com/video/%D1%81%D0%B...SUbGNPvt4.html

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

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

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

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

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

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

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

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

тыц1
тыц2
тыц3
0
09.01.2019, 09:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2019, 09:04

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

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

Как создать вертикальное меню с развернутым подменю (jsp, jstl)
&lt;table class=&quot;category-table&quot;&gt; &lt;tr&gt; &lt;c:forEach items=&quot;${subCategoryList}&quot; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru