Задача: есть компонент новостей битрикс, сейчас в деталях нновости в качестве title выводится название инфоблока - "новости и события" а не название конкретной новости. необходимо установить в качестве title страницы название новости.
Код вызова компонента из файла: /news/index.php
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
//$APPLICATION->SetPageProperty("title", "Новости и события");
//$APPLICATION->SetTitle("Новости и события");
$APPLICATION->SetPageProperty("title",str_replace("\"","",NULL));
?><?$APPLICATION->IncludeComponent(
"bitrix:news",
"news",
array(
"ADD_ELEMENT_CHAIN" => "Y",
"ADD_SECTIONS_CHAIN" => "Y",
"AJAX_MODE" => "N",
"AJAX_OPTION_ADDITIONAL" => "",
"AJAX_OPTION_HISTORY" => "N",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"BROWSER_TITLE" => "-",
"CACHE_FILTER" => "N",
"CACHE_GROUPS" => "Y",
"CACHE_TIME" => "36000000",
"CACHE_TYPE" => "A",
"CHECK_DATES" => "N",
"DETAIL_ACTIVE_DATE_FORMAT" => "d.m.Y",
"DETAIL_DISPLAY_BOTTOM_PAGER" => "Y",
"DETAIL_DISPLAY_TOP_PAGER" => "N",
"DETAIL_FIELD_CODE" => array(
0 => "",
1 => "",
),
"DETAIL_PAGER_SHOW_ALL" => "Y",
"DETAIL_PAGER_TEMPLATE" => "",
"DETAIL_PAGER_TITLE" => "Страница",
"DETAIL_PROPERTY_CODE" => array(
0 => "",
1 => "MORE_PHOTO",
2 => "",
),
"DETAIL_SET_CANONICAL_URL" => "N",
"DISPLAY_BOTTOM_PAGER" => "Y",
"DISPLAY_DATE" => "Y",
"DISPLAY_NAME" => "Y",
"DISPLAY_PICTURE" => "Y",
"DISPLAY_PREVIEW_TEXT" => "Y",
"DISPLAY_TOP_PAGER" => "N",
"HIDE_LINK_WHEN_NO_DETAIL" => "N",
"IBLOCK_ID" => "3",
"IBLOCK_TYPE" => "news",
"INCLUDE_IBLOCK_INTO_CHAIN" => "N",
"LIST_ACTIVE_DATE_FORMAT" => "d.m.Y",
"LIST_FIELD_CODE" => array(
0 => "PREVIEW_TEXT",
1 => "PREVIEW_PICTURE",
2 => "DETAIL_PICTURE",
3 => "",
),
"LIST_PROPERTY_CODE" => array(
0 => "",
1 => "",
),
"MESSAGE_404" => "",
"META_DESCRIPTION" => "-",
"META_KEYWORDS" => "-",
"NEWS_COUNT" => "9",
"PAGER_BASE_LINK_ENABLE" => "N",
"PAGER_DESC_NUMBERING" => "N",
"PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
"PAGER_SHOW_ALL" => "N",
"PAGER_SHOW_ALWAYS" => "N",
"PAGER_TEMPLATE" => "plyos",
"PAGER_TITLE" => "Новости",
"PREVIEW_TRUNCATE_LEN" => "",
"SEF_MODE" => "Y",
"SET_LAST_MODIFIED" => "N",
"SET_STATUS_404" => "N",
"SET_TITLE" => "Y",
"SHOW_404" => "N",
"SORT_BY1" => "ACTIVE_FROM",
"SORT_BY2" => "SORT",
"SORT_ORDER1" => "DESC",
"SORT_ORDER2" => "ASC",
"USE_CATEGORIES" => "N",
"USE_FILTER" => "N",
"USE_PERMISSIONS" => "N",
"USE_RATING" => "N",
"USE_REVIEW" => "N",
"USE_RSS" => "N",
"USE_SEARCH" => "N",
"USE_SHARE" => "N",
"COMPONENT_TEMPLATE" => "news",
"SEF_FOLDER" => "/news/",
"STRICT_SECTION_CHECK" => "N",
"SEF_URL_TEMPLATES" => array(
"news" => "",
"section" => "",
"detail" => "#ELEMENT_CODE#/",
)
),
false
);?>
<section class="social container">
<h2 class="social__header">
Поделиться в соцсетях:
</h2>
<?php // Кнопки расшара в социальные сети. Для работы требуются JS скрипты, ниже реализуем их подгрузку
use Bitrix\Main\Page\Asset;
Asset::getInstance()->addJs("//yastatic.net/es5-shims/0.0.2/es5-shims.min.js");
$APPLICATION->AddHeadString("<script async=\"\" src=\"//yastatic.net/share2/share.js\" charset=\"UTF8\"></script>",true);
?>
<div class="ya-share2 social__list" data-services="vkontakte,facebook,odnoklassniki"></div>
</section>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Файл шаблона по адресу: /local/templates/plyos/components/bitrix/news/news/bitrix/ne ws.detail/.default/template.php
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$this->setFrameMode(true);
if (isset($arResult["NAME"]) and strlen($arResult["NAME"])) {
$APPLICATION->SetPageProperty("title",str_replace("\"","",$arResult["NAME"]));
}
?>
<div class="container">
<section class="section-one wysiwyg">
<h1 class="section-header">
<?=$arResult["NAME"]?>
</h1>
<p class="section-subtitle" href="">
<?=$arResult["DATE_ACTIVE_FROM"]?>
</p>
</section>
... далее шаблон продолжается, здесь я его не привожу поскольку считаю, что дальнейший код не имеет значения для разрешения вопроса.
Суть проблемы: в авторизованном режиме title страницы выводится нормально - а именно из названия новости, за счёт размещённых в шаблоне строчек:
if (isset($arResult["NAME"]) and strlen($arResult["NAME"])) {
$APPLICATION->SetPageProperty("title",str_replace("\"","",$arResult["NAME"]));
}
Если выйти в админке то на этой странице в титле вместо названия новости выводится название инфоблока - "Новости и события", нужно чтобы выводилось название новости.
Сейчас удалось решить проблему строчкой перед вызовом компонента в файле /news/index.php, а именно:
$APPLICATION->SetPageProperty("title",str_replace("\"","",NULL));
Подскажите пожалуйста в чём причина такого срабатывания. Как сделать правильно чтобы тайтл подставлялся из названия соответствующей новости.
Может ли быть проблема в кешировании(кеш страниц и компонента сбрасывался). Если да то где смотреть и что делать?
Код вызова компонента из файла: /news/index.php
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
//$APPLICATION->SetPageProperty("title", "Новости и события");
//$APPLICATION->SetTitle("Новости и события");
$APPLICATION->SetPageProperty("title",str_replace("\"","",NULL));
?><?$APPLICATION->IncludeComponent(
"bitrix:news",
"news",
array(
"ADD_ELEMENT_CHAIN" => "Y",
"ADD_SECTIONS_CHAIN" => "Y",
"AJAX_MODE" => "N",
"AJAX_OPTION_ADDITIONAL" => "",
"AJAX_OPTION_HISTORY" => "N",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"BROWSER_TITLE" => "-",
"CACHE_FILTER" => "N",
"CACHE_GROUPS" => "Y",
"CACHE_TIME" => "36000000",
"CACHE_TYPE" => "A",
"CHECK_DATES" => "N",
"DETAIL_ACTIVE_DATE_FORMAT" => "d.m.Y",
"DETAIL_DISPLAY_BOTTOM_PAGER" => "Y",
"DETAIL_DISPLAY_TOP_PAGER" => "N",
"DETAIL_FIELD_CODE" => array(
0 => "",
1 => "",
),
"DETAIL_PAGER_SHOW_ALL" => "Y",
"DETAIL_PAGER_TEMPLATE" => "",
"DETAIL_PAGER_TITLE" => "Страница",
"DETAIL_PROPERTY_CODE" => array(
0 => "",
1 => "MORE_PHOTO",
2 => "",
),
"DETAIL_SET_CANONICAL_URL" => "N",
"DISPLAY_BOTTOM_PAGER" => "Y",
"DISPLAY_DATE" => "Y",
"DISPLAY_NAME" => "Y",
"DISPLAY_PICTURE" => "Y",
"DISPLAY_PREVIEW_TEXT" => "Y",
"DISPLAY_TOP_PAGER" => "N",
"HIDE_LINK_WHEN_NO_DETAIL" => "N",
"IBLOCK_ID" => "3",
"IBLOCK_TYPE" => "news",
"INCLUDE_IBLOCK_INTO_CHAIN" => "N",
"LIST_ACTIVE_DATE_FORMAT" => "d.m.Y",
"LIST_FIELD_CODE" => array(
0 => "PREVIEW_TEXT",
1 => "PREVIEW_PICTURE",
2 => "DETAIL_PICTURE",
3 => "",
),
"LIST_PROPERTY_CODE" => array(
0 => "",
1 => "",
),
"MESSAGE_404" => "",
"META_DESCRIPTION" => "-",
"META_KEYWORDS" => "-",
"NEWS_COUNT" => "9",
"PAGER_BASE_LINK_ENABLE" => "N",
"PAGER_DESC_NUMBERING" => "N",
"PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
"PAGER_SHOW_ALL" => "N",
"PAGER_SHOW_ALWAYS" => "N",
"PAGER_TEMPLATE" => "plyos",
"PAGER_TITLE" => "Новости",
"PREVIEW_TRUNCATE_LEN" => "",
"SEF_MODE" => "Y",
"SET_LAST_MODIFIED" => "N",
"SET_STATUS_404" => "N",
"SET_TITLE" => "Y",
"SHOW_404" => "N",
"SORT_BY1" => "ACTIVE_FROM",
"SORT_BY2" => "SORT",
"SORT_ORDER1" => "DESC",
"SORT_ORDER2" => "ASC",
"USE_CATEGORIES" => "N",
"USE_FILTER" => "N",
"USE_PERMISSIONS" => "N",
"USE_RATING" => "N",
"USE_REVIEW" => "N",
"USE_RSS" => "N",
"USE_SEARCH" => "N",
"USE_SHARE" => "N",
"COMPONENT_TEMPLATE" => "news",
"SEF_FOLDER" => "/news/",
"STRICT_SECTION_CHECK" => "N",
"SEF_URL_TEMPLATES" => array(
"news" => "",
"section" => "",
"detail" => "#ELEMENT_CODE#/",
)
),
false
);?>
<section class="social container">
<h2 class="social__header">
Поделиться в соцсетях:
</h2>
<?php // Кнопки расшара в социальные сети. Для работы требуются JS скрипты, ниже реализуем их подгрузку
use Bitrix\Main\Page\Asset;
Asset::getInstance()->addJs("//yastatic.net/es5-shims/0.0.2/es5-shims.min.js");
$APPLICATION->AddHeadString("<script async=\"\" src=\"//yastatic.net/share2/share.js\" charset=\"UTF8\"></script>",true);
?>
<div class="ya-share2 social__list" data-services="vkontakte,facebook,odnoklassniki"></div>
</section>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Файл шаблона по адресу: /local/templates/plyos/components/bitrix/news/news/bitrix/ne
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$this->setFrameMode(true);
if (isset($arResult["NAME"]) and strlen($arResult["NAME"])) {
$APPLICATION->SetPageProperty("title",str_replace("\"","",$arResult["NAME"]));
}
?>
<div class="container">
<section class="section-one wysiwyg">
<h1 class="section-header">
<?=$arResult["NAME"]?>
</h1>
<p class="section-subtitle" href="">
<?=$arResult["DATE_ACTIVE_FROM"]?>
</p>
</section>
... далее шаблон продолжается, здесь я его не привожу поскольку считаю, что дальнейший код не имеет значения для разрешения вопроса.
Суть проблемы: в авторизованном режиме title страницы выводится нормально - а именно из названия новости, за счёт размещённых в шаблоне строчек:
if (isset($arResult["NAME"]) and strlen($arResult["NAME"])) {
$APPLICATION->SetPageProperty("title",str_replace("\"","",$arResult["NAME"]));
}
Если выйти в админке то на этой странице в титле вместо названия новости выводится название инфоблока - "Новости и события", нужно чтобы выводилось название новости.
Сейчас удалось решить проблему строчкой перед вызовом компонента в файле /news/index.php, а именно:
$APPLICATION->SetPageProperty("title",str_replace("\"","",NULL));
Подскажите пожалуйста в чём причина такого срабатывания. Как сделать правильно чтобы тайтл подставлялся из названия соответствующей новости.
Может ли быть проблема в кешировании(кеш страниц и компонента сбрасывался). Если да то где смотреть и что делать?