EC-CUBEテンプレート用タグ

メモ。

随時更新中・・・

パス用タグ

  • <!--{$smarty.const.ROOT_URLPATH}-->
    EC-CUBEで設定したウェブルートのURLパス。
    ドメイン:無し
    出力例:/
  • <!--{$smarty.const.TOP_URL}-->
    EC-CUBEで設定したトップページのURLパス。
    ドメイン:あり
    出力例:http://nandani.sakura.ne.jp/
  • <!--{$smarty.const.CART_URL}-->
    カートへのURLパス。
    ドメイン:あり
    出力例:http://nandani.sakura.ne.jp/cart/
  • <!--{$smarty.const.P_DETAIL_URLPATH}-->
    商品詳細ページへのベースURLパス。
    ドメイン:無し
    実際に商品ページへ行くには後ろに商品IDを付ける必要あり。
    例:<!--{$smarty.const.P_DETAIL_URLPATH}--><!--{$arrProduct.product_id|u}-->
    出力例:/products/detail.php?product_id=1
  • <!--{$smarty.const.IMAGE_SAVE_URLPATH}-->
    アップロードした画像のフォルダへのURLパス。
    ドメイン:なし
    出力例:/upload/save_image/
  • <!--{$TPL_URLPATH}-->
    テンプレートへのURLパス。
    ドメイン:無し
    出力例:/user_data/packages/default/

 

総合管理者 | 2015年12月17日 | コメント(0) | トラックバック(0) | CMS関連

商品ページの変数【EC-CUBE】

かなり雑にメモ。

EC-CUBEの商品ページ用のテンプレートで、商品情報が入っている「$arrProduct」の中身は、以下のキーで取得できます。

■product_id
■name
■maker_id
■status
■comment1
■comment2
■comment3
■comment4
■comment5
■comment6
■note
■main_list_comment
■main_list_image
■main_comment
■main_image
■main_large_image
■sub_title1
■sub_comment1
■sub_image1
■sub_large_image1
■sub_title2
■sub_comment2
■sub_image2
■sub_large_image2
■sub_title3
■sub_comment3
■sub_image3
■sub_large_image3
■sub_title4
■sub_comment4
■sub_image4
■sub_large_image4
■sub_title5
■sub_comment5
■sub_image5
■sub_large_image5
■sub_title6
■sub_comment6
■sub_image6
■sub_large_image6
■del_flg
■creator_id
■create_date
■update_date
■deliv_date_id
■plg_giftpaper_noshi
■product_code_min
■product_code_max
■price01_min
■price01_max
■price02_min
■price02_max
■stock_min
■stock_max
■stock_unlimited_min
■stock_unlimited_max
■point_rate
■deliv_fee
■maker_name
■price01_min_inctax
■price01_max_inctax
■price02_min_inctax
■price02_max_inctax

取得例:商品IDを取得する場合

<!--{$arrProduct.product_id}-->

総合管理者 | 2015年12月11日 | コメント(0) | トラックバック(0) | CMS関連 | PHP関連

Linuxでファイルの中に記述さている文字列を検索する方法

Linuxでファイルの中に記述されている文字列の検索方法です。(タイトルのまま)

まずはTeraTermなどで、サーバにSSH接続してください。

検索したいフォルダまで移動してください。

下記のコマンドを実行してください。

find ./ -type f -name "*.(拡張子)" -print | xargs grep '(検索ワード)'

  • -name "*.(拡張子)":
    特定の拡張子のファイルのみを対象としたい場合は、拡張子も入力してください。
  • grep '(検索ワード)':
    検索したい文字列を入力してください。

例:PHPファイルの中身にhogeが記述されているファイルを検索。

find ./ -type f -name "*.php" -print | xargs grep 'hoge'

 

参考サイト

 

総合管理者 | 2015年11月02日 | コメント(0) | トラックバック(0) | サーバー関連

WordPressの見落としがちな設定(ゴミ箱)

お客様から、記事が勝手に消えてしまったという連絡を受けました。

話をよく聞いてみると、とりあえず非公開にしたいからゴミ箱に移動させていたとのこと。

いや、そういう時はステータスを「下書き」にするか、公開状態を「非公開」にしてほしいのですが・・・

うっかり「完全に削除する」をクリックしてしまったのではないかと思ったのですが、よくよく調べてみると、Wordpressではゴミ箱に移動した記事は、30日経つと自動的に消えてしまうそうな。

これは知らなかった。

ちなみに、wp-config.phpに

define('EMPTY_TRASH_DAYS', 日数);

と追記することで、保存期間は設定できるらしい。

WordPressでゴミ箱から復元する方法と保存期間を変更する方法 | WordPress奮闘記

とりあえずゴミ箱には、消えても良い記事だけを入れましょう。

総合管理者 | 2015年10月17日 | コメント(0) | トラックバック(0) | CMS関連

リバースプロキシ超便利!(専用サーバに限る)

日進月歩のWEB業界。

次々に新しい技術が出てきて、めまぐるしい限りです。

どこまでついていけることやら。

しかしふと後ろを見てみると、結構取りこぼしている知識ありませんか?

ということで、最近知ったリバースプロキシについて。

 

このような事例があったとします。

とある会社で、サーバを移転し、ウェブサイトを一新することになりました。

しかし、その会社は多くの店舗をもっており、しかも店舗ごとにウェブサイトを持っています。

しかし、ドメインは1つで

  • http://www.○○○○.co.jp

が本体のサイト。

各店舗のサイトが、

  • http://www.○○○○.co.jp/□□□□
  • http://www.○○○○.co.jp/△△△△
  • http://www.○○○○.co.jp/××××

フォルダ構造になっているのでした。

さて、本体サイトの準備は出来たのですぐにでも公開したい!

しかし、他の店舗のサイトはまだ出来ておらず、しかも移行が難しいコンテンツもある。

「はやくしてくれ。」

「いやいや待ってください。そもそも移行自体が難しいコンテンツもあるんです。」

という問答の末、

「早く公開したいから、とりあえず、会社本体サイトだけでも新サーバで公開してくれんか?」

と来てしまいました。

さて、こんなときどうするか。

こんなときこそリバースプロキシですよ!(ただし移行先が専用サーバに限る。)

 

STEP.1

まず、元々のサーバ用に、サブドメインを取得し、割り当てておきます。

http://hoge.○○○○.co.jp/

 

STEP.2

新サーバのhttpd.confを開き、

<VirtualHost *:80>
ServerName www.○○○○.co.jp

</VirtualHost>

の中に、

ProxyPass 公開パス 転送先URL
ProxyPassReverse 公開パス 転送先URL

を追記します。

公開パスは、各店舗のフォルダです。

転送先URLは、サブドメインを割り当てた各店舗のURLです。

つまりこうなります。

ProxyPass /□□□□ http://hoge.○○○○.co.jp/□□□□
ProxyPassReverse /□□□□ http://hoge.○○○○.co.jp/□□□□

ProxyPass /△△△△ http://hoge.○○○○.co.jp/△△△△
ProxyPassReverse /△△△△ http://hoge.○○○○.co.jp/△△△△

ProxyPass /×××× http://hoge.○○○○.co.jp/××××
ProxyPassReverse /×××× http://hoge.○○○○.co.jp/××××

 

STEP.3

追記後はApacheを再起動して、DNSを切り替えます。(あらかじめhostsファイルを編集して、DNS切り替え後の状態を確認しておくと良いでしょう。)

 

これで、本体サイトは新サーバで稼動し、各店舗のサイトは旧サーバへ転送されます。

これがただの転送ならば、URLがサブドメインになってしまいますが、リバースプロキシならば、ドメインが「www.○○○○.co.jp」のまま、旧サーバのページを開きます。

 

う~ん、便利だ。

 

参考サイト

総合管理者 | 2015年10月17日 | コメント(0) | トラックバック(0) | サーバー関連

あぁ勘違い ー パーミッションについて

自分はこれまで、パーミッションについて

  • 実行:4
  • 書き込み:2
  • 読み込み:1

だと思っていました。

だって、PHPは644(または604)で動くんだもの。

実行権限がついているのは当然でしょ、と思っていたわけです。

しかし実際は皆さんもご存知の通り

  • 読み込み:4
  • 書き込み:2
  • 実行:1

と間逆!

ドヤ顔で説明していたところに、違いますと指摘されたものだからこれは恥ずかしい・・・

では、なぜPHPは644(または604)で動作するのか。

答えはこのブログに書かれていました。

PHPでパーミッション(実行権)の設定が必要ない理由 | ちほちゅう

なるほど、PHPはapacheモジュールで、apache内で実行されるから、apacheが読み込みさえできれば動作するということですね。

・・・でも待てよ。

PHPにはCGIモードなるものもあったはず。

PerlなどのCGIは755・705で動作するから、CGIモードだと755・705か?

いやしかし、運用している専用サーバのPHPはCGIモードにしていて、644で動いていたはず。

・・・そういえば。

と、専用サーバを設定する際に、suEXECという設定を行ったことを思い出しました。

suEXEC サポート - Apache HTTP サーバ

[引用]
suEXEC 機能により、Apache ユーザは Web サーバを実行しているユーザ ID とは 異なるユーザ ID で CGI プログラムや SSI プログラムを実行することができます。CGI プログラムまたは SSI プログラムを実行する場合、通常は web サーバと同じユーザで実行されます。

なるほど、だからか。

所有者権限の実行でありながら、CGIプログラムを実行することが出来るわけですね。

だから所有者が読み込みさえできればよいと。

 

総合管理者 | 2015年10月17日 | コメント(0) | トラックバック(0) | PHP関連

PHPでアップロードできる上限は2GBまで!【POSTの場合】


<form action="hoge.php" enctype="multipart/form-data" method="POST">
<input name="hogefile" type="file" />
<input type="submit" value="送信" />
</form>

PHPを使用して、このような形式でファイルをアップロードする場合、アップロードされるファイルサイズの上限はphp.iniで設定されています。(正確には.htaccessやPHP自身でも設定できますが。)

php.iniには、アップロードファイルの上限を設定する箇所が3つあります。

  • memory_limit(使用できるメモリの上限設定)
  • post_max_size(POSTされるデータの上限設定)
  • upload_max_filesize(アップロードされるファイルサイズの上限設定)

です。

それぞれ

memory_limit >= post_max_size >= upload_max_filesize

という関係になっています。

つまり、「upload_max_filesize」をいくら増やしても、「post_max_size」で設定されているサイズ以上のファイルはアップロードできないし、「post_max_size」を増やしても、「memory_limit」で設定されているサイズ以上のファイルはアップロードできないというわけです。

例:

memory_limit = "128MB"
post_max_size = "512MB"
upload_max_filesize = "1G"

この場合、アップロードできるファイルサイズの上限は128MBとなります。

memory_limit = "128MB"
post_max_size = "1G"
upload_max_filesize = "1G"

この場合でも同様。

もちろん、memory_limitは、サーバのメモリサイズ(仮想メモリ含む)の上限を超えることはできません。

つまり、

memory_limit = "2G"
post_max_size = "2G"
upload_max_filesize = "2G"

こう設定したとしても、実際のサーバのメモリ(+仮想メモリ)が1GB分しかなければ、1GBまでしかアップできないということになります。(他にもメモリ使ってるだろうから実際はもっと低い)

では、サーバのメモリを12GBくらい積んで

memory_limit = "4G"
post_max_size = "4G"
upload_max_filesize = "4G"

とした場合、4GBまでアップロードできるようになるか?

答えはNoです。

この原因は、apacheにあります。

apacheの設定に、「LimitRequestBody」というものがあり、これの上限は2GBとなっています。

「LimitRequestBody」はその名の通り、HTTPリクエストのボディ部分のサイズ限界です。

いくらPHP側の設定で、2GB以上を迎え入れる準備をしたところで、HTTPリクエストの方で限界を迎えるわけです。

まあ、2GB以上をアップすることは中々ないとは思いますが、大容量のファイル共有サイトなどを作ろうと思ったりした場合は、注意が必要ですね。(FTP接続の方式にすればうまくいくかも。)

 

参考サイト

総合管理者 | 2015年10月16日 | コメント(0) | トラックバック(0) | PHP関連

bloginfoが非推奨?【WordPress】

今更ながら、bloginfoで一部パラメータの使用が非推奨になっているのに教えてもらって気付きました。

ただ、全部がアウトというわけではなく、Codexを見る限り非推奨になっているパラメータは

  • 'siteurl'
  • 'home'

の2つ。

代わりは

  • echo site_url()
  • echo home_url()

です。(どちらも返り値があるタイプなので出力する場合は要echo)

ちなみに、非推奨になったのは2.2のときみたい(結構前だな)

非推奨とはいえ、一応現在(version4.2.4)でも使用できています。

こういう場合の対策として、基本的に関数はさらにラッピングしといて、functions.phpだけ修正すればOKみたいにしておくべきだろうか・・・

それも面倒だなぁ。

 

参照サイト

総合管理者 | 2015年08月18日 | コメント(0) | トラックバック(0) | CMS関連

ゾーン設定の更新でエラー

Doレジでゾーン設定の更新の更新を行おうとしたところ、下記のエラーが出てしまいました。

[filepath]:XX: file does not end with newline
zone XXXXX.XXX/IN: loaded serial 1508171633
OK

XXは、設定によって変わります。

コピーしたものにドメインを追加し、Serialを変えただけなのに何でかな~と思ったら、案外簡単なところで引っかかってました。

最後の行は空行にしなくてはならないみたいです。

○正解

XXX   IN    A    XXX.XXX.XXX.XXX
MAIL        IN    A    XXX.XXX.XXX.XXX
(空行)

×間違い

XXX   IN    A    XXX.XXX.XXX.XXX
MAIL        IN    A    XXX.XXX.XXX.XXX(ここで終わっている)

 

総合管理者 | 2015年08月17日 | コメント(0) | トラックバック(0) | サーバー関連

Google Chromeでチェックボックスが表示されない

Google Chromeで、なぜがチェックボックスが表示されない現象発生したのでメモ。

原因はスタイルに

-webkit-appearance: none;

が記述されていたから。

これを消したら、表示されました。

 

参考サイト

chromeでチェックボックスが表示されない :: concrete5 Japan 日本語公式サイト

総合管理者 | 2015年07月30日 | コメント(0) | トラックバック(0) | CSS関連

Copyright(c) 2010 - 2018 ダリの雑記