Joomla! の Plugin を自作する(2)初期設定ページ

Joomla! の Plugin を自作する(1)の続きです。

Open Graph protocol のメタタグを自動挿入するプラグインを作っています。前回でメタタグを挿入する簡単なプラグインが出来ましたので、今回は、各ページに必要なデータがない場合に挿入するデフォルトデータをプラグインの初期設定で指定するページを作ります。



OGPの設定に必要な基本データ

The Open Graph protocol によれば、必須の基本データは次の4つになっています。

<meta property="og:title" content="ページのタイトル" />
<meta property="og:type" content="ページのタイプ" />
<meta property="og:image" content="ページのサムネイル画像" />
<meta property="og:url" content="ページのURL" />


また、オプションとして、次の7つがあげられています。

<meta property="og:description" content="1~2行のページのディスクリプション" />
<meta property="og:site_name" content="サイト名" />
<meta property="og:audio" content="A URL to an audio file to accompany this object." />
<meta property="og:determiner" content="An enum of (a, an, the, "", auto)." />
<meta property="og:locale" content="Default is en_US." />
<meta property="og:locale:alternate" content="An array of other locales this page is available in." />
<meta property="og:video" content="A URL to a video file that complements this object." />

とりあえずは上の2行でいいでしょう。


インストール XML ファイルに language, config データを追加する

<languages>
    <language tag="ja-JP">language/ja-JP/ja-JP.plg_imzopengraph.ini</language>
    <language tag="ja-JP">language/ja-JP/ja-JP.plg_imzopengraph.sys.ini</language>
</languages>
<config>
    <fields name="params">
        <fieldset name="basic">
            <field name="imzopengraphtitle" default="IMUZA.com" type="text" label="PLG_IMZOPENGRAPH_TITLE" description="PLG_IMZOPENGRAPH_TITLEDESC" />
            <field name="imzopengraphtype" type="list" default="article" label="PLG_IMZOPENGRAPH_TYPE" description="PLG_IMZOPENGRAPH_TYPEDESC">
                <option value="article">PLG_IMZOPENGRAPH_TYPE_ARTICLE</option>
                <option value="blog">PLG_IMZOPENGRAPH_TYPE_BLOG</option>
                <option value="website">PLG_IMZOPENGRAPH_TYPE_WEBSITE</option>
            </field>
            <field name="imzopengraphimage" default="" type="media" label="PLG_IMZOPENGRAPH_IMAGE" description="PLG_IMZOPENGRAPH_IMAGEDESC" />
            <field name="imzopengraphurl" default="http://www.imuza.com" type="text" label="PLG_IMZOPENGRAPH_URL" description="PLG_IMZOPENGRAPH_URLDESC" />
            <field name="imzopengraphdesc" default="" type="text" label="PLG_IMZOPENGRAPH_DESC" description="PLG_IMZOPENGRAPH_DESCDESC" />
            <field name="imzopengraphsitename" default="IMUZA.com" type="text" label="PLG_IMZOPENGRAPH_SITENAME" description="PLG_IMZOPENGRAPH_SITENAMEDESC" />
        </fieldset>
    </fields>
</config>

<language> タグ内にはインストールする言語ファイルをパス付きで書きます。

<config> タグ内にはプラグインの管理画面で設定したいパラメータを <fieldset>, <field> タグで書いていきます。<fieldset> を複数指定すればタブで切り替えられます。


言語ファイル

PLG_IMZOPENGRAPH_TITLE="ページのタイトル"
PLG_IMZOPENGRAPH_TITLEDESC="デフォルトのページのタイトルを指定します"

PLG_IMZOPENGRAPH_TYPE="ページのタイプ"
PLG_IMZOPENGRAPH_TYPEDESC="デフォルトのページのタイトルを指定します"
PLG_IMZOPENGRAPH_TYPE_ARTICLE="Article"
PLG_IMZOPENGRAPH_TYPE_BLOG="Bog"
PLG_IMZOPENGRAPH_TYPE_WEBSITE="Website"

PLG_IMZOPENGRAPH_IMAGE="ページのサムネイル画像"
PLG_IMZOPENGRAPH_IMAGEDESC="デフォルトのページのサムネイル画像を指定します"

PLG_IMZOPENGRAPH_URL="ページのURL"
PLG_IMZOPENGRAPH_URLDESC="デフォルトのページのURLを指定します"

PLG_IMZOPENGRAPH_DESC="ページの説明"
PLG_IMZOPENGRAPH_DESCDESC="デフォルトで使用されるページの説明を指定します"

PLG_IMZOPENGRAPH_SITENAME="サイト名"
PLG_IMZOPENGRAPH_SITENAMEDESC="サイト名を指定します"

imzopengraph.xml 内の言語定数に値を設定していきます。インストールされるフォルダは、プラグインの場合は administrator/language 以下の各言語フォルダ、日本語の場合は、ja-JP フォルダになります。


PLG_IMZOPENGRAPH="IMUZA Open Graph"
PLG_IMZOPENGRAPH_DESCRIPTION="各記事に Open Graph Procotol 用のデータを挿入します。各ページにデータがない場合は、プラグイン管理で指定したデフォルトデータが使用されます。"

plg_ プラグイン名.sys.ini はプラグイン管理画面に使用されます。これを利用するには、インストール xml ファイルを次のように書き換えます。


インストール xml ファイルを書き換える

<extension version="3.1" type="plugin" group="content" method="upgrade">

    <name>PLG_IMZOPENGRAPH</name>

    <description>PLG_IMZOPENGRAPH_DESCRIPTION</description>

変更分のみ示しました。

<extension> タグに method="upgrade" を入れておきますと、インストール時に上書きができるようです。これがないといったん削除しないとエラーが出ますね。

ということで、あらためて zip ファイルに固めてインストールです。


言語ファイルが読み込まれない!?

ところが、下の画像のように言葉がすべて言語定数のまま表示されてしまいます。ファイルは間違いなくインストールされていますので、タイポかシステムが言語ファイルを読み込んでいないかどちらかしかありません。

f:id:ausnichts:20170716153436p:plain


これの原因を突き止めるまでにはかなり苦労しましたが、こういうことです。


言語ファイル名は、<言語接頭子 en-GB, ja-JP, …> + “.plg” + <フォルダ名> + “” + <プラグイン名> というように、必ずフォルダ名を入れる必要があります。

今回の場合は、ja-JP.plg_content_imzopengraph.ini, ja-JP.plg_content_imzopengraph.sys.ini となり、インストール xml フィルも変更します。


<?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="content" method="upgrade">
    <name>PLG_IMZOPENGRAPH</name>
    <author>IMUZA.com</author>
    <creationDate>July 2017</creationDate>
    <copyright>Copyright (C)2017 IMUZA.com. All rights reserved.</copyright>
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <authorEmail></authorEmail>
    <authorUrl>www.imuza.com</authorUrl>
    <version>0.0.1</version>
    <description>PLG_IMZOPENGRAPH_DESCRIPTION</description>
    <files>
        <filename plugin="imzopengraph">imzopengraph.php</filename>
        <filename>index.html</filename>
    </files>
    <languages>
        <language tag="ja-JP">language/ja-JP/ja-JP.plg_content_imzopengraph.ini</language>
        <language tag="ja-JP">language/ja-JP/ja-JP.plg_content_imzopengraph.sys.ini</language>
    </languages>
    <config>
        <fields name="params">
            <fieldset name="basic">
                <field name="imzopengraphtitle" default="IMUZA.com" type="text" label="PLG_IMZOPENGRAPH_TITLE" description="PLG_IMZOPENGRAPH_TITLEDESC" />
                <field name="imzopengraphtype" type="list" default="article" label="PLG_IMZOPENGRAPH_TYPE" description="PLG_IMZOPENGRAPH_TYPEDESC">
                    <option value="article">PLG_IMZOPENGRAPH_TYPE_ARTICLE</option>
                    <option value="blog">PLG_IMZOPENGRAPH_TYPE_BLOG</option>
                    <option value="website">PLG_IMZOPENGRAPH_TYPE_WEBSITE</option>
                </field>
                <field name="imzopengraphimage" default="" type="media" label="PLG_IMZOPENGRAPH_IMAGE" description="PLG_IMZOPENGRAPH_IMAGEDESC" />
                <field name="imzopengraphurl" default="http://www.imuza.com" type="text" label="PLG_IMZOPENGRAPH_URL" description="PLG_IMZOPENGRAPH_URLDESC" />
                <field name="imzopengraphdesc" default="" type="text" label="PLG_IMZOPENGRAPH_DESC" description="PLG_IMZOPENGRAPH_DESCDESC" />
                <field name="imzopengraphsitename" default="IMUZA.com" type="text" label="PLG_IMZOPENGRAPH_SITENAME" description="PLG_IMZOPENGRAPH_SITENAMEDESC" />
            </fieldset>
        </fields>
    </config>
</extension>

現在のところ、imzopengraph.xml はこうなっています。


f:id:ausnichts:20170716152450p:plain


成功ですね。今回は設定データを表示するところまでやる予定が言語ファイルで時間をくってしまいました。次回です。