Magento, GUI şekilde bir küresel değişkeni ayarlama?

5 Cevap php

Geçenlerde bir müşterinin Webshop'undan Magento kullanmaya başladı ve hala sistemlerine vâkıf gerekiyor ettik.

Webshop için çeşitli bağlantıları var ve aynı zamanda kurumsal web sitesi bulunan başka bir etki alanından gelen bilgi kapmak gerekir. Ben etki alanı adı veya URL kodlamalısınız tercih ama onun yerine bazı yerde tanımlamak ve Webshop'undan boyunca phtml şablonlar bu değeri kullanmak istiyorsunuz. Bu, dev, evreleme ve üretim URL arasındaki siteyi taşıdığınızda kolay ayarlamak için yapar.

Herkes bunu Magento yol önerebilir? Tercihen biz {{}} base_url ayarlanır benzer şekilde backend içinde Store'un Yapılandırma GUI bir alan ekleyebilirsiniz. Ya da belki ben yanlış şekilde düşünüyorum?

5 Cevap

Özel yapılandırma değerleri için Magento teklifler (nispeten) kolay desteği. Bunu gerçekleştirmek için bulduğum en iyi yolu, tüm özel yapılandırma değerlerini tutan tek bir magento modül oluşturmaktır.

Anything Magento gibi, orada bir sürü adımlar vardır ve yanlış olan herhangi biri sizin (ya da bana!) Yukarıya takýlabiliriz.

Create an Empty Magento Module

Öncelikle, kurulum için tüm özel yapılandırma değerlerini tutmak için bir magento modül isteyeceksiniz. Bir magento modül oluşturma içerir

  1. App / etc / modules bir xml dosyası oluşturma
  2. App / kod / local / firmaadiniz bir klasör yapısı oluşturun

Companyname bir ad olarak hizmet veren benzersiz bir dize ve en magento öğreticiler burada şirket adı kullanmanızı öneririz. Bu yazının amaçları için, ben "stackoverflow" kullanacağız. Eğer dize StackOverflow gördüğünüz her yerde, kendi benzersiz bir dize ile değiştirin.

Böylece, adım 1 için, "Stackoverflow_Customconfig.xml" adlı app / etc / modules bir dosya oluşturun ve içine aşağıdaki yerleştirin

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

Rastgele Magento İpucu: Orada boşluk önemli düşünün magento sistemin parçalarıdır, bu nedenle nitelik değerleri ( true vs true ile hiçbir boşluk dahil etmek her zaman en iyisidir

Sonra, aşağıdaki klasörü oluşturun

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

Ve bir dosya olarak oluşturmak

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

Aşağıdaki içeriği ile

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

Tebrikler, sadece kurulum yeni bir Magento Modül ettik. Eğer magento önbelleğini temizleyin ve giderseniz

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

Eğer modül listelenmiş görmelisiniz.

Add a System.xml file to your module

Sonra, bir System.Xml dosyası eklemek için gidiyoruz. Bu dosya her yerde magento isteği döngüsü sırasında istediğiniz kapmak mümkün olacak, hangi magento için özel bir yapılandırma değerini eklemek için kullanılır. Bir dosya ekleyiniz

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

Bu şunları içeriyorsa

<config>
    <sections>
        <design>
            <groups>
                <my_or_their_group translate="label">
                    <label>Yapılandırma değerleri bir gruplama. Bize varolan bir grup kendi yapmak, ya da.</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> config "Genel, Web, Tasarım, Döviz Kur, vb" görüntüleneceği bölümün adıdır Ve büyük, bu başlık bir küçük harf versiyonu olacak, yani "Genel", "genel", "Tasarım", "tasarlamak" dönüşür. Eğer bu dış etiketi ne olması gerektiğini emin değilseniz, çekirdek magento modüller aracılığıyla arayın. yani, "Döviz Kur" için grepping bir söz ortaya koymaktadır

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

Yani etiketi kullanmak istiyorum

config değişken Gruplar içeri gösterir grubun adı yapılandırma alanlarını içeren Ajax açılan çıkışlar olmasıdır. Örneğin, Genel bölümü, bir "ülke ayarları" grubu vardır ve yerel seçenekler "grubu. Varolan bir grupta bir değer yerleştirmek için nasıl emin değilseniz Yine, mevcut çekirdek modüller kontrol edin.

Ayrıca ilgili etiket etiketi ile birlikte, burada translate attribute fark edeceksiniz. Bu bir grup başlık olarak HTML arayüzünde istediğiniz herhangi bir dizeyi kullanabilirsiniz, ama içten ismini geçerli bir XML etiket adı saklamanızı sağlar. Bizim etiketi adlandırılır

<my_or_their_group />

ama arayüzü, grubun başlık olacak

Yapılandırma değerleri bir gruplama. Bize varolan bir grup kendi yapmak, ya da.

Son olarak, yoru değeri conifg adıdır. Yine, translate attribute dikkat edin. Yukarıdaki gibi aynı kurallar geçerlidir.

Diğer xml yapı gereklidir, ve (çoğunlukla) ve yapılandırma için kullanılacak HTML girdilerin ne tür kontrol etmek için kullanılır. Belirli bir arabirim öğesi istiyorsanız, çekirdek modülü bir örnek bulmak ve XML yapısını kopyalayın.

Bu Magento GUI arabiriminde yapılandırma değerlerini ayarlayabilir ve arama sağlayacaktır. Sen küresel Mage nesnenin statik getStoreConfig yöntemini kullanarak ve yapılandırma değeri URI belirterek değerlerinizi alabilirsiniz. URI senin config bölüm / grup / adı kullanılarak oluşturulur.

Mage::getStoreConfig('design/my_or_their_group/my_config');     

Magento itibaren sürüm 1.4 Özel Değişkenler sağlar

Yönetici tarafına giriş, Sistem-> Özel değişkenler-> kodu "my_variable" ile yeni bir özel değişken oluşturmak,

Bu değişken için HTML içeriğini ve Düz metni girin

Bu {{customVar kodu = my_variable}} koyarak CMS sayfalarında özel değişkeni gösterebilir

Phtml sayfalarında

$ VariableHtml = Mage :: getModel ('çekirdek / değişken') -> loadByCode ('my_variable') -> getValue ('html');

$ VariablePlain = Mage :: getModel ('çekirdek / değişken') -> loadByCode ('my_variable') -> getValue ('düz');

Kolay yolu Magento'nın çekirdek yapılandırma xml dosyası için bir düğüm eklemek olacaktır. Bu yükseltmeleri ile sorunlara neden olacak gibi ama bu tavsiye edilmez. Çekirdek düzenleme wihtout özel değerler ayarlamak için .... bu bağlantıyı kontrol

How to override config values

Ben Alan'ın cevap bir yorum eklemek için çok yeniyim, ama burada Magento den biraz daha bilgi:

  • XML for Admin Configurations - "Bu belge Yapılandırması bölümünde modülün kullanımı için alanları tanımlamak için nasıl açıklar."

-Ed.

Alan, Cevabınız için teşekkürler! Bu benim için gizemini kilidi anahtar oldu. I olmuştu sonra bile reading your excellent guide. Ben mod çekirdek dosyaları için elimden geleni yapıyorum bu yana, benim e-ticaret iş için uzantıları yapmaya başladı. Ve ben insanlara serbest bırakmak için yeterince iyi olduğunu düşünüyorum bir tane var, ama ben dosyaları düzenlemek için gerek yoktu bu yüzden admin yapılandırmak için mümkün istedim.

Ben yukarıdaki kodu ile başlayan ve "menü" "General" değildi ekledi olduğunu gördüm, ama vb "Genel-General", ya da Genel-Web, Genel-Design, ben Genel göstermek için benim bir şey istedim ama herkes gibi yapmak ve benim uzantıları için bütün menü grubu eklemek istemiyordu.

Okuyucu Google sadece bir yerde kolay Admin benim seçenekleri koymak isteyen buraya geldiyse, sonra okumaya (ve ben başka bir cevap ekliyorum bu yüzden). First: Alan Yukarıda ne diyor. Menü göstermek için Get General-> Genel-> Your Menu. Not: Eğer önbelleğini temizleyin ve ayrıca bazı bilgileri oturumda saklanır gibi çıkış gerekir.

"Genel" altında göstermek için kendi menüsünü almak için, size üst menü barda kendi grubunu, hatta Tab alıyoruz sanki aynı yapmak zorunda, kendinize ACL izin vermek zorundasın 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>

İşte benim system.xml yapılandırmaya tekabül ettiğini bulunuyor. ytf, ana menü olduğuna dikkat edin. Ben TniyBrick "True Düzen Düzen" modülü kapalı bu modellenmiştir. Ayrıca yakaladım: ytf ve ytfeed kendi girişleri ile ince farklılıklar var. > Yapılandırma ve Genel grubunda Soldaki bakmak - ytf girdisi Yönetici gittiğinizde gösterir budur. ytfeed "Genel-> Youtube Yem" tıkladığınızda sayfanın ortasına açılır "bar" olduğunu

<!-- 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>

Another link that helped me greatly:
http://www.scorgit.com/blog/custom-options-in-a-magento-back-end-dropdown-menu/

Update: I yapılmış an extension out of this answer.