X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> PHP код для og:image в Джумла, Нужен PHP код для заполнения мета тега meta property
Курыкин
Курыкин
Topic Starter сообщение 8.9.2017, 7:41; Ответить: Курыкин
Сообщение #1


Доброго всем времени суток! Никак не могу настроить разметку опен граф для изображений. Помогите пожалуйста написать php код для тега og:image. Бьюсь уже неделю, но ничего не получается. Прилагаю скрин того, как выглядит пост в Моём Мире (пустая рамка вместо картинки). Гугл+, ВК и Одноклассники берут картинку. Фейсбук только после скрапинга.

Вот код файла templates/шаблон/html/com_content/article/default.php:

Развернуть/Свернуть
<?php
/**
* @package Joomla.Site
* @subpackage com_content
*
* @copyright Copyright © 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/

defined('_JEXEC') or die;

JHtml::addIncludePath(JPATH_COMPONENT . '/helpers');

// ------------ Start Canonical-Mod
$mainmenu =& JSite::getMenu();
if($mainmenu->getActive()!== $mainmenu->getDefault()) :
$requrl = trim($_SERVER['REQUEST_URI']);
$document = JFactory::getDocument();
$livesite = substr_replace(JURI::root(), '', -1, 1);
$docpagenr = '';
$docstart = JRequest::getInt('start',0);
if($docstart>0) :
//$docpagenr = '?start='.$docstart;
endif;
$docroute = $this->item->readmore_link;

(bool)$valideurl = strpos( $requrl, $docroute );
if ($valideurl === false) :
header("HTTP/1.1 301 Moved Permanently");
header("Location: " . $livesite . $docroute);
header("Connection: close");
exit();
//JError::raiseError(404, JText::_('PAGE COULD NOT BE FOUND'));
endif;

$document->addHeadLink($livesite . $docroute . $docpagenr, 'canonical', 'rel', '');
endif;
// ------------ End Canonical-Mod

// Create shortcuts to some parameters.
$params = $this->item->params;
$images = json_decode($this->item->images);
$urls = json_decode($this->item->urls);
$canEdit = $params->get('access-edit');
$user = JFactory::getUser();
$info = $params->get('info_block_position', 0);

// Check if associations are implemented. If they are, define the parameter.
$assocParam = (JLanguageAssociations::isEnabled() && $params->get('show_associations'));
JHtml::_('behavior.caption');

//OpenGraph start
if ($params->get('access-view')) {
$timage = JLayoutHelper::render('joomla.content.full_image', $this->item);
}
$document =& JFactory :: getDocument();
if($this->item->metadesc == "") {$mmd = strip_tags($this->item->introtext);} else {$mmd = $this->item->metadesc;}
$document -> addCustomTag( '
<!-- Open Graph data -->
<meta property="og:title" content="'.$this -> escape($this -> item -> title).'">
<meta property="og:description" content="'.$mmd.'">
<meta property="og:type" content="article">
<meta property="og:url" content="'.JURI :: current().'">
<meta property="og:image" content="'.$timage.'">
<!-- Open Graph data end-->
');
//OpenGraph end

?>
<div class="item-page<?php echo $this->pageclass_sfx; ?>" itemscope itemtype="https://schema.org/Article">
<meta itemprop="inLanguage" content="<?php echo ($this->item->language === '*')? JFactory::getConfig()->get('language') : $this->item->language; ?>" />
<?php // Todo Not that elegant would be nice to group the params ?>
<?php $useDefList = ($params->get('show_modify_date') || $params->get('show_publish_date') || $params->get('show_create_date')
|| $params->get('show_hits') || $params->get('show_category') || $params->get('show_parent_category') || $params->get('show_author') || $assocParam); ?>

<?php if (!$useDefList && $this->print) : ?>
<div id="pop-print" class="btn hidden-print">
<?php echo JHtml::_('icon.print_screen', $this->item, $params); ?>
</div>
<div class="clearfix"> </div>
<?php endif; ?>
<?php if ($params->get('show_title') || $params->get('show_author')) : ?>
<div class="page-header">
<?php if ($params->get('show_title')) : ?>
<h1 itemprop="headline">
<?php echo $this->escape($this->item->title); ?>
</h1>
<?php endif; ?>
<?php if ($this->item->state == 0) : ?>
<span class="label label-warning"><?php echo JText::_('JUNPUBLISHED'); ?></span>
<?php endif; ?>
<?php if (strtotime($this->item->publish_up) > strtotime(JFactory::getDate())) : ?>
<span class="label label-warning"><?php echo JText::_('JNOTPUBLISHEDYET'); ?></span>
<?php endif; ?>
<?php if ((strtotime($this->item->publish_down) < strtotime(JFactory::getDate())) && $this->item->publish_down != JFactory::getDbo()->getNullDate()) : ?>
<span class="label label-warning"><?php echo JText::_('JEXPIRED'); ?></span>
<?php endif; ?>
</div>
<?php endif; ?>
<?php if (!$this->print) : ?>
<?php if ($canEdit || $params->get('show_print_icon') || $params->get('show_email_icon')) : ?>
<?php echo JLayoutHelper::render('joomla.content.icons', array('params' => $params, 'item' => $this->item, 'print' => false)); ?>
<?php endif; ?>
<?php else : ?>
<?php if ($useDefList) : ?>
<div id="pop-print" class="btn hidden-print">
<?php echo JHtml::_('icon.print_screen', $this->item, $params); ?>
</div>
<?php endif; ?>
<?php endif; ?>

<?php // Content is generated by content plugin event "onContentAfterTitle" ?>
<?php echo $this->item->event->afterDisplayTitle; ?>

<?php if ($useDefList && ($info == 0 || $info == 2)) : ?>
<?php // Todo: for Joomla4 Joomla.content.info_block.block can be changed to Joomla.content.info_block ?>
<?php echo JLayoutHelper::render('joomla.content.info_block.block', array('item' => $this->item, 'params' => $params, 'position' => 'above')); ?>
<?php endif; ?>

<?php if ($info == 0 && $params->get('show_tags', 1) && !empty($this->item->tags->itemTags)) : ?>
<?php $this->item->tagLayout = new JLayoutFile('joomla.content.tags'); ?>

<?php echo $this->item->tagLayout->render($this->item->tags->itemTags); ?>
<?php endif; ?>

<?php // Content is generated by content plugin event "onContentBeforeDisplay" ?>
<?php echo $this->item->event->beforeDisplayContent; ?>

<?php if (isset($urls) && ((!empty($urls->urls_position) && ($urls->urls_position == '0')) || ($params->get('urls_position') == '0' && empty($urls->urls_position)))
|| (empty($urls->urls_position) && (!$params->get('urls_position')))) : ?>
<?php echo $this->loadTemplate('links'); ?>
<?php endif; ?>
<?php if ($params->get('access-view')) : ?>
<?php echo JLayoutHelper::render('joomla.content.full_image', $this->item); ?>
<?php
if (!empty($this->item->pagination) && $this->item->pagination && !$this->item->paginationposition && !$this->item->paginationrelative) :
echo $this->item->pagination;
endif;
?>
<?php if (isset ($this->item->toc)) :
echo $this->item->toc;
endif; ?>
<div itemprop="description">
<?php echo $this->item->text; ?>
</div>
<?php if ($info == 1 || $info == 2) : ?>
<?php if ($useDefList) : ?>
<?php // Todo: for Joomla4 Joomla.content.info_block.block can be changed to Joomla.content.info_block ?>
<?php echo JLayoutHelper::render('joomla.content.info_block.block', array('item' => $this->item, 'params' => $params, 'position' => 'below')); ?>
<?php endif; ?>
<?php if ($params->get('show_tags', 1) && !empty($this->item->tags->itemTags)) : ?>
<?php $this->item->tagLayout = new JLayoutFile('joomla.content.tags'); ?>
<?php echo $this->item->tagLayout->render($this->item->tags->itemTags); ?>
<?php endif; ?>
<?php endif; ?>
<span itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage">
<a href="<?php echo JFactory::getURI(); ?>" itemprop="url"/>
</span>
<?php
if (!empty($this->item->pagination) && $this->item->pagination && $this->item->paginationposition && !$this->item->paginationrelative) :
echo $this->item->pagination;
?>
<?php endif; ?>
<?php if (isset($urls) && ((!empty($urls->urls_position) && ($urls->urls_position == '1')) || ($params->get('urls_position') == '1'))) : ?>
<?php echo $this->loadTemplate('links'); ?>
<?php endif; ?>
<?php // Optional teaser intro text for guests ?>
<?php elseif ($params->get('show_noauth') == true && $user->get('guest')) : ?>
<?php echo JLayoutHelper::render('joomla.content.intro_image', $this->item); ?>
<?php echo JHtml::_('content.prepare', $this->item->introtext); ?>
<?php // Optional link to let them register to see the whole article. ?>
<?php if ($params->get('show_readmore') && $this->item->fulltext != null) : ?>
<?php $menu = JFactory::getApplication()->getMenu(); ?>
<?php $active = $menu->getActive(); ?>
<?php $itemId = $active->id; ?>
<?php $link = new JUri(JRoute::_('index.php?option=com_users&view=login&Itemid=' . $itemId, false)); ?>
<?php $link->setVar('return', base64_encode(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid, $this->item->language))); ?>
<p class="readmore">
<a href="<?php echo $link; ?>" class="register">
<?php $attribs = json_decode($this->item->attribs); ?>
<?php
if ($attribs->alternative_readmore == null) :
echo JText::_('COM_CONTENT_REGISTER_TO_READ_MORE');
elseif ($readmore = $attribs->alternative_readmore) :
echo $readmore;
if ($params->get('show_readmore_title', 0)!= 0) :
echo JHtml::_('string.truncate', $this->item->title, $params->get('readmore_limit'));
endif;
elseif ($params->get('show_readmore_title', 0) == 0) :
echo JText::sprintf('COM_CONTENT_READ_MORE_TITLE');
else :
echo JText::_('COM_CONTENT_READ_MORE');
echo JHtml::_('string.truncate', $this->item->title, $params->get('readmore_limit'));
endif; ?>
</a>
</p>
<?php endif; ?>
<?php endif; ?>
<?php
if (!empty($this->item->pagination) && $this->item->pagination && $this->item->paginationposition && $this->item->paginationrelative) :
echo $this->item->pagination;
?>
<?php endif; ?>
<?php // Content is generated by content plugin event "onContentAfterDisplay" ?>
<?php echo $this->item->event->afterDisplayContent; ?>
</div>


Сообщение отредактировал Курыкин - 8.9.2017, 7:43
Прикрепленные файлы
Прикрепленный файл  Screenshot__2_.png ( 17,1 килобайт ) Кол-во скачиваний: 4
 
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Fassendek
Fassendek
сообщение 20.10.2017, 14:59; Ответить: Fassendek
Сообщение #2


Курыкин,

Что-то вы больно умудрили тут всё. И зачем изобретать велик, если он уже есть?! Есть специальный компонент – JFBConnect, который делает в Джумле это всё автоматом, и много чего полезного другого. Есть куча других подобных компонентов. И кто говорит, что они платные – это ересь! Джумла выпущена под бесплатной лицензией GNU – GPL, как и все компоненты под неё. А как найти бесплатно компонент, то поиск яндекса и гугла вам в помощь. JFBConnect использую несколько лет и более чем доволен. Никогда проблем с разметкой и тегами не было.


--------------------
ПОРТАЛ ИНЕТ4ИК — полезности для создания сайтов на HTML и CMS JOOMLA.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Курыкин
Курыкин
Topic Starter сообщение 20.10.2017, 20:43; Ответить: Курыкин
Сообщение #3


Fassendek,
Говорят, что для его полноценного функционирования нужно регистрироваться в системе ID и платить по 60 баксов в год.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Fassendek
Fassendek
сообщение 21.10.2017, 14:08; Ответить: Fassendek
Сообщение #4


Курыкин,
Вы же почти программист, а верите в такие сказки! :sarcastic: Разумеется, если вы хотите, чтобы каждое никчемное исправление в приложении, типа, исправления вы на Вы, входило в автоматический набор исправлений, то вам и нужна подписка за 60US$. Если вам вышеуказанного не нужно, а нужна расстановка тегов и связка с соцсетями + регистрация через них - то без проблем, всё работает. Я вам написал - у меня компонент установлен и довольно давно, никаких замечаний к его работе у меня нет.


--------------------
ПОРТАЛ ИНЕТ4ИК — полезности для создания сайтов на HTML и CMS JOOMLA.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Курыкин
Курыкин
Topic Starter сообщение 25.10.2017, 5:16; Ответить: Курыкин
Сообщение #5


Fassendek, А весит он не много? Я имею ввиду влияние на скорость загрузки страницы. Если установку и полное функционирование можно сделать бесплатно, то это весьма заманчиво. Установив плагин, можно будет удалить сразу два компонента: скрипт поделиться от Яндекс, плагин авторизации Slogin и проблема разметки отпадёт. Не можете дать адрес официального разработчика?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
lostprophet
lostprophet
сообщение 25.10.2017, 10:00; Ответить: lostprophet
Сообщение #6


В index.php шаблона
<html xmlns:og="http://ogp.me/ns#">

Что отдает $timage ?
Полный адрес, с http://адрес.сайта/ ?


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Курыкин
Курыкин
Topic Starter сообщение 25.10.2017, 10:42; Ответить: Курыкин
Сообщение #7


lostprophet, $timage отдаёт пустое поле. Сейчас установил плагин, который правильно генерирует разметку для материалов, но к сожалению полный бред для категорий, выдавая титл и описание самого первого материала в категории и ссылки на все картинки последней страницы в категории. Хотелось бы обойтись без него.
Вот адрес сайта: https://korotkometrazhnye-filmy.com/
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
lostprophet
lostprophet
сообщение 25.10.2017, 11:10; Ответить: lostprophet
Сообщение #8


Адрес сайта мне не поможет.
Как вариант - поставьте в <meta property="og:image" content=""> адрес статичного изображения с сайта.
Или распарсивайте изображение из материала и выводите.


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Fassendek
Fassendek
сообщение 25.10.2017, 12:06; Ответить: Fassendek
Сообщение #9


Курыкин,
Сайт разработчика JFBConnect. Я уже говорил, что никаких напрягов с компонентом нет! Ни по весу, не по скорости работы сайта.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


--------------------
ПОРТАЛ ИНЕТ4ИК — полезности для создания сайтов на HTML и CMS JOOMLA.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) ✅ sms.chekons.com - ⭐ Сервис для получения SMS на реальные номера USA "Non-VoIP, безлим SMS, API" ⭐
Сервис для получения SMS на реальные номера USA
13 Chekon 4078 18.4.2024, 11:48
автор: Chekon
Открытая тема (нет новых ответов) Rebex.io – Ваша инновационная платформа для обмена криптовалюты!
1 Rebex 684 17.4.2024, 11:50
автор: Rebex
Открытая тема (нет новых ответов) Какой % отказов нормален для сайта?
11 Aloof 2819 16.4.2024, 12:48
автор: diviner99
Горячая тема (нет новых ответов) Betatransfer.net - прием платежей для HIGH RISK проектов, интернет эквайринг и мерчант онлайн оплат
54 arendator 34836 15.4.2024, 15:16
автор: arendator
Горячая тема (нет новых ответов) ⭕Антидетект браузер AdsPower для эффективной работы с мультиаккаунтами!
83 AdsPower 24425 14.4.2024, 22:52
автор: AdsPower


 



RSS Текстовая версия Сейчас: 20.4.2024, 1:14
Дизайн