Advertisement
Guest User

Untitled

a guest
Dec 17th, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.92 KB | None | 0 0
  1. <?
  2. if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
  3.  
  4. if(!isset($arParams["CACHE_TIME"]))
  5.     $arParams["CACHE_TIME"] = 36000000;
  6.  
  7. $arParams["ID"] = intval($arParams["ID"]);
  8. $arParams["IBLOCK_ID"] = intval($arParams["IBLOCK_ID"]);
  9.  
  10. $arParams["DEPTH_LEVEL"] = intval($arParams["DEPTH_LEVEL"]);
  11. if($arParams["DEPTH_LEVEL"]<=0)
  12.     $arParams["DEPTH_LEVEL"]=1;
  13.  
  14. $arResult["SECTIONS"] = array();
  15. $arResult["ELEMENT_LINKS"] = array();
  16.  
  17. if($this->StartResultCache())
  18. {
  19.     if(!CModule::IncludeModule("iblock"))
  20.     {
  21.         $this->AbortResultCache();
  22.     }
  23.     else
  24.     {
  25.         $arFilter = array(
  26.             "IBLOCK_ID"=>$arParams["IBLOCK_ID"],
  27.             "GLOBAL_ACTIVE"=>"Y",
  28.             "IBLOCK_ACTIVE"=>"Y",
  29.             "<="."DEPTH_LEVEL" => $arParams["DEPTH_LEVEL"],
  30.         );
  31.         $arOrder = array(
  32.             "left_margin"=>"asc",
  33.         );
  34.  
  35.         $rsSections = CIBlockSection::GetList($arOrder, $arFilter, false, array(
  36.             "ID",
  37.             "DEPTH_LEVEL",
  38.             "NAME",
  39.             "SECTION_PAGE_URL",
  40.             "UF_NAME_EN",
  41.         ));
  42.         if($arParams["IS_SEF"] !== "Y")
  43.             $rsSections->SetUrlTemplates("", $arParams["SECTION_URL"]);
  44.         else
  45.             $rsSections->SetUrlTemplates("", $arParams["SEF_BASE_URL"].$arParams["SECTION_PAGE_URL"]);
  46.         while($arSection = $rsSections->GetNext())
  47.         {
  48.             if (LANGUAGE_ID === 'en' && $arSection["~UF_NAME_EN"])
  49.                 $NAME = $arSection["~UF_NAME_EN"]; else
  50.                 $NAME = $arSection["~NAME"];
  51.             $arResult["SECTIONS"][] = array(
  52.                 "ID" => $arSection["ID"],
  53.                 "DEPTH_LEVEL" => $arSection["DEPTH_LEVEL"],
  54.                 "~NAME" => $NAME,
  55.                 "~SECTION_PAGE_URL" => $arSection["~SECTION_PAGE_URL"],
  56.             );
  57.             $arResult["ELEMENT_LINKS"][$arSection["ID"]] = array();
  58.         }
  59.         $this->EndResultCache();
  60.     }
  61. }
  62.  
  63. //In "SEF" mode we'll try to parse URL and get ELEMENT_ID from it
  64. if($arParams["IS_SEF"] === "Y")
  65. {
  66.     $componentPage = CComponentEngine::ParseComponentPath(
  67.         $arParams["SEF_BASE_URL"],
  68.         array(
  69.             "section" => $arParams["SECTION_PAGE_URL"],
  70.             "detail" => $arParams["DETAIL_PAGE_URL"],
  71.         ),
  72.         $arVariables
  73.     );
  74.     if($componentPage === "detail")
  75.     {
  76.         CComponentEngine::InitComponentVariables(
  77.             $componentPage,
  78.             array("SECTION_ID", "ELEMENT_ID"),
  79.             array(
  80.                 "section" => array("SECTION_ID" => "SECTION_ID"),
  81.                 "detail" => array("SECTION_ID" => "SECTION_ID", "ELEMENT_ID" => "ELEMENT_ID"),
  82.             ),
  83.             $arVariables
  84.         );
  85.         $arParams["ID"] = intval($arVariables["ELEMENT_ID"]);
  86.     }
  87. }
  88.  
  89. //if(($arParams["ID"] > 0) && (intval($arVariables["SECTION_ID"]) <= 0) && CModule::IncludeModule("iblock"))
  90. if (CModule::IncludeModule("iblock"))
  91. {
  92.     $arSelect = array("ID", "IBLOCK_ID", "NAME", "DETAIL_PAGE_URL", "IBLOCK_SECTION_ID");
  93.     if (LANGUAGE_ID === 'en')
  94.         $arSelect[] = "PROPERTY_NAME_EN";
  95.     $arFilter = array(
  96. //      "ID" => $arParams["ID"],
  97.         "ACTIVE" => "Y",
  98.         "IBLOCK_ID" => $arParams["IBLOCK_ID"],
  99.     );
  100.     $rsElements = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);
  101.     if(($arParams["IS_SEF"] === "Y") && (strlen($arParams["DETAIL_PAGE_URL"]) > 0))
  102.         $rsElements->SetUrlTemplates($arParams["SEF_BASE_URL"].$arParams["DETAIL_PAGE_URL"]);
  103.     while($arElement = $rsElements->GetNext())
  104.     {
  105.         $arResult["ELEMENT_LINKS"][$arElement["IBLOCK_SECTION_ID"]][] = $arElement;
  106.     }
  107. }
  108.  
  109. $aMenuLinksNew = array();
  110. $menuIndex = 0;
  111. $previousDepthLevel = 1;
  112. foreach($arResult["SECTIONS"] as $arSection)
  113. {
  114.     if ($menuIndex > 0)
  115.         $aMenuLinksNew[$menuIndex - 1][3]["IS_PARENT"] = $arSection["DEPTH_LEVEL"] > $previousDepthLevel;
  116.     $previousDepthLevel = $arSection["DEPTH_LEVEL"];
  117.  
  118.     $aMenuLinksNew[$menuIndex++] = array(
  119.         htmlspecialcharsbx($arSection["~NAME"]),
  120.         $arSection["~SECTION_PAGE_URL"],
  121.         array(),
  122.         array(
  123.             "FROM_IBLOCK" => true,
  124.             "IS_PARENT" => false,
  125.             "DEPTH_LEVEL" => $arSection["DEPTH_LEVEL"],
  126.         ),
  127.     );
  128.        
  129.     if ($arSection["DEPTH_LEVEL"]<$arParams["DEPTH_LEVEL"])
  130. {
  131.         if (count($arResult["ELEMENT_LINKS"][$arSection["ID"]])>0)
  132.         {
  133.             $aMenuLinksNew[$menuIndex - 1][3]["IS_PARENT"] = true;
  134.             $previousDepthLevel = $arSection["DEPTH_LEVEL"]+1;
  135.         }
  136.        
  137.         foreach ($arResult["ELEMENT_LINKS"][$arSection["ID"]] as $arElement)
  138.         {
  139.     if (LANGUAGE_ID === 'en' && $arElement["~PROPERTY_NAME_EN_VALUE"])
  140.         $NAME = $arElement["~PROPERTY_NAME_EN_VALUE"]; else
  141.         $NAME = $arElement["~NAME"];
  142.     $aMenuLinksNew[$menuIndex++] = array(
  143.         htmlspecialcharsbx($NAME),
  144.         $arElement["~DETAIL_PAGE_URL"],
  145.         array(),
  146.         array(
  147.             "FROM_IBLOCK" => true,
  148.             "IS_PARENT" => false,
  149.             "DEPTH_LEVEL" => $arSection["DEPTH_LEVEL"]+1,
  150.         ),
  151.     );
  152.     }
  153.        
  154.        }
  155. }
  156.  
  157. foreach ($arResult["ELEMENT_LINKS"][""] as $arElement)
  158. {
  159.     if (LANGUAGE_ID === 'en' && $arElement["~PROPERTY_NAME_EN_VALUE"])
  160.         $NAME = $arElement["~PROPERTY_NAME_EN_VALUE"]; else
  161.         $NAME = $arElement["~NAME"];
  162.     $aMenuLinksNew[$menuIndex++] = array(
  163.         htmlspecialcharsbx($NAME),
  164.         $arElement["~DETAIL_PAGE_URL"],
  165.         array(),
  166.         array(
  167.             "FROM_IBLOCK" => true,
  168.             "IS_PARENT" => false,
  169.             "DEPTH_LEVEL" => 1,
  170.         ),
  171.     );
  172. }
  173.  
  174. return $aMenuLinksNew;
  175. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement