更改布局文件是兩種可能的方式在Magento定制頁面布局(第二個方法是改變模板)之一。要更改頁面線框,修改頁面布局文件;所有其他的自定義設置頁面中的配置或通用布局文件執行。
使用布局的說明:
* 移動頁面元素到另一個父元素
* 添加內容
* 刪除頁面元素
基本指令集是所有類型的布局文件一樣。本文將介紹這些基本指令;有關它們在特定布局文件類型中使用的細節,請參閱布局文件類型制品。
常見的布局說明
使用下面的布局說明自定義您的布局:
* <block>
* <container>
* before and after attributes
* <action>
* <referenceBlock> and <referenceContainer>
* <move>
* <remove>
* <update>
* <argument>
**<block>塊**
定義一個block塊.
詳細信息:塊是頁輸出的單位呈現一些與眾不同的內容 - 一個資料片,用戶界面??元素 - 任何視覺實實在在為最終用戶。塊使用模板來生成HTML。塊的例子包括類別列表中,小型車,產品標簽,以及產品上市。
| 屬性|描述 |值 | 必須 |
| -- | -- | -- | -- |
| class |實現特定塊的渲染類的名稱。這個類的一個對象負責塊輸出的實際呈現。 |類名class name |yes |
| name| 可用于地址,此屬性分配塊名稱。該名稱必須是每個生成的頁面是唯一的。如果未指定,一個自動的名字將在格式ANONYMOUS_n被分配 |0-9,A-Z,A-Z,下劃線(_),句,破折號(。)( - )。應以字母開頭。區分大小寫。 |no |
| before |用于塊位置之前相同的父下一個元素。的元素名稱或別名在值指定。使用破折號( - ),以塊嵌套其級別的所有其他元素之前的位置。詳見屬性之前和之后。 |可能的值:元素名稱或破折號( - ) |no |
| after |所使用的相同的父下一個元件之后的塊的位置。的元素名稱或別名在值指定。使用破折號( - ),以塊嵌套其級別的所有其他元素后的位置。詳見屬性之前和之后。 | 可能的值:元素名稱或破折號( - ) |no |
| template| 表示塊的功能模板來此屬性分配。 |模板文件名 |no |
| as|別名用作父元素的范圍標識符。 |0-9,A-Z,A-Z,下劃線(_),句,破折號(。)( - )。區分大小寫。 | no|
| cacheable| 定義塊元素是否可以緩存。這可以用于開發目的,使頁面動態需要的元素 | 對或錯 true ro false |no |
傳遞參數使用 <argument></argument>指令
**<container>容器**
沒有持有其它布局元素,如塊和容器內容的結構。
詳細信息:容器渲染視圖輸出生成過程中的子元素。它可以是空的,或者它可以包含的任意一組<container> and <block>分子
|屬性 |描述 |值 |必須 |
| -- | -- | -- | -- |
| name |可用于解決此屬性分配容器的名稱。該名稱必須是每個生成的頁面是唯一的。 |A-Z,A-Z,0-9,下劃線(_),句,破折號(。)( - )。應以字母開頭。區分大小寫。 | yes |
| label| 一個任意的名字在Web瀏覽器中顯示。 |任何 | no |
| before| 所使用的相同的父下一個元件之前的容器的位置。的元素名稱或別名在值指定。使用破折號( - ),以塊嵌套其級別的所有其他元素之前的位置。詳見屬性之前和之后。 | 可能的值:元素名稱或破折號( - )。 |no |
| after| 所使用的相同的父下一個元件之后到容器的位置。的元素名稱或別名在值指定。使用破折號( - ),以塊嵌套其級別的所有其他元素后的位置。詳見屬性之前和之后。 |可能的值:元素名稱或破折號( - )。 |no |
| as| 別名用作父元素的范圍標識符。 |0-9,A-Z,A-Z,下劃線(_),句,破折號(。)( - )。區分大小寫。 | no |
| output|定義是否輸出根元素。如果指定,則該元素將被添加到輸出列表。 (如果沒有指定,父元素負責渲染它的孩子。) |除了陳舊toHtml任何價值。推薦值為1。 | no |
| htmlTag| 輸出參數。如果指定,輸出被包裹成指定的HTML標記。 |任何有效的HTML 5標記。 | no |
| htmlId|輸出參數。如果指定,則該值被添加到包裝元素。如果沒有包裝元素,該屬性沒有效果。 |任何有效的HTML 5的<id>值。 |no |
|htmlClass| 輸出參數。如果指定,則該值被添加到包裝元素。如果沒有包裝元素,該屬性沒有效果。|何有效的HTML 5的<class>值。 | no|
布局用法示例:
~~~
...
<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>
...
~~~
這將新的列添加到頁面布局。
**之前before和之后after的屬性**
了幫助您在適合的設計,搜索引擎優化,可用性或其他要求特定的順序定位元素,Magento的軟件提供了before and after布局的屬性。
這些可選屬性可以在布局的XML文件被用于控制在其共同的父元素的順序。下表給出的結果,你可以得到使用before and after的屬性的詳細說明。第一個表使用塊作為定位元素。
| 屬性 |值 |描述 |
| -- | -- | -- |
| before |破折號( - ) | 在其父節點中的所有其他元素之前的程序段顯示。 |
| before| [元素名稱] | 指定元素的之前的塊顯示。 |
| before | 空值或[元素名稱]不存在| 使用after值。如果該值是空或不存在,以及,元素被視為非定位。|
| after| 破折號( - ) |在其父節點中的所有其他元素后的塊顯示。 |
| after | [元素名稱] |命名的元素后的塊顯示。 |
| after| 空值或[元素名稱]不存在| 使用before的值。如果該值是空或不存在,以及,該塊被視為非定位。 |
例子
|情況 | 結果|
| -- | -- |
| before和after都存在 |after優先。 |
| before和after屬性不存在或為空 |該元件被認為是不定位的。所有其他元素被定位在指定位置。缺少的元素顯示在不違反為定位的元素要求的隨機位置。 |
| 幾個元素before或after設置有破折號( - )|元素顯示在不違反為正確定位元件要求一個隨機位置。 |
**<Action>動作**
該<Action>指令已被棄用。如果該方法實現允許,
使用<argument> for <block> or <referenceBlock>
訪問塊公共API
在block API中申明一個公共方法
詳細說明:用于設置塊的某種方法的塊生成過程中的執行情況;<action>節點必須位于在<block>節點的范圍。
例:
~~~
<block class="Magento\Module\Block\Class" name="block">
<action method="setText">
<argument name="text" translate="true" xsi:type="string">Text</argument>
</action>
<action method="setEnabled">
<argument name="enabled" xsi:type="boolean">true</argument>
</action>
</block>
~~~
<action>子節點被翻譯成塊的方法的參數。子節點的名稱是任意的。如果有與在相同名稱的兩個或多個節點<action>,它們被看作一個數組
在前面的例子中,<arg1>的值作為第一個參數傳遞和<arg2>值作為array(“one”,“two”)通過。所有可用的方法的列表取決于塊實現(例如,塊的類的公共方法)。
|屬性 |描述 |值 |必須 |
| -- | -- | -- | -- |
|method |塊block類此標記位于該公共方法的名稱塊生成過程中被調用。 | block塊的方法名 |yes |
傳遞參數 使用<argument></argument> 標簽.
**<referenceBlock> and <referenceContainer>**
在更新 <referenceBlock> and <referenceContainer>被施加到相應的 <block> or <container>.
例如:如果你使用參考<referenceBlock name="right">你的目標block <block name="right"> 傳遞參數給block 使用<argument></argument>
|屬性 |描述 |值 | 確認 |
| -- | -- | -- | --|
| remove |允許去除或取消在除去元件。當一個容器被除去,其子元素移除。 |true/false |no|
| display| 可以禁止特定塊或容器的渲染與所有兒童(包括直接設置并通過引用)。塊的/容器及其子各自的PHP對象仍然產生并且可用于操縱。 |true/false |no|
* remove屬性是可選的,它的默認值是假的。
這種實現允許您通過設置刪除屬性值設置為false,取消去除布局塊或容器。例: `<referenceBlock name="block.name" remove="true" />`
* display顯示屬性是可選的,它的默認值是true
你總是能夠在您的布局來覆蓋這個值。在當刪除值為true的情況下,顯示屬性將被忽略。例:
~~~
<referenceContainer name="container.name" display="false" />
~~~
**<move>**
設置聲明塊或容器元素作為指定順序的另一個元素的子元素。
例:
~~~
<move element="name.of.an.element" destination="name.of.destination.element" as="new_alias" after="name.of.element.after" before="name.of.element.before"/>
~~~
* <move>如果沒有定義要移動的元件被跳過。
* 如果as沒有定義為屬性,則使用該元件的別名的當前值。如果這是不可能的,name屬性的值來代替。
* 在布局過程中產生,<move>指令被刪除之前(使用remove屬性設置)進行處理。這意味著,如果任何元素被移動到預定取出元件,它們也將被移除。
|屬性 |描述 |值 | 必須 |
| -- | -- | -- | -- |
| element | 移動元素的名稱。 |元素名稱 |yes |
| destination | 目標父元素的名稱。 |元素名稱 | yes|
| as | 別名,為在新的位置元素使用。|0-9,A-Z,A-Z,下劃線(_),句,破折號(。)( - )。區分大小寫。 | no|
| after/before | 指定元素的相對位置的兄弟姐妹。使用破折號( - ),以塊前或嵌套的級別的所有其他的兄弟姐妹后的位置。如果省略該屬性,該元素是所有兄弟后放置。| 元素名稱|no |
**<remove>**
僅用于去除在一個頁段鏈接的靜態資源。<head>部分。對于刪除塊或容器, 使用<remove>屬性 <referenceBlock> and <referenceContainer>
使用示例:
~~~
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<!-- Remove local resources -->
<remove src="css/styles-m.css" />
<remove src="my-js.js"/>
<remove src="Magento_Catalog::js/compare.js" />
<!-- Remove external resources -->
<remove src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css"/>
<remove src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"/>
<remove src="http://fonts.googleapis.com/css?family=Montserrat" />
</head>
~~~
**<update>**
包括一定的布局文件。使用如下:
~~~
<update handle="{name_of_handle_to_include}"/>
~~~
指定的句柄“包括”遞歸執行。
**<argument>**
用來傳遞參數
|屬性 |描述 |值 |必須 |
| -- | -- | -- | -- |
| name |參數名 |獨特 | yes |
| xsi:type | 參數類型。 |string/boolean/object/number/null/array | yes|
| translate| |true/false| no|
要傳遞多個參數使用以下結構:
~~~
<arguments>
<argument></argument>
<argument></argument>
...
</arguments>
~~~
為了傳遞一個參數是一個數組使用以下結構:
~~~
<argument>
<item></item>
<item></item>
...
</argument>
~~~
在布局文件中設置的參數值可以在使用模板進行訪問 get{ArgumentName}() and has{ArgumentName}()方法,后者返回一個布爾值,確定是否有設置的任何值。
{ArgumentName}從name獲得歸因于以下方式: 獲取的值 <argument name="some_string">方法名是 getSomeString()例如:在app/code/Magento/Theme/view/frontend/layout/default.xml 中布局文件設置css_class值:
布局文件:
~~~
...
<arguments>
<argument name="css_class" xsi:type="string">header links</argument>
</arguments>
...
~~~
Using the value of css_class in app/code/Magento/Theme/view/frontend/templates/html/title.phtml:
~~~
...
$cssClass = $this->getCssClass() ? ' ' . $this->getCssClass() : '';
...
~~~
- 前端開發
- 前端開發人員指南
- 介紹
- 主題模塊路徑規則符號
- 主題Themes
- 概括
- 創建主題
- magento主題結構
- 應用和配置管理主題
- 配置圖片屬性主題
- 主題繼承
- 定位模板,布局和樣式
- 布局layout
- 布局說明
- 布局文件類型
- 擴展繼承布局
- 覆蓋布局
- 公共布局任務定制
- 自定義布局圖
- 模板Templates
- 模板定制演練
- 模板的基本概念
- 定制的模板插圖
- 定制電子郵件模板
- 模板XSS安全
- 層疊樣式表(css)
- 載入css
- magento繼承修改模板.phtml
- 只修改phtml文字內容
- 在magento的block之前加內容
- PHP開發
- PHP開發人員指南
- 開發路線圖
- composer簡介
- 常見術語表
- 準備(開發快速啟動)
- 組件類型和版本
- 有關組件文件結構
- 路線圖制定和包裝組件
- 建立
- composer.json文件
- 創建組件文件結構
- 定義你的配置文件
- 注冊您的組件
- URN架構驗證
- 命名部件
- 組件加載順序
- 啟用或禁用組件
- package包
- 打包組件
- 更新
- 驗證
- 測試你的組件
- 加入CLI命令
- 命令命名指南
- 如何添加CLI命令
- 組件開發
- 服務合同
- 公共接口和API
- 服務合約設計模式
- 依賴注入
- 實例化對象與工廠
- 代理
- 代碼生成
- EAV和擴展屬性
- Magento的插件
- 路由
- 索引
- 配置服務網絡的API
- 向后兼容性
- 消息隊列
- 在開發過程中清除目錄
- magento設置
- magento開發模式設置
- magento安裝中文語言包
- 創建一個新的block
- magento后臺操作
- 調試-頁面phtml所在的目錄
- magento添加分類
- 添加屬性
- 屬性組
- 組合商品
- 配置商品
- 虛擬商品
- 捆綁商品
- 可下載商品
- 商品促銷設置
- CMS頁面設置
- block使用
- connect使用
- 多店鋪
- 聯系我們
- paypal設置
- 物流運費
- 網站地圖
- 訂單處理
- 賬號管理
- 網站貨幣設置
- google分析
- 頁面默認設置
- Magento技巧積累
- 常用技巧
- magento2更改商品圖片在網站中不同位置的大小
- magento的view里面的default.xml