Меню

Bitrix getpageproperty не работает

SetPageProperty не работает в шаблоне news.detail

Пытаюсь поставить картинку анонса в мета тег og:image.

В итоге тег пустой.

Если SetPageProperty ставлю прямо перед вызовом мета тега, то все добавляется нормально. Почему из шаблона news.detail не ставится?

Цитата
Mikhail Kryachek написал:
99.9% вероятность того, что у вас кешируется результат выполнения компонента и как следствие $APPLICATION->SetPageProperty не выполняется.
Вынесите свой код в component_epilog.php
Цитата
Mikhail Kryachek написал:
99.9% вероятность того, что у вас кешируется результат выполнения компонента и как следствие $APPLICATION->SetPageProperty не выполняется.
Вынесите свой код в component_epilog.php

вынес. работает, но проблема в том, что в component_epilog Нету Preview picture

result_modifier.php — при включенном кешировании компонента не будет работать отложенные функции, например такие как
SetPageProperty
которая к примеру должна установить значение метатега, которое выводится в header.php шаблона сайта
ShowProperty(‘CUSTOMDATE’, 100);?>»/>
для этого нужно код установки значения вынести в файл component_epilog.php
Пример кода:

arParams[«SET_PROP_CUSTOMDATE»]==’Y’)
<
$obRes = CIBlockElement::GetByID($component->arResult[‘ELEMENTS’][0]);
$arRes = $obRes->Fetch();

Источник

GetPageProperty

GetPageProperty Возвращает свойство текущей страницы

Создал свойства rightnote, забил на странице ‘Y’. Вывожу:

Пусто что я делаю не правильно?

Пусто что я делаю не правильно?

п.с. нужно что то типа

Кроме того, может быть вы смотрите в шаблоне компонента это свойство? Если так, то его там не видно, т.к. шаблон в кэше.

Пусто, нет не в шаблоне(я знаю всё нюансы). Просто мне кажется что GetPageProperty не работает. либо я его как то не правильно использую. Но вот к примеру $APPLICATION->GetDirProperty работает отлично! Вот только для моей задачи нужен GetPageProperty

Цитата
Кирилл Черныш пишет:
Может есть другие варианты?

Евгений Жуков, О нет как я их только не вертел, отложенная функция только показывает.

Я опять что то делаю наверное не так? подскажите в простом примере, как мне можно было бы использовать условие. GetPageProperty мог идеально подойти!

Цитата
Евгений Жуков написал:
Как я уже сказал, изучите страницу учебного курса . Конкретно — со слов «А такой код будет работать:».

Проблема в чем то догом, поскольку я не могу повторить этот же код на другом сайте, где то галочка не поставлено или что. НО НА ПРАВИЛЬНО НАСТРОЕННОМ САЙТЕ ЭТОТ КОД У МЕНЯ РАБОТАЕТ! просто я забыл как надо настраивать, один раз методом тыка это нашли, а второй раз не получается.

Источник

Все функции СMain::Get*** не работают

Добрый день. У меня два вопроса.
Первый.
Я пытаюсь использовать функции вида $APPLICATION->GetTitle(), ->GetPageProperty() и так далее. В общем, все функции со словом Get, которые не отображают, а возвращают значение. Элементарнейший код
GetTitle(); echo $mystr; ?>
ничего не выводит вообще в то время как
ShowTitle(); ?> работает нормально.
Что тут не так?
Я читал в форумах и некоторые писали, что проблема связана с неправильной кодировкой. Рекомендовали использовать функцию CovertCharset, чтобы конвертировать в юникод, так как мой сайт стоит в windows-1251. Я покопался в папке и bitrix/modules/main/cvtables и не нашел там юникода. Использование функции CovertCharset дает нулевой эффект, видимо по этой причине.
Cервер и Битрикс не мои, они были мне даны для работы мои заказчиком. Я предполагаю, что избегая проблемы с mbstring.func_overload, заказчик забил на юникод, посему у меня такие проблемы.
Скажите, правильно ли я оценил ситуацию ( то есть с моей стороны остается только все свалить на заказчика ), или же я могу что-то сделать и сам в такой ситуации?

Второй вопрос. Как выглядит полный список допустимых свойств страницы? Кроме title, keywords и прочих, возможно ли ввести свои собственные? Мне это крайне нужно, для проверки условия, на какой странице я в данный момент нахожусь. Все эти title и прочие я считаю ненадежными, так как заказчик может их поменять в любой момент по своему усмотрению во время администрирования сайта. Возможно ли ввести свой собственный индикатор? Я вроде попытался создать поле в свойствах страниц, которое обозначил INDICATOR и ввел значние справа ( латинсикими буквами).
Но использование ShowProperty(«INDICATOR»);?> ничего не дает.

Источник

GetProperty

Привет! Такая ситуация. Мне нужно выводить заголовок страницы только на всех страницах кроме нескольких исключений типа главной страницы. Для них я создаю свойство DontShowTitle со значением yes , в PHP это выглядит как:

В шаблоне сайта пишу:

И заголовок всё равно отображается везде. Условие во втором куске кода не срабатывает. Добрые люди, где я туплю?

Цитата
Антон Федотов пишет:
if ($APPLICATION->GetProperty(«DontShowTitle»)

Это не будет работать принципиально.
Так как сначала постороится шаблон, в котором переменная DontShowTitle будет неопределена, а только потом этой переменной присвоится значение yes.

В данной ситуации необходимо, чтобы переменная была определена перед вызовом header — а это уже ручками определяется и никак не через API.

Поиск по форуму может помочь, потому что данную тему уже не один раз поднимали.

andreya, не, проверял.

Анатолий Зайченок, спасибо

зачем так мучаться?
если только на главной не показывать заголовок, можна так:

Цитата
Anton Ezhkov пишет:
Необходимо использовать технологию отложенных функций

В данном случае, совет Антона совершенно правильный.

Немного поясню.
Функция GetProperty возвращает свойство раздела, которое уже известно на момент сборки страницы, и поэтому может быть проверено в шаблоне.

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

Использование технологиии отложенных функций позволяет произвести проверку свойства страницы. Пример того как организуется подобная схема можно найти в описании функции:

Во! Вспомнил вчера как я решал такую ситуацию!
На самом деле все очень просто!

В хедере пишем в нужном месте где ходим выводить какую-то информацию в зависимости от переменной DontShowTitle:
ShowProperty(«pageh1»); ?>

далее идем в самый конец футера (для надежности) и вставляем такой год:
GetProperty(«DontShowTitle») != ‘yes’)
$APPLICATION->SetPageProperty(«pageh1», «

«.$APPLICATION->ShowTitle().»

вот и все. гораздо проще чем делать свои отложенные функции.

Источник

SetPageProperty не работает в шаблоне news.detail

Пытаюсь поставить картинку анонса в мета тег og:image.

В итоге тег пустой.

Если SetPageProperty ставлю прямо перед вызовом мета тега, то все добавляется нормально. Почему из шаблона news.detail не ставится?

Цитата
Mikhail Kryachek написал:
99.9% вероятность того, что у вас кешируется результат выполнения компонента и как следствие $APPLICATION->SetPageProperty не выполняется.
Вынесите свой код в component_epilog.php
Цитата
Mikhail Kryachek написал:
99.9% вероятность того, что у вас кешируется результат выполнения компонента и как следствие $APPLICATION->SetPageProperty не выполняется.
Вынесите свой код в component_epilog.php

вынес. работает, но проблема в том, что в component_epilog Нету Preview picture

result_modifier.php — при включенном кешировании компонента не будет работать отложенные функции, например такие как
SetPageProperty
которая к примеру должна установить значение метатега, которое выводится в header.php шаблона сайта
ShowProperty(‘CUSTOMDATE’, 100);?>»/>
для этого нужно код установки значения вынести в файл component_epilog.php
Пример кода:

arParams[«SET_PROP_CUSTOMDATE»]==’Y’)
<
$obRes = CIBlockElement::GetByID($component->arResult[‘ELEMENTS’][0]);
$arRes = $obRes->Fetch();

Источник

Читайте также:  Как настроить роутер делинк дир 300
Adblock
detector