Magento Cafe Plus #6
-
Upload
hirokazu-nishi -
Category
Internet
-
view
149 -
download
3
Transcript of Magento Cafe Plus #6
Veriteworks Inc. 西 宏和
Magento Cafe Plus #6
Agenda
• 最近のMagento
• 商品属性の管理とカスタマイズ
• マルチサイト運用のイロハ
最近のMagento
セキュリティパッチ
• パッチ番号SUPEE-5344で2月9日リリース済
• 管理画面の forwarded パラメータに関する脆弱性
• https://www.magentocommerce.com/products/downloads/magento/ からダウンロードして適用を
Magento2
• beta11がリリース(ほぼ毎週新バージョンが出る)
• インストール画面のデザイン変更
• とかく毎バージョン変更がてんこ盛り
新インストール画面
HHVMのアレな話
• エクステンション開発者の間ではHHVMでのテストがじわじわ進行中
• Magento2も意識はしている・・・らしい
• で、Magento1.xは?→ オフィシャルには非対応。一応動く
ところが
• https://github.com/magento/magento2/issues/966#issuecomment-78294346
正直、本番で使うのダメ
商品属性の管理とカスタマイズ
復習:商品属性の作り方 by 管理画面
管理画面から作るときのポイント
• 属性コードはシステム内でユニーク&半角英数字+アンダースコア (ただし、先頭文字に数字はNG)
• スコープは用途を考えて慎重に →後から変更できるが、できれば変えないほうが吉
• 入力形式は後で変更できない
• あとの設定はいつでも変えられるのであまり考えなくてもOK
商品属性の作り方 by セットアップスクリプト$installer->addAttribute(Mage_Catalog_Model_Product::ENTITY, ‘my_new_attr’, array( 'group' => 'General', 'type' => 'varchar', 'backend' => '', 'frontend' => '', 'label' => ‘My New Attribute', 'input' => 'select', 'class' => '', 'source' => 'catalog/product_attribute_source_boolean', 'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_WEBSITE, 'visible' => true, 'required' => false, 'user_defined' => false, 'searchable' => false, 'filterable' => false, 'comparable' => false, 'visible_on_front' => false, 'unique' => false, 'apply_to' => 'simple,configurable,bundle,grouped', 'is_configurable' => false, ));
スクリプトで作るときのポイント
• $installerはMage_Catalog_Model_Resource_Setupを使う(Mage_Eav_Model_Entity_Setupの系列でも可)
• 管理画面から作る場合と異なり、あらゆるパラメータが指定可能
• 一括で複数の属性をつくることも当然可能(オプションを同時に登録する、なども可)
eav_attributeテーブル列名 説明
attribute_id 連番entity_type_id eav_entity_typeを参照attribute_code ユニーク値。半角英数字でattribute_model 未使用backend_model 入力値の管理画面用表示処理に使用backend_type DB側のデータ型。varcharやtext、intなどbackend_table 未使用frontend_model 入力値のフロント側表示処理に使用 frontend_input 入力形式frontend_label 管理画面に表示するラベルfronted_class jsバリデーションクラス名source_model 選択肢などの元データに使用is_required 必須フラグis_user_defined ユーザー定義フラグdefault_value デフォルト値is_unique ユニークフラグnote メモ
frontend_model例:eav/entity_attribute_frontend_datetime
backend_model例:eav/entity_attribute_backend_datetime
source_model例:eav/entity_attribute_source_boolean
実は顧客や住所属性でも 応用できます…
商品属性とエクステンション・テーマ
• エクステンションやテーマの中には、独自の属性を定義するものがある
• これらをインストールする際は問題なくとも、アンインストール時に問題が起きることがある→エクステンションやテーマを消しても属性は残る!
• 外部システムと連携する際に、これらの属性が障害になることもあるので、要注意
マルチサイト運用のイロハ
復習:Magentoのサイト構成
グローバル
admin サイトA サイトBストアA1
ストアA2
ストアB
日本語 英語
中国語
日本語 英語
フランス語 ドイツ語
スコープ
• Magento上の設定値を管理する単位
• グローバル・ウェブサイト・ストアビューの3階層
• 属性や設定値によって、利用できるスコープが異なる
• 管理画面は1ウェブサイト・1ストアビュー
グローバル
• Magento上で最上位にある設定スコープ
• 管理画面のスコープとほぼ同義
• シングルサイト運営の場合はこのスコープだけ見ていれば基本OK
ウェブサイト
• 2階層目のスコープ
• 顧客・商品・価格などの情報を保持する
• 基本通貨を変えたい場合はこのレベルで設定する
• 客層を切り分けたい場合もこのレベル
• システム上でユニークなコードを持つ
ストア
• カテゴリと複数のストアビューを管理するスコープ
• このレベルで設定パラメータを保持することはできない
• システム内部では「ストアグループ」という扱いになっている
ストアビュー
• 最下層のスコープ
• 商品・カテゴリのロケール別データを保持する
• 設定データも設定可能なものは保持できるようになっている
• システム上でユニークなストアコードを持つ
Webサーバーの設定とindex.php
• index.phpには2つの環境変数がある
• MAGE_RUN_CODE(ストアビューコードまたはウェブサイトコード)
• MAGE_RUN_TYPE(storeまたはwebsiteを指定)
• ApacheやNginxのVHOST設定で指定する
1index.phpで複数サイト
• それぞれのVHOST設定で・・・
• MAGE_RUN_CODEにウェブサイトコードを指定
• MAGE_RUN_TYPEにwebsiteを指定
• これで1つのindex.phpを使って複数サイト運営ができる(ストアビュー切り替えはしない)
ディレクトリを作って複数サイト
• ドキュメントルートに適当な名前でディレクトリを作成する
• index.phpとApacheの場合は.htaccessもコピーする
• index.phpの52行目のパスを変える
• MAGE_RUN_TYPEとMAGE_RUN_CODEをハードコードする
• Magentoの管理画面で対応するウェブサイトまたはストアビューのベースURLにディレクトリを追加する
SSL用ドメインを共用してマルチサイト
• あんまりやりたくないテクニック
• カード加盟店契約が1FQDN単位であることに対する逃げ道
• セキュアベースURLのドメイン名を共用しつつ、ディレクトリでindex.phpを分けて、サイト別のSSLページ・データスコープを作る
マルチサイト運用とAccept Language
• Accept Languageを用いて言語振り分けをするというニーズ
• 難関はストアビューコードはシステム上、ユニークであること
• つまり、ja_JPをjpというストアビューへの振り分けは1ウェブサイトの時しかできない
• マルチウェブサイトの場合は、ハードコードするか、なにか手を考える必要がある
• いずれにしてもVHOST設定の追加は必要なので、非技術者にはハードルが高い
おわり