Back to top

Autore Topic: Impostare la prima immagine dell'articolo come introimage  (Letto 705 volte)

Offline massikk

  • Esploratore
  • **
  • Post: 88
    • Mostra profilo
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:
Codice: [Seleziona]
    <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.
Codice: [Seleziona]
     // 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
Codice: [Seleziona]
    <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
« Ultima modifica: 28 Nov 2019, 16:50:45 da massikk »

Offline massikk

  • Esploratore
  • **
  • Post: 88
    • Mostra profilo
Re:Impostare la prima immagine dell'articolo come introimage
« Risposta #1 il: 29 Nov 2019, 23:09:40 »
Ci sono riuscito!!!
Codice: [Seleziona]
<?php 
   $texthtml
=$this->item->text
   
preg_match('/<img.+src=[\'"](?P<src>.+?)[\'"].*>/i'$texthtml$image);
    
$imgkk=$image['src'];
    echo 
'<img src="' $imgkk' ">'
   
?>

 



Web Design Bolzano Kreatif