AlexMoiseyuk VIP
Total posts: 123
05 Янв 2015 16:25

очень хорошо было бы внедрить подобную вещь, так как это намного упростит работу с соц-сетями.

идея в том чтобы во время sharing-а в пост соц-сети парсилась именно та картинка что нужно (любая из галереи) и большого размера (например оригинал)

пробовал вставлять подобный код в gallery.php и подбирать переменную (в примере $url_to_original):

$doc = JFactory :: getDocument(); 
$doc -> addCustomTag( ' 
<meta property="og:image" content="'.$url_to_original.'"/>   
');

но возвращало пустую строку в скобках

подскажите, пожалуйста как можно подобное реализовать

Последние изменения: 06 Янв 2015


Sergey
Total posts: 13,748
06 Янв 2015 06:22

Это в поле image?


AlexMoiseyuk VIP
Total posts: 123
06 Янв 2015 08:22

это в поле Gallery


Konstantin
Total posts: 1,113
06 Янв 2015 11:20

А где Вы вставляете этот код? Вам нужно сделать свой собственный шаблон вывода, на подобие шаблона list.php, там есть переменная $url_orig вот ее и опускаетй в добавление метатега.


AlexMoiseyuk VIP
Total posts: 123
06 Янв 2015 11:32

Konstantin Используйте

<span class="variable">$doc</span>-&gt;setMetaData(<span class="string">'og:image'</span>, <span class="variable">$url_to_original</span>);

такое выражение вернуло

Fatal error: Call to a member function setMetaData() on a non-object in ...\components\com_cobalt\fields\gallery\gallery.php on line 200

тот код добавляет тег. проблема была в том какую именно переменную использовать

Получилось получить URL нужной картинки таким образом: в gallery.php в строку примерно 193 (функция function _custom($client = 'full')) после

            $new_name_full = $key . '.' . $file['ext'];
            $img_full      = $this->path . $date . DIRECTORY_SEPARATOR . $new_name_full;
            if(!JFile::exists($img_full))
            {....}

разместил это:

$f_picture=JURI :: root().sprintf('%s/thumbs_cache/%s/%s', JComponentHelper::getParams('com_cobalt')->get('general_upload') , $date, $new_name_full);        
if (!empty($f_picture)) { $tpicture = htmlspecialchars($fpicture);  }
else { $tpicture = ' http://son-of-sky.com/images/blog/nebo-nad-vkrainoiu/12.jpg ';    }

$doc = JFactory :: getDocument(); 
$doc -> addCustomTag('<meta property="og:image" content="'.$tpicture.'"/>');

код работает для каждой картинки статьи (то есть добавляет несколько мета-тегов). Думаю как сделать только для первой. хотя можно и оставить

это будет работать, но только при использовании вышеупомянутой функции. как глобально сделать не знаю


AlexMoiseyuk VIP
Total posts: 123
06 Янв 2015 11:34

Konstantin А где Вы вставляете этот код? Вам нужно сделать свой собственный шаблон вывода, на подобие шаблона list.php, там есть переменная $url_orig вот ее и опускаетй в добавление метатега.

интересно. сейчас попробую. только мне нужно в шаблоне полного вывода ( full.php ) ее создать..


AlexMoiseyuk VIP
Total posts: 123
06 Янв 2015 12:30

в файле (19 строка) вместо:

$this->record = $record;
$this->_init();

вставил:

$this->record = $record;
$key = $this->id . '-' . $record->id;
$this->_init();

$dir = JComponentHelper::getParams('com_cobalt')->get('general_upload') . DIRECTORY_SEPARATOR . $this->params->get('params.subfolder', $this->field_type) . DIRECTORY_SEPARATOR;

$ids = array_keys($this->value);
if ($this->params->get('params.thumbs_list_random', 1))
{
    shuffle($ids);
}
$index = array_shift($ids);

$picture = $dir . $this->value[$index]['fullpath'];

    $url_orig =  CImgHelper::getThumb($picture, $this->params->get('params.full_width', 100), $this->params->get('params.full_height', 100), 'gallery' . $key, $record->user_id,
        array(
             'mode'       => $this->params->get('params.full_mode', 6),
             'strache'    => $this->params->get('params.full_stretch', 1),
             'background' => $this->params->get('params.thumbs_background_color', "#000000"),
             'quality'    => $this->params->get('params.full_quality', 80)
        ));

/*---------start meta-----*/
$fpicture=JURI :: root().$url_orig;        
if (!empty($fpicture)) { $tpicture = htmlspecialchars($fpicture);  }
else { $tpicture = ' http://son-of-sky.com/images/blog/nebo-nad-vkrainoiu/12.jpg ';    }
echo $fpicture;  //for testing
$doc = JFactory :: getDocument(); 
$doc -> addCustomTag('<meta property="og:image" content="'.$tpicture.'"/>');   
/*---------end meta-----*/

помогите, если не трудно убрать лишнее. Даже УРЛ добавляет один случайный=). Одна только небольшая проблемка: ссылки с двойным слешем: типа sitename.com//cache/cobalt_thumbs/gallery2-23/210/1d50eb2772e79fe3c5a72399b119c445.jpg


AlexMoiseyuk VIP
Total posts: 123
06 Янв 2015 12:38

Barabashka ссылки с двойным слешем: типа sitename.com//cache/cobalt_thumbs/gallery2-23/210/1d50eb2772e79fe3c5a72399b119c445.jpg

=) как вариант:

$fpicture=JURI :: root().substr($url_orig, 1);

Sergey
Total posts: 13,748
06 Янв 2015 15:03

Или ltrim($url, '/').

Работает на Cobalt