MENU

ブログ

ブログページです

リンパドレナージュ体験 - くつろぎのいえ

青々と茂ったオリーブの木の下、白いウッドデッキから中へ入ると、自宅の一部とは思えない、落ち着いた空間。

たまに息が苦しくなる程、肩こり背こり首こりが酷い時に、駆け込み寺(救命救急?)の様にいつも助けていただいている、くつろぎのいえです。

「今日はどうしたの?調子はどう?」
癒やし効果抜群の優しい声で、まきこさんが話を聞いてくれます♡

「施術時間とってもらってたのに、子ども預けてこられなかったー><」
「大丈夫よー。調子がいい間に足と背中流しちゃいましょう!」

マリア様ですか!?

というような感じで、おもちゃやスマホを駆使してご機嫌取りながら、施術をすることに。

 

子守りしながらの施術をさせてしまってごめんなさい(T_T)

でも至福の時間が始まります♡

 

身体に語りかける施術(ぎっくり腰のポイント?)

尾骨の周辺のマッサージをされているとき、なんだか痛ぎもちいいなぁと思っていたら、

「ここ張ってますね」

と言われて、今まで気づかなかった所が滞っていたんだなぁと初めて実感しました。

 

そういえば、ぎっくり腰になった時、整骨院の先生がよく尾骨押して整えてくださる所です。

もしや、ぎっくり腰の原因!?

自分でも気づかないのに、調子が悪い所が分かるのー!と感動していたら、
 

「直接触れて、身体に語りかけるんですよ。そこで滞っている所を身体で感じるんです。
施術を受けている人と施術者、身体と身体が触れあうというのは、そこでお互いのエネルギーの交流があるということなんです。」

 

お互いの相性ってとても大事で、合わない時は逆に体調が悪くなってしまうこともあるそうです。

そのときどきで体調も違うので、じっくりと触って感じて悪い所をほぐして流してもらえてると感じるのは、とても安心します。

首肩のひどい痛み

肩は万年凝ってます。
酷いと息が苦しくなります。
最近、腕の付け根が痛くて、腕を上にあげるのが辛い時があります。
ロキソニンテープ貼るとしばらくいいのだけど、またすぐ悪くなっちゃいます。。。

そんな話をしていたら、これ、炎症や痛みに効くから塗っておくね〜と、すーっといいにおいがしてきました。

doTERRAのdeep BLUE RUB。

肩甲骨周りを流してもらっている時に、娘の機嫌がもたなくなってきたので、仰向けにチェンジ。
施術台の上でラッコちゃんのように抱っこして施術再開。

「うーん、、でもあとちょっと肩甲骨流したい!」

と、仰向けのまま、背中の下に両手を差し込んで、ぐぐぐっと刺激してくれて、それが超きもち良くて、心の中でもう一回!もう一回!と叫んでました。

そんなこんなしている内に、ぐずりだした娘も私のおなかの上で寝てしまいました。

心地よい音楽の中で、お顔のリンパ(特に目の周りが気持ちよかった!)も流してもらい、頭のツボもこんなにポイントあったのかーと思うほどじっくりゆっくり刺激して頂きました。

お顔のリンパを流してもらった後の、帰りのメイクはここで。

こんな素敵な鏡がうちにもあったらな〜。

終了後はほっと一息ティータイム。

身体の悪いものを排出するためにも、終わった後のお茶は嬉しいです。

今日はジャスミンティーでした。

お茶をいただいていたら、娘もお昼寝から目覚めてすっきり。

ブランコで遊んでご機嫌で帰ってきました。

とにかく眠たい

あっという間の90分(実際120分くらいだったかも)
自宅について、しばらくすると、眠たい。眠たい。眠たい。
夏休みにプールに行ってきた日の午後を思い出すような、けだるーい感じ。

リンパドレナージュって、全身運動したのと同じ効果があるってこれのことかな?
ぐっすり眠って寝起きはスッキリ。
またしばらく頑張れそうです。

2週間に1回くらいのペースがオススメらしいので、またお世話になります♡

「くつろぎのいえ」にご興味のある方はこちらからどうぞ

http://kutsuroginoie.com/

≫ 続きを読む

2017/09/22        admin   |    タグ:雑記

baserCMSをバージョンアップしたら管理画面ダッシュボードにエラーが表示される時にできること

baserCMSの4.0.1から4.0.5.1にアップしたら、突然管理画面にエラーが表示されるようになりました。

処理に失敗しました。

(404) Nor Found
Error: The request sent to the address '/undefined/contents/ajax_contents_info' was invalid.

20348216_10155589513447277_963490422_o.png

〇システムナビ → ユーティリティ → アセットファイル再配置

※管理システム用のアセットファイル(画像、CSS、Javascript)を削除したり、コアパッケージよりサイトルートフォルダに再配置します。

〇サーバーキャッシュは、いつもおまじないの様に削除します。

〇ブラウザのキャッシュも削除。(私はここで躓きました)

これで無事にエラーが解消されました。

≫ 続きを読む

2017/07/25        admin   |    タグ:baserCMS

baserCMSで本文が長すぎて保存できない時

baserCMSで記事を登録するときに、本文が長すぎて保存できない場合はMySQLの型変更をすると保存できるようになりました。

mysite_pages > contents

型がtextだったので、これをmediumtextへ変更しました。

これでも足りない場合はlongtextに変更したらいいかも!
大は小を兼ねるのであればlongtextにしたいところだけどmin値があるみたいなので長さに応じて変更が必要かもしれません。

 

min max
1 255 TINYTEXT
256 65535 TEXT
65536 16777215 MEDIUMTEXT
16777216 4294967295 LONGTEXT

 

今回は固定ページだったけれど、ブログ本文でも同じかな。

≫ 続きを読む

2016/12/20        admin   |    タグ:baserCMS

開発版のbaserCMSコアを反映させる方法

開発版の入手先
https://github.com/baserproject/basercms

■ 開発版のバージョン確認

/lib/Baser/VERSION.txt は、baserCMSのバージョン番号が記述されているファイルです。
このファイルに、末尾「-dev」のバージョンが記載されているものが、開発版になります。

■ 開発版をアップデートする前に

開発版コアのアップデートもリリース版と同様、バージョンによってはアップデートスクリプトを実行してDBデータを更新する必要があります。

データベースの更新が不要な場合
データベースの更新が必要な場合

 

■ アップデートスクリプト確認方法

DBデータ更新の必要性は、バージョンアップスクリプトの有無で判断します。
バージョンアップスクリプトが存在する場合は、以下のフォルダ内にバージョン番号と同じフォルダ名で格納されています。
/lib/Baser/Config/update/

・データベースの更新が不要な場合

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
/lib/Baser/ フォルダをダウンロードしたファイルで上書き
※メンテナンス画面に遷移される場合は、/lib/Baser/VERSION.txtを上書きする前の番号に戻します。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

・データベースの更新が必要な場合

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. /lib/Baser/ フォルダをダウンロードしたファイルで上書き
2. /lib/Baser/VERSION.txt の1行目が-dev付きの番号の場合は、プログラムを反映する前のバージョン(例:4.0.0) に書き換える
3. ブラウザで管理画面にログイン
4. ブラウザで、/admin/updaters/exec_script にアクセス
5. タイプをコア、バージョンを プログラム反映後のバージョン(-devを取り除いたバージョン 例:4.0.1) と入力し実行
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

■データベース格納のバージョン番号と、ファイル記述のバージョン番号

例えば、4.0.0 で利用していた場合、データベース内(site_configs)に、4.0.0 という情報が保存されています。
この番号と、/lib/Baser/VERSION.txt の番号が違う場合、メンテナンス画面に強制遷移しています。
上記2つの番号を合わせる為に、アップデーターによってアップデートを行う事になります。

ただし、開発版の場合、4.0.0-dev みたいな感じに-devが付与されていて、アップデーターが動作しない仕様となっています。
これは、開発版のアップデーターが中途半端な状態である可能性が高い為、「サポートしていない」という事を意味しているようです。

サポートしていないバージョンなのであれば、VERSION.txt との相違は気にせず、メンテナンス画面に遷移しないようにしようという事になります。
その場合、データベースの更新がない場合は、上書きしたVERSION.txt を元の番号に戻す(=データベースに保存されているバージョン番号と同じにする)だけでいいのですが、データベースの更新が発生している場合は、スクリプトを実行する必要があるという事になります。

 

※ 開発版はあくまで開発版なので不具合が存在する可能性がある事を認識した上で利用しましょう。

 

株式会社キャッチアップ 江頭さん 監修

≫ 続きを読む

2016/11/22        admin   |    タグ:baserCMS

a-blog cms の管理画面のリンクが全て別ウィンドウになってしまう対策

a-blog cms バージョン2.6.0 をローカル環境(MAMP)にインストールした所、管理画面のどのリンクをクリックしても別タブで開いてしまって困ってました。

外部リンクを新しいウィンドウで開かないようにする方法 を参考にさせていただき、a-blog cms をインストールしたフォルダの js/config.js の 574 行目にある

linkOutsideBlankMark : 'a:not([target])',

と言う記述を次のように変更しました。

linkOutsideBlankMark : '',

すると、全てのリンクが同じウィンドウで開くようになりました。管理画面のリンクは http:// から始まるアドレスのソースになっているため、外部リンクと判断してしまっていたようです。

≫ 続きを読む

2016/01/28        admin   |   

5/21に引っ越しが決定しました

引っ越しします!

と言っても市内移動なのですが、当初引っ越し予定だった4/20からずれずれでやっと5/21に引っ越しが決定しました。多分今度が最終決定・・・だといいな。

3月前半には引っ越しのお見積もりに来ていただいて契約したものの、まだ引っ越し予定日がはっきりしてなくて、置いて行かれた段ボールの束が部屋を圧迫してました。。。

そろそろかなー?と4月頭辺りから梱包作業を少しずつ始めたものの、最終的には1ヶ月余り遅くなってしまったので1回梱包した段ボールからガムテープはがして出したり戻したり(^_^;)どこまで梱包してしまうか判断が難しくて悩みどころです。前日辺りに一気にやってしまうのが正解かもしれないですね!

そんな生活もあと10日程で終わります。

引っ越しした後の片付けの一仕事もありますが、お近くにお立ち寄りの際はお越しくださいませ♪

≫ 続きを読む

2014/05/12        admin   |    タグ:雑記

MacFusionでマウントするまでのメモ

・Xcodeのインストール

起動してagreeする

 

Command Line Tools for Xcodeを入れる

http://docwiki.embarcadero.com/RADStudio/XE4/ja/Mac_%E3%81%A7%E3%81%AE_Xcode_%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89_%E3%83%A9%E3%82%A4%E3%83%B3_%E3%83%84%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

Mac 上で必要な Xcode ツールを Xcode からインストールするには:

Mac 上で Xcode を起動します。

Xcode のメニューから[Preferences]を選択します。

[General]パネルで[Downloads]をクリックします。

[Downloads]ウィンドウで[Components]タブを選択します。

[Command Line Tools]の横の[Install]ボタンをクリックします。

インストールの途中で Apple Developer としてログインするよう求められます。

 

・FUSE for OS X

最新版じゃ動かなかった

http://www.matthewratzloff.com/blog/2012/03/12/macfusion-on-os-x-lion/

http://www.tuxera.com/mac/macfuse-core-10.5-2.1.9.dmg

 

・homebrewのインストール

/usr/bin/ruby -e "$(curl -fsSL https://raw.github.com/gist/323731)"

 

brew doctor

brew -v

githubも入れないとだめかも

 

・sshfsのインストール

brew install sshfs

 

コマンドラインからマウントする時に必要なこと

http://blog.inouetakuya.info/entry/20130429/1367239233

$ sudo /bin/cp -rfX /usr/local/Cellar/fuse4x-kext/0.9.2/Library/Extensions/fuse4x.kext /Library/Extensions

$ sudo chmod +s /Library/Extensions/fuse4x.kext/Support/load_fuse4x

 

・Macfusionのインストールと設定

http://macfusionapp.org/

≫ 続きを読む

2013/11/19        admin   |    タグ:mac

baserCMSの最新版 2.1.0 の新機能紹介

4/5にリリースされた新しいbaserCMSは、21個も新機能が追加されて、どれも魅力的なものばかりです。先日baserCafeで色々教えていただいたので、その中でも、これはどこかで使えそうだと思ったものをいくつかご紹介します。





1. 初期データ書き出し・読み込み機能

管理画面のテーマ管理のレイアウトが変わってとても見やすくなりましたね。テーマコンテスト2012グランプリ受賞テーマの「nada icons」も標準梱包テーマとして組み込まれています。そしてそこには、「初期データ読込」というボタンが追加されています。

このボタン、気軽に押してはいけません!
危険ボタンだけあって、ちゃんとアラートがポップアップして警告してくれますが、そこには以下のように書かれています。

初期データを読み込みます。よろしいですか?

※ 初期データを読み込むと現在登録されている記事データや設定は全て上書きされますのでご注意ください。
※ プラグイン管理情報、管理ログは読み込まれず、ユーザー情報はログインしているユーザーのみに初期化されます。

システム管理的な情報も、固定ページのコンテンツも、頑張って書いたブログも全て初期状態に戻ります。

でもこれ、ちゃんと使えばとっても便利な機能なんです。
よく制作するサイトに共通点がある場合とかは、マイ初期データを作っておいて、それを読み込んでから作り込むと同じことを何度もする必要がなくなります。素敵ですね!

さっきのテーマ管理ページのサブメニューにある、「テーマ用初期データダウンロード」リンクをクリックして、サイトとして作り込んだデータをダウンロードします。

初期データ読み込みの時と同じように、アラートが表示されます。

現在のデータベースの状態を元にテーマ用の初期データを生成しダウンロードします。よろしいですか?
ダウンロードしたデータは、配布用テーマの

/{使用しているテーマディレクトリ}/config/data/

内に配置してください。

アラートに出ているように、テーマディレクトリの中に、configというディレクトリを作成して、その中にdataというディレクトリを作成します。初期データのアーカイブがダウンロードできるので、それを解凍したものを作成した

/{使用しているテーマディレクトリ}/config/data/hogehoge/

の中に配置します。hogehogeは初期データ名になります。自分の好きな名前を付けてください。
すると、「初期データ読込」ボタンの左側にあるセレクタの中に、作成した初期データが選択できるようになるので、選んで読み込みます。

ここで注意なのですが、初期データをダウンロードした時の「現在のテーマ」の情報も一緒にダウンロードされます。これを読み込むと、現在のテーマも書き換えることになります。ダウンロードした時のテーマと読み込み先のテーマが同じなら問題ないですが、もし違う場合はいきなりテーマが変わってしまってびっくりするかもしれません。もし読み込み先にそのテーマが存在しない場合はエラーになってしまいます。
そこで、初期データを読み込んでも「現在のテーマ」を書き換えないようにするための方法があります。

初期データの site_configs.csv というファイルを開いて見てみると、現在のテーマの情報として、

"","theme","noda-icons","",""

という行があるので、その情報をからっぽにしてしまいます。

"","theme","","",""

こうしておくと、読み込んだ時にテーマが変わってしまうということはなくなります。

例えばローカル環境で開発して、固定ページもお問い合わせも作り込んで、グローバルナビも設定して、ブログのレイアウト指定なんかもしている場合、制作完了していざ本番サーバーへ乗せ替えるぞ!なんて時は、サーバーの管理画面でもう一回同じことしないといけないなんて面倒くさいですよね。
SQLダンプしてサーバーにインポート、というプログラマ的な解決方法もありますが、この機能を使えば気軽に簡単に乗せ替えすることができるのです。

ローカルからサーバーへの乗せ替えの場合は、初期データというよりは完成データなのですが、baserCMS的にはダウンロード&読み込みできるデータは初期データという名前で扱うようです。
私はこの使い方で利用することが多くなりそうです。便利そうですよね!

2. 隠しコード機能

固定ページの中にソースビューでphpやjsを書くことってたまにありますよね。たとえばレイアウトを指定したり、ちょっとしたjsを書いたり。でもデザインビューで編集していると、知らない内に削除してしまったりってあると思います。特に、自分で更新する場合はいいけれど、別の方が管理する時にはちょっと心配になりますよね。そんな時にこの隠しコードに記述しておくと、安心です。
隠しコードは、固定ページ下部のオプションボタンをクリックすると出てきます。オプションの中に隠れているから隠しコードってことですね?ね!?

本来の目的とは外れるかもしれませんが、実はこのフィールド、PHPやJSに限らずHTMLも書けちゃいます。入力したコードは、自動的にコンテンツ本体の上部に差し込まれるので、普段編集しないようなタイトル兼メイン画像なんて入れておくことにも使えるということになります。一応、baserCMSのルール的にはPHPやJSを入れた方がいいのかもしれないです。

3. 固定ページレイアウト切り替え

この固定ページだけレイアウトファイルを別のものにしたいって言うときは、直接ソースの中に

<?php $bcBaser->layout('fugafuga'); ?>

とか書いてましたよね。今回追加されたレイアウト切り替え機能は、カテゴリ単位でレイアウトファイルを設定することができるものです。
固定ページカテゴリーの登録または編集時に、オプションバーをクリックすると選択できるようになります。

レイアウトファイルは今までと同じく、

/{現在使用しているテーマディレクトリ}/layouts/

の中に作ってくださいね。カテゴリごとに一括してレイアウトを変更できると、楽に制作の幅を広げることができそうですね!

カテゴリ単位だけでなく、全体の固定ページレイアウトも変更できるようになったようです。今まで全体の固定ページレイアウトは、default.phpと決まってましたが、これもシステム設定で変更することができるようになってます。オプションバーを開いて「固定ページ関連」で設定してください。

4. コンテンツテンプレート

この機能も上記の固定ページレイアウトと同じくカテゴリ単位で指定できるテンプレートです。ページレイアウトとどう違うの?という疑問を分かりやすく解決するためにイラストにしてみました。

コンテンツレイアウトは、ページレイアウト内の

<?php $bcBaser->content() ?>

の中だけのレイアウトファイルになります。

コンテンツレイアウト内に

<?php $bcPage->content() ?>

を記述することで、管理画面のエディタで入力したコンテンツがその場所に表示されます。複雑なレイアウトも可能ですが、基本的にはコンテンツの上下に差し込むイメージなので、カテゴリごとのヘッダーやフッターを入れることなんかが可能になります。

レイアウトファイルは、

/{使用しているテーマフォルダ}/pages/templates/

の中に設置することで選択できるようになります。

5. エディタテンプレート機能

この機能は、よく使うレイアウトをテンプレートとして登録しておくことで、WYSIWYGエディタで呼び出すことができるというものです。WYSIWYGエディタのツールバーに新しいアイコンが登場してますね。

これをクリックすると、テンプレート選択ウィンドウがポップアップします。

「現在のエディタの内容は失われます」とありますが、エディタ内の記事を残したい場合は、一番下のチェックボックスのチェックを外すと追加で差し込んでくれます。もし間違えてまるまるっと入れ替わってしまった時は、Ctrl+Zで戻すこともできるようです。これはブラウザの機能なので絶対戻せるとは限りません。

  • ・画像(左)とテキスト
  • ・画像(右)とテキスト
  • ・テキスト2段組

baserCMS本体に上記3つのテンプレートが準備されています。システム設定のサブメニュー「エディタテンプレート管理」で追加登録や編集することができます。初期状態のテンプレートは画像がテキストになってますので、サンプル画像と入れ替えて登録しておくことも可能です。

例えば、似たようなレイアウトのページを増やす時に、元になる固定ページやブログ記事の編集画面を開いて利用したい箇所のコンテンツをコピーしてから、新規作成した編集画面でペーストした後に必要な部分だけ修正して作成するというとても面倒なことをしたことがあります。それが納品物だったりすると、お客さまに同じことをしていただくのは申し訳ないなあと思っていました。かと言って、一から作っていただくのはもっと難しいですよね。そんな時に、今回追加されたこのエディタテンプレートが役に立ちそうです。

このエディタテンプレートを登録しておくと、1. 初期データ書き出し・読み込み機能で紹介した初期データに一緒にテンプレートの情報も書き出されることになります。

6. エディタスタイルセット

WYSIWYGエディタ内でデザインを適用する「スタイル」を管理画面から編集することができるようになりました。

このスタイルとは、エディタ内でテキストを予め選択状態にしておいてから、スタイルの種類を選ぶというものです。テキストの色を変えたり大きさを変えたりすることができます。

このスタイルの項目を編集するには、システム設定下部のオプションバーをクリックして「エディタ設定関連」の「エディタスタイルセット」を編集します。スタイルシートの形式で記述できるのはとても嬉しいですね。

また、スタイルを設定するところの上にあるエディタの改行モードの変更は今まで無かったと思いますが、改行時に自動的に<p>タグで括られていたのが、<br>タグと選択して利用できるようになったみたいです。

7. WYSIWYGのエディタ内で利用するCSSを指定できる機能を実装

WYSIWYGエディタでスタイルを確認しながら編集できるという機能が、新しいバージョンで追加されました。

/{使用しているテーマフォルダ}/css/editor.css

上記の様にスタイルシートを作成して、その中にスタイルを追加していきます。トップページのエディタだけなど個別に指定するようなことはできないみたいです。ですので、最低限の共通スタイルになるのかなと思います。

ところが、、、エディタ適用されないーーー!

どうやら何かの不具合があるようです。対策されるのを待ちましょう。
と言っている間に修正パッチが配布されたという情報をいただきました!早いですね!!

修正パッチはコア開発プロジェクトのページから取得できます。

  • 1. 上記リンクのページから「bc_ckeditor.php」というリンクをクリックして下さい。
  • 2. ファイルの中身(ソース)が表示されますが、ソース表示の上のところに「ダウンロード(13.2KB)」というリンクがあるのでクリックします。
  • 3. 「bc_ckeditor.php」というファイルのダウンロードが始まりますので、ダウンロードしてください。
  • 4. ダウンロードしたファイルを、利用しているbaserCMS2.1.0の以下のフォルダにコピーします。すでに同名のファイルが存在しているはずですので、上書きコピーになります。

■ファイルのコピー場所

/baser/views/helpers/
(同名ファイルが既に存在していますが、上書きしてOKです。)

上記の手順を踏むと、修正が適用され正常にエディタCSSが適用されるようになります。

フォーラムの記事を参考にさせていただきました。

このeditor.cssを空の状態で設置すると、初期状態で登録してあるエディタテンプレート3つのスタイルが、WYSIWYGエディタ内できかなくなってしまいます。

/baser/vendors/css/ckeditor/contents.css

このファイルにスタイルが書かれてあるので、中身をまるっとコピーして先程設置したeditor.cssの中に保存しておきましょう。新たにエディタテンプレートを追加した時もこのeditor.cssにテンプレート用スタイルを記述しておくことで、テンプレートが使いやすくなりますね。

8. ブログアイキャッチ画像

ブログにアイキャッチ(サムネイル)アップロード機能が追加されました。記事の編集画面で追加と上書きと削除ができます。

アップロードするだけでは表示されないので、テンプレートの方で呼び出してあげる必要があります。

<?php $blog->eyeCatch($post) ?>

これで呼び出すことができます。呼び出す時には、$postsのforeach文の中に記述します。

<?php foreach($posts as $post): >
// ここに記述
<?php endforeach; ?>

この呼び出しにはオプションを追加することができます。オプションは配列形式で渡します。

<?php $blog->eyeCatch($post, $options) ?>
例 <?php $blog->eyeCatch($post, array('alt' => 'アイキャッチ画像', 'link' => false)) ?>
オプション一覧
option 初期値 説明
imgsize thumb それ以外の値を渡すとアップロードしたサイズの画像を表示するようです。
link true falseにすると画像クリックで拡大表示できなくなります。
mobile false trueにするとサムネイル画像がモバイルサイズになります。
alt imgタグの属性値である代替文字を入力できます。
width imgタグの属性値である幅を入力できます。
height imgタグの属性値である高さを入力できます。
noimage 画像がなかった場合に表示する画像を指定できます。画像が存在した場合は何も表示されません。
class img-eye-catch imgを囲むaタグにclassが反映されます。linkがfalseだとimgに入ります。idも同じように指定できます。

アイキャッチアップロード時に、元画像・PCサイズ・携帯サイズの3サイズの画像が保存されます。ブログの設定画面でブログごとにアイキャッチ画像サイズを設定できます。PCサイズは300x300px、携帯サイズは100x100pxが初期設定になってます。

※windowsローカル環境で開発している場合、アップロード時にパスが\でDBに保存されるので注意が必要です。アップロードしてファイルも存在するのに表示されない時は、画像パスを確認してみてください。

9. スマホ携帯PC連動

スマートフォンとモバイルを対応するということは、それぞれ専用のレイアウトで専用の固定ページコンテンツをPCサイトとは別に作成するということです。ユーザーエージェントで判断して、それぞれのアドレスに自動的にリダイレクトしてくれます。
システム設定に「モバイル」と「スマートフォン」の対応について選択できる場所があります。モバイルはいわゆる「ガラケー」と呼ばれる携帯電話だと思っていただいて大丈夫です。

私は大抵スマートフォンは対応しないを選ぶのですが、特に必要がない場合は対応しないを選ぶことで、PCサイトを表示してくれます。モバイルは表示サイズの範囲内であればという制限付きですが表示してくれます。この場合は、レイアウトと固定ページコンテンツはPC用一つを準備すれば大丈夫です。レスポンシブデザイン時に最適ですね。

レイアウトはPCサイトとは別に用意したいけど、固定ページコンテンツはPCサイトと同じでいいのだけど・・・ということもあると思います。

今回の新バージョンで、「対応する」を選んだ場合、固定ページをPCとを連動するかどうか選択できるようになりました。今までは選ぶことができずにそれぞれ固定ページのコンテンツを作成しなくてはならなかったのですが、連動できるようになったことでレイアウトはスマートフォンやモバイルのもので、固定ページコンテンツはPCのコンテンツを表示してくれるようになり、制作・更新が楽になりました。

また、連動する設定にした状態で固定ページ編集画面のオプションバーを開くと、一番下に「このページだけ連動しない」というチェックボックスが現れます。ここにチェックするとコンテンツもスマートフォン・モバイル専用に別に作成することで表示させることができます。

10. アップローダーレイアウト(おまけ)

baserCMSのアップローダープラグインは必ずと言っていいほど毎回利用させていただいてます。本体に同梱されていないプラグインですが、今回のbaserCMSバージョンアップに合わせてこのプラグインも新バージョンがリリースされました。

アップローダー2.1.0ダウンロード

変わったところはレイアウトタイプを選べるようになったことです。

パネル(今までのレイアウト)

テーブル(新しく追加されたレイアウト)

新しいレイアウトはbaserCMSの管理画面っぽくなってますね。個人的にはテーブルの方が見やすいと思います。

11. システム管理のメールSMTPポート設定(おまけ)

ポートの設定が新たに追加されました。

この機能は、baserCMSを設置したサーバーのメール送信機能が使えない時に設定することで、設定したサーバーを利用してメール送信できるというものです。例えばローカル環境に構築した場合、サーバーの難しい設定をしなくてもお問い合わせや新着コメントメールが送れるようになります。
今まではポートの設定項目がなかったと思いますが、新しいバージョンでは追加されたようです。これで利用できるメールサーバーの範囲が増えましたね!

12. ブログカテゴリの追加が簡単になりました(おまけ)

キャプチャ画像を見たらすぐ分かっていただけると思いますが、ブログ機能のカテゴリ追加が記事の追加・編集中でもできるようになりました。今までカテゴリは別ページで登録しなければならなかったので、今回のアップデートで更に使いやすくなりました。

以上でbaserCMS2.1.0の新機能紹介を終わらせていただきます。ユーザーの要望に応えて少しずつ便利になっていくbasreCMS。今後のバージョンアップではCakePHP2の対応も予定しているそうです。コア開発に協力してくれる方やプラグインを開発してくれる方が増えていってくれると嬉しいです。


≫ 続きを読む

2013/04/09        admin   |    タグ:機能紹介

baserCMSで「簡単なブログ」プラグインを作ってみるチュートリアル

baserCMSのプラグインを作るための準備はできたけど、具体的にどうやって作ったらいいの?という人のためのチュートリアル記事です。
今回は、「簡単なブログ」プラグインを作成してみましょう。baserCMSの管理画面から「記事一覧を表示」、「記事を編集」、「新規記事を追加」、「記事を選んで削除」の機能と、閲覧側の「記事一覧表示」、「記事詳細を表示」の機能を実装します。

あらかじめ、baserCMSで初めてプラグインを作ってみる時の基本知識を参考に、プラグインの名前は bcforum で準備しておきます。

1. データベースを作成する

まずは、ブログ記事を保存しておくデータベースを作成します。

テーブル名 bc_pg_bcforum_posts

id int(8) primery_key auto_increment not_null
name int(255)
contents text
created datetime
modified datetime

id(プライマリーキー用), created(レコード作成日時), modified(レコード更新日時) の3項目は基本的には必須項目です。
created と modified は自動更新されます。ちなみに、プラグインテーブルの命名ルールは、bc_pg_プラグイン名_テーブル名で作成すること、となっているので、このルールに沿って作成くださいね。

2. ディレクトリ構成の確認

今回チャレンジする、「簡単なブログ」で作成するディレクトリやファイルの一覧です。

ディレクトリ構成

おおまかに分けると、

  • モデル → models
  • コントローラー → controllers
  • ビュー → views

の3つを作成することになります。

3. モデルを作成する

bcforum/models/bcforum_post.php

<?php
class BcforumPost extends AppModel {
// $name には、モデル名と同じ値をセットします
var $name = 'BcforumPost';
// plugin プロパティを設定します
var $plugin = 'Bcforum';
// データベースの接続設定をします。
var $useDbConfig = 'plugin';
}
?>

$name は、CakePHPでは、PHP4との互換用に書くもののようですが、baserCMSではPHP5を使っていても必須項目になっているみたいです。プラグインで利用するモデルでは、プラグイン名を設定する $plugin プロパティを設定します。app/config/database.php には、データベースへの接続設定が書かれてあります。そこでは、デフォルトの接続設定 baser と、プラグイン用の接続設定 plugin が用意されています。2つの違いはプレフィックスです。デフォルトであれば、プレフィックスは bc_ だけなのですが、プラグインの命名ルールでは、bc_pg_ までとなっているので、ここで設定しておきます。

4. コントローラとビューを作成する

bcforum/controllers/bcforum_posts_controller.php

<?php
// 継承するコントローラのpluginsをインポートする
app::import('Controller', 'Plugins');
// baserCMS にパッケージされている PluginsController を継承させます
class BcforumPostsController extends PluginsController {
// nameプロパティをちゃんと定義しておきます【重要】
var $name = "BcforumPosts";
// モデル宣言 (Plugin,プラグイン名.モデル名)
var $uses = array('Plugin', 'Bcforum.BcforumPost');
// このコンポーネントを読み込むと、このコントローラーに認証がかかります
var $components = array('BcAuth','Cookie','BcAuthConfigure');

function beforeFilter() {
}

function index() {
// ブログ一覧を表示させる
}

function view($id) {
// ブログ詳細を表示させる
}

function admin_index() {
// 管理画面からブログ一覧を表示させる
}

function admin_edit($id) {
// ブログを編集する
}

function admin_add() {
// ブログを新規登録する
}

function admin_delete($id) {
// ブログを削除する
}

?>

ディレクトリ構成の一覧と比較してみると、view ファイルとだいたい一致してますよね。

http://{baserCMS設置URL}/bcforum/bcforum_posts/index

上記のアドレスをリクエストすると、 function index() が実行されます。

http://{baserCMS設置URL}/admin/bcforum/bcforum_posts/index

上記のアドレスをリクエストすると、 function admin_index() が実行されます。

つまり、アクション名の先頭に、プレフィックス admin_ がある場合は、アドレスのルート直下に admin ディレクトリが必要になります。

index() と view() の認証を許可する

コンポーネントで定義したことで、コントローラー全体に認証がかかってしまっています。ログインしていなくても、ブログの閲覧だけはできるようにしたいですよね。そこで、beforFilter() に、下記を記述しましょう。

function beforeFilter() {
$this->BcAuth->allow('index', 'view');
}

これで、2つのアクションは、ログインしてなくても実行できるようになりました。
でも、今は2つでも、プラグイン開発を進めていくと、認証外したいアクションが増えるかも・・・ 管理画面の admin_ がつくやつだけ認証かけれないの?という時は、下記のように書き換えちゃいましょう。

function beforeFilter() {
if (!preg_match('/^admin_/', $this->action)) {
$this->BcAuth->allow($this->action);
}
}

admin_ で始まるアクション以外の認証を解除してくれるようになりました。これだけだと、継承元の記述が全部上書きされてしまうので、お約束の

parent::beforeFilter();

も忘れずに記述しておいてくださいね。

アクション admin_index() を作成する

管理画面のトップページ処理を作成します。ブログ一覧を表示させて、それぞれの記事への編集ボタンを作成しましょう。

function admin_index() {
// タイトルをセットします
$this->pageTitle = '記事一覧';
// 管理画面のサブメニュー
$this->subMenuElements = array('bcforum_posts_index'); 
// モデルから今回のブログデータのテーブル情報を全て取得します
$datas = $this->BcforumPost->find('all');
// 取得したデータを view へセットします
$this->set('datas', $datas);
}

$this->pageTitle は、タイトルをセットします。タイトルタグや、ぱんくずリスト、h1タグなどに使われます。$this->subMenuElements は、ナビゲーターリンクに使用できます。 bcforum/views/elements/admin/submenus/bcforum_posts_index.php を作成して、「新規ブログ登録」や「ブログ一覧表示」などのナビゲーションメニューを作成することで、呼び出すことができます。詳しくは、ナビゲーションメニューを作成する を参照ください。

admin_index() を表示するビューを作成する

bcforum/views/bcforum_posts/admin/index.php

<table class="list-table">
<tr>
<th></th>
<th></th>
<th>ID</th>
<th>タイトル</th>
</tr>
<?php foreach ($datas as $data): ?>
<tr>
<td><?php $bcBaser->link('編集する', array('plugin' => 'bcforum', 'plugin' => 'bcforum', 'controller' => 'bcforum_posts', 'action' => 'edit', $data['BcforumPost']['id'])) ?></td>
<td><?php $bcBaser->link('削除する', array('plugin' => 'bcforum', 'plugin' => 'bcforum', 'controller' => 'bcforum_posts', 'action' => 'delete', $data['BcforumPost']['id'])) ?></td>
<td><?php echo $data['BcforumPost']['id'] ?></td>
<td><?php echo $data['BcforumPost']['name'] ?></td>
</tr>
<?php endforeach ?>
</table>

$datas を var_dump してみると分かりますが、bc_pg_bcforum_posts の情報が配列で格納されています。これを、foreach 文で回して一覧を表示させましょう。
編集ボタンも追加して、アクション edit へリンクを作成し、 id を引数として渡します。環境によって左右されないURLを作成してくれるので、HTMLヘルパーを使いましょう。

アクション admin_edit() を作成する

記事の編集画面の表示と、編集登録処理を行います。データが存在する項目は、フォームに初期値として表示させます。

function admin_edit($id) {
// タイトルをセットします
$this->pageTitle = '記事編集';
//管理画面のサブメニュー
$this->subMenuElements = array('bcforum_posts_index');
if (!$this->data) {
// フォームにDBデータを表示
$this->data = $this->BcforumPost->read(null, $id);
} else {
// 送信データをDBに保存
$this->BcforumPost->set($this->data);
if ($this->BcforumPost->save()) {
$this->Session->setFlash('保存しました');
$this->redirect('index');
} else {
$this->Session->setFlash('失敗!');
}
}
}

$this->data は、送信されてきたフォームデータが格納されます。
!$this->data ということは、フォームからデータが送信されていないということですから、ビュー画面のフォームに初期値を表示するため、データベースの情報を取得してくる必要があります。$this->data が存在する場合は、フォームからデータが送信されている=編集しましたよ、ということなので、そのデータをデータベースへ格納します。

admin_edit() を表示するビューを作成する

bcforum/views/bcforum_posts/admin/edit.php

<?php echo $bcForm->create('BcforumPost'); ?>
<?php echo $bcForm->hidden('BcforumPost.id') ?>
<table class="form-table">
<tr>
<th>ID</th>
<td><?php echo $bcForm->value('BcforumPost.id') ?></td>
</tr>
<tr>
<th>タイトル</th>
<td><?php echo $bcForm->text('BcforumPost.name') ?></td>
</tr>
<tr>
<th>内容</th>
<td><?php echo $bcForm->textarea('BcforumPost.contents') ?></td>
</tr>
</table>
<div class="submit">
<?php echo $bcForm->submit('保存', array('class' => 'button')) ?>
</div>
<?php echo $bcForm->end() ?>

フォームヘルパーで、編集フォームを作成します。データベースから取得した情報を初期値として表示させます。 id は編集できないように、hidden 属性で出力しておきましょう。

アクション admin_add() を作成する

function admin_add() {
// タイトルをセットします
$this->pageTitle = '記事追加';
// 管理画面のサブメニュー
$this->subMenuElements = array('bcforum_posts_index');
if ($this->data) {
// 送信データをDBに保存
$this->BcforumPost->set($this->data);
if ($this->BcforumPost->save()) {
$this->Session->setFlash('保存しました');
$this->redirect('index');
} else {
$this->Session->setFlash('失敗!');
}
}
}

admin_add() を表示するビューを作成する

bcforum/views/bcforum_posts/admin/add.php

<?php echo $bcForm->create('BcforumPost'); ?>
<table class="form-table">
<tr>
<th>タイトル</th>
<td><?php echo $bcForm->text('BcforumPost.name') ?></td>
</tr>
<tr>
<th>内容</th>
<td><?php echo $bcForm->textarea('BcforumPost.contents') ?></td>
</tr>
</table>
<div class="submit">
<?php echo $bcForm->submit('保存', array('class' => 'button')) ?>
</div>
<?php echo $bcForm->end() ?>

edit.php とほぼ同じですね。編集フォームの時に記述した、hidden 属性の id 、これが存在しないだけで、新規レコードに追加してくれます。簡単ですね!

アクション index() を作成する

一般の閲覧者が見ることのできるページを作成します。ログインしなくてもみることができるページですね。 この動きって、実は admin_index() とほぼ同じで大丈夫ですよね。そんな時は、 admin_index() のアクションを再利用しちゃいましょう。

function index() {
$this->setAction('admin_index'); //admin_indexのアクションをそのまま呼び出せる
$this->pageTitle = 'トピックス一覧'; //上書きすることもできる
}

今回は、admin_index() を呼び出したあと、タイトル部分だけは上書きして変えてみました。

index() を表示するビューを作成する

bcforum/views/bcforum_posts/index.php

<table class="row-table-01">
<tr>
<th></th>
<th>ID</th>
<th>タイトル</th>
</tr>
<?php foreach ($datas as $data): ?>
<tr>
<td><?php $bcBaser->link('詳細', array('plugin' => 'bcforum', 'controller' => 'bcforum_posts', 'action' => 'view', $data['BcforumPost']['id'])) ?></td>
<td><?php echo $data['BcforumPost']['id'] ?></td>
<td><?php echo $data['BcforumPost']['name'] ?></td>
</tr>
<?php endforeach ?>
</table>

admin_index() のビューとほとんど同じです。違うのは、編集ボタンが詳細表示ボタンになったところくらいですね。それから、閲覧側のアクションには、プレフィックスである admin がつきませんでした。なので、ビューを作成する場合も、今まで作った管理画面用の admin ディレクトリ内ではないのでご注意ください。

アクション view() を作成する

詳細ボタンがクリックされた時に呼び出されるアクションです。引数である id をもとにして、レコードを呼び出し、データをビューに渡します。

function view($id) {
if ($id) {
$data = $this->BcforumPost->read(null, $id);
$this->set('data', $data);
}
}

view() を表示するビューを作成する

<table class="row-table-01">
<tr>
<th>ID</th>
<td><?php echo $data['BcforumPost']['id'] ?></td>
</tr>
<tr>
<th>タイトル</th>
<td><?php echo $data['BcforumPost']['name'] ?></td>
</tr>
<tr>
<th>内容</th>
<td><?php echo $data['BcforumPost']['contents'] ?></td>
</tr>
</table>

$data に渡したデータを、表示させます。

アクション admin_delete() を作成する

削除処理を作成します。

function admin_delete($id) {
if($this->BcforumPost->delete($id)) {
$this->Session->setFlash('削除しました');
$this->redirect('index');
} else {
$this->Session->setFlash('失敗!');
$this->redirect(’index’);
}
}

削除処理ができたあとは、一覧表示にリダイレクトするので、ここではビュー画面は作成しません。

ナビゲーションメニューを作成する

bcforum/views/elements/admin/submenus/bcforum_posts_index.php

<tr>
<th>ダッシュボードメニュー</th>
<td>
<ul class="cleafix">
<li>
<?php $bcBaser->link('一覧を表示する', array('plugin' => 'bcforum', 'controller' => 'bcforum_posts', 'action' => 'index')) ?>
</li>
<li>
<?php $bcBaser->link('新規に登録する', array('plugin' => 'bcforum', 'controller' => 'bcforum_posts', 'action' => 'add')) ?>
</li>
</ul>
</td>
</tr>

baser の管理画面とデザインを揃えたいなというときは、baser/views/elements/admin/submenus/ の中のファイルを参考に作成するといいですよ。

以上でチュートリアルは終了です。
baserCMSは、CakePHPでできているので、この処理どうやって書くんだっけ?って時なんか、ちょっと検索するとたくさんのtipsが見つかるので、とってもカスタマイズしやすいですね!実は私、そんなにCakePHP詳しくないのですが、CakePHPについての記事を書いて下さっている方々のおかげでいつも助かってます。お世話になってます。ありがとうございます!

≫ 続きを読む

2012/07/11        admin   |    タグ:baserCMS , プラグイン

baserCMSのプラグイン開発でデータベースを使用する場合にやっておくこと

baserCMSのプラグインはできたけど、配布する時のデータベースはどうやって準備したらいいんだろう?って時のための記事です。今回は、myplugin というプラグインを作成した場合、という設定で進めていきます。

1. インストール時の実行ファイル init.php を作成する

用意したスキーマを実行させるためのファイル「インストールスクリプト」を作成します。

myplugin/config/init.php

ディレクトリ構造インストールスクリプト

この init.php ファイルの中に、下記の要領で記述します。

$this->Plugin->initDb('{プラグイン名}');

プラグイン名は、作成しているプラグイン名を入れて下さいね。
今回の場合 myplugin になります。

2. スキーマファイルを用意する

スキーマファイルを作るのってなんだかめんどそう・・・。テーブルなら、プラグイン作成した時に、phpMyAdminで作成済みなのに!って時のために、baserCMSでは、スキーマファイル自動生成機能がついてます。

http://{baserCMS設置URL}/admin/tools/write_schema

上記のURLを入力すると、baserCMSで使用されているデータベースのテーブル一覧が表示されます。上が「コアテーブル」下が「プラグインテーブル」になっています。

スキーマ生成ページ

ちなみに、プラグインテーブルの命名ルールは、「 bc_pg_プラグイン名_ 」で始まること、となっているので、このルールに沿って作成くださいね。作成済みのテーブルは、この一覧に表示されますので、選択して生成ボタンをクリックするだけで、あっという間にスキーマファイルのできあがり!です。schema.zip がダウンロードできるので、解凍してください。

{プレフィックスなしのテーブル名}.php ※bc_pg_なしのテーブル名.php のことです。

というファイルが出来ていれば、OKです。このファイルは、下記ディレクトリに保存します。

myplugin/config/sql/

3. csvファイルを用意する

プラグインをインストールした時に、データベースに初期値を持たせたい時のためのファイルです。マスターテーブルを使うプラグインを作る時などに使用できますね。

csvファイルの作り方

  • 文字コードは、Shift-JIS
  • 各フィールドをカンマで区切る
  • 各フィールドをダブルコーテーション(”)で囲む
  • フィールド内のダブルコーテーションは、ダブルコーテーションでエスケープする
  • 1行目は、フィールド名の定義とする
  • ファイル名は、プラグイン名から始まる

こんな感じになります。

"id", "name","title","created","modified"
"1","test","簡単な""プラグイン""の作り方","",""

保存場所は、スキーマファイルと同じ場所です。

myplugin/config/sql/

ファイル名は、プレフィックスなしのテーブル名.csv になります。
たとえば、テーブル名が、bc_pg_myplugin_table だった場合、

myplugin_table.csv

となります。

スキーマファイルとcsvファイルは用意できましたか?ディレクトリ構造のイメージです。

ディレクトリ構造

以上で、データベースの準備ができました。これでプラグインをインストールする時に、baserCMSのデータベース内にテーブルが構築されます。

≫ 続きを読む

2012/07/10        admin   |    タグ:baserCMS , プラグイン