Development memo

Rough Consensus And Running code

fedora6でphpのバージョンアップ[yum]

json_encode/decode関数が使いたいため(v5.2以上)phpのバージョンアップが必要となった。
yum update php でも5.1.6(だったかな?)にしかならず、5.2.X にならなかった。

そこで、

(そのときの作業メモ)
wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-2.noarch.rpm
wget http://rpms.famillecollet.com/el5.i386/remi-release-5-4.el5.remi.noarch.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm
yum –enablerepo=remi update php

でアップデートできると思っていたがmysqlでエラーが出てしまったので、
yum –enablerepo=remi update php mysql
としてみたら、うまくいった。

phpのバージョン確認
php -v

あとはアパッチ再起動で完了。
mysqlもバージョンアップとなったが、特に問題なく動作。
意外とすんなりいった。
http://blog.famillecollet.com/pages/Config-en

Javascript elementの値がとれず、ハマリました

DOM(thickbox)で読み込んだページの先でJavascriptによるフォームの精査をするスクリプトを書いたのですが、elementの値がとれず、原因を調べるのに少々時間がかかりました。

原因はフォーム名の重複でした。こんな基本的なところで引っかかるなんて・・・。DOMで読み込んだものがFORMの0番目だと思い込んでいたので、それがそもそもの間違いでした。DOMを呼び出している側のFORMが0番目になります。

結局DOMで読み込んだ側のFORMに名前をつけてやって無事解決しました。

いずれまたはまりそうな気がしたのでメモっておきます。

FCKeditorに.flvファイルをアップできるようにする。

FCKeditorでFLV動画を扱えるようにする。

http://beabo.net/2008/06/add-flvplayer/

こちらのサイトを参考にやってみたのだが、アイコンをクリックするとポップアップ先のURLが
(http://サイト名/FCKEditor/editor/plugins/flvPlayer/undefined. )となり表示されない。
原因は分からないが、修正方法は以下のとおり。

http://sourceforge.net/tracker/index.php?func=detail&aid=1856051&group_id=75348&atid=737639

からダウンロードしてきたflvPlayerプラグインを解凍すると出来るフォルダの
flvPlayer/flvPlayer.jsの235行目くらい、

function BrowseServer()
{
	OpenServerBrowser(
		'flv',
		oEditor.FCKConfig.MediaBrowserURL,
		oEditor.FCKConfig.MediaBrowserWindowWidth,
		oEditor.FCKConfig.MediaBrowserWindowHeight ) ;
}

これを以下のように変更する

function BrowseServer()
{
	OpenServerBrowser(
		'flv',
		oEditor.FCKConfig.FlashBrowserURL,
		oEditor.FCKConfig.FlashBrowserWindowWidth,
		oEditor.FCKConfig.FlashBrowserWindowHeight) ;
}

Windows vistaでApache2.2.11 & php5.2.8 のインストール

よくApache & php をインストールするが、今回は初めてVistaにインストールした。いつもはWindowsServerなのでMssqlだが、今回はExtensionにMysqlを追加した。

全部で追加したモジュールは以下の通り

  • GD2
  • Mysql
  • OpenSSL
  • Mbstring
  • PEAR(Extension)

まず、Apacheをインストーラから問題なくインストール。次にphpのインストールだが、vistaにはphpのインストーラーが使えなかった(原因不明:zipパッケージを使うほうが好きなので追及しなかった)。

で、インストーラを早々とあきらめ、zipファイルを本家よりダウンロードして解凍してProgram Filesの中にコピー。

Apache のhttpd.confの一番最後に

PHPIniDir “C:/Program Files/php/”
LoadModule php5_module “C:/Program Files/php/php5apache2_2.dll”
AddType application/x-httpd-php .php

を追加した。

そして次にphp.ini-dist をコピーしてphp.iniに書き換え、634行目からの

extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_openssl.dll

の使いたいモジュールを追加。そしてApache 再起動して、動作確認・・・のはずが動かない。
Apacheのエラーログを見ると原因がわかった。

PHP Startup: Unable to load dynamic library php_gd2.dll’…
PHP Startup: Unable to load dynamic library php_mbstring.dll’…
PHP Startup: Unable to load dynamic library php_openssl.dll’…
PHP Startup: Unable to load dynamic library php_mysql.dll’…

というエラーが出ていた。php.iniに戻って
extension_dirの値を見てみるとデフォルトで

extension_dir = “./”

となっていたので、フルパス

extension_dir = “C:/Program Files/php/ext/”

に変更した。Apacheを再起動してみると、MysqlのExtensionだけ読み込まれていないエラーが出た(Apacheのerror.log)。

何度確かめても名前は間違ってないし、パスもあっているし、ファイルも存在するし・・・と悩んだ挙句、MySQLのクライアントライブラリである libmysql.dll がWindowsのパスの通る場所においてないといけないということがわかった。

libmysql.dll は既に、PHPのインストールフォルダ直下にあったので、C:/Windows/Sytem32/にコピーしてApache再再起動(何度やったか分からない)。

(補足)PHPのインストールフォルダに環境変数のPATHを通せばSystem32にコピーしなくてもよい。

というか、WAMPをインストールしたほうが早いという意見もあるが、やったことないし。

Opencartがバージョンアップしました

Opencart v1.1.8 がリリースされましたね。

早速見てみましたが、Modelディレクトリに以前は何も入っていなかったのですが、モデルクラスが追加されていました。

プログラムコードもだいぶ改良されていて、以前より、ソースコードが短くて済みます。より、フレームワークになったって感じです。

管理者画面も、以前は画像と商品を別々にアップロードしなくてはなりませんでしたが、今度のは同じ画面で追加が出来るので、こちらのほうが一般的で良いと思いました。

構造を全て理解するにはまだ少し時間がかかりますが、すこしずつ紐解いて行きたいです。

デザインも一新して前よりもさらにいい感じだし、これで日本のユーザーも少しは増えてくれるかな?

さあOpenCartを使いましょう!!困ったことは相談に乗ります!一緒に解決しましょう!

class=”thickbox” に rel をつけると画像が表示されない

thickboxでグループ化しようと思ったら、画像が表示されませんでした。relをつけないとうまくいくのに。

以前制作したときには問題なくグループ化できたので、原因を調べて見たところ、jQueryのバージョンが以前制作したものと違っていました。

今回エラーがでたバージョンはjQuery3.1で以前正常に表示できたjQuery はjQuery 1.2.6でした。案の定jQuery 1.2.6にバージョンを落としてみたらグループ化できました。しかし、jQueryは他の部分でもしようしているのでバージョンを下げるわけにはいかず、色々と調べたところ、

Thickbox 3.1(unCompressed) の79行目、
TB_TempArray = $(“a[@rel="+imageGroup+"]“).get();
というの
TB_TempArray = $(“a[rel="+imageGroup+"]“).get();

に変更すれば出来ました。

OpenCartのモジュール DisplayIcons

英語の説明文が完成したのでContributionをアップしました。名前はDisplayIcons。
その名前の通り、新作リリースの場合は「New」、在庫が少ない場合は「在庫少」、在庫がない場合は「在庫無」のアイコンが出る、というものです。新作の場合は何日まで表示するか、在庫が少ない場合のアイコンは在庫がいくつになったら表示するか設定できます。
日本のショッピング事情には必須だと思うのですが、(特に在庫無しっていうの)無かったので自作しました。
OpenCartを使いましょう!

こちらでダウンロードできます
http://www.opencart.com/contribution/info/category_id/1/contribution_id/81

OpenCartのrss.phpで文字化け

OpenCartのrss.phpで日本語が文字化けする。ã←こんな文字がたくさん出る。

upload/rss.phpのソースコードを見てみると、48行目

foreach ($results as $result) {
$products[]=array(

'name' => htmlentities(strip_tags($result['name'])),
'url' => htmlentities($url->href('product', FALSE, array('product_id' => $result['product_id']))),
'add_date' => date("D, d M Y H:i:s T", strtotime($result['date_product_added'])),
'desc' => htmlentities(strip_tags($result['description'],'ENT_QUOTES')) .
htmlentities('<br><img width="100" height="100" src="' .
$image->resize($result['filename'], 100, 100) . '">')
);
}

となっているが、ここのforeach文で文字化けしている様子。
htmlentities のデフォルト文字列は iso-8859-1なのでUTF-8に変更。

foreach ($results as $result) {
$products[]=array(

'name' => htmlentities(strip_tags($result['name']),ENT_COMPAT,"utf-8"),
'url' => htmlentities($url->href('product', FALSE, array('product_id' => $result['product_id'])),ENT_COMPAT,"utf-8"),
'add_date' => date("D, d M Y H:i:s T", strtotime($result['date_product_added'])),
'desc' => htmlentities(strip_tags($result['description'],'ENT_QUOTES'),ENT_COMPAT,"utf-8") .
htmlentities('<br><img width="100" height="100" src="' .
$image->resize($result['filename'], 100, 100) . '">'),ENT_COMPAT,"utf-8"
);
}

これで文字化けが解消された

OpenCartの日本語化

日本語化ファイルを制作しました。ファイルは本家http://www.opencart.com/のcontribution内にアップロードしました。ここです。

英語は基本的に苦手なので、日本人がもっとOpencartを使ってくれるよう、日本語を見るとなんとなく安心できる人のためにアップしました。開発時間の短縮になれば、と思います。日本語化したらかえってわかりずらくなった、という方は自分で日本語を直してください。ご利用はご自身の責任でお願いします。

ただいま、アイコンを表示するモジュールを製作中です。完成すれば、New アイコンと在庫少ないアイコンと在庫切れアイコンが表示できるようになります。、というか、もうできているのですが、本家にアップロードするのに、インストール方法の翻訳(日本語→英語)に苦闘しています(というか、できない)。今週中に通訳の知り合いにお願いして翻訳してもらう予定です。

OpenCartの日本語化(バグフィックス)

引き続きオープンカートOpenCartの日本語化に集中。
といっても日本語になる前にバグを発見したのでメモっておきます。
/upload/library/environment/url.php
80行目//return htmlspecialchars($server . $link);
return $server . $link;

に書き換える
extension.phpのURLがおかしかったので。
参考URL→http://forum.opencart.com/index.php?action=profile;u=2022;sa=showPosts

/upload/admin/template/default/content/product.tpl
10行目 <div class=”enabled” onmouseover=”className=’hover’” onmouseout=”className=’enabled’” onclick=”location=’<?php echo $delete; ?>’>

<div class=”enabled” onmouseover=”className=’hover’” onmouseout=”className=’enabled’” onclick=”location=’<?php echo $delete; ?>’”>
に書き換える。※最後の方の「”」を書き加える
製品更新の画面で削除アイコンが表示されなかったため(動作には問題ないが)。

デモ用オープンカート http://officesoya.net/~demo3 にて公開予定です。