Development memo

Rough Consensus And Running code

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 にて公開予定です。

.htaccessを有効にするためにAllowOverride AllにするとForbiddenになる・・・

OpenCartのインターフェイスがかわいくて大変気に入っているのですが、日本ではほとんど使われていないOpenCartを必死に日本語化しているさなか、ローカル(WindowsXP)ではリンクをクリックしてもページが変わらない、テストサーバー(Fedora Core6)ではRewriteが動いていない様子でNotFoundになってしまい、心が折れました・・・。日本語の情報が少なすぎなのは覚悟の上でしたが。英語のFAQを読み漁っていると、解決しました。私はチルダ付きのUserdirにインストールしたわけだが、以下の太字の部分を加える必要があったのです。

<IfModule mod_rewrite.c>
RewriteEngine On

# Put your installation directory here:
# If your URL is www.example.com/shop/, use /shop/
# If your URL is www.example.com/, use /
RewriteBase /
RewriteBase /~mydir/

#OPENCART REWRITES START
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php
#OPENCART REWRITES END

</IfModule>

テストサーバー(Fedora Core6)では上記の問題に加え、.htaccessの設定をhttpd.confで使用しているディレクトリにだけ
AllowOverride All
としてみるとForbiddenに
AllowOcerride None
としてみるとトップページは表示されるがその他のページはFileNotFoundになってしまうという現象に悩まされた。
が、.htaccessのパーミッションが間違っていた・・・644で表示できました。

日本語情報がかなり少ないOpenCartですが、ソースコードが整理されていてカスタマイズしやすそうなので選びました。ZenCartやPrestaShopもインストールしてみたけど、どうも管理画面とかが気に入らない・・・
皆さんこんなにかわいいOpenCartをもっと使ってください!

IE7で表示されないページ

IE7でクライアントの画面が表示されず、焦った。FirefoxやSafariでは問題ないのに・・・、でもソースコードは表示される。
原因は
<meta http-equiv=”Content-Script-Type” content=”text/javascript”>
がヘッダーにないのにJavascriptをhtmlに書いていたから。

IE7で表示がされていないページがあったらこの三行が入っているか確認しよう。
<meta http-equiv=”Content-Type” content=”text/html; charset=文字コード”>
<meta http-equiv=”Content-Script-Type” content=”text/javascript”>
<meta http-equiv=”Content-Style-Type” content=”text/css” />

include_pathの追加

インクルードパスを追加


ini_set("include_path","../Zend");

または、


set_include_path("../Zend");

どちらでも良い。デフォルトのphp.iniに書いてあるパスは無視されるので、要注意です。
または、.htaccessで(下記はPHP5の場合)
<IfModule mod_php5.c>
 php_value include_path “C:\php\includes;C:\Program Files\php\Zend\library;”
</IfModule>
としてやってもよい。
デフォルトのphp.iniに書いてある設定も有効にしたい場合は、


ini_set("include_path", 追加するパス . PATH_SEPARATOR . ini_get("include_path") );

とする。(PATH_SEPARATORはPHPの定数です)
include_pathがわからない時はphpinfo()で調べる。

fedora webmater 受信できない

fedora webmaterというアカウントのメールが受信できない

useradd webmasterとしてユーザーを追加しようとしたが、すでに追加されている模様。
どうやらエイリアスというやつでrootで受信されるようになっていたらしい。
webminのpostfixのモジュール、エイリアス設定ですぐ受信できるようになった。

1時間くらい悩んだけど・・・。

サーバーが不安定

株式会社シーマン サーバー監視サービス

というサービスに登録しているのだが、週に一度ほどサーバーが繋がらなくなる。しかも決まってメールもつながらなくなる。
DNSはMydnsサービスでIPアドレス更新にはHTTPのBASIC認証DiCEを利用しているわけだが、仮想サーバーで同じアパッチにもうひとつドメインをもっているのにそちらは一度も繋がらなくなったことはない。なのでDiCEが怪しいと思って、eventをみてみた。そしたら、仮想サーバーの方は7日毎になっているのに、本サーバーのほうは28日毎に。Mydnsの注意書きにも


DNS情報そのものの生成期間は、一週間です。1週間まったくアクセスがないと、サーバーが動いているかどうかも判りませんのでDNS情報を作りません。 さらに1ヶ月間全くIPアドレスの更新がない、またはログインも無いという場合は、登録データそのものを破棄しますのでご注意ください。

とあった。

DiCEの設定を7日毎のIPアドレス更新時という設定に変更して、様子をみる。

ポップアップブロックでハマったのでメモ

IE7とFirefoxでローカルで動作確認したのち、本番サーバーへファイルをアップロードし、動作確認をしたわけですが、なぜか

window.open(url);

が動作せず。
ポップアップブロッカーのことは知っていたけど、最初にポップアップする際に「どうしますか?」みたいに聞かれると思っていた。原因不明なので

ini_setエラーレポーティングをE_ALLに。そしてApacheのerror.logを調べて見ることに。
しかし、これといってエラーは出されてなかった。

次に


win = windou.open(url);
alert(win);

をやってみたらnullが帰ってきた。お帰り。
じゃなくて返ってきた。

調べてみるとポップアップブロックなどでウィンドウを開くことができなかった場合はnullを返すらしいです。
ということで


win = windou.open(url);
if (win==null) alert('ブロックされています');

としました。

  •  

    2009 年 1 月
    « 12 月    
     1234
    567891011
    12131415161718
    19202122232425
    262728293031