Magento2のStore Viewが切り替わらない
Magento2を触ってるうちにいろいろ問題が浮上してきた。
一般にありふれたCMSなら調べてみてわかんなくても、最終手段でググれば大抵のことは出てくるものの、Magento2に関しては別。
大体結局自分でトライアンドエラーして原因を見つけるしかない。
まぁ一般的なCMSでも同じようなやり方はしてますがねっ。
だって、ググると答えがわかっても、答えにたどり着くまでの工程がわからないし、自己解決と自己満足できないしな。
まぁ、悪いオツムで覚束ない英語サイトをさらりさらりと読んだりしても結局、あまりいい情報は得られなかったわけである。
というのも、Magento2の言語切り替えボタンが正常に動作しなかったもんで、ここ昨日唸っていました。
切替ボタンを押すと「Requested store is not found」。
設定はきちんとしているはずなのに・・・切り替わらない。言語切替の機能がピンポイントで正常に動作しない。
おかしいなー、おかしいなーと思って、同様のケースがないかググッてみても書いておらず。
公式のデモサイトも見てみたが、そっちでは正常に動いているため、ワケワケメ状態。
デモサイトとの違いを見るとするなら・・・公開ディレクトリをフルSSL化しているかそうじゃないかの違い。
予想外。そんなまさか・・・CMS自体が不具合なんざ起こしてることないよな。
よもや、と思って吐き出されてるHTMLを要素検証してみると、どうやらJSに埋め込まれているパラメータがおかしい。
言語切り換えボタンのhttpsでリクエストしなきゃいけないところが、以下の様な状態でリクエストされていた。
<a href="#" data-post="{"action":"http:\/\/xxxxx.com\/stores\/store\/switch\/","data":{"___store":"jp", ~略
そりゃ、httpsオンリーで公開ディレクトリを動かしてるのにhttpがリクエストされれば正常に動かんわな。
とりあえず、これで原因はわかったので解決を試みる。
このボタンはlanguage.phtmlに書いてあるはずなので、sshで公開ディレクトリ以下をfindしてテンプレートファイルを検索。
無事見つかり、そのまんまコピー。
ボタンの該当部分をサーバーリクエストがhttpsのときはhttpをhttpsに書き換えるように、そうじゃない時は通常通りの出力を行うように変更。
あとはMagento2お作法にのっとって、子テーマのディレクトリにlanguage.phtmlを配置したら無事動作させることができた。
けど、同じような箇所はいくつもあるわけで、ここだけ直せばいいというもんでもないのが辛いところだが。
飽くまで応急処置。
・・・まぁ、この作業で得られた成果はこれだけじゃない。
なんとfindしてるときに、フロントエンド画面のベーステンプレートを発見した。ラッキー! クソ部長には黙っておこう。
これで、フロントエンド画面をMovableTypeやWordpressのように触れ・・・ない。
Magento2のコミュニティにも書いてあったが、外人いわく「触るときは極めて慎重に」だそうだ。
まぁどこにもマニュアルやコーデックスはないので、オブジェクトの構造やクラスを自分の力で調べられなければ、触らないほうが無難ということか。
Magentoに関しては「コピペでできる!」「Web初心者でも大丈夫!」などと言った感覚だとかなり厳しいみたい。
Magento2では珍しい日本語サイトでどこかに書いてあった先人のお言葉。
「職業開発者でない人が自分でやろうとしてやれるだろう範囲は超えてしまっている。」
「Magento2を使う = 訓練された開発会社」
個人的に名言だと思った。
まぁ・・・完全に自己責任の世界ですな。
いつか俺なんかでもphtmlを魔改造できる日が来るのであろうか。