Phize on the Web

METAタグとキーワードの挿入位置を変更する方法 - MODx

オープンソースCMSのMODxでは、MODxマネージャの「リソース」→「METAタグとキーワードの管理」で登録したmeta要素の属性値とキーワードを、「ドキュメントの作成/編集」→「META キーワード」タブからドキュメントごとに設定することができます。設定したmeta要素の属性値とキーワードは、head要素の開始タグの直後に自動的に挿入されますが、プラグインとスニペットを作成することによってmeta要素の挿入位置を変えることができます。

現在のMODx(0.9.6)では、head要素の開始タグ内に空白文字がある場合や属性が指定されている場合に、METAタグとキーワードの自動挿入が機能しない不具合がある。なんらかの原因でmeta要素の自動挿入が機能しない場合も、この方法で解決することができる。

プラグインの作成

次の手順で、meta要素の自動挿入を無効化するプラグインを作成します。

  1. MODxマネージャの「リソース」→「リソース管理」→「プラグイン」タブから「プラグインを作成」をクリックする。
  2. 「全般」タブの「プラグイン名」にDisableMetaTagsと入力し、「プラグイン コード (php)」に次のコードをコピー&ペーストする。
    $modx->documentObject['haskeywords'] = '0';
    $modx->documentObject['hasmetatags'] = '0';
  3. 「システムイベント」タブの「OnParseDocument」イベントにチェックをつけ、「保存」をクリックしてプラグインを保存する。
  4. 「イベント発生時のプラグインの実行順を編集」から、「DisableMetaTags」プラグインが「OnParseDocument」イベント内で一番下になるようにドラッグ&ドロップして移動する。

優先順位を最下位にしなかった場合、METAタグやキーワードを扱うほかのプラグインが正常に機能しない可能性がある。

スニペットの作成

次の手順で、「META キーワード」タブで設定されているmeta要素を出力するスニペットを作成します。

  1. MODxマネージャの「リソース」→「リソース管理」→「スニペット」タブから「スニペットを作成」をクリックする。
  2. 「全般」タブの「スニペット名」にMetaTagsと入力し、「スニペット コード (php)」に次のコードをコピー&ペーストする。
    <?php
    $MetaTags = '';
    
    $id = $modx->documentObject['id'];
    $obj = $modx->getDocumentObject('id', $id);
    
    if ($obj['haskeywords'] == 1) {
        $keywords = implode(', ', $modx->getKeywords());
        $MetaTags = '<meta name="keywords" content="' . $keywords . '" />' . "\n";
    }
    
    if ($obj['hasmetatags'] == 1) {
        $tags = $modx->getMETATags();
    
        foreach ($tags as $n => $col) {
            $attr = $col['http_equiv'] ? 'http-equiv' : 'name';
            $value = strtolower($col['tag']);
            $content = $col['tagvalue'];
    
            $MetaTags .= '<meta ' . $attr . '="' . $value . '" content="' . $content . '" />' . "\n";
        }
    }
    
    return $MetaTags;
    ?>
  3. 「保存」をクリックしてスニペットを保存する。

スニペットコール

ドキュメント内のmeta要素を出力したい部分で、次のようにスニペットコールします。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
  <head profile="http://purl.org/net/ns/metaprof">
[[MetaTags]]
  <title>ページタイトル</title>
</head>
Copyright© 2006-2018 Phize on the Web All Rights Reserved.