We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 23276
    • 85 Posts
    <meta name=”keywords" content="[*keywords*]" />
    というふうにしてくれたほうが汎用性があって便利なのになー。と思わなくもないです。

    同感です。気になったので、自分のところでは応急処置としてスニペットでキーワードなどを表示するようにして対応してみました。
    ひょっとしたらどなたかのお役に立つのかもしれませんのでそちらの手順も上げておきます rolleyes
    もっとスマートな方法がありそうな気もしていますが…
    そして、これだと’haskeywords’、’hasmetatags’を使うプラグインなどが間に挟まるとおかしくなるかもしれません :’(

    【1】’haskeywords’、’hasmetatags’を’0’にするプラグインを登録する
     1.適当な名前のプラグインを新規作成する
     2.下記のコードをペースト
     3.「OnParseDocument」イベントにチェックして保存

    $modx->documentObject['haskeywords'] = '0';
    $modx->documentObject['hasmetatags'] = '0';


    【2】キーワードなどを表示するスニペットを作る
     1.適当な名前のスニペットを新規作成する(ここでは例として「metaTags」にしました。)
     2.下記のコードをペーストして保存
     3.キーワードなどのmeta要素を入れたい場所に [[metaTags]] と挿入する

    <?php
    $metaTags = "";
    
    $docId = $modx->documentObject['id'];
    $docObj = $modx->getDocumentObject('id', $docId);
    
    if ($docObj['haskeywords'] == 1) {
        $keywords = implode(', ', $modx->getKeywords());
        $metaTags = '<meta name="keywords" content="' . $keywords . '" />' . "\n";
    }
    
    if ($docObj['hasmetatags'] == 1) {
        $tags = $modx->getMETATags();
        foreach ($tags as $n => $col) {
            $tag = strtolower($col['tag']);
            $tagvalue = $col['tagvalue'];
            $tagstyle = $col['http_equiv'] ? 'http-equiv' : 'name';
            $metaTags .= '<meta ' . $tagstyle . '="' . $tag . '" content="' . $tagvalue . '" />' . "\n";
        }
    }
    
    return $metaTags;
    ?>



    【おまけ】キーワードだけを取得・表示したい場合は次のようなスニペットを用意する。

    <?php
    $keywords = "";
    
    $docId = $modx->documentObject['id'];
    $docObj = $modx->getDocumentObject('id', $docId);
    
    if ($docObj['haskeywords'] == 1) {
        $keywords = implode(', ', $modx->getKeywords());
    }
    
    return $keywords;
    ?>