開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. CMS >
  4. baserCMS >
  5. baserCMSのヘルパーでTwitter Cardsのタグを出力
baserCMSのヘルパーでTwitter Cardsのタグを出力

baserCMSのヘルパーでTwitter Cardsのタグを出力

こんにちは、ナカエです。
先ほど記事執筆中に操作ミスで記事が消えたショックを隠しきれません。



俺、仕事が一段落したら下書きを自動保存するbaserCMSのプラグイン作るんだ……



さて、本日はTwitterのタイムラインに投稿されたURLのコンテンツ表示をコントロールできるTwitter Cardsについての話題です。
FacebookのOGPと同じく、適切に設定すればSNSでシェアされたページを目立たせることができます。


このTwitter Cards 表示用のbaserCMSヘルパーを自作します。
Twitter CardsにはPhoto Cardや Product Cardなど色々と種類がありますが、ページの概要を表示させるSummary Cardを例に取ります。



twitter_cards_validator.png

※画像は表示確認用の公式バリデーター

参考

Summary Card | Twitter Developpers


コード

テーマファイルの直下の helpers ディレクトリにphpファイルを新規作成します。

/path/to/theme/dir/helpers/bc_twittercards.php
<?php
/**
 *  Twitter Cards(summary) metaタグヘルパー クラス
 *
 * PHP versions 5
 *
 * @copyright       Nextat Inc.
 * @link            http://nextat.co.jp
 * @version         0.9.0
 * @modifiedby      2013/07/27
 * @lastmodified    2013/07/27
 * @license         MIT
 */

class BcTwittercardsHelper extends BcBaserHelper {

/**
 * カードプロパティ
 *
 * @var array
 * @access public
 */
var $cardsProperties = array();

/**
 * Twitter Cards のmetaタグを取得する
 *
 * @return string
 * @param array $properties
 * @access public
 */

function getTags($properties = array()) {
$cardsProperties = array(
'card' => 'summary',
'site' => '@nextat_inc',
'creator' => '@nextat_inc',
'title' => $this->getTitle(),
'description' => $this->getDescription(),
'image' => $this->getUrl('/', true) . 'img/sns_image.png'
);

$cardsProperties = Set::merge($cardsProperties, $properties);

$html = '';

foreach ($cardsProperties as $key => $value) {
$html .=  '<meta name="twitter:' . $key . '" content="' . $value .'">' . PHP_EOL;
}

return $html;
}

/**
 * Twitter Cards のmetaタグを出力する
 *
 * @return void
 * @param array $properties
 * @access public
 */

function tags($properties) {
echo $this->getTags($properties);
}


}
?>

使い方

$bcTwittercards->tags(array('title' => 'タイトル'));
引数の連想配列でデフォルト値を上書きできます。

正直な所

Viewに直書きしたほうが手っ取り早い感じは否めません。


TOPに戻る