特定ページのみjavascriptを読み込む(concrete5の使い方)

concrete5の使い方ネタです。今回は、「特定ページでjavascriptを読み込む」です。弊社運営のメディア計算フォームで、ページごとに広告(アドセンス)を表示する・表示しないを選択できるようにするため、コードを書きました。

やりたいこと

特定のページでのみ、javascriptをヘッダーに出力する。

実装

  • ページ属性でフラグを立てる(下のコード例では、show_adsenseというページ属性にしています)
  • ページ表示時に、ページ属性をチェックして、javascriptを表示するかを決める

この2つを、on_page_view()で行っています。

この処理をconcrete5に登録するために、イベント機能を利用しています。

書いたコード

<?php
namespace Concrete\Package\OunziwAdsense;

defined('C5_EXECUTE') or die(_("Access Denied."));

use Concrete\Core\Support\Facade\Events;
use Concrete\Core\View\View;
use Concrete\Core\Page\Page;
use Concrete\Core\Package\Package;

class Controller extends Package
{
    protected $pkgHandle = 'ounziw_adsense'; // パッケージ名
    protected $appVersionRequired = '8.3'; // concrete5 の対応バージョン。古いバージョンでも動作するかもしれないが未検証
    protected $pkgVersion = '0.8'; // このプログラムのバージョン

    public function getPackageDescription()
    {
        return t("");
    }
    public function getPackageName()
    {
        return t("Adsense");
    }

    public function on_start() {
        // イベント機能を使って、ページ読み込み時に実行する処理を登録
        Events::addListener('on_page_view', array($this, 'on_page_view'));
    }

    // ページ読み込み時に実行する処理の中身
    public function on_page_view() {
        $adsensecode = '
<script> ... </script> // javascriptをここに挿入する
';
        $c = Page::getCurrentPage(); // 現在のページを取得
        if ($c->getAttribute('show_adsense')) { // 現在のページのページ属性をチェック
            $view = View::getInstance();
            $view->addHeaderItem($adsensecode); // $adsensecodeをヘッダーに出力する
        }

    }
}

このコードを、packages/ounziw_adsense/フォルダに、controller.phpという名前で設置します。管理画面からパッケージ有効化すると、コードが有効になります。

記事公開日: 2018年04月02日
#

もしもアフィリエイトは固定費がかかりません。このため、ア... 詳細はこちら

今回は様々な人が参加できるように、ということで、他のCMS(W... 詳細はこちら

#

弊社のウェブサイトで使用しているconcrete5で、Facebookアカ... 詳細はこちら