Drupal 7にrel =“ author”属性を追加する方法


7

Googleの勇敢な新しい世界では、できるだけ多くのトラフィックを獲得したいすべてのWebマスターにとって、Google +との優れた統合が必須です。rel="publisher"Webサイトへの属性の追加がメタタグモジュールを使用して行われた場合、rel = "author"属性をサポートする正式な方法がないようです。私が話していることを知らない人のために、Googleからこの記事を読んでください:検索結果の著者情報

どうやらサポートはDrupal 8に含まれる予定です。これをDrupal 8コアに追加することについての議論がいくつかありました。

しかし、これをDrupal 7に実装する方法は?

Drupalの内部をカスタマイズする上での初心者としてこれをお願いします。ですから、良いアイデアがある場合は、これを覚えておいてください。

あなたのアイデアに感謝します。


これをメタタグとしてページのヘッドセクションに追加しますか?
マディス

はい。グーグルによれば、それはそれが行われる方法です。記事ごとに、その作成者のGoogle+プロフィールへのリンクを挿入します。
コーポレートオタク2012年

Googleによると、著者名のマークアップは2014年8月以降、ウェブ検索でサポートされなくなりました。詳細については、support.google.com / webmasters / answer / 6083347?hl
TheodorosPloumis

回答:


8

rel = authorプロパティがDrupal 7メタタグモジュールの開発バージョンでサポートされるようになりました。

メタタグモジュール(http://drupal.org/project/metatag)をインストールした後、admin / config / search / metatagsに移動し、フロントページまたはいずれかのノードページを編集します。[詳細]の下に、Google +ページのURLを入力できる作成者と発行者のフィールドが表示されます。次のスクリーンショットでは、構成を変更する必要がある場所をピンクでマークしています。

メタタグフロントページ構成ページ:

これが私のスクリーンショットです-構成はピンクでマークされています


これを指摘していただきありがとうございます。トークンを作成し、人々にこの方法で入力してもらうのが簡単になります。
Stephen P.

5

rdf_preprocess_node()Dave Hallがリンクした関数のアイデアを使用すると、次のように実装できます(コードはテーマのtemplate.phpファイルに挿入されます)。

function mytheme_preprocess_node(&$variables) {
  if ($variables['page']) {
    $account = user_load($variables['uid']);
    $title = $account->name;

    $author_info = array(
      '#tag' => 'link',
      '#attributes' => array(
        'rel' => 'author',
        'href' => 'http://localhost',
        'title' => $title,
      ),
    );

    drupal_add_html_head($author_info, 'author');
  }
}

これにより、ノード全体のページのヘッドセクションに必要なリンクが追加されます。ノード作成者のIDを使用して、必要なユーザーデータを取得しました。完全なソリューションを取得するためにここで使用できるユーザー用のWebサイトフィールドを追加することをお勧めします。


では、Google +プロフィールのリンク情報が保存されているユーザーごとにフィールドを追加する必要がありますか?また、ここを知らないのは申し訳ありません-そのフィールドに付けるべき具体的な名前はありますか?
コーポレートオタク

@CorporateGeekええ、それは良いアプローチだと思いますし、フィールド名は本当に重要ではありません。プロファイル2のモジュールは、フィールドの追加に適していると思われます。私はここにいないかもしれませんが、おそらく$page = $account->field_myfieldname['und'][0]['value'];コードの後半で値を取得して 'href'属性に追加するために使用できます。
マディス

ユーザーのフィールドサポートにはすでにコア(admin / config / people / accounts / fields)が付属しているため、Drupal 7ではProfile2モジュールは実際には必要ありません。
Madis

これは優れたアプローチです。変更したのはif ($node = menu_get_object()) { if($node->type == "blog") { ...、ブログのコンテンツタイプのテストに使用することだけでした。ありがとう!また、サイトに複数のユーザーがいる場合にG +のURLのフィールドを追加して、完全に動的にするというアイデアも気に入っています。
ダニーイングランド人2013



0
function themename_preprocess_username(&$vars) {
  // Username is linked, use the link_attributes to inject the rel attribute
  if (isset($vars['link_path'])) {
    $vars['link_attributes']['rel'][] = 'author';
  }
  // Username is NOT linked, use the attributes_array to inject the rel attribute
  else {
    $vars['attributes_array']['rel'][] = 'author';
  }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.