MODXの`<meta name=”description”>`の`content`属性値に、リソースの「説明」または「サイトの説明」を表示する

些細な内容ですが、久々に触って色々忘れていたのでメモしておきます。 MODXのサイトで、<meta name="description">content属性値を以下の条件で分岐して表示したいと考えました。
  • リソースの「説明(description)」が記述されていればその値を表示
  • 記述されていなければ、「グローバル設定」→「サイト」タブの中にある「サイトの悦明」を表示
簡単なスニペットを使ってやってみました。

スニペット

スニペットを新規作成(名前は仮に[[show_description]]とします)し、以下のPHPコードを記述。
$description = $modx->documentObject['description'];
$site_slogan = $modx->config['site_slogan'];

$result = '';
if(empty($description)) {
    $result = $site_slogan;
}
else {
    $result = $description;
}

return $result;
最初に2つの値を持ってきて、ごくごく単純なif文で条件分岐するだけです。

チャンク

今回はheadタグ内はチャンクに分離させていたので、チャンク内で上述のスニペットを呼び出す形としました。
<head>
    <base href="[(site_url)]">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
    <meta name="description" content="[!show_description!]"> <!-- スニペットを呼ぶ -->

<!-- 略 -->

    <title>[*pagetitle*] | [(site_name)]</title>

<!-- 略 -->
</head>

こんな形で、やりたかったことを実装することができました。ただし、1.0.15Jで検証したので1.0.22Jで動くかは未検証です。

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。