Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

keywords, description, title для элементов каталога

00 голосов
7
Вопрос много раз поднимался и я вроде всё прочитала и сделала, но всё равно не пашет((Для элементов каталога необходимо настроить уникальные description, keywords и title и аналогично для разделов каталога. В инфоблоке создаю свойства keywords, description, в настройках компонента указываю, что брать их оттуда. Получаю в файле компонента:
Код
"LIST_META_KEYWORDS" => "UF_KEYWORDS",
"LIST_META_DESCRIPTION" => "UF_DESCR",

"DETAIL_META_KEYWORDS" => "M_KEYWORDS",
"DETAIL_META_DESCRIPTION" => "M_DESCR",

Но никакого эффекта. Подскажите, пожалуйста, что может перекрывать эти действия. И откуда-то может необходимо убрать вывод keywords и description? 

Для тайтла аналогичного поля не нашла( В форме элемента каталога есть "Название" и оно берётся и как тайтл, и как назание. Есть ли какой-то вариант задания тайтла отличного от названия?

Простите за повторение и Спасибо!
спросил 22 Авг, 13 от Dantey (160 баллов)

7 Ответы

00 голосов
Затирать могут компоненты расположенные ниже на странице.В настройках компонента выбираем свойство, значение которого будет являтся заголовком страницы. Если свойства нет, то просто добавьте его.
ответил 22 Авг, 13 от Pioneerus (220 баллов)
00 голосов
Не смогла найти, решила обойти ситуацию таким образом: для id раздела выводить свои description, keywords. В файле компонента пишу:
Код
if ($_REQUEST['SECTION_ID'] == 6712)
    {$APPLICATION->SetPageProperty('description', "Купить подарки в интернет-магазине. Дешево и удобно. Купить театральные бинокли");}
SECTION_ID беру из формы редактирования раздела в панели управления(Рабочий стол > Контент > Каталог товаров > Каталог товаров).
Но не пашет((

Когда пишу просто:
Код
$APPLICATION->SetPageProperty('description', "Купить подарки в интернет-магазине. Дешево и удобно. Купить театральные бинокли");

То всё норм и выводится во всех разделах этот description.Что уж тут я смогла сделать неправильно?(
ответил 03 Ноя, 13 от Dantey (160 баллов)
00 голосов
Цитата
Не смогла найти, решила обойти ситуацию таким образом: для id раздела выводить свои description, keywords. В файле компонента пишу:
Компонент ваш или битрикса? Или Вы в шаблоне пишете? Если в шаблоне, то при включенном кешировании выполнится один раз и закешируется. Это плохо писать код в шаблонах компонентов. Вынесите свой код из шаблона. 
Цитата
if ($_REQUEST['SECTION_ID'] == 6712)

Привязываться к идентификаторам еще хуже. Элемент будет удален - код сломается, опять же нельзя отредактировать из админ части не специалистам.Попробуйте так

if( $arParams['SECTION_ID'] == 6712 ) {
global $APPLICATION;
$APPLICATION->SetPageProperty( 'description', '....' );
}
ответил 09 Фев, 14 от Pioneerus (220 баллов)
00 голосов
Цитата
Компонент ваш или битрикса? Или Вы в шаблоне пишете? Если в шаблоне, то при включенном кешировании выполнится один раз и закешируется. Это плохо писать код в шаблонах компонентов. Вынесите свой код из шаблона.  

Во вкладке Контект-Структура сайта-Файлы и папки-там у меня папка catalog. В ней файлик index.php. В которым так же показаны настройки компонента каталога:
Код
<?$APPLICATION->IncludeComponent("bitrix:catalog", "catalog", array(
   "IBLOCK_TYPE" => "catalog",
   "IBLOCK_ID" => "1",
   "BASKET_URL" => "/personal/cart/",
   "ACTION_VARIABLE" => "action",
   "PRODUCT_ID_VARIABLE" => "id",
   "SECTION_ID_VARIABLE" => "SECTION_ID",...?>

В нём я и прописываю
Код
if ($_REQUEST['SECTION_ID'] == 6712)
    {$APPLICATION->SetPageProperty('description', "...");}
Понимаю, что если id не будет, будут проблемы. Но нужно быстро изменить, а вроде как адекватные действия, описанные в первом посте, ни к чему не приводят(
Код
if( $arParams['SECTION_ID'] == 6712 ) {  
global $APPLICATION; 
$APPLICATION->SetPageProperty( 'description', '....' ); 
} 
Ничего не происходит тоже.
Не понимаю, почему не работает с $_REQUEST['SECTION_ID'] == 6712. Т.к. далее в коде так же идёт обращение к этому массиву:
Код
if(isset($_REQUEST['SECTION_ID'])) {
    LocalRedirect('/catalog/'.$_REQUEST['SECTION_ID'].'/');
} 
вижу только вариант, что я неправильно указываю сам id. как думаете, как можно проверить?
ответил 29 Май, 14 от Dantey (160 баллов)
00 голосов
var_dump( $_REQUEST['SECTION_ID']  );
посмотрите результат
ответил 26 Сен, 14 от Pioneerus (220 баллов)
00 голосов
посмотрела - null(вот практически весь код компонента. Попробовала через $elem['IBLOCK_SECTION_ID'] == "binokly_teotralnie" заполучить нужный раздел, тоже не получилось( Как-то же можно его достать?((( спасибо за помощь!
Код
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");      
    
$APPLICATION->SetTitle("Купить подарки. Выберите недорогой подарок - мы его доставим в удобное Вам время.");

$APPLICATION->SetPageProperty('title2', "Каталог подарков");

?> <?
if(isset($_REQUEST['ELEMENT_ID'])) {
    CModule::IncludeModule('iblock');
    $elem = CIBlockElement::GetByID($_REQUEST['ELEMENT_ID']);
    if($elem!=false) {
     $elem = $elem->Fetch();
          if ($elem['IBLOCK_SECTION_ID'] == "binokly_teotralnie")
           {$APPLICATION->SetPageProperty('description', "Купить подарки в интернет-магазине. Дешево и удобно. Купить театральные бинокли");} 
     LocalRedirect('/catalog/'.$elem['IBLOCK_SECTION_ID'].'/'.$elem['ID'].'/');
    }
}
elseif(isset($_REQUEST['SECTION_ID'])) {
    LocalRedirect('/catalog/'.$_REQUEST['SECTION_ID'].'/');
}
?><?
if(!isset($_SESSION['CATALOG_SORT']))
    $_SESSION['CATALOG_SORT'] = 'TITLE ASC';
if(isset($_REQUEST['sort']))
    $_SESSION['CATALOG_SORT'] = $_REQUEST['sort'];

if($_SESSION['CATALOG_SORT']=='TITLE ASC') {
    $sort = 'NAME';
    $sort_order = 'asc';
}
elseif($_SESSION['CATALOG_SORT']=='TITLE DESC') {
    $sort = 'NAME';
    $sort_order = 'desc';
}

$ZazaCatFilter = array(">CATALOG_QUANTITY"=>'0');
?> <?$APPLICATION->IncludeComponent("bitrix:catalog", "catalog", array(
    "IBLOCK_TYPE" => "catalog",
    "IBLOCK_ID" => "1",
    "BASKET_URL" => "/personal/cart/",
    "ACTION_VARIABLE" => "action",
    "PRODUCT_ID_VARIABLE" => "id",
    "SECTION_ID_VARIABLE" => "SECTION_ID",   
    ...остальные параметры..."SEF_MODE" => "Y",  );?><?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
ответил 29 Янв, 15 от Dantey (160 баллов)
00 голосов
var_dump( $arResult["VARIABLES"] ); - все, что вам нужно, должно лежать там smile:)
ответил 13 Май, 15 от Pioneerus (220 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 18 Фев, 14 от LoLiTKa (620 баллов)
0 голосов
3 ответов
спросил 02 Март, 14 от Kania (5,180 баллов)
0 голосов
2 ответов
0 голосов
5 ответов
спросил 15 Ноя, 13 от fdfg (200 баллов)
0 голосов
9 ответов
спросил 30 Апр, 13 от Cavizar (220 баллов)