Alex Trofimov před 12 roky
rodič
revize
fba901b1c8

+ 10 - 1
inc/classes/BxDolMetatags.php

@@ -83,13 +83,22 @@ class BxDolMetatags extends BxDol implements iBxDolFactoryObject
      * Add all available meta tags to the head section 
      * @return number of successfully added metas
      */
-    public function metaAdd($iId) 
+    public function metaAdd($iId, $mixedImage = false)
     {
         $i = 0;
         foreach ($this->_aMetas as $sMeta) {
             $sFunc = $sMeta . 'AddMeta';
             $i += $this->$sFunc($iId);
         }
+
+        if ($mixedImage && is_array($mixedImage)) {
+            bx_import('BxDolStorage');
+            $oStorage = BxDolStorage::getObjectInstance($mixedImage['object']);
+            $mixedImage = $oStorage ? $oStorage->getFileUrlById($mixedImage['id']) : false;
+        }
+        if ($mixedImage) 
+            BxDolTemplate::getInstance()->addPageMetaImage($mixedImage);
+
         return $i;
     }
 

+ 12 - 0
inc/classes/BxDolTemplate.php

@@ -738,6 +738,15 @@ class BxDolTemplate extends BxDol implements iBxDolSingleton
     {
         $this->aPage['location'] = array('lat' => $fLat, 'lng' => $fLng, 'country' => $sCountryCode);
     }
+    /**
+     * Set page meta image.
+     *
+     * @param $sImageUrl meta image url
+     */
+    function addPageMetaImage($sImageUrl)
+    {
+        $this->aPage['image'] = $sImageUrl;
+    }
     /**
      * Returns page meta info, like meta keyword, meta description, location, etc
      */
@@ -757,6 +766,9 @@ class BxDolTemplate extends BxDol implements iBxDolSingleton
                 <meta name="geo.position" content="' . $this->aPage['location']['lat'] . ';' . $this->aPage['location']['lng'] . '" />
                 <meta name="geo.region" content="' . bx_html_attribute($this->aPage['location']['country']) . '" />';
 
+        if (!empty($this->aPage['image']))
+            $sRet .= '<meta property="og:image" content="' . $this->aPage['image'] . '" />';
+
         return $sRet;
     }
     /**

+ 0 - 1
install/sql/system.sql

@@ -3173,7 +3173,6 @@ CREATE TABLE `sys_objects_metatags` (
   `table_keywords` varchar(255) NOT NULL,
   `table_locations` varchar(255) NOT NULL,
   `table_mentions` varchar(255) NOT NULL,
-  `table_pictures` varchar(255) NOT NULL,
   `override_class_name` varchar(255) NOT NULL,
   `override_class_file` varchar(255) NOT NULL,
   PRIMARY KEY (`id`),

+ 10 - 2
modules/base/general/classes/BxBaseModGeneralPageEntry.php

@@ -29,28 +29,36 @@ class BxBaseModGeneralPageEntry extends BxTemplPage
 
     public function getCode ()
     {
+        // check if content exists
         if (!$this->_aContentInfo) { // if entry is not found - display standard "404 page not found" page
             $this->_oTemplate->displayPageNotFound();
             exit;
         }
 
+        // permissions check 
         if (CHECK_ACTION_RESULT_ALLOWED !== ($sMsg = $this->_oModule->checkAllowedView($this->_aContentInfo))) {
             $this->_oTemplate->displayAccessDenied($sMsg);
             exit;
         }
         $this->_oModule->checkAllowedView($this->_aContentInfo, true);
 
+        // count views
         $CNF = &$this->_oModule->_oConfig->CNF;
         if (!empty($CNF['OBJECT_VIEWS'])) {
             bx_import('BxDolView');
             BxDolView::getObjectInstance($CNF['OBJECT_VIEWS'], $this->_aContentInfo[$CNF['FIELD_ID']])->doView();
         }
 
+        // add content metatags
         if (!empty($CNF['OBJECT_METATAGS'])) {
             bx_import('BxDolMetatags');
             $o = BxDolMetatags::getObjectInstance($CNF['OBJECT_METATAGS']);
-            if ($o)
-                $o->metaAdd($this->_aContentInfo[$CNF['FIELD_ID']]);
+            if ($o) {
+                $aThumb = false;
+                if (!empty($CNF['FIELD_THUMB']) && !empty($this->_aContentInfo[$CNF['FIELD_THUMB']]) && !empty($CNF['OBJECT_STORAGE']))
+                    $aThumb = array('id' => $this->_aContentInfo[$CNF['FIELD_THUMB']], 'object' => $CNF['OBJECT_STORAGE']);
+                $o->metaAdd($this->_aContentInfo[$CNF['FIELD_ID']], $aThumb);
+            }
         }
 
         return parent::getCode ();

+ 2 - 2
modules/boonex/posts/install/sql/enable.sql

@@ -247,6 +247,6 @@ INSERT INTO `sys_objects_search` (`ObjectName`, `Title`, `ClassName`, `ClassPath
 ('bx_posts_cmts', '_bx_posts_cmts', 'BxPostsCmtsSearchResult', 'modules/boonex/posts/classes/BxPostsCmtsSearchResult.php');
 
 -- METATAGS
-INSERT INTO `sys_objects_metatags` (`object`, `table_keywords`, `table_locations`, `table_mentions`, `table_pictures`, `override_class_name`, `override_class_file`) VALUES
-('bx_posts', 'bx_posts_meta_keywords', 'bx_posts_meta_locations', '', '', '', '');
+INSERT INTO `sys_objects_metatags` (`object`, `table_keywords`, `table_locations`, `table_mentions`, `override_class_name`, `override_class_file`) VALUES
+('bx_posts', 'bx_posts_meta_keywords', 'bx_posts_meta_locations', '', '', '');