На сайте есть папка inform в ней 2 файла index.php и detail.php В файле index.php вызывается компонент news.list, в файле detail.php вызывается компонент news.detail. В файле index.php если задано DETAIL_URL=/inform/detail.php?ELEMENT_CODE=#ELEMENT_CODE# детальная новость выводится, если ничего не задано или задано DETAIL_URL=/inform/#ELEMENT_CODE#/ детальная новость не выводится вместо нее пустая белая страница ошибок на ней нет. Пробовал использовать вместо news.list компонент news тоже самое получается.
Как изменить DETAIL_URL, чтобы детальная страница отображалась и URL имел вид /inform/frukty/ ????????
Привожу коды компонентов и код файла urlrewrite.php
Код файла index.php в папке inform
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
?><h1>Информация</h1>
<div class="tile">
<?$APPLICATION->IncludeComponent("bitrix:news.list", "inform_l", array(
"IBLOCK_TYPE" => "cont",
"IBLOCK_ID" => "3",
"NEWS_COUNT" => "100",
"SORT_BY1" => "ACTIVE_FROM",
"SORT_ORDER1" => "ASC",
"SORT_BY2" => "ACTIVE_FROM",
"SORT_ORDER2" => "ASC",
"FILTER_NAME" => "",
"FIELD_CODE" => array(
0 => "NAME",
1 => "",
),
"PROPERTY_CODE" => array(
0 => "",
1 => "",
),
"CHECK_DATES" => "Y",
"DETAIL_URL" => "/inform/detail.php?ELEMENT_CODE=#ELEMENT_CODE#",
"AJAX_MODE" => "N",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"AJAX_OPTION_HISTORY" => "N",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "36000000",
"CACHE_FILTER" => "N",
"CACHE_GROUPS" => "N",
"PREVIEW_TRUNCATE_LEN" => "",
"ACTIVE_DATE_FORMAT" => "d.m.y G:i",
"SET_TITLE" => "Y",
"SET_STATUS_404" => "Y",
"INCLUDE_IBLOCK_INTO_CHAIN" => "N",
"ADD_SECTIONS_CHAIN" => "N",
"HIDE_LINK_WHEN_NO_DETAIL" => "N",
"PARENT_SECTION" => "4",
"PARENT_SECTION_CODE" => "",
"DISPLAY_TOP_PAGER" => "N",
"DISPLAY_BOTTOM_PAGER" => "Y",
"PAGER_TITLE" => "Информация",
"PAGER_SHOW_ALWAYS" => "N",
"PAGER_TEMPLATE" => "pagenav",
"PAGER_DESC_NUMBERING" => "N",
"PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
"PAGER_SHOW_ALL" => "N",
"DISPLAY_DATE" => "N",
"DISPLAY_NAME" => "Y",
"DISPLAY_PICTURE" => "N",
"DISPLAY_PREVIEW_TEXT" => "N",
"AJAX_OPTION_ADDITIONAL" => ""
),
false
);?>
</div>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Код файла detail.php в папке inform
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Заголовок");
?><?$APPLICATION->IncludeComponent("bitrix:news.detail", "inform_detail", array(
"IBLOCK_TYPE" => "cont",
"IBLOCK_ID" => "3",
"ELEMENT_ID" => $_REQUEST["ID"],
"ELEMENT_CODE" => $_REQUEST["ELEMENT_CODE"],
"CHECK_DATES" => "Y",
"FIELD_CODE" => array(
0 => "",
1 => "",
),
"PROPERTY_CODE" => array(
0 => "",
1 => "",
),
"IBLOCK_URL" => "",
"AJAX_MODE" => "N",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"AJAX_OPTION_HISTORY" => "N",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "36000000",
"CACHE_GROUPS" => "Y",
"META_KEYWORDS" => "-",
"META_DESCRIPTION" => "-",
"BROWSER_TITLE" => "SEO_T",
"SET_TITLE" => "Y",
"SET_STATUS_404" => "Y",
"INCLUDE_IBLOCK_INTO_CHAIN" => "Y",
"ADD_SECTIONS_CHAIN" => "N",
"ACTIVE_DATE_FORMAT" => "d.m.Y",
"USE_PERMISSIONS" => "N",
"DISPLAY_TOP_PAGER" => "N",
"DISPLAY_BOTTOM_PAGER" => "Y",
"PAGER_TITLE" => "Страница",
"PAGER_TEMPLATE" => "inform_detail",
"PAGER_SHOW_ALL" => "Y",
"DISPLAY_DATE" => "Y",
"DISPLAY_NAME" => "Y",
"DISPLAY_PICTURE" => "Y",
"DISPLAY_PREVIEW_TEXT" => "Y",
"USE_SHARE" => "N",
"AJAX_OPTION_ADDITIONAL" => ""
),
false
);?> <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Код файла urlrewrite.php
<?
$arUrlRewrite = array(
array(
"CONDITION" => "#^/inform/([^/]+)/($|\\?.*)#",
"RULE" => "ELEMENT_CODE=$1",
"ID" => "",
"PATH" => "/inform/detail.php",
),
array(
"CONDITION" => "#^/inform/#",
"RULE" => "bitrix:news.list",
"ID" => "",
"PATH" => "/inform/index.php",
)
);
?>
Код шаблона info_list
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<ul>
<?/*if($arParams["DISPLAY_TOP_PAGER"]):?>
<?=$arResult["NAV_STRING"]?><br />
<?endif;*/?>
<?foreach($arResult["ITEMS"] as $arItem):?>
<?
$this->AddEditAction($arItem['ID'], $arItem['EDIT_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_EDIT"));
$this->AddDeleteAction($arItem['ID'], $arItem['DELETE_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BNL_ELEMENT_DELETE_CONFIRM')));
?>
<li><a href="<?echo $arItem["DETAIL_PAGE_URL"]?>"><?echo $arItem["NAME"]?></a></li>
<?endforeach;?>
<?/*if($arParams["DISPLAY_BOTTOM_PAGER"]):?>
<?=$arResult["NAV_STRING"]?>
<?endif;*/?>
</ul>
В Вашей реализации, с тем что уже сделано можно сделать так:
вместо этого:
array(
"CONDITION" => "#^/inform/([^/]+)/($|\\?.*)#",
"RULE" => "ELEMENT_CODE=$1",
"ID" => "",
"PATH" => "/inform/detail.php",
),
попробуйте так (т. е. выбирается из урла вторая часть после /inform/ который может быть символами и цифрами, и то что найдено будет передано в файл /inform/detail.php в $_REQUEST[‘ELEMENT_CODE’], а в этом файле вы уже будете использовать где хотите ):
array (
'CONDITION' => '#^/inform/([a-zA-Z0-9_-]+)/?(.*)#',
'RULE' => 'ELEMENT_CODE=$1',
'ID' => '',
'PATH' => '/inform/detail.php',
),
Но потестируйте может чуть другая регулярка нужна (можно найти в документации).
Если белый экран то надо включить в битриксе вывод php ошибок.
(Ну наверно проще было бы комплексный компонент использовать news - по нему много статей и документации)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Пишу веб приложение на PHP, возника задача синхронизировать яндекс диск с сервером с помощью Rest Api, но вот как сделать если я загружаю файл...