Pictnotes メインイメージ

お仕事メモ

2012年8月24日

SyntaxHighlighterをbaserCMSに組み込んでみる

baserCMS2.0.4
PHP等のソースコードを見やすくするために、とりあえず一番よさげだったSyntaxHighlighter組み込んでみたときのメモ書き。



サイトは、SyntaxHighlighterになります。
右側に、downloadのリンクがあるのでそちらから、最新版なり好きなバージョンを落としてください。
この時利用したのは、最新版のsyntaxhighlighter_3.0.83です。

ダウンロード後、解凍して、現在つかってるテーマの中にそのままFTPなりでアップロード
/app/webroot/themed/{テーマ名}/js/syntaxhighlighter_3.0.83
とかになります。

こちらの、JSとCSSをテンプレートから読みに行くように追加。

	<?php $bcBaser->css('../js/syntaxhighlighter_3.0.83/styles/shCoreDefault') ?>
	<?php $bcBaser->js(array('jquery-1.7.2.min','jquery.corner','yuga','startup','syntaxhighlighter_3.0.83/scripts/shCore','syntaxhighlighter_3.0.83/scripts/shBrushJScript')) ?>

という感じ。
shBrushJScriptとか、は別途必要ならshBrushCss,shBrushPhpとを呼び込み必要があるのだけど、ここは<pre class="brush: sql;">とか書いたらそれに該当するものを動的に呼び込んでくれないかなぁ。。(知らないだけ?)とおもってます。
とりあえず、ソースおっかけるのもあれなんで、そのまま使いたいと思います。<pre ~~かくのが以外と面倒かもw

 

 

≫ 続きを読む

baserCMS   2012/09/12   admin

blogプラグインで表示しているページのデザインを変更する

baserCMS2.0.4
<?php $bcBaser->content() ?>
で、表示してある部分のデザインを変更したい場合。



/baser/plugins/blog/views/blog/
以下のphpファイルを修正してください。(バックアップをお忘れ無く)
blogの中のフォルダは
default = PC
smartphone =  スマホ
mobile = ガラゲー
のテンプレートなっています。

これは、appフォルダに置いても認識してくれないのでここで修正するしかなさげ。

≫ 続きを読む

baserCMS   2012/09/12   admin

basderCMS ブログの本文と詳細の使い分け

baserCMS2.0.4
baserCMSのblogプラグインの、記事登録には、本文と詳細の2つの入力フィールドがあります。
言葉の意味は判るのですが、どのように使い分けたらいいのか不明だったので探ってみました。



端的に書くと、本文は、一覧表示(そのブログの記事一覧)に出てくる。
詳細は、その記事(ブログ)の詳細ページ(一覧ページの「≫ 続きを読む」リンクを押したあとのページ)とカテゴリー一覧のページに出てくる。

詳細ページでは、本文と詳細は<hr>とかのタグを挟まずに連なって出てくる事になる。

というのが、基本の動き。
これをカスタマイズしたいときは、
/baser/plugins/blog/views/helpers/blog.php
のgetPostContentという関数があるので、それを修正すればOKなんですけど、ちょっと敷居が高いですよね。baserCMSをversion upする時に困りますし。


で、少し安全にカスタマイズするために、
/baser/plugins/blog/views/helpers/blog.php
をそっくりそのまま、appの同じディレクトリに設置します。
/app/plugins/blog/views/helpers/blog.php
にそのまま、ファイルを複製しておいてください。(viewsフォルダ以下はデフォルトでは存在しないと思うので作ってくださいね)

これで、baser以下のblog.phpでなく、app以下のblog.phpが参照されるように変わりました。
あとは、こちらのblog.phpを修正してください。

baserフォルダをいじらないでbaserCMSをversion upするときにも,直接いじるより安全かと思います。
version up時には、
/baser/plugins/blog/views/helpers/blog.php

/app/plugins/blog/views/helpers/blog.php
の、差分をとって、カスタマイズ以外の所を書き直しかな?

--余談
basrCMSのプラグインフックの仕組み http://basercms.net/manuals/2/programmers/5.html#PluginHook
をつかって、出力書き換えてあげればいけるんじゃね?とちょっと探ってみたのですが、現状のフックでbeforeLayout を使うと、
/baser/plugins/blog/views/blog/default/single.php の出力結果を書き換える形になりそうなので、ちょっと効率悪そうだと言うことで断念。
getPostContent メソッドだけを上書き出来ればいいのですけどね。じゃあ、class継承すれば良いじゃんという話になるのですが、現状では時間がないので今度みてみます。
--余談おわり


とりあえず、このblogは(今だけかも) 詳細ページに<hr>をいれるのと、一覧からのリンクのアンカーを消してみました。


ちなみに、getPostContentは、postContentという関数から呼ばれているだけみたいなので
マニュアル postContent
こちらの関数の引数を増やしてあげたりすると、すこしデザインの幅ができそうです。
手を入れたら、採用してくれるかなぁ???

≫ 続きを読む

baserCMS   2012/09/12   admin

basderCMSのpluginを作ってみる その1

basderCMSのプラグインの作り方メモ(作りながら書いてるので、最後の記事ができるまで改訂が入ります)



とりあえず、現在あるプラグインを覗いて中身を確認するのがはやいけど、とりあえずのHotwo

1)サーバ上の、app/plugins(baser/pluginsと間違わないこと) フォルダに作成したいプラグイン名のフォルダを作成する。

ここでは、PostgreSQLのINDEX管理ページを作りたいので postgresql_index というフォルダ名にする
ちなみにこの段階で、管理画面から、 > プラグイン管理 > プラグイン一覧
を覗いてみると、作成したフォルダ名がリストにでてくる。

とりあえず、こんな感じに表示されるはず。
プラグイン説明その1
 

2) 必要なディレクトリを作成

とりあえず、いろいろ置いておいて必要なディレクトリとファイル(空ファイル)を作成します。
(D)がdirectory (F)がfileです。 -> まだ未完成です。

postgresql_index(D)
├ config (D)
│ ├ bootstrap.php
│ ├ config.php
│ ├ csv (D)
│ │ └ postgresql_index
│ ├init.php
│ └ sql (D)
│    └ postgresql_index.csv
│    └ postgresql_index.php

├ controllers (D)
│ └ postgresql_index_controller.php

├ models (D)
│ └ postgresql_index.php

├ vendors (D)
│ ├ css (D)
│ │ └ postgresql_index.css
│ └ js (D)
│    └ postgresql_index.js

├ VERSION.txt

└ views (D)
  ├ bootstrap.php
  ├ config.php
  ├ helpers (D)
  │ └ postgresql_index_baser.php
  └ postgresql_index (D)
     └ admin
       └ postgresql_index.php


3)プラグインの説明や開発者を登録しよう。

リストにはプラグイン名(フォルダ名)しかでてないと思うので、その他の情報
「バージョン    説明    開発者    登録日 更新日」なんかを表示出来る様にしよう。
config/config.phpファイルに
<?php
/**
 * PostgreSQL INDEX設定プラグイン
 */
$title = 'PostgreSQL Index';
$description = 'DatabaseにPostgreSQLをしている場合推奨するindexを張ることができます。';
$author = 'itm_kiyo';
$url = 'http://www.pictnotes.jp';
$adminLink = array('admin' => true, 'plugin' => 'postgresql_index', 'controller' => 'postgresql_index', 'action' => 'index');
//$adminLink = '/admin/postgresql_index/postgresql_index/index'; と指定するのと一緒です。
$installMessage = 'ここに文章を記載しておくと、INSTALL時にここの文章を出力できます。';
?>
と記載してアップロードで、管理画面上で「説明    開発者」が表示されるようになります。

次に、
VERSION.txt ファイルに
1行目に 0.9.0 と書いてアップロードするとバージョン情報が入ってきます。ファイルには、あわせてリリースノートも
書いておくと良いでしょう。

0.9.0

///////////////////////////////////////////////////////////////////////////////////////////////////////////
// +---------------------------------------------------------------------------------------------------+ //
// + Release Notes
// +---------------------------------------------------------------------------------------------------+ //
///////////////////////////////////////////////////////////////////////////////////////////////////////////

[2012-08-24] PostgreSQL Index 0.9.0
-リリース

[2012-08-24] PostgreSQL Index 0.9.1
-いきなりバグフィックス


その2に続く

 

≫ 続きを読む

baserCMS   2012/08/24   admin

cron 経由や、sshからリモートの、sudo を実行したい場合

sshから、該当のコマンドを実行するときに、セキュリティの問題で
sudo: sorry, you must have a tty to run sudo
と怒られる、のですがこれを解消するためのメモ
 



sudoの設定ファイルの

Defaults    requiretty

Defaults    !requiretty

とか、それ自体をコメントアウトする必要があるのですがSSHのコマンドからの実行なら

ssh -t hostname sudo <cmd>

と -t オプションを付けると動く様になります。

マニュアルには、

 -t
    強制的に仮想端末を割り当てます。これはリモートマシン上で任意の画面ベースのプログラムを実行するとき(たとえば、メニューサービスを実装するときな ど)に非常に便利です。複数の-t をつけると、たとえssh がローカル側での端末を持っていない場合でも強制的に仮想端末を割り当てます。

とあるので、実際は強制的に仮想端末を割り当てるために、

ssh -t -t hostname sudo <cmd>
と同じオプションを複数つけてあげるて、

ssh -t -t user@hostname "/usr/bin/sudo /home/usr/batch.sh"

という風にすると sudoで指定されいているユーザ権限で動きます。

どのユーザで動いてるかは、whoamiコマンドでも発行するとすぐわかって便利です。

 

≫ 続きを読む

その他   2012/08/22   admin