Цитата |
---|
Юрий Волошин написал: А чем вас не устраивает штатный функционал компонента: |
26.06.2019 09:56:23
|
|||
|
09.03.2018 20:45:30
|
|||||
|
09.03.2018 20:44:57
|
|||
|
07.03.2018 23:02:42
[QUOTE]Артём Дузь написал:
Так и передвавайте $arFilter["ID"] = Array(1,2,3);[/QUOTE] А как сортировать в соответствии с этим массивом? |
|
|
19.02.2018 13:29:48
[QUOTE]Алексей Сак написал:
поставил - ничего не изменилось. Ставил даже "Полный доступ" - тоже самое.[/QUOTE] Ноже столкнулся такой проблемой, нашли решение? |
|
|
20.06.2017 07:33:55
[QUOTE]Дмитрий Зеленецкий написал:
вот попробуйте этот код, когда-то давно использовал его, для подобной задачи, но наверняка сказать сейчас не могу - проверить негде. модифицированный компонент menu.sections из одного из проектов: component.php [CODE] <? 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" , )); 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" ) { $componentPage = CComponentEngine::ParseComponentPath( $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" ]; $aMenuLinksNew [ $menuIndex ++] = array ( htmlspecialchars( $arSection [ "~NAME" ]), $arSection [ "~SECTION_PAGE_URL" ], $arResult [ "ELEMENT_LINKS" ][ $arSection [ "ID" ]], array ( "FROM_IBLOCK" => true , "IS_PARENT" => false , "DEPTH_LEVEL" => $arSection [ "DEPTH_LEVEL" ], ), ); $sectionFilter = array ( "IBLOCK_ID" => $arParams [ "IBLOCK_ID" ], "SECTION_ID" => $arSection [ "ID" ], "GLOBAL_ACTIVE" => "Y" , "IBLOCK_ACTIVE" => "Y" , "INCLUDE_SUBSECTIONS" => "N" ); $arElements = CIblockElement::GetList( array (), $sectionFilter ); $depth = $arSection [ "DEPTH_LEVEL" ] + 1 ; $parentIndex = $menuIndex ; while ( $element = $arElements ->GetNext()) { $aMenuLinksNew [ $parentIndex - 1 ][ 3 ][ "IS_PARENT" ] = true ; $aMenuLinksNew [ $menuIndex ++] = array ( $element [ "NAME" ], $element [ "~DETAIL_PAGE_URL" ], array (), array ( "FROM_IBLOCK" => true , "IS_PARENT" => false , "DEPTH_LEVEL" => $depth , ), ); } } return $aMenuLinksNew ; ?> [/CODE][/QUOTE] Спасибо! Работает, раньше ума хватало только "catalog.section.list" мастырить в таких случаях. [QUOTE]nick-ev написал: [QUOTE] Дмитрий Зеленецкий написал: StartResultCache()) { if(!CModule::IncludeModule("iblock")) { $this->AbortResultCache(); } else { $arFilter = array( "IBLOCK_ID"=>$arParams["IBLOCK_ID"], "GLOBAL_ACTIVE"=>"Y", "IBLOCK_ACTIVE"=>"Y", " $arParams["DEPTH_LEVEL"], ); $arOrder = array( "left_margin"=>"asc", ); $rsSections = CIBlockSection::GetList($arOrder, $arFilter, false, array( "ID", "DEPTH_LEVEL", "NAME", "SECTION_PAGE_URL", )); 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") { $componentPage = CComponentEngine::ParseComponentPath( $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"]) $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"]; $aMenuLinksNew[$menuIndex++] = array( htmlspecialchars($arSection["~NAME"]), $arSection["~SECTION_PAGE_URL"], $arResult["ELEMENT_LINKS"][$arSection["ID"]], array( "FROM_IBLOCK" => true, "IS_PARENT" => false, "DEPTH_LEVEL" => $arSection["DEPTH_LEVEL"], ), ); $sectionFilter = array( "IBLOCK_ID" => $arParams["IBLOCK_ID"], "SECTION_ID" => $arSection["ID"], "GLOBAL_ACTIVE"=> "Y", "IBLOCK_ACTIVE"=> "Y", "INCLUDE_SUBSECTIONS" => "N" ); $arElements = CIblockElement::GetList(array(), $sectionFilter); $depth = $arSection["DEPTH_LEVEL"] + 1; $parentIndex = $menuIndex; while($element = $arElements->GetNext()) { $aMenuLinksNew[$parentIndex-1][3]["IS_PARENT"] = true; $aMenuLinksNew[$menuIndex++] = array( $element["NAME"], $element["~DETAIL_PAGE_URL"], array(), array( "FROM_IBLOCK" => true, "IS_PARENT" => false, "DEPTH_LEVEL" => $depth, ), ); } } return $aMenuLinksNew; ?> [/QUOTE] Как и куда прикрутить этот код!??? [/QUOTE] [URL=https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&CHAPTER_ID=04779]https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&CHAPTER_ID=04779[/URL] |
|
|
14.04.2015 12:08:11
[QUOTE]Евгений Жуков написал:
[QUOTE] Владимир Ворсин написал: $conponent[/QUOTE] Если Вы скопировали свой код один-в-один - ошибка в названии переменной.[/QUOTE] Действительно! Прошу прощения) |
|
|