Решение можно попробовать такое:
В админке сделать ссылку на страницу с bitrix:news.detail с передачей ID, в настройках на странице включаем показ неактивных элементов
1) Редактируем файл bitrix\modules\iblock\admin\iblock_element_edit.php (добавим кнопку)
| Код |
|---|
<input <?if ($bDisabled) echo "disabled";?> type="submit" class="adm-btn-save" name="save" id="save" value="<?echo GetMessage("IBLOCK_EL_SAVE")?>">
<input <?if ($bDisabled) echo "disabled";?> type="submit" class="button" name="apply" id="apply" value="<?echo GetMessage('IBLOCK_APPLY')?>">
<input <?if ($bDisabled) echo "disabled";?> type="button" class="button" onclick="window.open('http://site/detailpreview.php?ELEMENT_ID=<?=$_REQUEST['ID']?>','','scrollbars=1,toolbar=1,resizable=1'
);" value="Предварительный просмотр">
|
2) Создаем страницу detailpreview.php с компонентом news.detail, в настройках убираем галочку "Показывать только активные"
У меня содержимое такое:
| Код |
|---|
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Новость");
if ($_REQUEST['ELEMENT_ID'] == "0"): echo "<center>Для начала, нажмите \"Применить\", чтобы использовать предпросмотр <br><br><a href=\"#\" onclick=\"self.close()\">закрыть это окно</a></center>"; else:
?>
<p><?$APPLICATION->IncludeComponent("bitrix:news.detail", "template_new", array(
"IBLOCK_TYPE" => "news",
"IBLOCK_ID" => $_REQUEST["IBLOCK_ID"],
"ELEMENT_ID" => $_REQUEST["ELEMENT_ID"],
"ELEMENT_CODE" => "",
"CHECK_DATES" => "N",
"FIELD_CODE" => array(
0 => "",
1 => "",
),
"PROPERTY_CODE" => array(
0 => "",
1 => "AUTHOR",
2 => "SOURCE",
3 => "FORUM_MESSAGE_CNT",
4 => "COUNT",
5 => "FILE_NEWS",
6 => "",
),
"IBLOCK_URL" => "list.php?IBLOCK_ID=#IBLOCK_ID#",
"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" => "-",
"SET_TITLE" => "Y",
"SET_STATUS_404" => "N",
"INCLUDE_IBLOCK_INTO_CHAIN" => "Y",
"ADD_SECTIONS_CHAIN" => "Y",
"ACTIVE_DATE_FORMAT" => "d.m.Y",
"USE_PERMISSIONS" => "N",
"DISPLAY_TOP_PAGER" => "N",
"DISPLAY_BOTTOM_PAGER" => "Y",
"PAGER_TITLE" => "Страница",
"PAGER_TEMPLATE" => "",
"PAGER_SHOW_ALL" => "Y",
"DISPLAY_DATE" => "Y",
"DISPLAY_NAME" => "Y",
"DISPLAY_PICTURE" => "Y",
"DISPLAY_PREVIEW_TEXT" => "Y",
"USE_SHARE" => "N",
"AJAX_OPTION_ADDITIONAL" => ""
),
false
);?></p>
<?
endif;
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
?> |
3) Теперь идем в bitrix\components\bitrix\news.detail\component.php
Ищем
| Код |
|---|
$arFilter = array(
"IBLOCK_LID" => SITE_ID,
"IBLOCK_ACTIVE" => "Y",
// "ACTIVE" => "Y", /// можно вывести неактивный элемент)
"CHECK_PERMISSIONS" => "Y",
"IBLOCK_TYPE" => $arParams["IBLOCK_TYPE"],
"SHOW_HISTORY" => $WF_SHOW_HISTORY,
); |
И закомментируем фильтр активности.
4) Ну и еще в настройках инфоблока я снял по умолчанию "активность", чтобы после "Применить" новость не появлялась сразу на сайте.
К сожалению, битрикс не выдает сразу ID нового элемента, так что без нажатия "Применить" или "Сохранить" предпросмотр работать не будет, проверку я сделал в файле detailpreview.php
Вроде все

Удачи.