web-dev-qa-db-ja.com

ビューのRSSフィードに画像を表示する方法

ビューのRSSフィードに画像を表示しようとしています。

  1. ビューに次のフィールドを追加しました:field_image、field_title、field_Twitter(これらのフィールドは私のノードから取得されます)。
  2. 次に、すべてのフィールドを「表示から除外」に設定します。
  3. 次に、「RSSコンテンツ」というビューに新しいフィールドを作成します。
  4. 次に、(ステップ1からの)すべてのフィールドのトークンを「RSSコンテンツ」に配置します。
  5. 最後に、「ビュー>>表示>>設定」に行きます。 [説明フィールド]のドロップダウンメニューで、[RSSコンテンツ]を選択します。

RSSフィードを見ると、画像フィールドは次のように表示されています。

    <description> 
&lt;img src=&quot;http://example.com/sites/files/nodes/content/images/intro/two-hearts-1312984-1280x960_0.jpg&quot; /&gt;
</description>

画像タグをエスケープする代わりに、画像を適切に表示するにはどうすればよいですか?

1
big_smile

同様の問題に遭遇し、どういうわけかCDATAラッピングが機能しませんでした。私はrssビューをオーバーライドしてcdataタグを作成し、その中に画像をプログラムでラップする必要がありました。

私はviews_rssとviews_data_exportによって作成されたRSSビューを上書きすることでこれを行いました。

ビューの設定は次のようになります: enter image description here

カスタムtplディスプレイ経由でRSSを作成するために、最初のディスプレイのデータエクスポートビューであるFeedと呼ばれる別のディスプレイを作成しました。

これが、私がオーバーライドしたフィードの表示の様子です。 enter image description here

次に、フィードディスプレイのtplを上書きし、CDATA画像フィールドをプログラムで作成しました。

これは私が上書きしたビューtplファイルです。 enter image description here

次に、テンプレートで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>
  1. 行テンプレート。ここでは、CDATAとitemタグをプログラムで作成しています。

enter image description here

お役に立てれば。

1
Prerit Mohan

まず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/

1
Ben Mirkhah