it-swarm-es.tech

Cómo obtener la imagen de introducción de un artículo de Joomla

Estoy tratando de personalizar la lista de categorías de mi sitio web. Así que tengo una opción de menú que muestra que la lista de todos los artículos es una determinada categoría. En esta lista, me gustaría mostrar también la imagen del artículo. Pero desafortunadamente no puedo encontrar la ruta de esta imagen de introducción de cada artículo para ponerla en la etiqueta ''.

Este código toma la primera imagen en el artículo. Que no es lo que quiero.

<?php
$text = $article->introtext;
if(preg_match('/<\s*img[^>]+>/Ui', $text, $matches)){

   $image=$matches[0];
   $text = str_replace($image,'',$text);
}
if ($matches) {
$image = str_replace('img src="','img width="150px" src="/demo/persianlondon/',$image);
$image = str_replace("caption","", $image);
echo '' . $image . '';
}
else {echo '<img width="150px" src="http://goo.gl/k47rNN" class="defaultArticleImage" />';}

?>

Así que necesito obtener la URL de la imagen de introducción y configurarla en $ image. ¿Alguna idea para hacerlo?

6
Danial

Ese código se ve en el texto del artículo que necesita en la llamada de imágenes. Está codificado en json, por lo que primero debe decodificarlo.

$images  = json_decode($this->item->images);

echo $images->image_intro;

Eche un vistazo a la plantilla com_content/article/default.php para ver algunas de las otras partes de datos que puede usar para las imágenes.

12
tristanbailey

Tuve el mismo problema en Twitter. Intenté agregar mi imagen de enlace al igual que Facebook lo hace automáticamente, pero tuve que investigar el Validador de la TARJETA aquí https://cards-dev.Twitter.com/validator ... De la forma en que lo tengo funcionando en Joomla 3.9.11 está agregando este código en el encabezado de mi plantilla default.php ... Pude agregar correctamente el título, la descripción y la imagen correcta, generalmente la primera en el artículo.

<head>

<?php 
//Added for Twitter
$option = JRequest::getCmd('option');
$view = JRequest::getCmd('view');
if ($option=="com_content" && $view=="article") {
    $ids = explode(':',JRequest::getString('id'));
    $article_id = $ids[0];
    $article =& JTable::getInstance("content");
    $article->load($article_id);
    $theArticle = $article->get("title");
    $theImages = $article->get("images");   
    $pictures = json_decode($theImages); // Split the parameters apart
    $timage= "http://yourdomain.com/".$pictures->{'image_intro'};
}
$doc =& JFactory::getDocument();
$doc->addCustomTag( '
<meta name="Twitter:title" content="'.mb_strimwidth(strip_tags($theArticle),0,225, " ...").'"=""/>
<meta name="Twitter:card" content="summary_large_image">
<meta name="Twitter:site" content="yoursite">
<meta name="Twitter:creator" content="yourcreator">
<meta name="Twitter:url" content="'.JURI::current().'">
<meta name="Twitter:description" content="'.mb_strimwidth(strip_tags($doc->getMetaData( 'description' )),0,225, " ...").'"=""/>
<meta name="Twitter:image" content="'.$timage.'">
');
?>
    <jdoc:include type="head" />
    <?php $this->loadBlock('head') ?>

</head>
2
Luis H Cabrejo

Lo anterior funciona para mí en la vista de blog de categoría, puede ser diferente en la vista de lista de categoría. No olvides agregar las etiquetas php obviamente. Siempre puede usar <?php // print_r($images); ?> para imprimir todas las opciones disponibles que podrían darle una pista. O potencialmente esto <?php // print_r($this->item); ?>

Lo hice de esta manera.

<?php
$images         = json_decode($this->item->images); 
$introImage   = $images->image_intro;
?>

...src="<?php echo $introImage ; ?>"....
0
Eoin