6

私は現在、いくつかの異なる言語をサポートする Magento ショップをセットアップしています。

私が遭遇した 1 つの問題は、2 つの CMS ページを一緒にリンクする方法が見つからないことです。これにより、ユーザーが言語を切り替えると、現在の CMS ページに自動的に転送されますが、好みの言語になります。1 つの選択肢として、両方のページに同じ URL キーを使用することもできますが、一部のユーザーには母国語ではない URL キーが表示されるため、ユーザー フレンドリーとは言えません。

例を挙げましょう:

「私たちについて」ページがあります。英語版のストアでは、そのページの URL は です/about-us。ドイツ人のユーザーがそのページにアクセスして、言語を切り替えます。しかし、「About us」に相当するドイツ語は「Über uns」であるため、そのページのドイツ語版は にあります。/ueber-unsドイツ語版の が存在しないため、ユーザーには 404 ページが表示されます/about-us

この問題を解決する方法を知っている人はいますか?

更新:さらに調査を行いましたが、何も見つかりませんでした。この問題を抱えているのは私だけだとは信じられませんか? すべての言語で同じ URL キーを使用する頼りになるソリューションは、非常に見苦しく、ユーザー フレンドリーではないようです。

4

3 に答える 3

10

したがって、私が見つけた唯一の解決策は、Magento Rewrite Rulesで各ページのリダイレクトを手動で作成することでした。Catalog -> URL Rewrite Managementそれを行い、次の形式で各ページに移動して追加します。

ここに画像の説明を入力

したがって、ユーザーがFrancaisストア ビューとリクエストを使用している場合/url-in-english、リダイレクトが開始され、ユーザーは にリダイレクトされます/url-in-french

もちろん、これは理想的な解決策ではありません。2 つのページを直接「リンク」できれば望ましいのですが、当面はこれを使用する必要があると思います。誰かがより良い解決策を思いついたら、自由に追加してください!

于 2013-06-17T11:25:54.850 に答える
3

このバグは Magento CE 1.8.0.0 で見られました。ここでの問題は、\app\code\core\Mage\Core\Model\Url\Rewrite\Request.php の割り当てが間違っていたことです。

この問題を解決するには、Mage_Core_Model_Url_Rewrite_Request クラス内の保護された関数 _rewriteDb() で $fromStore の割り当てを変更するだけで十分です。

$fromStore = $this->_request->getQuery('___from_store');

$fromStore = Mage::getModel('core/store')->load($this->_request->getQuery('___from_store'), 'code')->getId();

その結果、正しいキー (店舗コードではなく店舗 ID) を使用して $stores 配列にアクセスできます。これでif文

 if (!empty($stores[$fromStore])) {

正しい方法で動作します。

注意: コア ファイルは変更しないでください。変更する前に \app\code\core\Mage\Core\Model\Url\Rewrite\Request.php を \app\code\local\Mage\Core\Model\Url\Rewrite\Request.php にコピーしてください。この回答はドイツ語でここにあります: Rewrite von Seiten in verschiedenen Sprachen und verschiedenen URL Keys in Magento

于 2015-09-05T19:01:40.400 に答える