如何在Magento 2 加上麵包屑
雖然 magento 本來就有麵包屑了,但並不是每個頁面都有麵包屑;若遇上需要加上麵包屑的需求要如何補上去?
※這篇文章將以登入頁為實例說明
- 首先,要看網址找出 xml ,以 [damain]/customer/account/login/ 為例。
要找出的 xml 檔名為 customer_account_login.xml,若有已存在於 app\code\ 底下的檔案來改是最好 ,但若沒有那就需要手動建一個了。
所謂的麵包屑指的是紅框的部分
2. 我建一個 extension AstralWeb_Customer 來放我的程式,檔案放哪裡沒差。
php pestle.phar generate_module AstralWeb Customer 0.0.1
建立 app\code\AstralWeb\Customer\view\frontend\layout\customer_account_login.xml
<?xml version="1.0"?> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <body> <referenceContainer name="content"> <block class="AstralWeb\Customer\Block\Index" name="astralweb_customer_block_index" cacheable="true" /> </referenceContainer> </body> </page>
name 的部分注意別重複
class 指定會引用到的 class
所以接下來需要建立會用到的檔案 app\code\AstralWeb\Customer\Block\Index.php
<?php namespace AstralWeb\Customer\Block; use Magento\Framework\View\Element\Template; /** * Class Index * @package AstralWeb\Customer\Block */ class Index extends Template { /** * @return $this * @throws \Magento\Framework\Exception\LocalizedException */ public function _prepareLayout() { $breadcrumbs = $this->getLayout()->getBlock('breadcrumbs'); $breadcrumbs->addCrumb( 'home', [ 'label' => __('Home'), 'title' => __('Go to Home Page'), 'link' => $this->getUrl('/'), ])->addCrumb( 'market', [ 'label' => __('login'), 'link' => $this->getUrl('customer/account/login'), ]); return parent::_prepareLayout(); } }
3.在 app\code\AstralWeb\Customer\Block\Index.php 裡建立一個 _prepareLayout
便會在 Layout 最前面執行並將組合好的麵包屑吐出
4.最後別忘記補上語系檔(如果有需要),總共需要建立的檔案如圖:
以上在Magento 2 加上麵包屑的實際操作完成!
更多Magento相關文章請看: Magento教學導覽
請務必訂閱我們的電子報,以及追蹤我們的臉書粉絲團,才能收到第一手的最新資訊喔!
我要留言