/**
  * 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);
 }
示例#2
0
 /**
  * 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);
 }