Mar*_*els 9 php xml configuration magento
我最近开始使用Magento作为客户的网上商店,仍然需要掌握它的系统.
网上商店应该有几个链接,并从公司网站所在的另一个域获取信息.我宁愿不对域名或URL进行硬编码,而是在某个地方定义它,并在整个网店的phtml模板中使用该值.这使我们在开发,登台和生产URL之间移动网站时可以轻松调整它.
任何人都可以建议采用Magento的方式吗?我们最好在后端添加一个字段到Store的Config GUI,类似于{{base_url}}的设置方式.或者也许我在想错误的方法?
Ala*_*orm 36
Magento为自定义配置值提供(相对)轻松支持.我发现完成此任务的最佳方法是创建一个包含所有自定义配置值的magento模块.
像任何Magento一样,有很多步骤,任何一个错误都可以绊倒你(或我!).
首先,您需要设置magento模块来保存所有自定义配置值.创建magento模块涉及
Companyname是一个唯一的字符串,用作命名空间,大多数magento教程建议您在此处使用您的公司名称.出于本教程的目的,我将使用"Stackoverflow".无论您在哪里看到字符串Stackoverflow,请将其替换为您自己的唯一字符串.
因此,对于第1步,在名为"Stackoverflow_Customconfig.xml"的app/etc/modules中创建一个文件,并将以下内容放入
<?xml version="1.0"?>
<config>
<modules>
<Stackoverflow_Customconfig>
<active>true</active>
<codePool>local</codePool>
</Stackoverflow_Customconfig>
</modules>
</config>
Run Code Online (Sandbox Code Playgroud)
随机Magento提示:magento系统的某些部分会考虑空白显着,因此最好不要在属性值中包含空格(<active> true </ active> vs. <active> true </ active>
接下来,创建以下文件夹
mkdir app/code/local/Stackoverflow/Customconfig
mkdir app/code/local/Stackoverflow/Customconfig/etc
Run Code Online (Sandbox Code Playgroud)
并创建一个文件
app/code/local/Stackoverflow/Customconfig/etc/config.xml
Run Code Online (Sandbox Code Playgroud)
具有以下内容
<?xml version="1.0"?>
<config>
<modules>
<Stackoverflow_Customconfig>
<version>0.1.0</version>
</Stackoverflow_Customconfig>
</modules>
</config>
Run Code Online (Sandbox Code Playgroud)
恭喜,您刚刚设置了一个新的Magento模块.如果清除magento缓存并转到
System -> Configuration -> Advanced -> Disable Modules Output
Run Code Online (Sandbox Code Playgroud)
你应该看到列出你的模块.
接下来,我们将添加一个system.xml文件.此文件用于向magento添加自定义配置值,您可以在magento请求周期中随意抓取任何位置.添加文件
app/code/local/Stackoverflow/Customconfig/etc/system.xml
Run Code Online (Sandbox Code Playgroud)
这包含以下内容
<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>
Run Code Online (Sandbox Code Playgroud)
<design>是您的配置将显示在的部分的名称."常规,Web,设计,货币设置等" 总的来说,这将是标题的小写版本,即"General"变为"general","Design"变为"design".如果您不确定该外部标记应该是什么,请搜索核心magento模块.也就是说,为"货币设置"提供的报价显示了一个提及
app/code/core/Mage/Directory/etc/system.xml
<currency translate="label" module="directory">
<label>Currency Setup</label>
Run Code Online (Sandbox Code Playgroud)
因此,您使用标记<currency/<,而不是更直观的<currency_setup />
<my_or_their_group translate ="label">是您的配置变量将显示的组的名称.组是包含配置字段的Ajax下拉列表.例如,"常规"部分具有"国家/地区选项"组和"本地选项"组.如果您不确定如何在现有组中放置值,请再次检查现有核心模块.
您还会在此处注意到translate属性以及相应的标签标记.这允许您将HTML界面中所需的任何字符串用作组标题,但在内部将名称保留为有效的XML标记名称.我们的标签已命名
<my_or_their_group />
Run Code Online (Sandbox Code Playgroud)
但在界面中,该组将拥有该标题
一组配置值.创建自己的,或我们现有的组.
最后,<my_config translate ="label">是yoru conifg值的名称.再次注意translate属性.适用与上述相同的规则.
需要另一个xml结构,并且(主要)用于控制将用于配置的HTML输入类型.如果需要特定的接口元素,请在核心模块中查找示例并复制XML结构.
这将允许您在Magento GUI界面中设置和查找配置值.您可以使用全局Mage对象的静态getStoreConfig方法检索值,并指定配置值的URI.使用配置的/ group/name部分创建URI.
Mage::getStoreConfig('design/my_or_their_group/my_config');
Run Code Online (Sandbox Code Playgroud)
小智 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');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17303 次 |
| 最近记录: |