const HomePage = lazy(() => import("./pages/HomePage"));
const ErrorPage = lazy(() => import("./pages/ErrorPage"));
const App = () => {
return (
<Routes>
<Route path="*" element={
<Suspense fallback={<Loader />}>
<ErrorPage />
</Suspense>
} />
<Route path="/" element={
<Suspense fallback={<Loader />}>
<HomePage />
</Suspense>
} />
</Routes>
);
};
<?php
global $USER;
// Получаем ID текущего раздела
$currentSectionId = $arResult['SECTION']['ID'];
// Проверяем, находится ли товар в разделе "Для профессионалов"
$isProSection = ($currentSectionId == 2552);
// Проверяем, принадлежит ли пользователь к группе "Профессионалы"
$isProfessional = CSaleUserAccount::IsUserAccount($USER->GetID(), 2);
// Проверяем наличие розничной цены
$hasRetailPrice = !empty($arResult['PRICES']['RETAIL_PRICE']['VALUE']);
if ($isProSection && !$hasRetailPrice && !$isProfessional) {
// Выводим кнопку "Доступен только для профессионалов"
?>
<button class="pro-only-button">Доступен только для профессионалов</button>
<?php
} elseif ($isProfessional || $hasRetailPrice) {
// Выводим стандартную кнопку покупки
?>
<button class="buy-button">Купить</button>
<?php
}
?>
global $USER;
$isProUser = in_array(2, $USER->GetUserGroupArray()); // Проверяем, состоит ли пользователь в группе "Профессионалы"
$sectionId = $arResult["IBLOCK_SECTION_ID"]; // ID текущего раздела
$rootSectionId = 2552; // ID раздела "Для профессионалов"
// Получаем путь к текущему разделу
$arSectionPath = array();
$dbSectionPath = CIBlockSection::GetNavChain($arResult["IBLOCK_ID"], $sectionId);
while ($arPath = $dbSectionPath->GetNext()) {
$arSectionPath[] = $arPath["ID"];
}
// Проверяем, находится ли текущий раздел в разделе "Для профессионалов"
$isProSection = in_array($rootSectionId, $arSectionPath);
if (!$actualItem['CAN_BUY']) {
if (!$isProUser && $isProSection) {
echo '<button class="btn btn-pro-only">Доступен только для профессионалов</button>';
} else {
echo '<button class="btn btn-subscribe">Подписаться</button>';
}
}
AddEventHandler("main", "OnEndBufferContent", "MyOnEndBufferContent");
function MyOnEndBufferContent(&$content)
{
// Получаем содержимое буфера
$viewContent = $GLOBALS['APPLICATION']->GetViewContent('SOME_VIEW_TARGET');
if (!empty($viewContent)) {
// Выполняем предварительную обработку содержимого
$processedContent = DoSomethingWithContent($viewContent);
// Заменяем исходное содержимое обработанным
$GLOBALS['APPLICATION']->SetViewContent('SOME_VIEW_TARGET', $processedContent);
}
}
function DoSomethingWithContent($content)
{
// Ваша логика обработки содержимого
// Например, замена некоторых подстрок или применение регулярных выражений
$content = str_replace('old_string', 'new_string', $content);
return $content;
}
function switchLanguage() {
var currentURI = window.location.pathname + window.location.search;
var currentDomain = window.location.hostname;
var newDomain;
if (currentDomain === 'test.ru') {
newDomain = 'en.test.ru';
} else if (currentDomain === 'en.test.ru') {
newDomain = 'test.ru';
} else {
// Обработка ошибки, если текущий домен не соответствует ожидаемым значениям
console.error('Неожиданный домен:', currentDomain);
return;
}
var newURL = 'https://' + newDomain + currentURI;
window.location.href = newURL;
}
<div class="block_lang">
<button onclick="switchLanguage()">
<?= (LANGUAGE_ID === 'ru') ? 'EN' : 'RU' ?>
</button>
</div>
function OnEndBufferContent(&$content)
{
$request = HttpApplication::getInstance()->getContext()->getRequest();
if (!$request->isAdminSection() && !$request->isAjaxRequest()) {
if ($result = Asset::getInstance()->getStrings('bottom')) {
// Проверяем, является ли текущий запрос AJAX-запросом компонента bitrix:iblock.element.add.form
if (!($request->get('action') === 'send' && $request->get('target') === 'bitrix:iblock.element.add.form')) {
$content = addBodyScript(trim($result), $content);
}
}
}
}
значения свойств хранятся: в общей таблице или в раздельной