/** * Page block html topmenu gethtml before * * @param \Magento\Framework\Event\Observer $observer * @return void * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function execute(\Magento\Framework\Event\Observer $observer) { if (!$this->_scopeConfig->isSetFlag(static::XML_PATH_TOP_MENU_SHOW_ITEM, \Magento\Store\Model\ScopeInterface::SCOPE_STORE)) { return; } /** @var \Magento\Framework\Data\Tree\Node $menu */ $menu = $observer->getMenu(); $block = $observer->getBlock(); $tree = $menu->getTree(); $data = ['name' => $this->_scopeConfig->getValue(static::XML_PATH_TOP_MENU_ITEM_TEXT, \Magento\Store\Model\ScopeInterface::SCOPE_STORE), 'id' => 'magefan-blog', 'url' => $this->_url->getBaseUrl(), 'is_active' => $block->getRequest()->getModuleName() == 'blog']; $node = new Node($data, 'id', $tree, $menu); $menu->addChild($node); }
/** * Retrieve og image url * @return string */ public function getOgImage() { if (!$this->hasData('og_image')) { if ($file = $this->getData('og_img')) { $image = $this->_url->getMediaUrl($file); } else { $image = false; } $this->setData('og_image', $image); } return $this->getData('og_image'); }
/** * Validate and Match Blog Pages and modify request * * @param \Magento\Framework\App\RequestInterface $request * @return bool */ public function match(\Magento\Framework\App\RequestInterface $request) { $_identifier = trim($request->getPathInfo(), '/'); $pathInfo = explode('/', $_identifier); $blogRoute = $this->_url->getRoute(); if ($pathInfo[0] != $blogRoute) { return; } unset($pathInfo[0]); switch ($this->_url->getPermalinkType()) { case Url::PERMALINK_TYPE_DEFAULT: foreach ($pathInfo as $i => $route) { $pathInfo[$i] = $this->_url->getControllerName($route); } break; case Url::PERMALINK_TYPE_SHORT: if ($pathInfo[1] == $this->_url->getRoute(Url::CONTROLLER_SEARCH)) { $pathInfo[1] = Url::CONTROLLER_SEARCH; } elseif (count($pathInfo) == 1) { if ($this->_isArchiveIdentifier($pathInfo[1])) { $pathInfo[2] = $pathInfo[1]; $pathInfo[1] = Url::CONTROLLER_ARCHIVE; } elseif ($postId = $this->_getPostId($pathInfo[1])) { $pathInfo[2] = $pathInfo[1]; $pathInfo[1] = Url::CONTROLLER_POST; } elseif ($categoryId = $this->_getCategoryId($pathInfo[1])) { $pathInfo[2] = $pathInfo[1]; $pathInfo[1] = Url::CONTROLLER_CATEGORY; } } break; } $identifier = implode('/', $pathInfo); $condition = new \Magento\Framework\DataObject(['identifier' => $identifier, 'continue' => true]); $this->_eventManager->dispatch('magefan_blog_controller_router_match_before', ['router' => $this, 'condition' => $condition]); if ($condition->getRedirectUrl()) { $this->_response->setRedirect($condition->getRedirectUrl()); $request->setDispatched(true); return $this->actionFactory->create('Magento\\Framework\\App\\Action\\Redirect', ['request' => $request]); } if (!$condition->getContinue()) { return null; } $identifier = $condition->getIdentifier(); $success = false; $info = explode('/', $identifier); if (!$identifier) { $request->setModuleName('blog')->setControllerName('index')->setActionName('index'); $success = true; } elseif (count($info) > 1) { $store = $this->_storeManager->getStore()->getId(); switch ($info[0]) { case 'post': if (!($postId = $this->_getPostId($info[1]))) { return null; } $request->setModuleName('blog')->setControllerName('post')->setActionName('view')->setParam('id', $postId); $success = true; break; case 'category': if (!($categoryId = $this->_getCategoryId($info[1]))) { return null; } $request->setModuleName('blog')->setControllerName('category')->setActionName('view')->setParam('id', $categoryId); $success = true; break; case 'archive': $request->setModuleName('blog')->setControllerName('archive')->setActionName('view')->setParam('date', $info[1]); $success = true; break; case 'search': $request->setModuleName('blog')->setControllerName('search')->setActionName('index')->setParam('q', $info[1]); $success = true; break; case 'rss': $request->setModuleName('blog')->setControllerName('rss')->setActionName(isset($info[1]) ? $info[1] : 'index'); $success = true; break; } } if (!$success) { return null; } $request->setAlias(\Magento\Framework\Url::REWRITE_REQUEST_PATH_ALIAS, $_identifier); return $this->actionFactory->create('Magento\\Framework\\App\\Action\\Forward', ['request' => $request]); }
/** * @return string */ public function getHref() { return $this->_url->getBaseUrl(); }
/** * Retrieve post url * @return string */ public function getPostUrl() { return $this->_url->getUrl($this, URL::CONTROLLER_POST); }
/** * Retrieve serch form action url * @return string */ public function getFormUrl() { return $this->_url->getUrl('', \Magefan\Blog\Model\Url::CONTROLLER_SEARCH); }