Desde un Bloque
Declaramos la clase UrlInterface y que nos permitirá usar los métodos getBaseUrl(), getUrl(), getCurrentUrl(), getUrl(‘test/test2’) , etc … ya que necesitaremos usarlos en nuestro menú de migas de pan. En un controlador no necesitamos hacer esto ya que ObjectManagerInterface es llamado por la factoría de páginas PageFactory.
1 |
use Magento\Framework\UrlInterface; |
En el constructor de nuestro bloque inyectamos la dependencia UrlInterface para poder utilizarla.
1 2 3 4 5 6 7 |
public function __construct( Context $context UrlInterface $urlInterface) { $this->_urlInterface = $urlInterface; parent::__construct($context); } |
Creamos el método addbreadcrumb() en nuestro bloque y que se encargará de generar el menú de migas de pan personalizado (breadcrumb) en nuestra página.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
public function addbreadcrumb() { // @var \Magento\Theme\Block\Html\Breadcrumbs $breadcrumbs = $this->getLayout()->getBlock('breadcrumbs'); $breadcrumbs->addCrumb('home', [ 'label' => __('Inicio'), 'title' => __('Inicio'), 'link' => $this->_urlInterface->getUrl() ] ); $breadcrumbs->addCrumb('news', [ 'label' => __('Noticias'), 'title' => __('Noticias'), 'link' => $this->_urlInterface->getCurrentUrl() ] ); return $this->getLayout()->getBlock('breadcrumbs')->toHtml(); } |
Y por último llamamos al método addbreadcrumb() que acabamos de crear desde el template que deseemos:
1 2 3 |
if ($block->addbreadcrumb()) { echo $block->addbreadcrumb(); } |
Desde un controlador
Desde un controlador es mas sencillo, tan solo tenemos que crear nuestro método encargado de generar las migas de pan.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
namespace <vendor>\<pack>\Controller\Index; use Magento\Framework\App\Action\Action; use Magento\Framework\App\Action\Context; use Magento\Framework\View\Result\PageFactory; class Index extends Action { protected $_pageFactory; public function __construct( Context $context, PageFactory $pageFactory) { $this->_pageFactory = $pageFactory; parent::__construct($context); } public function addbreadcrumb() { $pageFactory = $this->_pageFactory->create(); // @var \Magento\Theme\Block\Html\Breadcrumbs $breadcrumbs = $pageFactory->getLayout()->getBlock('breadcrumbs'); $breadcrumbs->addCrumb('home', [ 'label' => __('Inicio'), 'title' => __('Inicio'), 'link' => $this->_url->getUrl('/') ] ); $breadcrumbs->addCrumb('news', [ 'label' => __('Noticias'), 'title' => __('Noticias'), 'link' => $this->_url->getUrl('news') ] ); } public function execute() { $page = $this->_pageFactory->create(); $this->addbreadcrumb(); return $page; } } |