お疲れ様です。
タイトルの件で備忘録します。
Cakeでフォームを作成すると
nameには配列っぽい名前が指定されます。
例)
うちなーんちゅプログラマーのクラクラが、仕事中(主にPHP関連、CakePHP(1.2系)関連。たまにその他雑記)に得た知識等を備忘録として残し、そして同じ問題で悩んでいる人がこの備忘録を参考に解決出来ればと思い、開設しました。温かい目で見てやってください。 ☆コメントどしどし募集中☆
2011年5月31日火曜日
【PHP関連】動的に変数を生成する
お疲れ様です。
タイトルの件で備忘録します。
phpで動的に変数を生成する一般的な方法です。
例)
$test = "A";
${"test2".$test} = "B";
これで【test2A】という変数が生成され
値はBとなります。
以上
タイトルの件で備忘録します。
phpで動的に変数を生成する一般的な方法です。
例)
$test = "A";
${"test2".$test} = "B";
これで【test2A】という変数が生成され
値はBとなります。
以上
2011年5月26日木曜日
【Joomla1.5系関連】Googleのサイト内検索を利用する
お疲れ様です。
タイトルについて、上手くいったので備忘録します。
Joomlaには標準でサイト内検索機能がついていますが
検索対象はコンテンツやメニュー等、Joomlaが標準で利用する
データのみとなっています。
なので、新たにテーブルを一個追加し、そのデータも対象に入れる場合は
前回の記事で紹介した方法で、カスタマイズが必要です。
ですが、今回はタイトルにあるように
Googleが無償で提供しているサイト内検索機能を利用して
サイト内検索を実装しようということです。
利点としては
・サイト内の全データが対象となる
これが一番大きいです。
いくらデータを追加しようが、検索対象となってくれます。
さて、設置方法ですが
まずは、http://www.google.co.jp/cse/にアクセスします。(要Googleアカウント)
アクセス後、デザイン等を設定しますが
注意点として
【ホスティングオプションは「iframe」を選択】
そうすることによって、検索結果ページを別のページに設定可能です。
その他はお好きなように設定します。
すると、コード取得において検索結果を表示するサイトのURLを入力するので
検索結果を表示するURLを入力します。
ここには、あらかじめ作成したメニューアイテムのエイリアスあたりを入力します。
例)検索結果というメニューアイテムを作成し、タイプは「スタンダード記事レイアウト」とする。
エイリアスをsearchとすれば、生成されるアドレスは「http://○○○.ne.jp/search.html」となる。
そして、検索ボックスコードは
サイト内検索を表示する部分に貼り付けます。
(カスタムモジュールとし、テンプレートに配置する方法がいいと思います。)
検索結果コードについては、カスタムモジュールとしてモジュールを生成します。
メニュー割り当ては、先ほど新しく作成したメニューアイテムに割り当てし、
ポジションはテンプレートのコンテンツを表示する部分あたりに設定します。
少々、わかりづらいかと思いますが、これで設置ができます。
ご質問がありましたら、コメントどしどしください。
以上
タイトルについて、上手くいったので備忘録します。
Joomlaには標準でサイト内検索機能がついていますが
検索対象はコンテンツやメニュー等、Joomlaが標準で利用する
データのみとなっています。
なので、新たにテーブルを一個追加し、そのデータも対象に入れる場合は
前回の記事で紹介した方法で、カスタマイズが必要です。
ですが、今回はタイトルにあるように
Googleが無償で提供しているサイト内検索機能を利用して
サイト内検索を実装しようということです。
利点としては
・サイト内の全データが対象となる
これが一番大きいです。
いくらデータを追加しようが、検索対象となってくれます。
さて、設置方法ですが
まずは、http://www.google.co.jp/cse/にアクセスします。(要Googleアカウント)
アクセス後、デザイン等を設定しますが
注意点として
【ホスティングオプションは「iframe」を選択】
そうすることによって、検索結果ページを別のページに設定可能です。
その他はお好きなように設定します。
すると、コード取得において検索結果を表示するサイトのURLを入力するので
検索結果を表示するURLを入力します。
ここには、あらかじめ作成したメニューアイテムのエイリアスあたりを入力します。
例)検索結果というメニューアイテムを作成し、タイプは「スタンダード記事レイアウト」とする。
エイリアスをsearchとすれば、生成されるアドレスは「http://○○○.ne.jp/search.html」となる。
そして、検索ボックスコードは
サイト内検索を表示する部分に貼り付けます。
(カスタムモジュールとし、テンプレートに配置する方法がいいと思います。)
検索結果コードについては、カスタムモジュールとしてモジュールを生成します。
メニュー割り当ては、先ほど新しく作成したメニューアイテムに割り当てし、
ポジションはテンプレートのコンテンツを表示する部分あたりに設定します。
少々、わかりづらいかと思いますが、これで設置ができます。
ご質問がありましたら、コメントどしどしください。
以上
2011年5月25日水曜日
【CakePHP関連】ページネーションでのソートについて
お疲れ様です。
タイトルの件で
はまりましたので備忘録。
ページネーションの際、表示するデータをソートすることができます。
そこで、手持ちのCakePHP参考書にあるように
'sort'=>'id'
'direction'=>'asc'
と記述したのですが、ソートされずデフォルトのままで
表示されてしまいました。
そこで
'order'=>'id asc'
と、conditionsでよくやる方法で試したところ
上手くソートすることができました。
なぜなんでしょうか?
とりあえず備忘録します。
以上
タイトルの件で
はまりましたので備忘録。
ページネーションの際、表示するデータをソートすることができます。
そこで、手持ちのCakePHP参考書にあるように
'sort'=>'id'
'direction'=>'asc'
と記述したのですが、ソートされずデフォルトのままで
表示されてしまいました。
そこで
'order'=>'id asc'
と、conditionsでよくやる方法で試したところ
上手くソートすることができました。
なぜなんでしょうか?
とりあえず備忘録します。
以上
【CakePHP関連】ページネーションで、モデルを指定する方法
お疲れ様です。
タイトルの件で
はまりまくったので備忘録します。
Cakephp1.2から実装されているページネーション機能。
非常に便利です。
条件を指定するだけでページネーションが簡単に実装できます。
そこで、ページネーションを行うデータについてですが
基本的に、記述を行うコントローラーが使用しているモデルを
自動的に参照するようになっています。
例)UsersコントローラーでUserモデルに対してページネーションを指定
class UsersController extends AppController {
var $uses = 'User';
$this->paginate();
以下省略
特に条件等がなければ、この1行で完了します。
ただし、コントローラー内で複数のモデルを使用している場合
class UsersController extends AppController {
var $uses = array('test','test2','user')
$this->paginate();
以下省略
上記記述だとtestモデルがページネーションされます。
そこでページネーションを設定する際に
モデルを指定する方法は
class UsersController extends AppController {
var $uses = array('test','test2','user')
$this->paginate('test2');
以下省略
となります。
ページネーションに関しては、よく利用すると思いますので
情報が入り次第、どんどん追加したいと思います。
以上
タイトルの件で
はまりまくったので備忘録します。
Cakephp1.2から実装されているページネーション機能。
非常に便利です。
条件を指定するだけでページネーションが簡単に実装できます。
そこで、ページネーションを行うデータについてですが
基本的に、記述を行うコントローラーが使用しているモデルを
自動的に参照するようになっています。
例)UsersコントローラーでUserモデルに対してページネーションを指定
class UsersController extends AppController {
var $uses = 'User';
$this->paginate();
以下省略
特に条件等がなければ、この1行で完了します。
ただし、コントローラー内で複数のモデルを使用している場合
class UsersController extends AppController {
var $uses = array('test','test2','user')
$this->paginate();
以下省略
上記記述だとtestモデルがページネーションされます。
そこでページネーションを設定する際に
モデルを指定する方法は
class UsersController extends AppController {
var $uses = array('test','test2','user')
$this->paginate('test2');
以下省略
となります。
ページネーションに関しては、よく利用すると思いますので
情報が入り次第、どんどん追加したいと思います。
以上
2011年5月20日金曜日
【Joomla1.5系関連】ルートパスを取得する
お疲れ様です。
タイトルの件で備忘録します。
$root = JURI::base();
$rootにはシステムパスが入ります。
すべてのパスにこのシステムパスをつけておけば
サイト移動時でも問題ないでしょう。
以上
タイトルの件で備忘録します。
$root = JURI::base();
$rootにはシステムパスが入ります。
すべてのパスにこのシステムパスをつけておけば
サイト移動時でも問題ないでしょう。
以上
【Joomla1.5系関連】サイト内検索のカスタマイズ
お疲れ様です。
Joomla標準機能である
サイト内検索ですが
プラグインを新たに追加することで
検索対象の拡大が可能です。
今回ですと、Joomlaのシステムデータとは別に
新たにテーブルを一個DBに追加したのですが
このテーブル内のデータも検索対象にしたかったので
プラグインを追加しました。
方法は
ルートフォルダ/plugins/search内にある
content.phpとcontent.xmlをコピー&リネームし
zip形式に圧縮した後、Joomla内でアップロードします。
中に記述するプログラムは、content.phpを参考に
カスタマイズします。
以上
Joomla標準機能である
サイト内検索ですが
プラグインを新たに追加することで
検索対象の拡大が可能です。
今回ですと、Joomlaのシステムデータとは別に
新たにテーブルを一個DBに追加したのですが
このテーブル内のデータも検索対象にしたかったので
プラグインを追加しました。
方法は
ルートフォルダ/plugins/search内にある
content.phpとcontent.xmlをコピー&リネームし
zip形式に圧縮した後、Joomla内でアップロードします。
中に記述するプログラムは、content.phpを参考に
カスタマイズします。
以上
【Joomla1.5系関連】新着記事モジュールの日付のずれについて
お疲れ様です。
今回、Joomla1.5系にて
新着記事表示モジュールを利用すると
日付がずれる(タイムゾーンを日本にしているにもかかわらず標準時間になる)
という現象を解決するために、いろいろ調査した事柄です。
何かの役に立つかもということで
一応残しておきます。
その前に、上記件の解決方法ですが
mod_latestnewsモジュールの
日付表示部分に+9時間するように修正しました。
(あまりいいとはいえませんが・・・)
コードは割愛致します。
ではでは、今回判明した事柄です。
①記事の作成や編集時にDBへデータを保存している箇所
ルートフォルダ/administrator/components/com_content/controller.php
saveContent関数
作成日時等の日時はtoMySQL関数という
MySQLのdatetime形に型を整形している感じです。
また、taskパラメーターによって、保存や適用の
リダイレクト処理もsaveContent関数内で処理もしています。
②toMySQL関数定義ファイル
ルートフォルダ/libraries/joomla/utilities/date.php
toMySQL関数のほかに
タイムゾーンによって日付を加算する処理等も行っているようですが
私の環境(Joomla1.5.22)では管理画面上に表示されている日付と
DBに格納されている日付に相違があります。
このtoMySQLで正しいタイムゾーン値(日本なら+9)が取得されてないため
DBに格納する際は標準時間(ロンドン)で格納されます。
このあたりを修正してみたのですが、なぜか保存や適用をするたびに
作成日時がどんどん+9されてしまいます。
③JFactoryクラス定義ファイル
ルートフォルダ/libraries/joomla/factory.php
これはJoomla内でよく利用されるJFactoryクラスが定義されている場所です。(おそらく)
以上です。
今回、Joomla1.5系にて
新着記事表示モジュールを利用すると
日付がずれる(タイムゾーンを日本にしているにもかかわらず標準時間になる)
という現象を解決するために、いろいろ調査した事柄です。
何かの役に立つかもということで
一応残しておきます。
その前に、上記件の解決方法ですが
mod_latestnewsモジュールの
日付表示部分に+9時間するように修正しました。
(あまりいいとはいえませんが・・・)
コードは割愛致します。
ではでは、今回判明した事柄です。
①記事の作成や編集時にDBへデータを保存している箇所
ルートフォルダ/administrator/components/com_content/controller.php
saveContent関数
作成日時等の日時はtoMySQL関数という
MySQLのdatetime形に型を整形している感じです。
また、taskパラメーターによって、保存や適用の
リダイレクト処理もsaveContent関数内で処理もしています。
②toMySQL関数定義ファイル
ルートフォルダ/libraries/joomla/utilities/date.php
toMySQL関数のほかに
タイムゾーンによって日付を加算する処理等も行っているようですが
私の環境(Joomla1.5.22)では管理画面上に表示されている日付と
DBに格納されている日付に相違があります。
このtoMySQLで正しいタイムゾーン値(日本なら+9)が取得されてないため
DBに格納する際は標準時間(ロンドン)で格納されます。
このあたりを修正してみたのですが、なぜか保存や適用をするたびに
作成日時がどんどん+9されてしまいます。
③JFactoryクラス定義ファイル
ルートフォルダ/libraries/joomla/factory.php
これはJoomla内でよく利用されるJFactoryクラスが定義されている場所です。(おそらく)
以上です。
2011年5月19日木曜日
【CakePHP関連】ラジオボタン出力ヘルパーについて
お疲れ様です。
何回も調べなおすので、備忘録します。
以下のとおりになります。
<?php echo $form->radio('radio',array('0'=>'テスト0','1'=>'テスト1'));?>
上記記述だと、勝手にlegendがつきます。
なので、第3引数にarray('legend'=>false)を追加すると消えます。
<?php echo $form->radio('radio',array('0'=>'テスト0','1'=>'テスト1'),array('legend'=>false));?>
さらにセパレートもつけれます。
<?php echo $form->radio('radio',array('0'=>'テスト0','1'=>'テスト1'),array('legend'=>false,'separator'=>'★'));?>
以上
何回も調べなおすので、備忘録します。
以下のとおりになります。
<?php echo $form->radio('radio',array('0'=>'テスト0','1'=>'テスト1'));?>
上記記述だと、勝手にlegendがつきます。
なので、第3引数にarray('legend'=>false)を追加すると消えます。
<?php echo $form->radio('radio',array('0'=>'テスト0','1'=>'テスト1'),array('legend'=>false));?>
さらにセパレートもつけれます。
<?php echo $form->radio('radio',array('0'=>'テスト0','1'=>'テスト1'),array('legend'=>false,'separator'=>'★'));?>
以上
2011年5月18日水曜日
【HTML関連】metaタグによる検索クロール制御
お疲れ様です。
タイトルの件で調査したので
備忘録します。
<META NAME="ROBOTS" CONTENT="NONE">
<META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW">
そのページと、そこからリンクしている全てのページを制限する。
<META NAME="ROBOTS" CONTENT="INDEX,NOFOLLOW">
そのページのみを許可し、そこからのリンクを制限する。
index.htmlに使うと便利。
<META NAME="ROBOTS" CONTENT="INDEX">
そのページの登録を許可する
<META NAME="ROBOTS" CONTENT="NOINDEX,FOLLOW">
そのページを制限し、そこからのリンクを許可する。
このような使い方は普通しない。
<META NAME="ROBOTS" CONTENT="ALL">
下の階層ページの巡回を許可する。
このような設定は、わざわざすることでもない。
以上
タイトルの件で調査したので
備忘録します。
<META NAME="ROBOTS" CONTENT="NONE">
<META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW">
そのページと、そこからリンクしている全てのページを制限する。
<META NAME="ROBOTS" CONTENT="INDEX,NOFOLLOW">
そのページのみを許可し、そこからのリンクを制限する。
index.htmlに使うと便利。
<META NAME="ROBOTS" CONTENT="INDEX">
そのページの登録を許可する
<META NAME="ROBOTS" CONTENT="NOINDEX,FOLLOW">
そのページを制限し、そこからのリンクを許可する。
このような使い方は普通しない。
<META NAME="ROBOTS" CONTENT="ALL">
下の階層ページの巡回を許可する。
このような設定は、わざわざすることでもない。
以上
【CSS関連】InputタグのCSS指定方法
お疲れ様です
HTMLのinputタグは
text、textarea、checkbox等がありますが
それを個別にスタイルシートで記述する方法が
ありましたので備忘録します。
例)
input[type=checkbox] {
****
****
}
こういう感じです。
以上
HTMLのinputタグは
text、textarea、checkbox等がありますが
それを個別にスタイルシートで記述する方法が
ありましたので備忘録します。
例)
input[type=checkbox] {
****
****
}
こういう感じです。
以上
2011年5月14日土曜日
【HTML関連】メタタグによるキャッシュ制御
お疲れ様です。
発見したので備忘録します。
ページによってはキャッシュをせず、毎回サーバーのデータを取得したい
ということがあるかと思います。
そのときに、利用できるコードです。
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT>
ただし、ブラウザの種類やバージョンによっては完全に制御できない可能性があります。
以上
発見したので備忘録します。
ページによってはキャッシュをせず、毎回サーバーのデータを取得したい
ということがあるかと思います。
そのときに、利用できるコードです。
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT>
ただし、ブラウザの種類やバージョンによっては完全に制御できない可能性があります。
以上
【Joomla1.5系関連】サイト内検索について
お疲れ様です。
発見しましたので備忘録します。
Joomlaには標準でサイト内検索の機能が利用できます。
モジュールにてその機能を設定しますが
デフォルトだと、コンテンツだけじゃなく、カテゴリやセクションまで
検索対象となります。
つまり空のカテゴリ等があった場合も検索結果に反映されちゃいます。
検索対象をコンテンツだけにする方法ですが
1.プラグイン管理を開きます。
2.タイプ選択にて「search」を選びます。
3.検索-コンテンツ以外を非公開にします。
以上でコンテンツのみに絞る事ができます。
以上
発見しましたので備忘録します。
Joomlaには標準でサイト内検索の機能が利用できます。
モジュールにてその機能を設定しますが
デフォルトだと、コンテンツだけじゃなく、カテゴリやセクションまで
検索対象となります。
つまり空のカテゴリ等があった場合も検索結果に反映されちゃいます。
検索対象をコンテンツだけにする方法ですが
1.プラグイン管理を開きます。
2.タイプ選択にて「search」を選びます。
3.検索-コンテンツ以外を非公開にします。
以上でコンテンツのみに絞る事ができます。
以上
2011年5月12日木曜日
【HTML関連】エスケープについて
お疲れ様です。
最近知ったので備忘録します。
HTMLタグのエスケープ
「&」----&amp;
「>」----&gt;
「<」----&lt;
「"」----&quot;
以上
最近知ったので備忘録します。
HTMLタグのエスケープ
「&」----&amp;
「>」----&gt;
「<」----&lt;
「"」----&quot;
以上
【CakePHP関連】フラッシュメッセージ出力について
お疲れ様です。
最近知ったので備忘録します。
よくコントローラーで
$this->Session->setFlash("登録しました。");
などと行うと、ビュー側にメッセージを表示することができます。
これはデフォルトのレイアウトを使用していると、固定した位置
(つまり、Cakephpのデフォルトレイアウトに設定されている位置)に
表示されます。
このメッセージをビュー側のctpファイルで
任意の場所に表示するコードが
<?php $session->flash(); ?>
です。
以上
最近知ったので備忘録します。
よくコントローラーで
$this->Session->setFlash("登録しました。");
などと行うと、ビュー側にメッセージを表示することができます。
これはデフォルトのレイアウトを使用していると、固定した位置
(つまり、Cakephpのデフォルトレイアウトに設定されている位置)に
表示されます。
このメッセージをビュー側のctpファイルで
任意の場所に表示するコードが
<?php $session->flash(); ?>
です。
以上
2011年5月6日金曜日
【Joomla1.5系関連】ファビコンの配置について
お疲れ様です。
Joomlaのフェイバリット・アイコン、通称ファビコンについて
備忘録します。
Joomlaサイトでのファビコンの設定ですが
テンプレートフォルダの直下に
「favicon.ico」をアップロードするだけで
可能です。
おそらく、これはテンプレートに書かれている
<jdoc:include type="head" />という
Joomla特有の関数が、favicon.icoの有無で
ファビコンを表示するメタタグを出力しているっぽいからです。
※まだきちんと検証していません!!
情報が入り次第、更新していきたいと思います。
以上
Joomlaのフェイバリット・アイコン、通称ファビコンについて
備忘録します。
Joomlaサイトでのファビコンの設定ですが
テンプレートフォルダの直下に
「favicon.ico」をアップロードするだけで
可能です。
おそらく、これはテンプレートに書かれている
<jdoc:include type="head" />という
Joomla特有の関数が、favicon.icoの有無で
ファビコンを表示するメタタグを出力しているっぽいからです。
※まだきちんと検証していません!!
情報が入り次第、更新していきたいと思います。
以上
2011年5月2日月曜日
【PHP関連】画像ファイルアップロード時のコンテンツタイプについて
お疲れ様です。
はまったので備忘録します。
PHPのシステムにてファイルをアップロードする際
Content-Typeをみてファイルの種類を判断します。
今回JPEG画像をアップロードした際に
image/pjpegというタイプに遭遇しました。
調べてみると、ブラウザがIEの時はそうなるみたいです。。。
FIREFOXやSafari、Chromeでもimage/jpegなんですけどね。
以上
はまったので備忘録します。
PHPのシステムにてファイルをアップロードする際
Content-Typeをみてファイルの種類を判断します。
今回JPEG画像をアップロードした際に
image/pjpegというタイプに遭遇しました。
調べてみると、ブラウザがIEの時はそうなるみたいです。。。
FIREFOXやSafari、Chromeでもimage/jpegなんですけどね。
以上
2011年5月1日日曜日
【CakePHP関連】キャッシュを行わない
お疲れ様です。
キャッシュについて備忘録します。
コントローラーからキャッシュをせず
毎回処理を通す方法です。
表示したいアクションの中で
Configure::write('Cache.check',false);
と書きます。
以上
キャッシュについて備忘録します。
コントローラーからキャッシュをせず
毎回処理を通す方法です。
表示したいアクションの中で
Configure::write('Cache.check',false);
と書きます。
以上
登録:
投稿 (Atom)