エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定

      2019/09/28

CakePHP3のOGPはHTMLヘルパーとエレメントを利用して設定すると便利

 

CakePHP3で OGPを設定する方法も用意されている

 
CakePHP3の Cookbookには「OGPを設定する方法はこれです!」という感じの解説はありませんので、検索しても Cookbook以外にも「これ!」という解説の記事は見つかりませんでした。
 
ですが、「CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する」で解説しましたが、CakePHP3では metaタグを編集する HTMLヘルパーが用意されていますので、これを利用すると OGPのタグも設定することができます。
 
 
なお、この記事では OGPのアプリIDの取得方法などについては解説していませんので、別途検索してください。
 
 

CakePHP3で metaタグを編集する基本形

 
CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する」で解説しましたが、metaタグを編集する基本形は以下のようになります。
記述する場所は、「/src/Template/Topics/view.ctp」などのテンプレートファイルになります。
 

 
出力結果は以下のようになります。
 

 
 
ちなみに、レイアウトファイル(/src/Template/Layout/default.ctp)の 32行目あたりの「<?= $this->fetch(‘meta’) ?>」の記述があるので、metaタグとして出力されます。
 
 

CakePHP3で metaタグを編集する応用編・OGPのタグを編集

 
$this->Html->meta()」の 1つ目のパラメーターは、文字列で指定した場合は name属性の値を指定したものとして処理されます。
 
ですが、1つ目のパラメーターを下記のように配列で指定することもでき、配列で指定する場合は、属性とその値をそれぞれ指定することができるようになっています。
 

 
上記の記述をすると、出力結果の HTMLは以下のようになります。
 

 
そのため、上記のように配列で OGPに必要な属性を指定することで、OGPの metaタグを編集することができるようになるのです。
 
 
1つ目のパラメーターを配列で指定した場合は、2つ目のパラメーターは無視されるようで、「content」の値も 1つ目のパラメーターの配列の中に入れる必要があります。
 
また、3つ目のパラメーター「"block"=>true」は、metaタグを headタグ内に記述するために必須の設定になります。
 
そのため、2つ目のパラメーターもなにか記述する必要がありますが(何も書かないとエラーになりますが)、何を書いても無視されるため、何を書いても問題ありません。
上記のサンプルのように「null」や「false」などを書いておくと後々混乱せずにすむでしょう。
 
3つ目のパラメーターについては、「CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する」に詳しく書いていますので、そちらを参考にしてください。
 
 

OGPの部分をエレメントとして別ファイルにする方法

 
先に解説した内容で、OGPに必要な metaタグの処理「$this->Html->meta()」をテンプレートファイル内に記述しても OGPとして機能はしますが、いくつものテンプレートに同じような内容を記述する必要があり、メンテナンス性が高くありません。
そのため、OGPの部分はエレメント(パーツ)として別ファイルとして管理したほうが便利になります。
 
 

OGPのタグをエレメントファイル ogpElement.ctpとして編集

 
まず最初に、OGPとして記述する内容をエレメントとして取り出します。
 
生成するファイルのパス付きファイル名は以下になります。
/src/Template/Element/ogpElement.ctp
 
そこに下記の内容を記述します。
 

 
ここでは「og:title」「og:url」「og:description」を変数としていますが、実際に設定する場合は「og:type」「og:image」も変数として指定する必要があります。
 
 

テンプレートファイル view.ctpの変更

 
そして、各ページのテンプレート側は下記のように修正します。
 
パス付きのファイル名は以下になります。
/src/Template/Topics/view.ctp
 

 
先程作成したエレメントファイルを「$this->element()」で読み込みます。
 
1つ目のパラメーターが、エレメントのファイル名になります。
2つ目のパラメーターが、エレメントに渡す変数を指定箇所になります。配列で指定できますので、必要に応じていくつでも指定することができます。
 
 
これで、OGPに必要なタグを編集することができました。
 
 
今回は、HTMLヘルパーを使って OGPを指定しましたが、オリジナルのブロックを生成し、そこに OGPを編集する方法もあります。
fetch、asignを利用して OGPを編集したい場合は下記の記事を参考にしてください。
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
 
 

サイト全体に共通する処理をページごとに切り替える処理

 
今回は、サイト全体に共通して指定をする必要はあるものの、ページごとにそれぞれ違うテキストを切り替えて編集していく必要がある metaタグの一種である OGPを指定する方法を解説しました。
 
 
同じような考え方をする仕組みとして、下記の記事で書いている titleタグ、h1タグの値を指定する方法や、使用する JavaScriptや CSSをページごとに設定する方法、パンくずを指定する方法、metaタグの「keywords」「description」を指定する方法などにも活用することができます。
CakePHP3で /Layout/defult.ctpにある titleタグ、h1タグを編集する方法
CakePHP3でページごとに読み込むJavaScript、CSSを変える処理の解説
CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
 
 
これらは、レイアウトファイルに変数を指定しておき、そこに編集する値を各ページ用のテンプレートファイルで指定する、という仕組みです。
 
 

CakePHP3の関連記事

CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する
CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合
CakePHP3でCookieを保存、呼び出し、削除の操作・CakePHP3.7対応
CakePHP3でアソシエーション先のカラムでデータをソートして取得したい
CakePHP3のdatetime型カラムの日時の扱い。秒まで正しく表示する方法
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 2.x 3.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP3でWarning Error: SplFileInfo::openFile()エラーが発生した場合の対処方法
CakePHP3でWarning Error: SplFileInfo::openFile()エラーが発生した場合の対処方法

CakePHP3のキャッシュファイルのパーミッションエラー Error: SplFileInfo::openFile()が発生した場合の対応方法解説。app.phpにキャッシュファイルのパーミッション設定を行い、既存のファイルは削除。

URL短縮サービス「TTTオンライン(https://ttt.onl)」公開
URL短縮サービス「TTTオンライン(https://ttt.onl)」公開

URL短縮サービス「TTTオンライン(https://ttt.onl)」を公開。メールやSNSでは使いにくい長いURLを短いURLに変換するサービス。QRコードも。Google URL Shortenerが2019年3月にサービス終了。

CakePHP3のUpload Plugin 3.0をバリデーションなど実運用向けのカスタマイズ方法解説・その2
CakePHP3のUpload Plugin 3.0をバリデーションなど実運用向けのカスタマイズ方法解説・その2

CakePHP3でファイル、画像をアップロードするプラグイン、upload plugin 3を導入する手順を解説した記事。3部作のその2でバリデーションなどの実用的なカスタマイズ方法を解説。

CakePHP3にWYSIWYGエディタのCKEditor4を設置、カスタマイズ方法を解説
CakePHP3にWYSIWYGエディタのCKEditor4を設置、カスタマイズ方法を解説

WYSIWYGエディタであるCKEditor4をCDNを利用して簡単にCakePHP3に導入する方法とカスタマイズする方法を解説。CakePHP3にはページごとの振り分けを行うブロック化を利用する。

CakePHP3で生の SQLの実行はConnectionManagerを使う
CakePHP3で生の SQLの実行はConnectionManagerを使う

CakePHP3で生の SQL文を実行する方法を解説。クリエビルダーを使う場合は TableRegistryを利用するが、SQLを実行する場合は ConnectionManagerを使う。プリペアードステートメントの使用方法も解説。

CakePHP3のHtmlHelperのLink設定のまとめ。mailto、URL、Root/Homeのリンクなども
CakePHP3のHtmlHelperのLink設定のまとめ。mailto、URL、Root/Homeのリンクなども

CakePHP3でHtmlHelperを使ってリンクの設定をする方法のまとめ。基本形からURLを指定、class、id、targetを指定、mailtoのリンク、画像をアンカーに、JavaScriptのダイアログなどの解説。

CakePHP3のアソシエーション機能を使い関連レコードをまとめて削除

CakePHP3でレコードを削除する際に関連するレコードをまとめて削除する機能の解説。フレームワークのメリットを存分に発揮し、コマンドを1行追加するだけで実装可能。

CakePHP3の更新画面でUpload Plugin 3.0を使う方法、viewで使う方法解説・その3
CakePHP3の更新画面でUpload Plugin 3.0を使う方法、viewで使う方法解説・その3

CakePHP3でファイル、画像をアップロードするプラグイン、upload plugin 3を導入する手順を解説した記事。3部作のその3で記事を更新する際のファイルの取り回しなどについてを解説。

CakePHP3でassociatedを使って関連データをまとめて保存する方法(hasOne、hasMany、belongsTo)

CakePHP3で関連データをまとめて保存する方法。hasOne、hasMany、belongsTo等の関連データはassociatedを追加することでまとめて保存することができます。

Google Analytics APIを CakePHP3で動かしてレポートデータを取得する方法の解説
Google Analytics APIを CakePHP3で動かしてレポートデータを取得する方法の解説

CakePHP3で Google Analytics APIからレポートデータを取得する処理の解説。PHPのサンプルソースをCakePHP3で動くように改造。加えて、ディメンションやメトリックスを条件に設定する方法なども。