123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- <?php
- /**
- * Copyright © 2016 Ihor Vansach (ihor@magefan.com). All rights reserved.
- * See LICENSE.txt for license details (http://opensource.org/licenses/osl-3.0.php).
- *
- * Glory to Ukraine! Glory to the heroes!
- */
- namespace Magefan\Blog\Block\Post\View;
- use Magento\Store\Model\ScopeInterface;
- /**
- * Blog post view rich snippets
- */
- class Richsnippets extends Opengraph
- {
- /**
- * @param array
- */
- protected $_options;
- /**
- * Retrieve snipet params
- *
- * @return array
- */
- public function getOptions()
- {
- if ($this->_options === null) {
- $post = $this->getPost();
- $logoBlock = $this->getLayout()->getBlock('logo');
- if (!$logoBlock) {
- $logoBlock = $this->getLayout()->getBlock('amp.logo');
- }
- $this->_options = [
- '@context' => 'http://schema.org',
- '@type' => 'BlogPosting',
- '@id' => $post->getPostUrl(),
- 'author' => $this->getAuthor(),
- 'headline' => $this->getTitle(),
- 'description' => $this->getDescription(),
- 'datePublished' => $post->getPublishDate('c'),
- 'dateModified' => $post->getUpdateDate('c'),
- 'image' => [
- '@type' => 'ImageObject',
- 'url' => $this->getImage() ?:
- ($logoBlock ? $logoBlock->getLogoSrc() : ''),
- 'width' => 720,
- 'height' => 720,
- ],
- 'publisher' => [
- '@type' => 'Organization',
- 'name' => $this->getPublisher(),
- 'logo' => [
- '@type' => 'ImageObject',
- 'url' => $logoBlock ? $logoBlock->getLogoSrc() : '',
- ],
- ],
- 'mainEntityOfPage' => $this->_url->getBaseUrl(),
- ];
- }
- return $this->_options;
- }
- /**
- * Retrieve author name
- *
- * @return array
- */
- public function getAuthor()
- {
- if ($author = $this->getPost()->getAuthor()) {
- if ($author->getTitle()) {
- return $author->getTitle();
- }
- }
- // if no author name return name of publisher
- return $this->getPublisher();
- }
- /**
- * Retrieve publisher name
- *
- * @return array
- */
- public function getPublisher()
- {
- $publisher = $this->_scopeConfig->getValue(
- 'general/store_information/name',
- ScopeInterface::SCOPE_STORE
- );
- if (!$publisher) {
- $publisher = 'Magento2 Store';
- }
- return $publisher;
- }
- /**
- * Render html output
- *
- * @return string
- */
- protected function _toHtml()
- {
- return '<script type="application/ld+json">'
- . json_encode($this->getOptions())
- . '</script>';
- }
- }
|