Выдано 108932 лицензии

Внедрение в макет разметки Open Graph

Стандарт Open Graph разработан  Facebook, предназначен для контроля превью, которое формируется при публикации ссылки на сайт в социальных сетях. Разметку Open Graph поддерживают Facebook, Google+, Вконтакте, Twitter, LinkedIn, Pinterest и др.

В секцию <head> основного макете внесите код, добавляющий разметку для информационных элементов и товаров:

    <?php
    // Open Graph
    if (is_object(Core_Page::instance()->object))
    {
        $bInformationItem = Core_Page::instance()->object instanceof Informationsystem_Controller_Show;
        $bShopItem = Core_Page::instance()->object instanceof Shop_Controller_Show;
        if ($bInformationItem || $bShopItem)
        {
            if (Core_Page::instance()->object->item)
            {
                $aOpenGraph = array();
                
                $oEntity = $bInformationItem
                    ? Core_Entity::factory('Informationsystem_Item', Core_Page::instance()->object->item)
                    : Core_Entity::factory('Shop_Item', Core_Page::instance()->object->item);
                
                $type = $bInformationItem
                    ? 'article'
                    : 'website';
                
                $aOpenGraph['og:type'] = $type;
                $aOpenGraph['og:title'] = $oEntity->name;
                $aOpenGraph['og:description'] = strip_tags(Core_Str::cutSentences($oEntity->description));

                if ($oEntity->image_large != '')
                {
                    $oSite = Core_Entity::factory('Site', CURRENT_SITE);
                    $oSite_Alias = $oSite->getCurrentAlias();
                
                    if ($oSite_Alias)
                    {
                        $sSiteURL = $oSite_Alias->name;
                        
                        $protocol = Core_Page::instance()->structure->https
                            ? 'https://'
                            : 'http://';
                            
                        $aOpenGraph['og:image'] = $protocol . $sSiteURL . $oEntity->getLargeFileHref();
                    }
                }
                
                foreach ($aOpenGraph as $sProperty => $sContent)
                {
                    ?><meta property="<?php echo htmlspecialchars($sProperty)?>" content="<?php echo htmlspecialchars($sContent)?>" /><?php
                    echo PHP_EOL;
                }
            }
        }
    }
    ?>

Комментарии

  • hell0men

    Без темы

    А для главной страницы? Логотип там и все такое.

    03.05.2017 07:02:39 hell0men
  • Без темы

    тип website
    title - из seo, а если не указано - из имени узла структуры
    description - из seo
    image - наверное из доп.свойства структуры...

    тот же принцип и для "Документы и страницы"

    13.02.2017 11:48:46 EZ-Web
  • Без темы

    тут только для элементов инфосистемы и товаров...
    но ведь это же не всё, что может быть на сайте?
    - а как же группы?
    - а как же динамические страницы?
    - а как же документы и страницы?

    13.02.2017 11:33:05 EZ-Web

    Без темы

    Хмм, какой Open Graph для неких динамических страниц?

    13.02.2017 11:35:02 HostCMS