フリーランスのためのネットビジネス専門学校 ネットで独立開業を目指す人を応援
フリーランスのためのネットビジネス専門学校 ネットで独立開業を目指す人を応援

OctoberCMSにComposerで非Composer対応プラグインをインストールする

概要

Packagistに登録されていない and/or composer.jsonが無いプラグインをcomposerでインストール&管理する方法を紹介する。

OctoberCMSのプロジェクトにcomposerでプラグインを追加する際、対象のプラグインがPackagistに登録されていないと、composer requireだけではインストール出来ない。

また、対象のプラグインがソースにcomposer.jsonを含んでいないと適切にインストールされない。

が、それでもcomposerでインストール&管理する手段がある。
自分のプロジェクト(または自分のプラグイン)のcomposer.jsonで、ソースを取得してくる場所を指定し、プラグインが定義しているべき情報を代わりに定義してやればよい。

取得場所の指定

自分のプロジェクトまたはプラグインのcomposer.jsonにrepositoriesを定義して、ソースコードの取得場所を指定する。これによりPackagsitに登録されていなくてもダウンロードできるようになる。

{
    ...
    "require": {
        ...
        "simplicitylab/blogfeaturedvideo": "dev-master",
        ...
    },
    "repositories": [
        ...
        {
            "url": "https://github.com/simplicitylab/blogfeaturedvideo",
            "type": "git",
        },
        ...

これで、composer updateすると、GitHubのmasterブランチからソースを取ってきてくれる。しかし、これだとvendorディレクトリにインストールされてプラグインとしては認識されない。

プラグインとして認識させる

プラグインとして認識させるには、自分のcomposer.jsonで代わりにそのプラグインの情報を定義してやる。ここの例だと、最終的には下記のようにすれば、プラグインディレクトリにインストールされてコンポー年やモデルなどが認識されるようになる。

{
    ...
    "require": {
        ...
        "simplicitylab/oc-blogfeaturedvideo-plugin": "dev-master",
        ...
    },
    "repositories": [
        ...
        {
            "type": "package",
            "package": {
                "name": "simplicitylab/oc-blogfeaturedvideo-plugin",
                "type": "october-plugin",
                "version": "dev-master",
                "source": {
                    "url": "https://github.com/simplicitylab/blogfeaturedvideo",
                    "type": "git",
                    "reference": "master"
                }
            }
        },
        ...

だいたい見ればわかると思うが、"type": "october-plugin"を指定することで適切にプラグインディレクトリにインストールしてくれる。

そして、注意すべきなのはnameで、ネームスペースと関係するディレクトリ構成を決定するものなので、ネームスペースを確認して決定する必要がある。

このプラグインの場合、ソースコードを見るとネームスペースは下記のようになっている。

namespace SimplicitylabBlogFeaturedVideo;

なので、ディレクトリ構成はplugins/simplicitylab/blogfeaturedvideoとなる必要がある。

よって作者名はsimplicitylab。また、プラグイン名はOctoberCMSのネーミング規約からoc-プレフィックスと-pluginポストフィックスをつける。

ということで、パッケージ名はsimplicitylab/oc-blogfeaturedvideo-pluginとなる。すべて小文字。これを上記のようにnamerequireのところに記述する。
このプラグインは比較的そのままのパッケージ名になったが、中にはGitHub上のレポジトリ名がパッケージ名と大きく異なるケースもある。

Class not foundになる場合

Screen Shot 2018-09-03 at 14.32.46.png

ファイルが存在しているのに、クラスが見つからないというエラーが発生した場合、再度、先の手順で勝手に決めた作者名とパッケージ名が全て小文字になっているか確認する。

作者名とパッケージ名作者名とパッケージ名がキャメルケースなどになっていると、この様なエラーが発生するようだ。

[紹介元] PHPタグが付けられた新着投稿 – Qiita OctoberCMSにComposerで非Composer対応プラグインをインストールする

コメント

記事に戻る

コメントを残す