ti-enxame.com

Como obter a imagem de introdução de um artigo do joomla

Estou tentando personalizar a lista de categorias do meu site. Então, eu tenho uma opção de menu que mostra que a lista de todos os artigos é uma determinada categoria. Nesta lista, eu também gostaria de mostrar a imagem do artigo. Mas, infelizmente, não consigo encontrar o caminho desta imagem de introdução de cada artigo para colocá-lo na tag ''.

Este código obtém a primeira imagem no artigo. O que não é o que eu quero.

<?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" />';}

?>

Então, preciso obter o URL da imagem de introdução e defini-lo como $ image. Alguma idéia para fazer isso?

6
Danial

Esse código está procurando no texto do artigo que você precisa está na chamada de imagens. Ele é codificado por json, então você deve decodificá-lo primeiro.

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

echo $images->image_intro;

Dê uma olhada no modelo com_content/article/default.php para ver algumas das outras partes dos dados que você pode usar para imagens.

12
tristanbailey

Eu tive o mesmo problema no Twitter. Eu estava tentando adicionar minha foto do link da mesma forma que o Facebook faz automaticamente, mas tive que investigar o CARD Validator aqui https://cards-dev.Twitter.com/validator ... Da maneira como eu a trabalho no Joomla 3.9.11 está adicionando este código no cabeçalho do meu template default.php ... Consegui adicionar corretamente o título, a descrição e a imagem correta, geralmente a primeira no artigo.

<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

O exemplo acima funciona para mim na exibição de blog por categoria; pode ser diferente na exibição de lista de categorias. Não se esqueça de adicionar as tags php obviamente. Você sempre pode usar <?php // print_r($images); ?> para imprimir todas as opções disponíveis que podem lhe dar uma pista. Ou potencialmente essa <?php // print_r($this->item); ?>

Eu fiz assim.

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

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