Данный способ основан на особенностях Joomla. У нее сначала срабатывает контентная область, а после выполняется шаблон и заменяется тег component . В итоге, до вывода страницы, мы может вытащить из вывода шаблона рисунки и передать их в шаблон. Этот способ работает с jandex share.
Зачем всё это надо было? facebook публиковал пост очень страшно. Слева изображение а справа текст для поделиться. Задачей стояло что бы пост растягивался по ширине и рисунок был сверху
Заходим в /templates/имя шаблона/html/com_content/article/default.php , если нет тагого файла, то создайте копию из comp_content.
ищем echo $this->item->text;
и вставить после текст
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
$content = $this->item->text; //вытаскиваем все рисунки preg_match_all('/<img[^>]+src="?\'?([^"\']+)"?\'?[^>]*>/i', $content, $images, PREG_SET_ORDER); $mass_images=array(); foreach ($images as $image) { $mass_images[]= $image[1]; } //перебираем все изображения в тексте foreach($mass_images as $image){ //$_SERVER['SHARE_IMG']=$mass_images[0]; //$image=$mass_images[0]; $docRoot = preg_replace('/\/$/', '', $_SERVER['DOCUMENT_ROOT']); // какой то глюк, в некоторых изображениях слеш появляется или наоборот исчезает перед image if(mb_substr($image, 0, 1)=='/'){ $full_patch=$docRoot .''. $image; $full_image=''. $image; }else{ $full_patch=$docRoot .'/'. $image; $full_image='/'. $image; } if (file_exists($full_patch)) { $size = GetImageSize($full_patch); if($size[0]>600 and $size[0]>$size[1]){ // ширина больше 600 и ширина больше высоты //избавляемся от пробелов в названии файла. $full_image=str_replace(" ","%20",$full_image); $_SERVER['SHARE_IMG']= $full_image; //$_SERVER['SHARE_IMG']= '/images/26907237_581823845486065_1903719534591057211_n%20-%20.jpg'; // echo $full_image; break; } } } ?> |
Обратите внимание, на то что возращает функция GetImageSize . У меня проверка на широкое изображение и на то что бы ширина изображения была меньше высоты. Иначе пропускаем.
в header шаблона вставляем код ниже . Это вытащит из контентной области рисунок хранимый в переменной $_SERVER[‘SHARE_IMG’] и засунем в Тег og:image .
1 2 3 4 5 6 7 8 9 10 |
<meta property="og:image" content="<?php $lif_share_hidden='http://ftask.ru/templates/названиешаблона/images/share.jpg'; if(isset ( $_SERVER['SHARE_IMG'])){ echo 'http://ftask.ru'.$_SERVER['SHARE_IMG']; }else{ echo $lif_share_hidden; } ?>"/> |
в начало body вставляем
1 |
<img style="width:0px; height:0px;" src="<?php echo $lif_share_hidden; ?>"> |
, так мы получим первое правильное изображение