Возможна ли вставка кода с разграничением прав доступа. Чтобы его содержание могли видеть авторизованные пользователи, а другим предлагалось бы войти на сайт?
Что делать, если сайт композитный?
Да, возможно. Очень просто.
Живой пример внутри текста! Это не картинка, а контент, который вставлен с помощью модуля «Включаемый код»:
— Как отпроситься с работы, если уже переболел всеми известными медицине болезнями?
— ...
Чтобы узнать ответ, авторизуйтесь.
Создайте включаемый файл, например, hidden_text.php с таким содержимым:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?global $USER?>
<?if ( $USER->IsAuthorized() ):?>
<p>— Как отпроситься с работы, если уже переболел всеми известными медицине болезнями?<br />
— Женись. Получишь три дня выходных.</p>
<?else:?>
<p>— Как отпроситься с работы, если уже переболел всеми известными медицине болезнями?<br />
— ...</p>
<p>Чтобы узнать ответ, авторизуйтесь.</p>
<?$APPLICATION->IncludeComponent(
"bitrix:system.auth.form",
"",
Array(
"REGISTER_URL" => "",
"FORGOT_PASSWORD_URL" => "/auth/",
"PROFILE_URL" => "",
"SHOW_ERRORS" => "N"
)
);?>
<?endif?>
Сохраните файл в папке включаемых файлов /bitrix/php_interface/include/askaron.include/ .
Напишите на странице
<?CAskaronInclude::IncludeFile("hidden_text.php");?>
или специальный комментарий в тексте новости:
<!--askaron.include
hidden_text.php
-->
В этом месте появится содержимое включаемого файла в зависимости от текущего пользователя.
Что делать если сайт композитный?
На композитных сайтах разработчик должен везде на сайте отметить динамичные области. Включаемый код - не исключение. Надо обозначить область:
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<?
$frame = new \Bitrix\Main\Page\FrameHelper("my_hidden_text");
$frame->begin();
?>
<?global $USER?>
<?if ( $USER->IsAuthorized() ):?>
<p>— Как отпроситься с работы, если уже переболел всеми известными медицине болезнями?<br />
— Женись. Получишь три дня выходных.</p>
<?else:?>
<p>— Как отпроситься с работы, если уже переболел всеми известными медицине болезнями?<br />
— ...</p>
<p>Чтобы узнать ответ, авторизуйтесь.</p>
<?$APPLICATION->IncludeComponent(
"bitrix:system.auth.form",
"",
Array(
"REGISTER_URL" => "",
"FORGOT_PASSWORD_URL" => "/auth/",
"PROFILE_URL" => "",
"SHOW_ERRORS" => "N"
)
);?>
<?endif?>
<?
//$frame->setAnimation(true);
$frame->end();
?>
Работал месяц. Сейчас не отображается |
Описание курса
| Стандартные примеры включаемых файлов
|