Добрый день. Возникла такая проблема:
Страницча состоит из меню построенного на основе инфоблоков иbitrix:catalog.section .
Меню строится таким образом:
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
if(!CModule::IncludeModule("iblock"))
{
$this->AbortResultCache();
ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED"));
return;
}
$aMenuLinksNew=array();
$rsItems = CIBlockElement::GetList(array("SORT"=>"ASC"), array("IBLOCK_ID"=>"1", "ACTIVE"=>"Y"),false,false,array("NAME","ID", "CODE", "SECTION_ID"));
while($arItem = $rsItems->GetNext())
{
$aMenuLinks[] = array(
$arItem["NAME"],
"".$arItem["CODE"].".html",
Array(),
Array(),
""
);
}
?>
в результате получается несколько пунктов со ссылками типа - название-статьи.html
компонент разделы каталога выводит следуюим образом:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?if(count($arResult["ITEMS"]) > 0):?>
<?foreach($arResult["ITEMS"] as $arElement):?>
<?=$arElement["PREVIEW_TEXT"]?>
<?endforeach;?>
<?else:?> /* если ничего не нашел, то грузим блок по умолчанию */
<?$APPLICATION->IncludeFile(
SITE_TEMPLATE_PATH."/include/index_".GetMessage('TMPL_LANG')."_inc.php",
Array(),
Array("MODE"=>"php")
);?>
<?endif?>
Собственно суть проблемы: при выборе пукта меню отображается ошибка 404
если выбирать из инфоблоков таким образом:
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
global $APPLICATION;
$aMenuLinksExt=$APPLICATION->IncludeComponent("bitrix:menu.sections", "", array(
"IS_SEF" => "Y",
"SEF_BASE_URL" => "/en/",
"SECTION_PAGE_URL" => "#IBLOCK_CODE#/?SECTION_ID=#SECTION_ID#",
"DETAIL_PAGE_URL" => "#IBLOCK_CODE#/index.php?SECTION_ID=#SECTION_ID#",
"IBLOCK_TYPE" => "content_en",
"IBLOCK_ID" => "1",
"DEPTH_LEVEL" => "1",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "36000000"
),
false
);
$aMenuLinks = array_merge($aMenuLinks, $aMenuLinksExt); ?>
все работает
Я хочу чтобы вместо строки /en/service/?SECTION_ID=14
была строка /en/service/kak-eto-sdelat.html
помогите пожалуйста
Страницча состоит из меню построенного на основе инфоблоков и
Меню строится таким образом:
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
if(!CModule::IncludeModule("iblock"))
{
$this->AbortResultCache();
ShowError(GetMessage("IBLOCK_MODULE_NOT_INSTALLED"));
return;
}
$aMenuLinksNew=array();
$rsItems = CIBlockElement::GetList(array("SORT"=>"ASC"), array("IBLOCK_ID"=>"1", "ACTIVE"=>"Y"),false,false,array("NAME","ID", "CODE", "SECTION_ID"));
while($arItem = $rsItems->GetNext())
{
$aMenuLinks[] = array(
$arItem["NAME"],
"".$arItem["CODE"].".html",
Array(),
Array(),
""
);
}
?>
в результате получается несколько пунктов со ссылками типа - название-статьи.html
компонент разделы каталога выводит следуюим образом:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?if(count($arResult["ITEMS"]) > 0):?>
<?foreach($arResult["ITEMS"] as $arElement):?>
<?=$arElement["PREVIEW_TEXT"]?>
<?endforeach;?>
<?else:?> /* если ничего не нашел, то грузим блок по умолчанию */
<?$APPLICATION->IncludeFile(
SITE_TEMPLATE_PATH."/include/index_".GetMessage('TMPL_LANG')."_inc.php",
Array(),
Array("MODE"=>"php")
);?>
<?endif?>
Собственно суть проблемы: при выборе пукта меню отображается ошибка 404
если выбирать из инфоблоков таким образом:
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
global $APPLICATION;
$aMenuLinksExt=$APPLICATION->IncludeComponent("bitrix:menu.sections", "", array(
"IS_SEF" => "Y",
"SEF_BASE_URL" => "/en/",
"SECTION_PAGE_URL" => "#IBLOCK_CODE#/?SECTION_ID=#SECTION_ID#",
"DETAIL_PAGE_URL" => "#IBLOCK_CODE#/index.php?SECTION_ID=#SECTION_ID#",
"IBLOCK_TYPE" => "content_en",
"IBLOCK_ID" => "1",
"DEPTH_LEVEL" => "1",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "36000000"
),
false
);
$aMenuLinks = array_merge($aMenuLinks, $aMenuLinksExt); ?>
все работает
Я хочу чтобы вместо строки /en/service/?SECTION_ID=14
была строка /en/service/kak-eto-sdelat.html
помогите пожалуйста