今やろうとしているのは、Magentoのサンプルのウェブサイトはアパレル業的なサンプルになっているので、これはこれで置いておいて、別の飲食業的なサイトを作ることです。
- Magento ホームページカスタマイズへの道
- まず、とっかかりの部分を作りました。
- MagentoのSQL解析
- 商品の登録のされ方を分析し、商品属性、特に在庫状況が重要だと知りました。
続いて、ウェブサイトを分けてみたいと思います。
1.Magentoの商品のカテゴリ分け
そもそもなぜ、このタイミングでウェブサイトを分けるかというと、商品登録の正しさが確認できないからです。
サンプルとして登録されているアパレル商品とは別に、ピザを登録し、それをピザ用のページに出したいと思います。が、これがまた難しい。
最初にやったように、ウェブサイト、店舗、ストアビューは作っておきます。
そして、店舗でルートカテゴリを選択するので、ルートカテゴリ(カタログ>カテゴリ)を作ります。
で、例えば、この店舗用のWhat’sNewを作ります。そして、サンプルのWhat’sNewに表示される商品はどのようなものか見てみると、
SELECT `mg_url_rewrite`.* FROM `mg_url_rewrite` WHERE (`request_path` IN (‘what-is-new.html’, ‘what-is-new.html/’)) AND (`store_id` IN (‘1’))
というようなSQLが実行されていることが分かります。
そして、表示したいページをIN句を変えて見てみると表示されませんので、最後のAND条件を外してみてみると、store_idが1以外で登録されていることが分かります。
では、どのようにstore_idを変えるのだという話になります。
2.Magentoにおける複数店舗(というかウェブサイト)の登録方法
ところが、多くの情報ではウェブサイト、店舗、ストアビューを登録できる、という話で終わってしまって、なかなか複数店舗を実際にどのような設定で表示させるのか、という情報が見つかりません。
と言いつつ、割と初期の段階で、公式情報のドメインを分けるみたいな話は出てくるのですが、いや、そこまでやらなくてよいから引数透とかで分けられるんじゃないの??みたいなところでもがきます。
例えば「___store」を使うみたいな話です。
しかし、結論でいえば、それは無理で、おそらく簡単なのは、ディレクトリ自体を分ける方法です。
例えば、サンプルのウェブサイトをhttp://example.com/magento/ で作っていたら、http://example.com/aaa/ のようにするということです。
参考はこちらとこちら。
- https://docs.nexcess.net/article/how-to-configure-magento-2-storefronts.html
- https://magento.dekirumonn.com/forums/topic/multi-store-%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E8%A8%AD%E5%AE%9A%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
apache素人なのでちょっとビビっていたのですが、これについて言えばそんなに難しくはなく、index.phpと.htaccessをコピーして、index.phpを一部書き換えましょう、ということ(書き換えサンプルは実はindex.phpの一番先頭に書いてあります)。
そして、app、lib、pub、varへのシンボリックリンクを、元インストールしたディレクトリの方に張っておきましょう、ということです。
bitnami環境だと、
ln -s /opt/bitnami/apache2/htdocs/xxx/app/ app
ln -s /opt/bitnami/apache2/htdocs/xxx/lib/ lib
ln -s /opt/bitnami/apache2/htdocs/xxx/pub/ pub
ln -s /opt/bitnami/apache2/htdocs/xxx/var/ var
となります。
index.phpの書き方は上の2番目のリンクが参考になります。ID番号(数値)と、その番号がウェブサイトのIDなのか、店舗のIDなのかを指定する、ということです。(最初ウェブサイトのOCDE(文字)を指定して、Undefined indexエラーを発生させていました。)
ということで、自分で作成した方の、ウェブサイトが表示されるようになり、ロゴも切り替わりました。
しかし、これで表示されるようになったかと思ったWhat’sNewは表示されず、謎は続きます。