- Posts: 7
COMMUNITY FORUM
- Forum
- K2 Community Forum
- English K2 Community
- SOLVED WITH HACK - Using Extra Field Image for og:image
SOLVED WITH HACK - Using Extra Field Image for og:image
- popper
- Topic Author
- Offline
- New Member
Less
More
7 years 4 months ago - 7 years 4 months ago #163092
by popper
SOLVED WITH HACK - Using Extra Field Image for og:image was created by popper
In file www\components\com_k2\views\item\view.html.php I replaced
with
It's pulling the correct extra field but in the actual page is showing
instead of[/code]
I have triedbut this doesn't work
when I tryI get result
// Set Facebook meta data
if($params->get('facebookMetatags', '1'))
{
$document = JFactory::getDocument();
$uri = JURI::getInstance();
$document->setMetaData('og:url', $uri->toString());
$document->setMetaData('og:title', (K2_JVERSION == '15') ? htmlspecialchars($document->getTitle(), ENT_QUOTES, 'UTF-8') : $document->getTitle());
$document->setMetaData('og:type', 'article');
$facebookImage = 'image'.$params->get('facebookImage', 'Small');
if ($item->$facebookImage)
{
$basename = basename($item->$facebookImage);
if(strpos($basename, '?t=')!==false)
{
$tmpBasename = explode('?t=', $basename);
$basenameWithNoTimestamp = $tmpBasename[0];
}
else
{
$basenameWithNoTimestamp = $basename;
}
if (JFile::exists(JPATH_SITE.'/media/k2/items/cache/'.$basenameWithNoTimestamp))
{
$image = JURI::root().'media/k2/items/cache/'.$basename;
$document->setMetaData('og:image', $image);
$document->setMetaData('image', $image);
}
}
$document->setMetaData('og:description', strip_tags($document->getDescription()));
}
with
// Set Facebook meta data
if($params->get('facebookMetatags', '1'))
{
$document = JFactory::getDocument();
$uri = JURI::getInstance();
$document->setMetaData('og:url', $uri->toString());
if ($item->extra_fields[1]->value !== '')
{
$item->title = html_entity_decode($item->extra_fields[1]->value.' '.$item->title);
}
else
{
$item->title = html_entity_decode($item->title);
}
$item->title = $this->escape($item->title);
$document->setMetaData('og:title', $item->title);
$document->setMetaData('og:type', 'article');
$facebookImage = 'image'.$params->get('facebookImage', 'Small');
$altText = $item->extra_fields[0]->value;
$altText = str_replace("k2","k2-og",$altText);
$document->setMetaData('og:image', $altText);
$document->setMetaData('og:description', htmlspecialchars(strip_tags($document->getDescription()), ENT_QUOTES, 'UTF-8'));
}
It's pulling the correct extra field but in the actual page is showing
<meta property="og:title" content="Series and Chapters Title" />
<meta property="og:type" content="article" />
<meta property="og:image" content="<img src="/images/k2-og/faceApprPic.jpg" alt="Image" />" />
instead of
<meta property="og:image" content="< img src="/images/k2-og/faceApprPic.jpg" alt="Image" />" />
I have tried
$document->setMetaData('og:image', html_entity_decode($altText, ENT_QUOTES));
when I try
$document->setMetaData('og:image', htmlentities($altText));
<meta property="og:image" content="&lt;img src=&quot;/images/k2-og/faceApprPic.jpg&quot; alt=&quot;Image&quot; /&gt;" />
Last edit: 7 years 4 months ago by popper.
Please Log in or Create an account to join the conversation.
- Krikor Boghossian
- Offline
- Platinum Member
Less
More
- Posts: 15920
7 years 4 months ago #163102
by Krikor Boghossian
JoomlaWorks Support Team
---
Please search the forum before posting a new topic :)
Replied by Krikor Boghossian on topic Using Extra Field Image for og:image
This is considered a hack and I highly recommend against it.
A simple (template) solution would be based on this, just change the meta type -> github.com/kricore/Advanced-templating-with-K2/blob/master/_inc/cheatsheet.php#L176-L184
If you are using an image extrafield then this will be useful
getk2.org/documentation/tips-a-tricks/1129-extra-field-image-type-as-link
A simple (template) solution would be based on this, just change the meta type -> github.com/kricore/Advanced-templating-with-K2/blob/master/_inc/cheatsheet.php#L176-L184
If you are using an image extrafield then this will be useful
getk2.org/documentation/tips-a-tricks/1129-extra-field-image-type-as-link
JoomlaWorks Support Team
---
Please search the forum before posting a new topic :)
Please Log in or Create an account to join the conversation.
- popper
- Topic Author
- Offline
- New Member
Less
More
- Posts: 7
7 years 4 months ago #163133
by popper
Replied by popper on topic Using Extra Field Image for og:image
Yeah I know it's a hack, which is considered bad form, but I did figure out the problem, just by more hacking. So if anyone else wants to use this very ill advised solution here it is
// Set Facebook meta data
if($params->get('facebookMetatags', '1'))
{
$document = JFactory::getDocument();
$uri = JURI::getInstance();
$document->setMetaData('og:url', $uri->toString());
if ($item->extra_fields[1]->value !== '')
{
$item->title = html_entity_decode($item->extra_fields[1]->value.' '.$item->title);
}
else
{
$item->title = html_entity_decode($item->title);
}
$item->title = $this->escape($item->title);
$document->setMetaData('og:title', $item->title);
$document->setMetaData('og:type', 'article');
//$facebookImage = 'image'.$params->get('facebookImage', 'Small');
$altText = $item->extra_fields[0]->value;
$altText = str_replace("k2","k2-og",$altText);
$altText = str_replace('<img src=',"",$altText);
$altText = str_replace(" alt=","",$altText);
$altText = str_replace(" />","",$altText);
$altText = str_replace("Image","",$altText);
$altText = str_replace('"',"",$altText);
$image = $altText;
$document->setMetaData('og:image', 'http://mysite.net'.$image);
$document->setMetaData('image', $image);
$document->setMetaData('og:description', htmlspecialchars(strip_tags($document->getDescription()), ENT_QUOTES, 'UTF-8'));
}
Please Log in or Create an account to join the conversation.
- Krikor Boghossian
- Offline
- Platinum Member
Less
More
- Posts: 15920
7 years 3 months ago #163152
by Krikor Boghossian
JoomlaWorks Support Team
---
Please search the forum before posting a new topic :)
Replied by Krikor Boghossian on topic Using Extra Field Image for og:image
Actually this can be moved in the item.php file of your overrides without much hassle and with the exact functionality.
So before you update K2 next you might look into porting this in your template.
So before you update K2 next you might look into porting this in your template.
JoomlaWorks Support Team
---
Please search the forum before posting a new topic :)
Please Log in or Create an account to join the conversation.
- Forum
- K2 Community Forum
- English K2 Community
- SOLVED WITH HACK - Using Extra Field Image for og:image