ajaxsearch1.9.2でも、全角スペースで検索させる

  • 2012.02.17 Friday
  • 13:03
毎度のことながらAjaxSearchはアップデートごとにファイル構成とかマイナーチェンジされます。

検索するときの区切り文字はスペースですが、日本語の全角スペースをいれると全角スペース含みの文字列として検索するので、これをなんとかしたいです。

過去記事
ajaxsearch1.8.4で全角スペースでも検索させる
で対処法を書きましたが、AjaxSearch1.9.2には
assets/snippets/ajaxSearch/classes/search.class.inc.php のファイルがありません…。またかよ。

classes/の中を見ると
ajaxSearchInput.class.inc.php というのがあやしい。
開いてみると223行目あたりに

$searchString = $this->_stripTags($searchString);

というのがあるので
このすぐ下に

// zenkakuhankaku space
$searchString=mb_convert_kana($searchString, s, "UTF-8");

と入れてあげれば、全角スペースは自動で半角に変換して検索してくれますw

-------追記--------
こちらからダウンロードできるAjaxSearch1.9.2c は全角スペース問題は解決されていますので、修正する必要はありません。

ロリポでAjaxSearch1.9.2を動かす modx1.0.5J-r10 およびr5

  • 2012.02.17 Friday
  • 13:00
G研サイトをmodx1.0.5J-r5からr10にアップデートしたのを機に、サイト内検索をつけようとAjaxSearch1.9.2を使ってみた。

以前記事に書いたが
ロリポップでAjaxSearch 1.8.1を動かす
このときはmodxもまだ0.9あたりだったので、この情報はもうかなり古い。

でmodx1.0.5J-r10でAjaxSearch1.9.2bを使ってみたのだけど、いきなりエラーで動かないorz
日本公式フォーラムで質問したところ対処法を教えていただいたので、メモ。

assets/snippets/ajaxSearch/classes/ajaxSearch.class.inc.php
78行目あたりの
set_time_limit($asCfg->cfg['timeLimit']);
を削除orコメントアウトすることで動くようになりました。
※コメントアウトするには行頭に//をつける。

ロリポサーバーの人はお試しください。
※ちなみにさくらサーバーでは上記の処理をしなくても動きました。
ためしにコメントアウトしたファイルをさくらサーバーでも使ってみましたが、問題なく動きました。
さくらはどっちでもokみたいです。



ファイルサイズを計算してくれるスニペット

  • 2011.11.18 Friday
  • 13:20
 便利なスニペットを見つけたのでメモ。

pdfファイルとかzipファイルをアップしてダウンロードしてもらうとき、ファイルサイズが書いてあったほうがありがたいよね。
管理してるサイトで、実は今まで手動で書いてたのだが^^;
今後pdfのアップが増えることになったので、自動で計算できないかなぁ? と検索したらスニペットありました。

SNIPPET: filesize

スニペットコール

[[filesize? &file=`filename` &unit=`unit` ]]

Where:

filename - the path to file (for example: assets/file/index.htm)
unit - the maximum unit (for example: KB)
ポイント
・filenameは最初に/なしでOK
・unitはKBにしても1MB超えると表示は
1.19 MBみたいに出力してくれます。

便利です。

mootoolsとMaxigalleryのslimboxを一緒に使う方法

  • 2011.08.23 Tuesday
  • 11:29
今日もmootoolsがらみです。
mootoolsのかっこいいにょろにょろメニューを使ってるるページで、スニペットMaxigalleryを入れて、画像をslimboxで表示したい! と思った。

MaxiGallery(0.5.2)のスニペットコール

[!MaxiGallery? &display=`embedded` &embedtype=`slimbox` &pics_per_row=`4` &max_thumb_size=`80` &max_pic_size=`700` &order_direction=`ASC` &order_by=`pos`!]

としたら、slimbox動きません。サムネイル画像クリックすると、画像のみリンク先ページに表示する…。(mootoolsのにょろにょろメニューはうごく)

書き出したソース見るとheadの中で
<script type="text/javascript" src="manager/media/script/mootools/mootools.js"></script>
<script type="text/javascript" src="assets/templates/modxhost/drop_down_menu.js"></script>

<link rel="stylesheet" href="/assets/snippets/maxigallery/slimbox/css/slimbox.css" type="text/css" media="screen" />

    <script type="text/javascript" src="/assets/snippets/maxigallery/slimbox/js/mootools.js"></script>
    <script type="text/javascript" src="/assets/snippets/maxigallery/slimbox/js/slimbox_lang_en.js"></script>
    <script type="text/javascript" src="/assets/snippets/maxigallery/slimbox/js/slimbox.js"></script>
<link rel="stylesheet" href="/assets/snippets/maxigallery/css/default.css" type="text/css" media="screen" />

となっていてmootoolsを2回読み込んでる。(赤字の部分)
また順番をいじるのかなーと思ったら、MaxigalleryにはJSライブラリを自動で挿入させないパラメータがあった。

&disable_js_libs=`1`(デフォルトは&disable_js_libs=`0`で自動挿入する)
をくわえてやったら
<script type="text/javascript" src="manager/media/script/mootools/mootools.js"></script>
<script type="text/javascript" src="assets/templates/modxhost/drop_down_menu.js"></script>

<link rel="stylesheet" href="/assets/snippets/maxigallery/slimbox/css/slimbox.css" type="text/css" media="screen" />

    <script type="text/javascript" src="/assets/snippets/maxigallery/slimbox/js/slimbox_lang_en.js"></script>
    <script type="text/javascript" src="/assets/snippets/maxigallery/slimbox/js/slimbox.js"></script>
<link rel="stylesheet" href="/assets/snippets/maxigallery/css/default.css" type="text/css" media="screen" />
となって、mootools.jsは一回のみになり、無事slimboxが動くようになりました。

参考
Let's enjoy MODx Maxigallery - 0.5.2
MaxiGalleryのエラー(その2)

MaxiGalleryのエラー(その2)にはMaxigalleryのマネージャー画面でもドロップダウンメニュー(mootoolsのにょろにょろメニュー)を動かす方法も出てますが、Maxigalleryのマネージャー画面は基本管理者しか入らないので、必要ないので修正していません。

ajaxsearch1.8.4で検索の最大文字数を変更する

  • 2010.12.07 Tuesday
  • 17:56
ajaxsearch1.8.4デフォルトでは検索の最大文字数が30文字(日本語だと15文字)です。
英語圏では問題ないでしょうが、日本語で少し長い商品名などをいれるには少々足りないことも。

AjaxSearch Wikiをみると、パラメータに 最小文字数 &minChars  と 最大単語数 &maxWords はありますが最大文字数がありません(ToT)

いったいどこで変更するのか探し回りましたが
最大文字数の変更は全角スペースでも検索の変更と同じファイルにありました。

assets/snippets/ajaxSearch/classes/search.class.inc.php
の18行目
define('MAX_CHARS',30); // maximum number of characters
の30を任意の文字数に変更すればOKです。

ajaxsearch1.8.4で全角スペースでも検索させる

  • 2010.12.07 Tuesday
  • 17:51
ajaxsearchはバージョンがあがるごとに、微妙に細かい変更が多いので、旧バージョンと同じ変更ではうまくいかないことが多いです。

バージョン1.8.1では
報告:ajaxsearch 全角スペースで区切ってand検索
の方法でうまくいったのですが、1.8.4では位置がすこし違いますw
assets/snippets/ajaxSearch/classes/search.class.inc.php
の155行目あたり
// Strip HTML tags
$searchString = stripHtml($searchString);

の下に

// zenkaku space=>hankaku space
$searchString=mb_convert_kana($searchString, s, "UTF-8");

にいれればうまくいきました。
またパラメータの書き方が変更になっているので、前バージョンと同じスニペットコールでは動かなかったり…。

AjaxSearch Wiki とバージョン変更点の書いてある
assets/snippets/ajaxSearch/ajaxSearch_version_184.txt
は必読です。

dittoで更新履歴 1年分だけ表示する

  • 2010.09.03 Friday
  • 11:08
dittoで更新履歴を作る場合、トップページに最新のみを表示させるなら &display=`10` で10件表示とかにします。
ここで「もっと読む」とか「続きをよむ」などのリンクをつけて過去の履歴も見せたい場合、リンク先のページで &display=`all` にすればいいのだけど、長くやってるサイトだと件数が膨大になる。なので1年ごととか、更新日時でページを分けたい場合どうするか? ちょっと悩んだのですがfilterパラメータで簡単にできましたw

&display=`all` &filter=`pub_date,1262271600,6|pub_date,1293807599,5|`

これで公開日(pub_date)が2010年1月1日00:00:00以上(6)、2010年12月31日23:59:59以下(5)のリソースをすべて表示になります。

日付時刻はmodxが読めるようにunixタイムスタンプの形式にします。unixtime変換はググるといろいろでてきます。
ここが便利でした。

unixtime変換ツール

pub_dateでなくeditedonにすれば編集日時で区切れます。

filterパラメータの書き方と意味はMEGUさんのDitto - 2.1の解説を参考にどうぞ。
Let's enjoy MODx Ditto - 2.1

あと、これはサイトをmodxに移行して、過去の履歴は静的htmlを使いmodx移行後の履歴のみDittoで作りたい、という場合にも使えます。
というのも &orderBy=`pub_date DESC` で公開日ソートにした場合、公開日が未入力の時はリソース作成日時が使われます。
サイト移行の場合、過去のページでも作成日時はすべて、当然ですが移行日以後です。単に&display=`all`にした場合、困ったことに…。古いページにいちいち公開日を設定するのはうんざりするくらい大変です。(←実は途中までやったorz)
filterで公開日がサイト移行日以後のものだけ表示にすれば、この問題も解決ですw

コピーライトの年号を自動で入れるスニペット(10.03.02追記あり)

  • 2010.01.21 Thursday
  • 12:21
サイト管理していて、フッターのコピーライト©の年号変更をつい忘れがち。
modxでつくってれば、フッター部分はチャンクにしてる人がほとんどだろうから、一箇所直せばすむのだが、それでも結構忘れるんだよなぁ。

なので年号表記部分をphpで書いてスニペットにすることにした。


<?php
echo 'Copyright &copy; '.date('Y').'';
?>


Copyright &copy; の部分は自分のサイトに合わせて書き方変更してくまさい。
スニペット名はAutoCopyrightとでも。

[[AutoCopyright?]] サイト名 All Rights Reserved.

と書いておけば来年になったら自動で年号変わります。

modxなくてもphpが使えるサイトなら、php直接書いておけば楽ですよ。


------------
追記(10.03.02)

バックアップを取った時に、イベントログが異様に溜まっていることに気が付いた。

date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead


というエラーログが大量にある。(AutoCopyrightスニペットで)タイムゾーンの設定がないから、設定しろといってるらしい。

PHPのtimezoneの設定メモ
PHP | php.ini の date.timezone を変更する

このあたりを参考にして修正しました。

方法1 スニペットの記述に設定を加えて以下のように変更にする。


<?php
ini_set("date.timezone", "Asia/Tokyo");
echo 'Copyright © '.date('Y').'';
?>


方法2 php.iniに直接記述する

date.timezone = Asia/Tokyo

※テキストエディタにこの1行を書いて、ファイル名をphp.iniで保存。modxのindex.phpと同じ階層にアップします。

どちらかをすれば、エラーはでなくなります。

Ditto内でGetFieldスニペットを使う時はキャッシュに注意【1.0.5J-r7で解決済み】

  • 2010.01.21 Thursday
  • 11:44

テンプレートにDittoを記述して、それぞれの親idを取得したい時など、GetFieldスニペットを使うと便利です。

&parents=`[[GetField? &field=`id` &parent=`1` &parentLevel=`1`]]`

このときDittoのスニペットコールはキャッシュなしの

[!Ditto? &parents=`[[GetField? &field=`id` &parent=`1` &parentLevel=`1`]]`!]

にしないとうまくいきません。

外側のDittoはキャッシュなしの[!Ditto?
入れ子のGetFieldはキャッシュありの[[GetField?

ここ、はまりました。
そもそも[!と[[どっちがキャッシュありだっけ? といっつも混乱する…^^;

あとDittoでページ分割パラメータpaginateを使う時はキャッシュありにしないとうまく動きません。
なのでDittoコール内でGetFieldコールした場合は、paginateは使えないです。(未検証ですが)

-------------------------
2012.2.13 追記
modx 1.0.5J-r7 アップデートでこの問題は解決されました。
r7以降は外側のDittoも以下のように[[で記述できます。

[[Ditto? &parents=`[[GetField? &field=`id` &parent=`1` &parentLevel=`1`]]`]]

Dittoは入れ子にできる

  • 2009.06.24 Wednesday
  • 02:21
別の管理サイトでやってみたらできた。

どうゆう意味かというと、まず普通にDittoコールを書きます。

[[Ditto? &parents=`1` &sortBy=`pub_date` &display=`all` &tpl=`testTpl` &dateSource=`pub_date` &dateFormat=`%Y.%m.%d` &showPublishedOnly=`1`]]


で指定したテンプレートtestTplの中にDittoコールを書いてもOK!

<h2><a href="[~[+id+]~]">[+title+]</a></h2>
<p>[+introtext+]</p>
<p>
[[Ditto? &parents=`5` &sortBy=`menuindex` &sortDir=`ASC` &display=`all` &tpl=`testTpl2` &showPublishedOnly=`1` ]]</p>

てな感じ。

1年以上modx触ってて、今まで気が付かなかったよw
ということはtestTpl2の中にDittoコール書いて、さらに入れ子も可能なのかw
この機能はなんかけっこう使えそうな気がする。

calendar

S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< April 2017 >>

たいやき

selected entries

categories

archives

recommend

recommend

recommend

終わり続ける世界のなかで
終わり続ける世界のなかで (JUGEMレビュー »)
粕谷 知世
2011年度SOG賞 シスターフッド賞

recommend

魔法少女まどか☆マギカ 1 【通常版】 [DVD]
魔法少女まどか☆マギカ 1 【通常版】 [DVD] (JUGEMレビュー »)

(全6巻)2011年度SOG賞 シスターフッド賞

recommend

recommend

音楽の在りて
音楽の在りて (JUGEMレビュー »)
萩尾 望都
2011年度SOG賞 候補作

recommend

私のミトンさん
私のミトンさん (JUGEMレビュー »)
東 直子
2011年度SOG賞 候補作

recommend

recommend

recommend

recommend

recommend

玉工乙女
玉工乙女 (JUGEMレビュー »)
勝山海百合
2010年度SOG賞 候補作

recommend

recommend

MODxでつくる!最強のCMSサイト
MODxでつくる!最強のCMSサイト (JUGEMレビュー »)
MODxフォーラムJapanese Co
初心者はとりあえず買っとけ。

links

profile

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM