Composer des URL dans une boucle
Bonjour
je poste ici plutôt que dans les cms car en fait je pense que faire la boucle n'est pas spécifique au framework joomla, sauf que j'y ai passé des heures sans succès. je ne sais plus quoi faire
J'ai le bon rendu HTML.affichage des 2 éléments avec les 2 noms
Kamea Meah, réalisation
Météore
ce qui ne va pas :
a/ J'ai exactement la même URL dans les deux cas Le 1er est bon, le 2ème est faux avec le mauvais identifiant. Il doit me manquer une boucle que je ne peux pas faire depuis plus d'une semaine :-(
./index.php?option=com_content&view=article&id=129&catid=16&Itemid=159&lang=en ./index.php?option=com_content&view=article&id= 129 &catid=16&Itemid=159&lang=en
b) l'url que je vois dans la page n'est pas SEF contrairement aux autres urls alors que j'ai mis le bon paramètre de routage joomla 4.3.1 J'aurais dû éditeur-media/editions1 éditeur-media/editions2
Mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <?php if (!empty($this->item->jcfields[111]->value)): ; ?>
<br /><b><span><i class="fa fa-link fa-1x" aria-hidden="true"></i></span> Pros des films :</b>
<?php
$field_value = json_decode($this->item->jcfields[111]->rawvalue);
$article_id = $field_value->row0->field110;
$app = Factory::getApplication();
$factory = $app->bootComponent('com_content')->getMVCFactory();
$table = $factory->createTable('Article', 'Table');
$table->load($article_id);
$item_catid = $table->catid;
$lang="fr";
$item_id="159";
echo HTMLHelper::link(
Route::_('/index.php?option=com_content&view=article&id=' . $article_id .'&catid='.$item_catid .'&Itemid='.$item_id .'&lang=' .$lang ),
$this->item->jcfields[111]->value
);
?>
<!--<a href="/index.php?option=com_content&view=article&id=<?php echo $article_id;?>&catid=<?php echo $item_catid;?>&Itemid=<?php echo $item_id;?>&lang=fr"><?php echo $this->item->jcfields[113]->value; ?></a>-->
<?php endif; ?> |
Déboguer:
Code:
echo '<pre>', print_r($field_value), '</pre>';
=>
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| stdClass Object
(
[row0] => stdClass Object
(
[field110] => 119
[field112] => Array
(
[0] => film_rea
)
)
[row1] => stdClass Object
(
[field110] => 122
)
)
1 |
Ajout echo à HTMLHelper::link()
Attention, il y avait un ";" qui trainait juste après le if()
Citation:
Oui j'attends bien...
Dans ce cas :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <?php if (!empty($this->item->jcfields[111]->value)): ?>
<br /><b><span><i class="fa fa-link fa-1x" aria-hidden="true"></i></span> Pros des films :</b>
<?php
$field_value = json_decode($this->item->jcfields[111]->rawvalue);
$app = Factory::getApplication();
$factory = $app->bootComponent('com_content')->getMVCFactory();
$lang="fr";
$item_id="159";
?>
<?php foreach ($field_value as $value): /* ça se joue ici */ ?>
<?php
// ça se joue ici
$article_id = $value->field110; // vaudra 119 puis 112
$table = $factory->createTable('Article', 'Table'); // Bizarre dans une boucle ça non ?
$table->load($article_id);
$item_catid = $table->catid;
echo HTMLHelper::link(
Route::_("/index.php?option=com_content&view=article&id={$article_id}&catid={$item_catid}&Itemid={$item_id}&lang={$lang}"),
$this->item->jcfields[111]->value
);
?>
<?php endforeach ?>
<?php endif ?> |
Le principe de parcours du JSON y est, mais attention, je ne comprends pas ton code et ce que tu fais avec $table, il faudra sans doute adapter :mrgreen: