9

私は最近、クライアントのWebショップにMagentoを使い始めましたが、それでもそのシステムを理解する必要があります。

Webショップには、企業Webサイトが配置されている別のドメインへのリンクがいくつかあり、情報を取得する必要があります。ドメイン名やURLをハードコーディングするのではなく、どこかで定義し、Webショップ全体のphtmlテンプレートでその値を使用したいと思います。これにより、開発URL、ステージングURL、本番URLの間でサイトを移動するときに簡単に調整できます。

誰かがこれを行うMagentoの方法を提案できますか?できれば、{{base_url}}を設定するのと同じように、バックエンドのストアの構成GUIにフィールドを追加できます。または多分私は間違った方法を考えていますか?

4

5 に答える 5

36

Magento は、カスタム構成値の (比較的) 簡単なサポートを提供します。これを達成するために私が見つけた最良の方法は、すべてのカスタム構成値を保持する単一の magento モジュールを作成することです。

すべての Magento と同様に、多くの手順があり、1 つでも間違っていると、あなた (または私!) がつまずく可能性があります。

空の Magento モジュールを作成する

まず、すべてのカスタム構成値を保持するように magento モジュールをセットアップする必要があります。magento モジュールの作成には、

  1. app/etc/modules に xml ファイルを作成します。
  2. app/code/local/Companyname にフォルダー構造を作成します

Companyname は、名前空間として機能する一意の文字列であり、ほとんどの magento チュートリアルでは、ここで会社名を使用することをお勧めします。このチュートリアルでは、「Stackoverflow」を使用します。文字列 Stackoverflow が表示されている場所はどこでも、独自の一意の文字列に置き換えます。

したがって、ステップ 1 では、app/etc/modules に「Stackoverflow_Customconfig.xml」という名前のファイルを作成し、その中に以下を配置します。

<?xml version="1.0"?>
<config>
    <modules>
        <Stackoverflow_Customconfig>
            <active>true</active>
            <codePool>local</codePool>
        </Stackoverflow_Customconfig>
    </modules>
</config>

ランダムな Magento のヒント: 空白を重要と見なす Magento システムの部分があるため、常に属性値に空白を含めないことをお勧めします (<active>true</active> 対 <active> true </active>

次に、以下のフォルダを作成します

mkdir app/code/local/Stackoverflow/Customconfig
mkdir app/code/local/Stackoverflow/Customconfig/etc

そして、ファイルを作成します

app/code/local/Stackoverflow/Customconfig/etc/config.xml

以下の内容で

<?xml version="1.0"?>
<config>
    <modules>
        <Stackoverflow_Customconfig>
            <version>0.1.0</version>
        </Stackoverflow_Customconfig>
    </modules>
</config>

おめでとうございます。新しい Magento モジュールがセットアップされました。Magento のキャッシュをクリアして

System -> Configuration -> Advanced -> Disable Modules Output

モジュールがリストされているはずです。

モジュールに System.xml ファイルを追加する

次に、system.xml ファイルを追加します。このファイルは、カスタム構成値を magento に追加するために使用されます。これは、magento 要求サイクル中に必要な場所で取得できます。にファイルを追加

app/code/local/Stackoverflow/Customconfig/etc/system.xml

それには以下が含まれます

<config>
    <sections>
        <design>
            <groups>
                <my_or_their_group translate="label">
                    <label>A grouping of config values.  Make your own, or us an existing group.</label>
                    <frontend_type>text</frontend_type>
                    <sort_order>50</sort_order>
                    <show_in_default>1</show_in_default>
                    <show_in_website>0</show_in_website>
                    <show_in_store>0</show_in_store>
                    <fields>
                        <my_config translate="label">
                            <label>This will be my config's label</label>
                            <frontend_type>text</frontend_type>
                            <sort_order>50</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>0</show_in_website>
                            <show_in_store>0</show_in_store>
                        </my_config>
                    </fields>
                </my_or_their_group>
            </groups>
        </design>
    </sections>
</config>   

<design>は、設定が表示されるセクションの名前です。「General、Web、Design、Currency Setup など」。概して、これはタイトルの小文字バージョンになります。つまり、"General" は "general" になり、"Design" は "design" になります。この外側のタグが何であるかわからない場合は、コアの magento モジュールを検索してください。つまり、「Currency Setup」を grep すると、

app/code/core/Mage/Directory/etc/system.xml
<currency translate="label" module="directory">
    <label>Currency Setup</label>

したがって、より直感的な <currency_setup /> ではなく、タグ <currency /< を使用します。

<my_or_their_group translate="label"> は、構成変数が表示されるグループの名前です。グループは、構成フィールドを含む Ajax ドロップダウンです。たとえば、一般セクションには「国オプション」グループと「ローカル オプション」グループがあります。既存のグループに値を配置する方法がわからない場合は、既存のコア モジュールを確認してください。

ここには、対応するラベル タグとともに、 translate 属性もあります。これにより、HTML インターフェースで必要な任意の文字列をグループ タイトルとして使用できますが、内部的には名前を有効な XML タグ名に保つことができます。私たちのタグは名前が付けられています

<my_or_their_group />

ただし、インターフェイスでは、グループにはタイトルがあります

設定値のグループ。独自のグループを作成するか、既存のグループを作成してください。

最後に、<my_config translate="label"> は夜設定値の名前です。ここでも、 translate 属性に注意してください。上記と同じルールが適用されます。

他の xml 構造が必要であり、構成に使用される HTML 入力の種類を制御するために (ほとんどの場合) 使用されます。特定のインターフェイス要素が必要な場合は、コア モジュールで例を見つけて、XML 構造をコピーします。

これにより、Magento GUI インターフェイスで構成値を設定および検索できるようになります。グローバル Mage オブジェクトの静的 getStoreConfig メソッドを使用し、構成値の URI を指定して、値を取得できます。URI は、構成のセクション/グループ/名前を使用して作成されます。

Mage::getStoreConfig('design/my_or_their_group/my_config');     
于 2009-06-15T21:25:56.797 に答える
17

Magento は、バージョン 1.4 以降からカスタム変数を提供します。

管理者側にログインし、システム -> カスタム変数 -> コード「my_variable」で新しいカスタム変数を作成します。

この変数の HTML コンテンツとプレーン テキストを入力します

これを配置することで、CMSページにカスタム変数を表示できます{{customVar code=my_variable}}

または.phtmlページで:

$variableHtml = Mage::getModel('core/variable')->loadByCode('my_variable')->getValue('html');
$variablePlain = Mage::getModel('core/variable')->loadByCode('my_variable')->getValue('plain');
于 2010-07-29T11:27:33.817 に答える
1

私は新しすぎて、アランの回答にコメントを追加できませんが、Magento からの詳細情報を次に示します。

  • XML for Admin Configurations -- 「このドキュメントでは、構成セクションでモジュールが使用するフィールドを定義する方法について説明します。」

-エド。

于 2010-10-08T15:32:13.337 に答える
0

アラン、答えてくれてありがとう!それは私にとって謎を解き明かす鍵でした。あなたの優れたガイドを読んだ後でさえ。コア ファイルを変更しないように最善を尽くしているため、e コマース ビジネス用の拡張機能の作成を開始しました。そして、人々にリリースするのに十分だと思うものを手に入れましたが、ファイルを編集する必要がないように、管理者で構成できるようにしたかったのです。

上記のコードから始めて、追加された「メニュー」が「General」ではなく、「General-General」、または General-Web、General-Design などにあることがわかりました。 、しかし、私は他の人と同じようにして、拡張機能のメニュー グループ全体を追加したくありませんでした。

読者がGoogleからここに来て、私のオプションを管理者の簡単な場所に置きたいだけなら、読み続けてください(これが私が別の答えを追加している理由です). まず、アランが上で言ったことを実行します。[一般] -> [一般] -> [メニュー] にメニューが表示されるようにします。注:一部の情報がセッションに保存されるため、キャッシュをクリアし、ログアウトする必要があります。

独自のメニューを「一般」の下に表示するには、独自のグループを取得する場合と同じことを行う必要があります。または、上部のメニュー バーで [Tab] を使用する場合でも、自分自身に ACL 権限を付与する必要があります。config.xml:

<!-- file: config.xml -->
<config>
    <adminhtml>
        <acl>
            <resources>
                <admin>
                    <children>
                        <system>
                            <children>
                                <config>
                                    <children>
                                        <ytf translate="title">
                                            <title>Youtube Feed</title>
                                        </ytf>
                                    </children>
                                </config>
                            </children>
                        </system>
                    </children>
                </admin>
            </resources>
        </acl>
    </adminhtml>
</config>

system.xmlこれが構成に対応する私のものです。ytf親メニューであることに注意してください。これは、TniyBrick の「True Order Edit」モジュールをモデルにしています。また、落とし穴:エントリytfytfeed微妙な違いがあります。このytfエントリは、[管理] -> [構成] に移動し、左側の [一般] グループを見ると表示されるものです。ytfeed「一般」→「YouTube フィード」をクリックすると、ページ中央に表示される「バー」です。

<!-- file: system.xml -->
<config>
    <sections>
        <ytf translate="label" module="ytfeed">
            <label>Youtube Feed</label>
            <tab>general</tab>
            <frontend_type>text</frontend_type>
            <sort_order>700</sort_order>
            <show_in_default>1</show_in_default>
            <show_in_website>1</show_in_website>
            <show_in_store>1</show_in_store>
            <groups>
                <ytfeed translate="label" module="ytfeed">
                    <label>Youtube Feed</label>
                    <sort_order>50</sort_order>
                    <expanded>1</expanded>
                    <show_in_default>1</show_in_default>
                    <show_in_website>1</show_in_website>
                    <show_in_store>1</show_in_store>
                    <fields>
                        <username translate="label">
                        <!-- Mage::getStoreConfig('ytf/ytfeed/username');  -->  
                            <label>YouTube Username:</label>
                            <comment>(or YouTube channel name)</comment>
                            <frontend_type>text</frontend_type>
                            <sort_order>10</sort_order>
                            <show_in_default>1</show_in_default>
                            <show_in_website>1</show_in_website>
                            <show_in_store>1</show_in_store>
                        </username>
                    </fields>
                </ytfeed>
            </groups>
        </ytf>
    </sections>
</config>

私を大いに助けた別のリンク:
http://www.scorgit.com/blog/custom-options-in-a-magento-back-end-dropdown-menu/

更新:この回答から拡張機能を作成しました。

于 2013-03-02T02:26:58.513 に答える