ビューのRSSフィードに画像を表示しようとしています。
RSSフィードを見ると、画像フィールドは次のように表示されています。
<description>
<img src="http://example.com/sites/files/nodes/content/images/intro/two-hearts-1312984-1280x960_0.jpg" />
</description>
画像タグをエスケープする代わりに、画像を適切に表示するにはどうすればよいですか?
同様の問題に遭遇し、どういうわけかCDATAラッピングが機能しませんでした。私はrssビューをオーバーライドしてcdataタグを作成し、その中に画像をプログラムでラップする必要がありました。
私はviews_rssとviews_data_exportによって作成されたRSSビューを上書きすることでこれを行いました。
カスタムtplディスプレイ経由でRSSを作成するために、最初のディスプレイのデータエクスポートビューであるFeedと呼ばれる別のディスプレイを作成しました。
次に、フィードディスプレイのtplを上書きし、CDATA画像フィールドをプログラムで作成しました。
次に、テンプレートでrssビューを前処理して、ノードのnidをビューで使用できるようにする必要があります。
Here is how I did that.
function bootstrap_preprocess_views_view_row_rss(&$vars) {
$view = &$vars['view'];
$options = &$vars['options'];
$item = &$vars['row'];
// Use the [id] of the returned results to determine the nid in [results]
$result = &$vars['view']->result;
$id = &$vars['id'];
$node = node_load( $result[$id-1]->nid );
$vars['title'] = check_plain($item->title);
$vars['link'] = check_url($item->link);
$vars['description'] = check_plain($item->description);
//$vars['description'] = check_plain($node->teaser);
$vars['node'] = $node;
$vars['item_elements'] = empty($item->elements) ? '' :
format_xml_elements($item->elements);
}
最後に、カスタムイメージスタイルを使用してプログラムでCDATAタグを作成した方法を示します。
2つのビューテンプレートのコード:1.表示テンプレート
<?php print "<?xml"; ?> version="1.0" encoding="utf-8" <?php print "?>"; ?>
<rss version="2.0" xml:base="<?php print $link; ?>"<?php print $namespaces;
?>>
<channel>
<title><?php print $title; ?></title>
<link><?php print $link; ?></link>
<description><?php print $description; ?></description>
<language><?php print $langcode; ?></language>
<?php print $channel_elements; ?>
<?php print $items; ?>
</channel>
</rss>
お役に立てれば。
まずMedia RSS名前空間をviews-view-rss.tpl.phpに追加します
<rss version="2.0" xml:base="<?php print $link; ?>"<?php print $namespaces; ?> xmlns:media="http://search.yahoo.com/mrss/">
次に、ビューにタグを追加します-view-row-rss.tpl.php
<media:content url="<?php print image_style_url('my_img_style_id', $node->field_image['und'][0]['uri']); ?>" type="image/jpeg" medium="image" height="800" width="600" lang="en" />
最後に、フィールドデータをテーマのテンプレートで使用できるようにします
function mytheme_preprocess_views_view_row_rss(&$vars) {
$view = &$vars['view'];
$options = &$vars['options'];
$item = &$vars['row'];
// Use the [id] of the returned results to determine the nid in [results]
$result = &$vars['view']->result;
$id = &$vars['id'];
$node = node_load( $result[$id-1]->nid );
$vars['node'] = $node;
}
元の記事: https://blog.sam-thompson.info/images-in-drupal-rss-feed-without-additional-modules/