cakephp3に既存プラグインを導入する

新規でプラグインを追加する場合、「bin/cake bake plugin hoge」とすれば各所にコードを追加してくれるが、新しくプラグインを導入する場合はちょっとハマることがあるのでまとめておく。

cake/vender/cakephp-plugins.phpに追加

'Hoge' => $baseDir . '/plugins/Hoge/',

cake/composer.jsonに追加

  "autoload": {
"psr-4": {
"App\\": "src/",
"Hoge\\": "./plugins/Hoge/src",//追加
}
},

cake/config\bootstrap.phpに追加

Plugin::load('AoringoOreo', ['routes' => true]);

最後にsshでcomposerのキャッシュを削除する。

$ composer dumpautoload

Adobe inDesign scriptを書くときの初期設定用スクリプト

毎回変数に諸々の設定値などを詰め込むのがめんどうなので、オレオレ設定の初期設定よう関数を作った。グローバル変数まみれなのできちんとやっている人にとっては悶絶だとは思うが、あしからず。

function initialSetting() {
//indesignファイルを配置する時の初期設定
indsignPageAttributes = app.importedPageAttributes;
indsignPageAttributes.pageNumber = 1;
//newDocuFlagによって新規にドキュメントを作るか既存のものを使うか
if (is_flag(newDocuFlag)) {
docuObj = app.documents.add();
with (docuObj.documentPreferences) {
pageWidth = "297mm";
pageHeight = "210mm";
facingPages = false;
pagesPerDocument = 1;
}
} else {
docuObj = app.activeDocument;
}
//単位をミリに設定設定
docuObj.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.MILLIMETERS;
docuObj.viewPreferences.verticalMeasurementUnits = MeasurementUnits.MILLIMETERS;
//ドキュメントの高さやマージンの設定
docuPreference = docuObj.documentPreferences;
docuPageHeight = docuPreference.pageHeight;
docuPageWidth = docuPreference.pageWidth;
//マージン関係
with (docuObj.pages[0].marginPreferences) {
top = 7;
left = 7;
right = 7;
bottom = 7;
}
//マージン取得
docuMarginTop = docuObj.pages[0].marginPreferences.top;
docuMarginLeft = docuObj.pages[0].marginPreferences.left;
docuMarginRight = docuObj.pages[0].marginPreferences.right;
docuMarginBottom = docuObj.pages[0].marginPreferences.bottom;
//マージンを差し引いたドキュメント幅
docuPageMaxWidh = docuPageWidth - docuMarginLeft - docuMarginRight;
docuPageMaxHeight = docuPageHeight - docuMarginTop - docuMarginBottom;
}
function is_flag(flag) {
if (flag !== true && fkag !== false) return flag;
return flag;
}
newDocuFlag = true;
initialSetting();

A4でドキュメントを作ったりページオブジェクトを設定したり、デフォルト単位をミリにしたりマージン用変数を作ったりといった感じ。

newDocuFlagをtrueにすれば新しくドキュメントを作ってスクリプトを始められるぜ、いえい。

php – ファイル更新日時を取得して常に最新のjsやcssファイルをユーザーに読み込ませる

基本的にブラウザはjsやcssファイルをキャッシュするので、サーバー側でファイルを更新しても最新の物を読み込んでくれるわけではない。

これを回避するには、手っ取り早いのはファイルのアドレスを変えることで別ファイルだと認識させる。

ただ、毎回ファイル名を変更するのはナンセンスなので、phpでファイル更新時間を取得し、これをアドレスに付与するようにする。

<?php $jsFile = WWW_ROOT . "js/ajax.js";
$jsTimStump = date("ymd_His", filemtime($jsFile));
echo http://hoge/ajax.js?v={$jsTimStump}

これでファイルが更新されるとアドレスが変化するようになる。

xserverのcakephp3にcomposerで外部ライブラリを導入する

基本的には「[CakePHP3] composer経由で外部ライブラリをインストール&読み込み | ガジェットとネイルが好き。」を参考にさせてもらったのだけれど、パスを通してない場合、cakephpのディレクトリで相対パスでcomposerを呼び出す。

php ../composer.phar require ~

つまりこう。

これでcakephp3のvenderにライブラリが登録される。

あとは利用したいcontollerなどの冒頭で

use ライブラリ名;

とすれば、ライブラリを利用できる。

参考

[CakePHP3] composer経由で外部ライブラリをインストール&読み込み | ガジェットとネイルが好き。

Xserverのsshで使用するphpのバージョンを変更してからcakephp3でbakeする

タイトル通りxserverに設置したcakephp3でbakeを行う・・・のだが、phpのパスを通してからではないとコマンドが通らなかった。

/usr/bin/php7.1 bin/cake.php bake all ~~

phpのバージョンを指定してやればオッケーかなと思ってたんだけれど、うまく動作してくれない。

単純なphp~で指定しても、ssh上で動作するphpのバージョンは5.3.3なので、cakephpの対象外だと怒られる。ので、パスを通した。

やり方はエックスサーバーのPHPのバージョン|レンサバ比較ガイドそのまま。


find /opt/php-*/bin -type f -name 'php'
mkdir $HOME/bin ln -s
/opt/php-7.1.2/bin/php $HOME/bin/php

.bash_profileを「PATH=$HOME/bin:$PATH」にする。

これでphpで使用するバージョンが7.1.2になり、

php bin/cake.php bake all ~~

でbakeが通る。私にもケーキが焼けた。

参考

XSERVERでssh接続→git最新版インストール→php5.6でlaravel deployまで – Qiita

エックスサーバーのPHPのバージョン|レンサバ比較ガイド

cakephp3をxserverにを導入する

sshでxserverにログインし、ディレクトリに移動。

$ curl -s https://getcomposer.org/installer | /usr/bin/php7.1

phpのバージョンを指定してからインストールする。バージョン指定していないとミスる。


{
"require": {
"monolog/monolog": "1.0.*"
}
}

composer.pharが入ったことを確認して、同じ場所にcomposer.jsonとして上記コードを配置する。やらないとmonologのバージョンが指定されていないぞって怒られる。


$ /usr/bin/php7.1 composer.phar install
$ /usr/bin/php7.1 composer.phar update

sshに戻り、phpのバージョンを指定してからcomposerのインストールとアップデート。composerの拡張子も含める。これでcomposerの導入ができる。


$ /usr/bin/php7.1 composer.phar create-project --prefer-dist cakephp/app

これでようやくcakephpが入る。

初期画面が見れた。まだ何もしていないのに、「終わった・・・」感が出てしまう。

.htaccessファイルをルートディレクトリに作って、appディレクトリにアクセスするようにする。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !/app
RewriteRule ^(.*)$ app/$1 [L]
</IfModule>

Xserverだとcakephp3.6以降でエラーが出る。

xserver環境だと、3.6以降でutf8mb4でmysqklでログインできない、と出る。cakephpの内部コードと合わないらしく、ここは手っ取り早くマイナーバージョンを指定してインストールする。


$ /usr/bin/php7.1 composer.phar create-project --prefer-dist cakephp/app:3.5.*

今度こそデータベースまで完全にOKだ。

参考

xserverにcakePHP3をインストールしてみた

CakePHP3系をレンタルサーバーで初期設定完了!エックスサーバー編。

XSERVER X10 に CakePHP 3.x をインストールする|加藤 正人|株式会社パルムゲート

wordpressの初期クイックタグボタンを削除する

wodrdpressのテキスト編集モードで最初から入っているボタンを削除する。

wordpressの記事編集機能は確かに便利だけれど、私は基本的に画像は勝手にタグ化されるし、見出しなどもマークダウン記法で統一しているので、迷うことはない。

ので、触る必要のないものはさくっと消すのが楽である。


function remove_html_editor_buttons($qt_init) {
$remove = array('strong',
'em',
'b-quote',
'img',
'ul',
'ol',
'li',
'code',
"block",
"del",
"ins",
"more",
"close",
"grunion_shortcode",
'dfw'); //ここに非表示にしたいクイックタグのIDを記述
$qt_init['buttons'] = implode(',', array_diff(explode(',', $qt_init['buttons']), $remove));
return $qt_init;
}
add_filter('quicktags_settings', 'remove_html_editor_buttons');

$removeに配列で要らないものをボコボコ入れてく。「お問い合わせフォーム」のボタンの名前がなんなのか、よくわからなかった。無念。
あとは、$qt_initでボタンを追加する時に、上記配列にあるものは取り除いてから追加する。という処理になっている。

wordpress エディタにクイックタグのボタンを追加する

ここの部分の話。wordpressではプラグインでこのクイックタグを追加するものがあるけれど、複数のブログで同じボタンを使ったり、個人的によく使う、っていうのはプラグインなしで実装できた方が楽(正確には個人開発してる汎用プラグインに詰め込んじゃえば全てのプログに適応できる)。

クイックタグAPI – WordPress Codex 日本語版

クイックタグAPIにてこれを実現できる。

functions.phpに下記を追加。QTags~の中身を編集する。


function appthemes_add_quicktags() {
?>
<script type="text/javascript">
QTags.addButton( 'eg_paragraph', 'p', '<p>', '</p>', 'p', '段落タグ', 1 );
</script>
<?php
}
add_action( 'admin_print_footer_scripts', 'appthemes_add_quicktags' );

wordpressサイト開設に際してとりあえず入れるプラグインリスト

完全に自分向けだけれど、一通り人気のwordpressプラグインを眺めて、自分のプログに導入するプラグインを選定。

ある程度の事はテーマ自体をいじったり作ったりすれば叶うのだけれど、ポコポコ新しいブログヲ作るのに毎回ソレをやっていたら、マンパワーがいくらあっても足りないので、ある程度のことはプラグインに任せたい。楽したいというのが本音(((

Ad Inserter

なにはともあれ公告。結局サイト運営費用とか諸々考えてこればっかりは外せぬ。

今まではテーマ自体をいじってコードを入れていたけれど、これを利用すると特定条件で特定場所に公告を打ち込めるみたい。便利。

自分で入れる場合は、どうしても記事とかカテゴリとか、様々なパターンで表示方法を変えてしまうので、こういうのがあると思いきれる。良き。

Auto Post Thumbnail

自動でサムネイル作ってくれるスゴイヤツ。手抜きマンの味方。

BackWPup

ブログのバックアップしてくれるすげーやつ

Imsanity

アップロードされた画像がそもそもデカかったら、指定されたサイズまで縮小してくれる。基本的に写真や絵描きのブログをしてないなら、5000pxとかの画像なんて要らないよね。というわけで、1200pxとか800pxとかで設定していると、そのサイズで保存してくれる。

Jetpack by WordPress.com

ど定番。マークダウンで記事が書けるのとアクセス解析がわかりやすいのでお気に入り。アクセス解析は色々あるけれど、全部1つでできるのでやっぱりコレが楽。

QQWorld Auto Save Images

投稿内にある画像urlを自動で自サイトにアップロードしてくれるやーつ。私は画像を基本的にgyazoでペロペロしてるので非常に助かる。他サイトへの負荷を防ぐこともできる。

WP Smush

サイト内の画像を自動で最適化してくれる・・・らしい。今回からお試し。

WP Super Cache

定番。スマホとPCで別のキャッシュを作ってくれるので、ゴリゴリ書いてると本当にお世話になる。

WP-Optimize

安定性を保つために。

Yoast SEO

SEOに必要な最低限の事を全部やってくれる。Yoastファーストでブログを作れば、そのままSEO最適化されていくので、このプラグインの癖とSEOの情報を常に仕入れておくのが本当に大事だなって。

自作プラグイン

あとは、細かな機能をひとまとめにした自作プラグインを導入。素人の頃からずっと作り込んでいるのでそろそろ全体的にリフォームしたみがある。

SiteGuard WP Plugin Page

セキュリティ関係もろもろ

WP Code Highlight.js

プログラムコード表示。軽いらしい! 軽さこそ正義