Здравствуйте. Возникла проблема при добавлении rss для yandex zen. Для [content:encoded] я беру текст из параграфа, выводится все нормально, но мне надо добавить к выводу <![CDATA[ ]] ]>
. Я делаю так: $variables['elements'][0]['value'] = '<![CDATA['.$variables['elements'][0]['value'].' ]]'>
; и после этого знаки преобразуются в html сущности. Каким образом это можно исправить?
Заранее спасибо)
Предотвращение преобразования в html сущности CDATA (views rss)
Главные вкладки
Лучший ответ
Всем спасибо) С проблемой справилась. Вот код(может кому пригодится):
$variables['elements'][0]['value'] = [
'#type' => 'inline_template',
'#template' => "<![CDATA[ {{data}} ]]>",
'#context' => [
'data' => $variables['elements'][0]['value'],
],
];
'#type' => 'inline_template',
'#template' => "<![CDATA[ {{data}} ]]>",
'#context' => [
'data' => $variables['elements'][0]['value'],
],
];
Комментарии
http://php.net/manual/ru/function.html-entity-decode.php ?
Спасибо, но я уже это пробовала, это не помогает
html_tag nested https://www.drupal.org/node/2887146
Попутный вопрос: а зачем исправлять сущности в CDATA ?
Насколько я помню, назначение CDATA - как раз таки вывод значений в виде символьных данных.
Проблема вот в том, что "" преобразуется в "<![CDATA["
"<![CDATA[...]]>"
в"<![CDATA[".
(извините, там не отобразилось)У вас точно Drupal 8?
По идее, вам нужен hook_views_rss_feed_alter(&$rss_feed), в котором приблизительно
<?php
function yourmodule_views_rss_feed_alter(&$rss_feed) {
$channel = &$rss_feed['value'][0]['value'];
foreach (
$channel as $key => &$channel_item) {switch ($channel_item['key']) {
case 'item':
$item = &$channel_item['value'];
foreach ($item as $key => &$element) {
switch ($element['key']) {
case 'description':
case 'content:encoded':
$element['value'] = '<![CDATA[' . $element['value'] . ']]>';
$element['encoded'] = TRUE;
break;
}
}
break;
}
}
}
?>
Ключевой момент - $element['encoded'] = TRUE;
Да, у меня точно 8ка))) Я пробовала так делать $element['encoded'] = TRUE;, но ничего не вышло к сожалению.
Всем спасибо) С проблемой справилась. Вот код(может кому пригодится):
'#type' => 'inline_template',
'#template' => "<![CDATA[ {{data}} ]]>",
'#context' => [
'data' => $variables['elements'][0]['value'],
],
];
Еще по теме