web-dev-qa-db-ja.com

drupal 7にカスタムメタタグを追加する方法は?

次のようなカスタムメタタグをD7サイトに追加する必要があります: http://groups.drupal.org/node/83069 。可能なオプションは何ですか?メタタグモジュールがあることは知っていますが、カスタムタグをサポートしていないようです。

テーマを変更することはできますが、ユーザーが構成できるソリューションが必要です。

4
Dmitry Vyal

Meta tags quick をご覧になりましたか?

メタタグ生成モジュールの比較ページ があります。

2
ipwa

メタタグ は、hook_metatag_metatags_view_alter()を実装することにより、カスタムタグをサポートします。カスタムエンティティからOpen Graphvideo:durationメタタグを追加するには、次のフック実装を参照してください。

/**
 * Alter metatags before being cached.
 *
 * This hook is invoked prior to the meta tags for a given page are cached.
 *
 * @param array $output
 *   All of the meta tags to be output for this page in their raw format. This
 *   is a heavily nested array.
 * @param string $instance
 *   An identifier for the current page's page type, typically a combination
 *   of the entity name and bundle name, e.g. "node:story".
 */
function mycustommodule_metatag_metatags_view_alter(&$output, $instance) {
  if ($instance == 'mycustom:entity') {
    $entity = mycustomentity_load(someid);
    $duration = $entity->duration;
    $output['video:duration']['#attached']['drupal_add_html_head'][0] = array(
      array(
        '#theme' => 'metatag_opengraph',
        '#tag' => 'meta',
        '#id' => 'video:duration',
        '#name' => 'video:duration',
        '#value' => $duration,
      ),
      'video:duration',
    );
  }
}
11
Juampy NR

遅く返信しますが、これは他の人に役立つかもしれません:

私の解決策についてここに書きました http://mymixerone.blogspot.in/2012/11/adding-meta-tags-in-drupal-node.html

参考になれば、ぜひご覧ください。

ここに簡単な解決策があります、これをtemplet.phpファイルに追加してみてください:

<?php
function <theme-name>_preprocess_html(&$variables) {
  switch(arg(1)) {
    //current-issues, node id 33
    case "33" :
      // title
      $variables['head_title']= "New Title";

      //key-words
      $page_keywords = array(
        '#type' => 'html_tag',
        '#tag' => 'meta',
        '#attributes' => array(
          'name' => 'keywords',
          'content' => 'all keywords for this node',
        )
      );
      drupal_add_html_head($page_keywords, 'page_keywords');
      break;

    //node id 20
    case "20" :
      // title
      $variables['head_title']= "New Title";
      break;
  }
}
?>

他のタグも同様に追加できます。

5
Atul

アトゥルありがとう。 Drupalサポートモジュールで30秒ごとにページを更新するために、あなたのアプローチを使用しました。

function garland_preprocess_html(&$vars) {
//Adding Refresh to main tikets page BEGIN
//print 'Node id = ';print(arg(1));
switch(arg(1)){
//check node id : if nid=kontora then use custom "Refresh setup" (must be the name of client you want to refresh)
case "client1" :
/*Implementation of HTML equivalent <meta http-equiv="Refresh" content="30" />*/
$http_equiv = array(
    '#type' => 'html_tag',
    '#tag' => 'meta',
    '#attributes' => array(
    'http-equiv' => 'Refresh',
    'content' => '30',
    )
  );
drupal_add_html_head($http_equiv, 'http_equiv');
// Meta tag code here
break;
/*
//node id 20
case "20" :
      // Meta tag code here
break;*/
     }
//Adding Refresh to main tikets page END
}
3

カスタムモジュールにhook_metatag_infoを実装し、メタタグを定義して、UIで構成することもできます。

この実装は、例としてメタタグモジュールから確認できます http://www.drupalcontrib.org/api/drupal/contributions%21metatag%21metatag_opengraph%21metatag_opengraph.metatag.inc/function/metatag_opengraph_metatag_info/7

0
mistermoper