Итак, до чего я дошел с вашей помощью:
1. header.php в нем указан компонент bitrix:menu
[CODE]
<?$APPLICATION->IncludeComponent(
"bitrix:menu",
"horizontal_multilevel",
array(
"ALLOW_MULTI_SELECT" => "N",
"CHILD_MENU_TYPE" => "left",
"DELAY" => "N",
"MAX_LEVEL" => "2",
"MENU_CACHE_GET_VARS" => array(
0 => "",
1 => "",
),
"MENU_CACHE_TIME" => "3600",
"MENU_CACHE_TYPE" => "N",
"MENU_CACHE_USE_GROUPS" => "Y",
"ROOT_MENU_TYPE" => "top",
"USE_EXT" => "Y",
"COMPONENT_TEMPLATE" => "horizontal_multilevel"
),
false
);?>
[/CODE]
2. Сам шаблон меню в котором смотрю результат вывода всего массива <?print_r($arResult)?>:
[CODE]
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?if (!empty($arResult)):?>
<ul id="horizontal-multilevel-menu">
<?
$previousLevel = 0;
foreach($arResult as $arItem):?>
<?if ($previousLevel && $arItem["DEPTH_LEVEL"] < $previousLevel):?>
<?=str_repeat("</ul></li>", ($previousLevel - $arItem["DEPTH_LEVEL"]));?>
<?endif?>
<?if ($arItem["IS_PARENT"]):?>
<?if ($arItem["DEPTH_LEVEL"] == 1):?>
<li><a href="<?=$arItem["LINK"]?>" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$arItem["TEXT"]?></a>
<ul>
<?else:?>
<li<?if ($arItem["SELECTED"]):?> class="item-selected"<?endif?>><a href="<?=$arItem["LINK"]?>" class="parent"><?=$arItem["TEXT"]?></a>
<ul>
<?endif?>
<?else:?>
<?if ($arItem["PERMISSION"] > "D"):?>
<?if ($arItem["DEPTH_LEVEL"] == 1):?>
<li><a href="<?=$arItem["LINK"]?>" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$arItem["TEXT"]?></a></li>
<?else:?>
<li<?if ($arItem["SELECTED"]):?> class="item-selected"<?endif?>><a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a></li>
<?endif?>
<?else:?>
<?if ($arItem["DEPTH_LEVEL"] == 1):?>
<li><a href="" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>" title="<?=GetMessage("MENU_ITEM_ACCESS_DENIED")?>"><?=$arItem["TEXT"]?></a></li>
<?else:?>
<li><a href="" class="denied" title="<?=GetMessage("MENU_ITEM_ACCESS_DENIED")?>"><?=$arItem["TEXT"]?></a></li>
<?endif?>
<?endif?>
<?endif?>
<?$previousLevel = $arItem["DEPTH_LEVEL"];?>
<?endforeach?>
<?if ($previousLevel > 1)://close last item tags?>
<?=str_repeat("</ul></li>", ($previousLevel-1) );?>
<?endif?>
</ul>
<div class="menu-clear-left"></div>
<?endif?>
<pre>
<?print_r($arResult)?>
</pre>
[/CODE]
3. И уже модифицированный компонент menu.section
[CODE]
<?
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(
"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",
"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"],
);
$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"],
"PICTURE" => CFile::GetPath($arSection["PICTURE"]), // Добавлено
),
);
}
return $aMenuLinksNew;
?>
[/CODE]
Еще есть .left.menu_ext.php но его пока не трогал.
В результате этих действий появилось такая строка [PICTURE] => но она пустая, что где еще нужно вставить чтобы там был URL картинки?
1. header.php в нем указан компонент bitrix:menu
[CODE]
<?$APPLICATION->IncludeComponent(
"bitrix:menu",
"horizontal_multilevel",
array(
"ALLOW_MULTI_SELECT" => "N",
"CHILD_MENU_TYPE" => "left",
"DELAY" => "N",
"MAX_LEVEL" => "2",
"MENU_CACHE_GET_VARS" => array(
0 => "",
1 => "",
),
"MENU_CACHE_TIME" => "3600",
"MENU_CACHE_TYPE" => "N",
"MENU_CACHE_USE_GROUPS" => "Y",
"ROOT_MENU_TYPE" => "top",
"USE_EXT" => "Y",
"COMPONENT_TEMPLATE" => "horizontal_multilevel"
),
false
);?>
[/CODE]
2. Сам шаблон меню в котором смотрю результат вывода всего массива <?print_r($arResult)?>:
[CODE]
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?if (!empty($arResult)):?>
<ul id="horizontal-multilevel-menu">
<?
$previousLevel = 0;
foreach($arResult as $arItem):?>
<?if ($previousLevel && $arItem["DEPTH_LEVEL"] < $previousLevel):?>
<?=str_repeat("</ul></li>", ($previousLevel - $arItem["DEPTH_LEVEL"]));?>
<?endif?>
<?if ($arItem["IS_PARENT"]):?>
<?if ($arItem["DEPTH_LEVEL"] == 1):?>
<li><a href="<?=$arItem["LINK"]?>" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$arItem["TEXT"]?></a>
<ul>
<?else:?>
<li<?if ($arItem["SELECTED"]):?> class="item-selected"<?endif?>><a href="<?=$arItem["LINK"]?>" class="parent"><?=$arItem["TEXT"]?></a>
<ul>
<?endif?>
<?else:?>
<?if ($arItem["PERMISSION"] > "D"):?>
<?if ($arItem["DEPTH_LEVEL"] == 1):?>
<li><a href="<?=$arItem["LINK"]?>" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>"><?=$arItem["TEXT"]?></a></li>
<?else:?>
<li<?if ($arItem["SELECTED"]):?> class="item-selected"<?endif?>><a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a></li>
<?endif?>
<?else:?>
<?if ($arItem["DEPTH_LEVEL"] == 1):?>
<li><a href="" class="<?if ($arItem["SELECTED"]):?>root-item-selected<?else:?>root-item<?endif?>" title="<?=GetMessage("MENU_ITEM_ACCESS_DENIED")?>"><?=$arItem["TEXT"]?></a></li>
<?else:?>
<li><a href="" class="denied" title="<?=GetMessage("MENU_ITEM_ACCESS_DENIED")?>"><?=$arItem["TEXT"]?></a></li>
<?endif?>
<?endif?>
<?endif?>
<?$previousLevel = $arItem["DEPTH_LEVEL"];?>
<?endforeach?>
<?if ($previousLevel > 1)://close last item tags?>
<?=str_repeat("</ul></li>", ($previousLevel-1) );?>
<?endif?>
</ul>
<div class="menu-clear-left"></div>
<?endif?>
<pre>
<?print_r($arResult)?>
</pre>
[/CODE]
3. И уже модифицированный компонент menu.section
[CODE]
<?
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(
"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",
"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"],
);
$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"],
"PICTURE" => CFile::GetPath($arSection["PICTURE"]), // Добавлено
),
);
}
return $aMenuLinksNew;
?>
[/CODE]
Еще есть .left.menu_ext.php но его пока не трогал.
В результате этих действий появилось такая строка [PICTURE] => но она пустая, что где еще нужно вставить чтобы там был URL картинки?