views内の項目を使ってmetatagを設定したい

Events happening in the community are now at Drupal community events on www.drupal.org.
bzj00220's picture

viewsで作ったページにメタタグを設定したいと思っています。
viewsで「○○の事例一覧」という表を作ってその中には事例の名称を表示させています。

メタタグのデスクリプションを下記のような感じにしたいのですがなにかいい方法はあるでしょうか?

コンテキストやメタタグモジュールでメタタグを設定することはできるのですが、views内に表示されている項目を取得してきてメタタグに表示させるということはできそうにありません。

もし、どなたかよいモジュールなどを知っていたら教えていただけば幸いです。

Comments

shigehiro's picture

「views内に表示されている項目」というのが何を指しているのか、おそらくそのビューの中で「%1」や「!1」といった代替文字列に置き換えられるもの、という理解で説明しますね。

モジュールではありませんが、ビューに少しコードを加える方法です。

  1. ビューの編集画面の真ん中のカラム「ヘッダー」の「追加」ボタンをクリック。
  2. 「Global: Text area」を選択。
  3. 設定ダイアログを少しスクロールしたところの「Use replacement tokens from the first row」にチェックを入れ、REPLACEMENT PATTERNS で利用できる代替文字列を確認。
  4. テキストフォーマットを「PHP code」にする。
  5. テキストエリアに次のコードを入力。
  6. <?php
    // 表示させたい項目が代替文字列「 %1 」で置き換えられるとすると
    $element = array(
     
    '#tag' => 'meta',
     
    '#attributes' => array(
       
    'name' => 'description',
       
    'content' => '%1 の事例一覧',
      ),
    );
    drupal_add_html_head($element, 'meta_description');
    ?>
  7. 「続き」をクリックして「Administrative title」のところに「メタタグのdescriptionを追加」のようにでも入れておきます。
  8. ビューの設定を保存。

Drupal カスタマイズTips 更新中...
CMS自由自在!
http://customfield.jp/

できれば各項目のタイトルを挿入したい

bzj00220's picture

返信ありがとうございます。
試してみたところ、かなり近いところまでできています。

書いていただいた手順3のところで私の画面には置換パターンの中に
[title] == コンテンツ: タイトル
があるのですが、私の場合はそれも引用したいのです。

試しに

<?php
// 表示させたい項目が代替文字列「 %1 」で置き換えられるとすると
$element = array(
 
'#tag' => 'meta',
 
'#attributes' => array(
   
'name' => 'description',
   
'content' => '%1 の事例一覧','[title]'
 
),
);
drupal_add_html_head($element, 'meta_description');
?>

としてみると

<meta name="description" content="○○ の事例一覧" 0="△△△←1番目の項目のタイトル" />
となってしまいました。

できれば
<meta name="description" content="○○ の事例一覧・△△△←1番目の項目のタイトル・□□□←2番めの項目のタイトル・xxx←3番めの項目のタイトル" />
みたいに項目のタイトルをずらっと並べたいのですがそのようにするにはどうしたら良いのでしょうか?

shigehiro's picture

次のコードでどうでしょう。
分かり易いように少し書き方を変えました。

<?php
// 表示させたい項目が代替文字列「 %1 」で置き換えられるとすると
$content = '%1 の事例一覧・[title]・[title_1]・[title_2]';

$element = array(
 
'#tag' => 'meta',
 
'#attributes' => array(
   
'name' => 'description',
   
'content' => $content,
  ),
);
drupal_add_html_head($element, 'meta_description');
?>

Drupal カスタマイズTips 更新中...
CMS自由自在!
http://customfield.jp/

ご指導ありがとうございました。

bzj00220's picture

ご指導ありがとうございました。
できれば下記の点ももし分かるようでしたら教えていただければ幸いです。

以前の書き込みでは

<meta name="description" content="○○ の事例一覧・△△△←1番目の項目のタイトル・□□□←2番めの項目のタイトル・xxx←3番めの項目のタイトル" />

と書きましたが、viewsに表示される項目は3つだけとは限りません。

できれば、

<meta name="description" content="○○ の事例一覧・△△△←1番目の項目のタイトル・□□□←2番めの項目のタイトル・xxx←3番めの項目のタイトル"・・・このあとのタイトルもここに表示されるようにしたい・・・ />

みたいにviewsに表示される項目の数だけタイトルを表示することはできますか?
もし、できるようでしたら教えていただければ幸いです。

先の回答の手順3 で、REPLACEMENT

shigehiro's picture

先の回答の手順3 で、REPLACEMENT PATTERNS で利用できる代替文字列(トークン)を確認できますので、設定したいものをすべて、先のコードの $content に含めてあげればよいです。

Drupal カスタマイズTips 更新中...
CMS自由自在!
http://customfield.jp/

日本 コミュニティ: Drupal Japan User Group

Group organizers

Group categories

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: