Magento 2 Block模板终极指南
/view/frontend/page_layout/2columns-left.xml
<layout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_layout.xsd">
<update handle="1column"/>
<referenceContainer name="columns">
<container name="div.sidebar.main" htmlTag="div" htmlClass="sidebar sidebar-main" after="main">
<container name="sidebar.main" as="sidebar_main" label="Sidebar Main"/>
</container>
<container name="div.sidebar.additional" htmlTag="div" htmlClass="sidebar sidebar-additional" after="div.sidebar.main">
<container name="sidebar.additional" as="sidebar_additional" label="Sidebar Additional"/>
</container>
</referenceContainer>
</layout>
两个版本的Magento之间最大的区别之一是整个项目的结构方式。与Magento 1.x中定义模板和定义app/design/frontend/<package>/<your_theme>
主题资源不同skin/frontend/<package>/<your_theme>
,在Magento 2中,所有内容都合并到一个基本文件夹位置。在这种情况下,主题资源不再有单独的皮肤文件夹。您的所有模板和资产现在都存储在:(app/design/frontend/<package>/<your_theme>
换句话说,模板的旧位置)。
您很快就会发现,与存储所有模板的Magento 1.x不同app/ design/frontend/<package>/<theme>/template
,有许多文件夹,如下面的屏幕截图所示。
这些文件夹中的每一个都代表Magento 2中的模块,其中模板或资产在此主题中被覆盖。可以在app/code/Magento
看到每个模块的默认版本的位置,看看典型模块的结构。
以下是自定义主题中的结帐模块示例。正如您所看到的,它包含一个用于布局更新的文件夹(稍后会详细介绍),一个用于模板,另一个用于替换旧skin/frontend/<package>/<theme>
文件夹的“web”文件夹。但是,不是在此文件夹中包含所有站点范围的资源和JS,现在按模块组织此类项目 - 在本例中为Magento Checkout模块。
那些有敏锐眼光的人也可能已经注意到该模块的web文件夹中有一个模板文件夹。这是Magento 2模块(包括Checkout)的独特之处, 其中Magento 2使用 KnockoutJS进行模板化。我们将在后面的教程中更详细地介绍 KnockoutJS 。这些模板使用.html文件和内部逻辑(即不涉及PHP)。
如前所述,如果要覆盖/修改核心模块的模板和JS,则需要在主题中创建一个与您希望覆盖/扩展的文件的路径匹配的等效模块文件夹。 。
再举一个例子,您将看到Magento 2核心使用的所有默认模块。例如,如果要覆盖目录模块中的某些内容,则需要在主题中创建一个名为Magento_Catalog的文件夹。这引用了<package_name>,在本例中是app / code / Magento的“Magento”部分,即app / code / <package>,然后下划线之后的部分引用了模块名称。在这种情况下,这是目录:app / code / <package> / <module>
换句话说,要覆盖模块的内容 app/code/<package>/< module>
app/code/<package>/<module>
,您需要创建一个<package>_<module>
在主题中命名的文件夹 。
另请注意,您只能覆盖 view/frontend
主题中模块部分的内容(因此,app/code/Magento/Catalog/view/frontend
映射到 app/design/frontend/<your_package>/<your_theme>/Magento_Catalog
)。如果您需要覆盖控制器和块,则 可以在不同的位置完成,通常由后端开发人员完成,本指南未对此进行介绍。
更多:
- View: Layouts, Block and Templates
- Get a block from template file `.phtml`
- Show cms static block from template phtml file
- Use Plugin, Preference to rewrite Block, Model, Controller, Helper
- Magento 2 Block Template Ultimate Guides
- --
Magento 2 Block模板终极指南的更多相关文章
- const extern static 终极指南
const extern static 终极指南 不管是从事哪种语言的开发工作,const extern static 这三个关键字的用法和原理都是我们必须明白的.本文将对此做出非常详细的讲解. co ...
- 《Velocity 模板使用指南》中文版[转]
转自:http://blog.csdn.net/javafound/archive/2007/05/14/1607931.aspx <Velocity 模板使用指南>中文版 源文见 htt ...
- 如何编写更好的SQL查询:终极指南-第二部分
上一篇文章中,我们学习了 SQL 查询是如何执行的以及在编写 SQL 查询语句时需要注意的地方. 下面,我进一步学习查询方法以及查询优化. 基于集合和程序的方法进行查询 反向模型中隐含的事实是,建立查 ...
- 如何编写更好的SQL查询:终极指南-第三部分
本次我们学习<如何编写更好的SQL查询>系列的最后一篇文章. 时间复杂度和大O符号 通过前两篇文章,我们已经对查询计划有了一定了解.接下来,我们还可以借助计算复杂度理论,来进一步深入地挖掘 ...
- magento 如何制作模板
我个人认为Magento模板制作的难点在于不了解Magento的架构,不会调动block.Magento的block调动几乎都是靠xml.在下面的内容会提及如何操作. 制作Magento模板的前提是: ...
- 【转】使用JMeter进行负载测试——终极指南
使用JMeter进行负载测试——终极指南 这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 ...
- 每周一书《Oracle 12 c PL(SQL)程序设计终极指南》
本周为大家送出的书是<Oracle 12 c PL(SQL)程序设计终极指南>,此书由机械工业出版社出版, 孙风栋,王澜,郭晓惠 著. 内容简介: <Oracle 12c PL/SQ ...
- FreeMarker模板开发指南知识点梳理
freemarker是什么? 有什么用? 怎么用? (问得好,这些都是我想知道的问题) freemarker是什么? FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生 ...
- 15个Linux Wget下载实例终极指南
15个Linux Wget下载实例终极指南 Linux wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到 ...
随机推荐
- 查看系统cpu性能top和多核cpu使用性能
1.使用top查看系统当前负载情况. 在显示过程 按P会按照cpu使用率排序,按M会按照内存占用率排序. 2.多核CPU上,每个核的使用率,使用 mpstat mpstat -P ALL 1 10 - ...
- pthread_exit在main线程中的用处
在main线程中调用pthread_exit会起到只让main线程退出,但是保留进程资源,供其他由main创建的线程使用,直至所有线程都结束,但在其他线程中不会有这种效果 https://stacko ...
- WPF:使用TypeConverter
所谓TypeConverter就是类型转换器,支持两种类型之间相互转换 你可以重写转换逻辑,只要你清楚转换的协议,就可以实现类型互转. 定义一个Person类型,具有一个int类型的Age属性: pu ...
- [伟哥开源项目基金会](https://github.com/AspNetCoreFoundation)
伟哥开源项目基金会 GitHub_base=> 伟哥开源项目基金会 该项目作者为伟哥,GitHub地址:https://github.com/amh1979: 该项目维护者为鸟窝,GitHub地 ...
- maven springTest结合junit单元测试
1.引入相关依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifac ...
- 前后端分离djangorestframework—— 接入微信模板消息推送
微信 什么是微信也不多说,跟前面的支付宝一样的 微信支付 微信支付也有个沙箱环境,沙箱环境官方文档 由文档中那句很显眼的话所得,即使是测试环境也需要真实的商户号,所以这个就没法想支付宝那样用沙箱账号来 ...
- 超哥笔记 --nginx入门(6)
一 NGINX 1 nignx是什么 nginx是一个开源的支持高性能,高并发的web服务和代理服务软件. nginx比他大哥apache性能改进许多,nginx占用的系统资源更少,支持高并发连接,有 ...
- Java线程状态转换
前言:对于Java线程状态方面的知识点,笔者总感觉朦朦胧胧,趁着最近整理资料,将Java线程状态方面的知识点总结归纳,以便加深记忆. 1.Java线程状态值 在Thread类源码中通过枚举为线程定义了 ...
- c++11の条件变量
一.条件变量的引入 std::condition_variable 解决了死锁并且控制的资源的访问顺序二避免不必要的等待.当互斥操作不够用而引入的.比如,线程可能需要等待某个条件为真才能继续执行,而一 ...
- day22-多并发编程基础(三)
今天学习了并发编程中的最后一部分,协程,也是python中区别于java,c等语言中很大不同的一部分 1.协程产生的背景 2.协程的概念 3.yield模拟协程 4.协程中主要的俩个模块 5.协程的应 ...