我对 magento 还很陌生,我想自定义商店前端。
我正在使用 Magento 1.4.1,并且计划对新模板的 local.xml 进行所有设计修改。
我的疑问是是否可以仅使用 local.xml 更改布局结构。我的意思是不更改 phtml 文件。
我希望能够实现的一个简单示例是: 我想将目录搜索放在 html 的另一部分中,而不是像今天一样放在 中。所以我想将其从顶栏中删除并将其放入另一个 div 中。
<div class="top-bar">
<div class="breadcrumbs">
<ul>
<li class="home">
<a href="http://www.domain.com/magento/" title="Ir para página principal">Principal</a>
<span>/ </span>
</li>
<li class="category9">
<strong>Product Category</strong>
</li>
</ul>
</div><!--breadcrumbs-->
<form id="search_mini_form" action="http://www.domain.com/magento/catalogsearch/result/" method="get">
<div class="form-search">
<label for="search">Pesquisar</label>
<input id="search" type="text" name="q" value="" class="input-text" />
<button type="submit" title="Ir" class="button"><span><span>Ir</span></span></button>
<div id="search_autocomplete" class="search-autocomplete"></div>
<script type="text/javascript">
//<![CDATA[
var searchForm = new Varien.searchForm('search_mini_form', 'search', 'Procurar em toda a loja...');
searchForm.initAutocomplete('http://www.domain.com/magento/catalogsearch/ajax/suggest/', 'search_autocomplete');
//]]>
</script>
</div>
</form>
</div> <!--top bar-->
我该如何实现这个目标?是否可以仅使用 local.xml?
提前致谢并致以最诚挚的问候
最佳答案
实际的答案是“不,你不能那样做”。
您想要做的事情在理论上是可能的,尽管需要完成的工作量及其值(value)是值得怀疑的。
您使用 local.xml 来添加、删除 block 以及与 block 交互。每个 phtml 文件都有一个与布局中的某些内容相对应的父 block 。您无法通过布局 XML 更改 phtml block 的呈现方式,除非 block 和 phtml 包含允许这样做的逻辑。
理论上,你可以
- 识别负责渲染特定模板的类
- 创建一个新的 Block 类来扩展此类(而不是覆盖)
- 更改 local.xml 中的添加代码以替换 block 类
- 在新的 block 类中重写 View 渲染方法,以便它调用父 View 渲染方法,然后在返回其值之前尝试更改返回字符串的结果
同样,所有可能,但值(value)值得怀疑。
为什么要犹豫将默认主题中的 phtml 文件替换为您自己主题中的 phtml 文件?
关于Magento:仅使用本地 XML 进行布局更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4307829/