Salve a tutti, avrei bisogno di qualcuno che capisce un po' di php per un piccolo aiuto.
Vorrei che nel mio template, nell'override category blog e in particolare in blog-item.php, al posto dell'intro image dell'articolo (che non ho settato) venisse cercata la prima immagine di ogni articolo.
Attualmente per visualizzare l'introimage nel mio template ho trovato questo codice:
<div class="image-intro">
<?php echo JLayoutHelper::render('joomla.content.intro_image', $this->item); ?>
<div>
Avendo installato phocaopengraph ho trovato anche una funzione che penso possa aiutare nel cercare l'immagine all'interno dell'articolo, ma non masticando il php è 2 ore che faccio prove ma non riesco ad adattare il codice per fare quello che voglio.. però vi posto il codice che potrebbe essere d'aiuto.
// Image
$pictures = '';
if (isset($row->images)) {
//$pictures = json_decode($row->images);
$pictures = (is_string($row->images) ? json_decode($row->images) : $row->images);
}
$imgSet = 0;
if ($this->params->get('image'.$suffix, '') != '' && $parameterImage == 1) {
$this->renderTag('og:image', $this->setImage($this->params->get('image'.$suffix, '')), $type);
$imgSet = 1;
} else if ($thisImg != ''){
$this->renderTag('og:image', $this->setImage($thisImg), $type);
$imgSet = 1;
} else if (isset($pictures->{'image_intro'}) && $pictures->{'image_intro'} != '') {
$this->renderTag('og:image', $this->setImage($pictures->{'image_intro'}), $type);
$imgSet = 1;
} else if (isset($pictures->{'image_fulltext'}) && $pictures->{'image_fulltext'} != '') {
$this->renderTag('og:image', $this->setImage($pictures->{'image_fulltext'}), $type);
$imgSet = 1;
} else {
// Try to find image in article
$fulltext = '';
if (isset($row->fulltext) && $row->fulltext != '') {
$fulltext = $row->fulltext;
}
$introtext = '';
if (isset($row->introtext) && $row->introtext != '') {
$introtext = $row->introtext;
}
$content = $introtext . $fulltext;
preg_match('/< *img[^>]*src *= *["\']?([^"\']*)/i', $content, $src);
if (isset($src[1]) && $src[1] != '') {
$this->renderTag('og:image', $this->setImage($src[1]), $type);
//$this->renderTag('og:image', JURI::base(false).$src[1], $type);
$imgSet = 1;
}
// Try to find image in images/phocaopengraph folder
if ($imgSet == 0) {
if (isset($row->id) && (int)$row->id > 0) {
jimport( 'joomla.filesystem.file' );
$imgPath = '';
$path = JPATH_ROOT . '/images/phocaopengraph/';
if (JFile::exists($path . '/' . (int)$row->id.'.jpg')) {
$imgPath = 'images/phocaopengraph/'.(int)$row->id.'.jpg';
} else if (JFile::exists($path . '/' . (int)$row->id.'.png')) {
$imgPath = 'images/phocaopengraph/'.(int)$row->id.'.png';
} else if (JFile::exists($path . '/' . (int)$row->id.'.gif')) {
$imgPath = 'images/phocaopengraph/'.(int)$row->id.'.gif';
}
if ($imgPath != '') {
$this->renderTag('og:image', $this->setImage($imgPath), $type);
$imgSet = 1;
}
}
}
}
// If still image not set and parameter Image is set as last, then try to add the parameter image
if ($imgSet == 0 && $this->params->get('image'.$suffix, '') != '' && $parameterImage == 0) {
$this->renderTag('og:image', $this->setImage($this->params->get('image'.$suffix, '')), $type);
}
// END IMAGE
Non dovrebbe essere una cosa difficilissima penso, ma purtroppo sono negato.
Mi servirebbe quindi di implementare nel mio override la funzione che cerca la prima immagine all'interno dell'articole come fa phocaopengraph.. e poi il codice da inserire al posto di
<div class="image-intro"> <?php echo JLayoutHelper::render('joomla.content.intro_image', $this->item); ?> <div>
.... altrimenti magari se è più facile si potrebbe richiamare direttamente l'immagine presa da opengraph ma non so se sia possibile,
grazie in anticipo