We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 15675
    • 11 Posts
    マネージャー画面でキーワード、ディスクリプションを設定するのは理解しているのですが、
    設定後、HTMLを確認してもそのとおりにキーワード等が埋め込まれていないと思うのですが。

    これはどういう仕組みになっているのでしょうか、初歩的な質問で申し訳ないのですが
    みなさま、ご教示のほどよろしくお願いします。
      • 19033
      • 892 Posts
      えーと。。
      こういう状態で、保存しないと、キーワードとしてページに書き出されない仕様と思いますが。。
      どうでしょう。。
        • 19033
        • 892 Posts
        ちょっと不親切な説明でごめんなさい。

        リソース>メタタグとキーワードの管理で、設定した後、
        それぞれのページのメタキーワードの画面で、上図のように
        選択状態にして、保存します。
          • 33488
          • 429 Posts
          META KEYWORDは、MEGUさんの説明の通りに選択したものが自動的にMETAタグで出力されます。
          Descriptionは、テンプレートに以下のようにMETAタグを埋め込まないと駄目だった気がします。
          <meta name=”description" content="[*description*]" />
          


          0.9.5のサンプルのテンプレートには入ってなかったので、たぶんそうかと
            • 19033
            • 892 Posts
            あれ。。?
            リソース>メタタグとキーワードの管理で、設定して
            各ドキュメントで、その登録したメタタグを選んで保存。。すると
            descriptionもhtmlに書き出されますよね。。??
            ...違う事言ってます…?^^;
              • 33488
              • 429 Posts
              あれ? 自動で埋め込まれました??
              おいらのがおかしいのかも・・・
                • 19033
                • 892 Posts
                えっと。確認しました。
                リソース>メタタグとキーワードの管理でmetadescription01.gifの様に設定して
                各ドキュメントのメタキーワードでmetadescription02.gifの様に選んで保存。
                で、書き出されます。
                  • 33488
                  • 429 Posts
                  META管理の方でしたね すっかり、間違えた。
                  ドキュメントの説明(Description)をMETAに利用する方だと思いました(^^;

                    • 23276
                    • 85 Posts
                    こんばんは、Phizeです。
                    どうしてもMetaタグ・キーワードが自動で出力されず困っていました。
                    みなさん、問題なく(?)出力されているとのことで、ふとインストール時のテンプレートに戻してみたところうまくいきました。

                    結果、なぜ私のテンプレートでうまくいかなかったのかがわかりましたので、
                    同じような方の参考になりましたらと思い、ご報告させていただきます(すでに出てましたらすみません)。

                    ドキュメントでMetaタグ・キーワードの設定を正しくしているにもかかわらず、meta要素が自動出力されないと言う方は、head要素の開始タグを疑ってみてください。
                    開始タグが「<head>」以外の場合、つまり、空白文字があったり、profile属性等の属性の記述がある場合にはmeta要素が出力されません。
                    属性を記述したい場合には、プラグインの作成、あるいは、コアスクリプトの改造の必要があります。

                    原因となっている箇所があるのは、/manager/includes/document.parser.class.inc.php の mergeDocumentMETATagsメソッドです。
                    下記のようなプラグインを作成すると、空白文字、属性の有無にかかわらずmeta要素が出力されるようになります。

                    【環境】
                    XREA(PHP4 + MySQL 4.0.26) + MODx 0.9.6

                    【解決策】
                    1.新しくプラグインを作ります(名前は適当に決めてください)
                    2.プラグインコードに下記のコードをコピー&ペーストします
                    3.「システムイベント」タブで「OnParseDocument」イベントにチェックをつけます
                    4.プラグインを「保存」します
                    5.これでmeta要素が正しく出力されるようになります


                    $event = &$modx->Event;
                    
                    if ($event->name == 'OnParseDocument') {
                            if ($modx->documentObject['haskeywords'] == 1) {
                                // insert keywords
                                $keywords= implode(", ", $modx->getKeywords());
                                $metas= "\t<meta name=\"keywords\" content=\"$keywords\" />\n";
                    
                    	    // Don't process when cached
                    	    $modx->documentObject['haskeywords'] = '0';
                            }
                            if ($modx->documentObject['hasmetatags'] == 1) {
                                // insert meta tags
                                $tags= $modx->getMETATags();
                                foreach ($tags as $n => $col) {
                                    $tag= strtolower($col['tag']);
                                    $tagvalue= $col['tagvalue'];
                                    $tagstyle= $col['http_equiv'] ? 'http-equiv' : 'name';
                                    $metas .= "\t<meta $tagstyle=\"$tag\" content=\"$tagvalue\" />\n";
                                }
                    
                    	    // Don't process when cached
                    	    $modx->documentObject['hasmetatags'] = '0';
                            }
                    
                    	if ($metas) {
                                $template = &$modx->documentOutput;
                                $template = preg_replace("/(<(\s*)head(\s*)(.*?)(\s*)>)/i", "\\1\n\t" . trim($metas), $template);
                            }
                    }


                    (あまりよい正規表現ではないと思いますので、もっとよい書き方がありましたらご教示いただけましたら幸いです。)

                    ドキュメントオブジェクトの’haskeywords’、’hasmetatags’の値は、
                    meta要素の挿入の可否に関わらず、このプラグイン、またはmergeDocumentMETATagsメソッドが呼ばれた時点で「0」となってしまいます。
                    スニペット等でこれらのドキュメントオブジェクトの値を利用したい場合は、事前にgetDocumentObjectメソッドを呼んでDBから取得する必要がありそうです。
                    • この部分、
                      <meta name=”keywords" content="[*keywords*]" />

                      というふうにしてくれたほうが汎用性があって便利なのになー。と思わなくもないです。
                      今の仕様だとDreamweaverなどでまるごと作ったテンプレートを外部ファイルとして
                      読み込んだ時、この機能が働かないんですよねー。。