THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline


A partir d'une boucle tag comment afficher une liste de quelques produits fonction du 1er tag trouvé

roadster31 wrote:

Je le répète une nouvelle fois, pour afficher tous les tags du produit qui a l'ID 1234, on va utiliser :

{loop type="tags" name="tags-list" source="product" source_id=1234 order="alpha"}
    {$TAG}<br>
{/loop}

C'est aussi simple que ça.

Offline


Il te faut imbriquer une boucle produit dans cette boucle et lui passer en paramètre le premier tag trouvé.  Quelque chose comme je suppose :

{loop type="tags" name="tags-list" source="product" source_id=1234 order="alpha" limit=1}
    {loop type="product" name="my-specific-product" tag="{$TAG}"}
        ...
    {/loop}
{/loop}

Offline


Je veux bien imbriquer, mais quelque soit le motif que je lui applique, il me remonte toujours le 1er tag qui a tagué le 1er produit et ce pour tous les produits,
Il affiche le tag Affiche (exemple)
1) même si celui a un tag différent du 1er produit
par exemple Tag Affiche 1er produit
                     Tag Poster, Affiche 2nd produit
2) même si celui n'a pas de tags

Last edited by stephst84 (26-06-2019 14:18:49)

Offline


Dans ta boucle tag tu précises le source_id=1234. Tu remonte donc le premier tag du produit dont l'ID est 1234. Il faudrait supprimer ce paramètre pour liste l'ensemble des tags indépendamment d'un produit.

Offline


je viens de trouver le début de mon erreur il prend le titre du pse, donc je modifie en fonction pour obtenir l'affichage désiré

{loop type="tags" name="tags-list" source="product" limit="1" tag_match_mode="exact"}
<section id="tags-{$TITLE}">

    <div class="products-content">

ce qu'il me sort

<section id="tags-Poster Egypte">
    <div class="products-content">
		<div class="products-heading">
            <div class="short-description" itemprop="description"><h3>tag Affiche</h3></div>
        </div>

Offline


D'où vient ta variable {$TITLE} ?
Si tu cherches à afficher le nom de ton tag il faut utiliser {$TAG}. Cette variable retourne le nom utilisé en back office. Sur un projet récent j'ai défini les tag suivant : promo, selection, bon-plan (orthographe compatible avec une utilisation dans une feuille de style CSS).
Si par exemple tu as des tags du type : "Valeur sûre", pour pouvoir obtenir le résultat suivant :

<section id="tags-valeur-sure">

à partir de ce code

<section id="tags-{$TAG}">

il te faudra utiliser les fonctions Smarty permettant d'obtenir le résultat voulu ou développer un plugin Smarty.

Offline


Elle vient du name product, mais elle m'a permis de détecter l'erreur

Nog wrote:

D'où vient ta variable {$TITLE} ?

Offline


donc avec ceci, on remonte les tags des produits,
il me reste à filtrer le 1er tag rencontré pour afficher les produits concernés par ce premier et non pas comme actuellement il affiche tous les produits pour le 1er tag, 3 produits pour le 2ème ainsi de suite

Et aussi répétition du 1er tag et les produits associés qui vont bien

Tag Affiche 2 produits
Tag Reproduction 3 produits

<div class="block_content">
{loop type="tags" name="tags-list-product" tag=$PRODUCT_ID order='alpha'}
	<section id="tags-{$TAG}">					
	{loop name="info-tags-list-product" type="product" tag=$TAG limit="1"}	
		<div class="products-content">
	
		<div class="products-heading">
                    <div class="short-description" itemprop="description">thème {$TAG}</div>
              </div>

		{loop type="tags" name="info-products-tags-list" limit="1"}
			<ul class="list-unstyled products-grid row">
			{loop type="product" name="product-list" current="no" tag=$TAG limit="4"}
			<li class="item col-md-3 col-sm-5">
            
				<article itemscope itemtype="http://schema.org/Product">
					<a href="{$URL}" itemprop="url" tabindex="-1" class="product-image">
                        {ifloop rel="image_product_theme" }
                        <img itemprop="image" class="img-responsive center-block"
                        {loop name="image_product_theme" type="image" limit="1" product="{$ID}" force_return="true" width="800" height="800"}
                        src="{$IMAGE_URL}"
                        {/loop}
                        alt="Product #{$LOOP_COUNT}" >
                        {/ifloop}
                        {elseloop rel="image_product_theme"}
                        <img itemprop="image" class="img-responsive center-block" src="{image file='assets/dist/img/280x196.png'}" alt="Product #{$LOOP_COUNT}">
                        {/elseloop}
                    </a>
					<div class="product-tile-details">
						<a href="{$URL}" class="product-info">
							<!--<h3 class="name"><span itemprop="name">{$TITLE}</span></h3>-->
							<div class="product-name">
								<h2 class="name"><span itemprop="name">{$TITLE}</span></h2>
							</div>
							<!-- <div class="short-description" itemprop="description">{$CHAPO nofilter}</div> -->

							<div class="product-price">
								<div class="price-container" itemprop="offers" itemscope itemtype="http://schema.org/Offer">
									{loop type="category" name="category_tag" id=$DEFAULT_CATEGORY}
									<meta itemprop="category" content="{$TITLE}">
									{/loop}
									<meta itemprop="itemCondition" itemscope itemtype="http://schema.org/NewCondition">
									<meta itemprop="priceCurrency" content="{currency attr="code"}">
									<link itemprop="availability" href="http://schema.org/InStock" content="in_stock" />
									<span class="regular-price"><span itemprop="price" class="price">{format_money number=$BEST_TAXED_PRICE}</span></span>
								</div>
							</div>
						</a>
					</div>
                </article><!-- /product -->
  
			{/loop}

        </ul>
		
		{/loop}
		</div>
	{/loop}

	</section><!-- /products-theme -->
{/loop}
</div>

Last edited by stephst84 (27-06-2019 14:41:41)