CakePHP2.xでデバッグキットを使う

CakePHP2.xでデバッグキットを使いたい~

デバッグキットをダウンロードします。

https://github.com/cakephp/debug_kit/tree/2.2

ダウンロードファイルを解凍したら「DebugKit」に名前を変更して、
cakephpのpluginsフォルダに移動させます。

bootstrap.phpに下記を追加

次に/app/Controller/AppController.phpに下記を追加

/app/View/Layouts/default.ctp の sql_dump 部分を削除

以上です。

XAMPPでWordPress導入時のhtaccess

XAMPPにWordPressを導入したけど、TOPページ以外にアクセスするとTOPに飛ばされてしまう場合の対処方法

htaccessのRewriteEngineの設定を正しく行うと解消されます。

例えば下記のURLだとすると…
http://localhost/wordpress/

RewriteBase
RewriteRule

上記2箇所の設定を調整する。

以上です。

[JQuery]data属性の取り扱い

HTML5からdataという独自属性が使えるようになりました。
data-* とdata-の後に好きな名前と値を設定が出来ます。

(例)

その独自属性をjqueryで取得する方法。

data()を使って内容を取得する。
取得したデータは連想配列として取得します。

結果

個別に指定でひとつだけ取得も可

結果

独自に値が設定できるので便利かも~

[EC-CUBE2]複数配送設定を無効にする

EC-CUBE2で「お届け先ごと送料無料プラグイン」と「送料無料対象商品設定」の両方を入れると思った動作をしないパターンがある。

どちらを優先するか悩んだ末、複数配送を使う人が少数ということもあり、複数配送設定をOFFにできるか調査した。

設定は簡単で、管理画面から「システム設定」→「パラメータ設定」の中にある「USE_MULTIPLE_SHIPPING」をfalseに設定する。

これで複数配送の設定が無効になります。

[EC-CUBE2]商品についての問合せ

商品についてのお問合せで本文にどの商品についての問合せなのかを記載する。

商品詳細ページ
問合せフォーム

上記2種類のテンプレートを編集します。

▼商品詳細ページ
/data/Smarty/templates/default/products/detail.tpl

▼問合せフォーム
/data/Smarty/templates/default/contact/index.tpl

textareaタグの間に下記を追加。

[EC-CUBE2]隠し商品

隠し商品リンクの依頼がありました。
前回はカテゴリーごとでしたが、今回は商品単体です。

今回のサーバーはjsonが使えるので、jsonで対応します。

■検索処理の修正
修正ファイル
/data/config/config.php
/data/class/pages/products/LC_Page_Products_List.php

修正ファイルはカテゴリーのやつと同じ

▼config.php

ここに非表示の商品IDの値を設定する。
配列をjson_encodeした値を設定する。

▼LC_Page_Products_List.php

375行目あたりのlfGetSearchConditionメソッドに処理を追加します。
下記の処理に追加します。
・$searchCondition[‘where’] = SC_Product_Ex::getProductDispConditions(‘alldtl’);の位置を移動させます。
・}else{の処理を追加します。

CakePHP2で認証処理

CakePHP2で認証処理を追加する方法

AppContorller.php

loginAction: ログインフォームのページを指定
loginRedirect: ログイン処理後に移動するページを師弟
authenticate: 認証処理の種類を指定

User.php(モデル)

パスワードをハッシュ化する処理

ログイン処理をします。

LoginController.php

AppControllerでAuthの処理を指定しているので、認証をしたくないページにはコントローラーに下記の処理を追加します。
actionを指定すると認証の処理を省けます。

CakePHP3でログイン認証を構築

CakePHP3でログイン認証を構築

細かいところは公式マニュアルをチェック
https://book.cakephp.org/3.0/ja/controllers/components/authentication.html

AppController.php – コントローラー全体の認証設定を行う
LoginController.php – ログインフォーム、ログイン処理など
TUsersController.php – ユーザー表示、登録、編集など

■認証設定(AppController.php)

initializeに認証処理を追記します。

loginAction – ログイン処理を行うコントローラーとアクションを指定
loginRedirect – ログイン後に移動するコントローラーとアクションを指定
logoutRedirect – ログアウト後に移動するコントローラーとアクションを指定
authenticate – 認証の詳細設定
 Form:ユーザーID、パスワードを入力するフォームを作成して認証処理をさせるタイプ。他にはBasicやDigestがあります。
  userModel:認証に使用するモデルを指定(デフォルトはUsers)
   fields:認証に使用するカラムを指定(デフォルトはusernameとpassword)

■ログインフォーム(index.ctp)、認証処理(LoginController.php)

LoginController.php

index.ctp

■ユーザーの表示、追加、編集など
コントローラーに継承用の一文を追記します。
これがないとログイン後でもログインフォームに飛ばされちゃいます。

TUsersController.php

ユーザ作成、編集時にパスワードをハッシュ化させる。

Model/Entity/TUser.php

こうやって書くと単純だけど結構苦戦しました。
AppControllerに書きましたけど、コントローラー単位でやる方法は分かりません(w

XAMPPでCakePHP3

XAMPPでCakePHP3

ポータブルタイプだとパスの問題でなんかうまくいかない。
うちはUSBにポータブルタイプのXAMPPを入れてたのでそれにCakePHP3を入れようとしたけど駄目だった。
(各モジュールがあるのに読み込めないエラーが大量発生)

ということで別ドライブにXAMPPを入れてそこで実行

ブラウザからアクセスするとエラー

Fatal error: You must enable the intl extension to use CakePHP ~~~

PHPの設定でintlを使用する設定になっていないかも。

php.iniを開いて下記を修正

;extension=php_intl.dll
↓↓↓↓↓↓↓↓↓↓↓↓
extension=php_intl.dll

これでApachを再起動

これで直るかな。

タイムゾーン変更でエラー

config/app.php
config/bootstrap.php

上記のtimezoneを変更するとMySQLでエラーが発生

Error: SQLSTATE[HY000]: General error: 1298 Unknown or incorrect time zone: ‘Asia/Tokyo’

下記の公式サイトよりtimezoneのファイルをダウンロードします。
http://downloads.mysql.com/general/timezone_2016a_posix.zip

/xampp/mysql/data/mysql にファイルを上書きします。
その後MySQLを再起動

これでCakePHP3も動くようになったかな。

【EC-CUBE2】非公開カテゴリーの作成

一部カテゴリーを非表示としたい(特別会員専用ページのようなもの)

要件は下記のような感じ
・カテゴリーID指定であれば一覧を表示
・全商品一覧には表示しない
・キーワード検索では表示しない
・対象カテゴリーの一覧、商品にはmetaタグで検索エンジンにindexされないようにする。
・カテゴリー一覧に表示されないようにする

■検索処理の修正
修正ファイル
/data/config/config.php
/data/class/pages/products/LC_Page_Products_List.php

▼config.php

ここに会員専用カテゴリーの値を設定する。
配列をsirialize化した値を設定する。

カテゴリーIDが10の場合は下記の配列になる。
array(0=>10);
これをsirialize化すると上記のような値になります。

▼LC_Page_Products_List.php

404行目のlfGetSearchConditionメソッドに処理を追加します。
下記の処理に追加します。

これで全商品一覧、キーワード検索で対象商品が出てこなくなります。

■カテゴリー一覧の修正
カテゴリが自動生成されるので生成されないように処理を追加
/data/Smarty/templates/default/frontparts/bloc/category.tpl
/data/Smarty/templates/sphone/frontparts/bloc/category.tpl

必要あればガラケーのテンプレートも修正
/data/Smarty/templates/mobile/frontparts/bloc/category.tpl

まずはconfig.phpに設定したカテゴリーIDの値をテンプレートに渡します。
* 29行目付近の</script>の後に追記

指定カテゴリーでなければ表示という処理を追加

下記のような感じ

■metaタグの埋め込み
/data/Smarty/templates/default/site_frame.tpl

以下のコードを埋め込み

以上です。