Jump to content
romelik

[Résolu] Cacher certaines caractéristiques de la fiche technique dans le FO

Recommended Posts

Bonjour

Je voudrais pouvoir cacher certaines caractéristiques sur la fiche technique du produit ... je penses que cela doit être possible en bidouillant le product.tpl ... mais je n'ai pas trouver qui fonctionne parmi tout ce que j'ai pû lire ...Quelqu'un aurai-t-il une idée ??? Voici je penses la partie que je dois modifier:

{if isset($features) && $features}
			<!-- Data sheet -->
			<section class="page-product-box">
				<h3 class="page-product-heading">{l s='Data sheet'}</h3>
				<table class="table-data-sheet">
					{foreach from=$features item=feature}
					<tr class="{cycle values="odd,even"}">
						{if isset($feature.value)}
						<td>{$feature.name|escape:'html':'UTF-8'}</td>
						<td>{$feature.value|escape:'html':'UTF-8'}</td>
						{/if}

J'ai déjà tenter de voir si je ne pouvais afficher qu'une seule caractéristique avec ce tuto et en replacant le "{if isset($features) && $features}" du code ci dessus par

{if isset($features_by_key.3.value) && $features_by_key.3.value}
{$features_by_key.3.name} : {$features_by_key.3.value}

mais cela ne semble pas fonctionner même après le vidage du cache smarty...

Je suis sous prestashop 1.6.0.9 donc merci à vous si vous avez une piste.

Edited by romelik (see edit history)

Share this post


Link to post
Share on other sites

Bonjour,

 

Il vous suffit de rajouter une exception dans le "{foreach}" pour la valeur que vous ne voulez pas voir apparaitre.

 

exemple avec une exception sur l'identifiant de la caractéristique ("$feature.id_feature") :

{foreach from=$features item=feature}
{if $feature.id_feature == 3}
	<tr class="{cycle values="odd,even"}">
	{if isset($feature.value)}			    
		<td>{$feature.name|escape:'html':'UTF-8'}</td>
		<td>{$feature.value|escape:'html':'UTF-8'}</td>
	{/if}
        </tr>
{/if}
{/foreach}

Share this post


Link to post
Share on other sites

Dommage ... tellement simple ...j'y croyais vraiment ... mais malheureusement cela ne fonctionne pas . Ma page produit ne s'affiche avec cet ajout de code .

Voici ce que j'ai fait :

{if isset($features) && $features}
					<!-- Data sheet -->
			<section class="page-product-box">
				<h3 class="page-product-heading">{l s='Data sheet'}</h3>
				<table class="table-data-sheet">
					{foreach from=$features item=feature}
					{if $feature.id_feature ==66} 					
						<tr class="{cycle values="odd,even"}">
						{if isset($feature.value)}
						<td>{$feature.name|escape:'html':'UTF-8'}</td>
						<td>{$feature.value|escape:'html':'UTF-8'}</td>
						{/if}
					</tr>
					{/foreach}
				</table>
			</section>
			<!--end Data sheet -->
		{/if}

J'ai donc juste intercallé : {if $feature.id_feature ==66} dans le product.tpl faut-il faire de même ailleurs??

66 correspondant à ID de ma catégories d'ailleurs est-il normal que les 2 caractéristiques que j'ai pour le moment soit respectivement 65 et 66 ... Le fait  d'il soit numéroté si loin dans la suite numérique est-il dû au fait que je n'ai pas arrêté d'importer et de supprimer mes articles ???

En tout cas merci à vous pour votre réponse ... mais dommage que celle-ci ne fonctionne pas ... chez moi tout du moins.

Cependant je me pose une question par rapport à votre proposition cette variable $feature.id_feature n'est déclarée nulle part dans le product.tpl il y $feature.name et $feature.value, n'est-ce pas là que pourrai se trouver le souci???

Share this post


Link to post
Share on other sites

Il vous manque la balise de fermeture "{/if}" avant la celle du {/foreach}.

Si vous souhaitez faire apparaitre tout sauf l'id 66 il va falloir mettre {if $feature.id_feature != 66}.........{/if}

Share this post


Link to post
Share on other sites

Bien vu !!!! un super merci cela fonctionne!!!

J'ose une dernière petite demande j'ai tenté de cacher  2 caractéristiques donc j'ai simplement remis un 2eme "{if $feature.id_feature ==66}" pour cacher la caractéristique 66 mais cela ne fonctionne pas ... page blanche à nouveau ... connaîtriez-vous l'astuce pour pouvoir en cacher 2, 3 ...

{if isset($features) && $features}
					<!-- Data sheet -->
			<section class="page-product-box">
				<h3 class="page-product-heading">{l s='Data sheet'}</h3>
				<table class="table-data-sheet">
					{foreach from=$features item=feature}
					{if $feature.id_feature ==65} 
                                        {if $feature.id_feature ==66}				
						<tr class="{cycle values="odd,even"}">
						{if isset($feature.value)}
						<td>{$feature.name|escape:'html':'UTF-8'}</td>
						<td>{$feature.value|escape:'html':'UTF-8'}</td>
						{/if}
					</tr>
					{/if}
					{/foreach}
				</table>
			</section>
			<!--end Data sheet -->
		{/if}

Share this post


Link to post
Share on other sites

OK je me réponds je viens de trouver : si cela peut aider ...

{if $feature.id_feature ==65 & $feature.id_feature ==66}

cache les caractéristique 65 et 66!!

Encore un grand merci à vous !!! Je vais pouvoir avancer dans ma boutique grâce à vous.

Bonne fin de journée!!

Share this post


Link to post
Share on other sites

Permettez-moi de remettre en question la solution.

 

Je crois que votre code cache toutesl es feature, pas seulement les IDs 65 et 66. Votre code dit, rapidement :

 

Si le ID de la feature EST ÉGALE à 65 et à 66, affiche le contenu.

 

Le bon code serait

{if $feature.id_feature != 65 && $feature.id_feature != 66}

Ici on précise :

Si le ID est différent de 65 et 66, affiche la caractéristique.

 

Vérifié si vos autre caractéristiques apparaissent, avec le code {if $feature.id_feature ==65 & $feature.id_feature ==66}, j'en doute...

 

Martin

  • Like 1

Share this post


Link to post
Share on other sites

Bon j'ai crié victoire trop vite pour cacher 2 caractéristique cela ne fonctionne pas ... ça les caches toutes ... donc je suis toujours preneur d'une autre piste... Merci

  • Like 1

Share this post


Link to post
Share on other sites

Vous avez tout à fait raison Martin ... on a écrit en même temps la même constatation ... vous n'auriez pas une piste par hasard ???

Share this post


Link to post
Share on other sites

Le code que j'ai écris dans mon entré devrait fonctionner. Lisez-la au complet...

{if $feature.id_feature != 65 && $feature.id_feature != 66}

Share this post


Link to post
Share on other sites

Pardon j'ai lu trop rapidement votre poste  je viens de voir que vous me proposiez quelque chose...

Share this post


Link to post
Share on other sites

De un, l'éperluette (&) devait être en double pour bien fonctionner, de deux, vous devez vérifier que vos IDs sont DIFFÉRENTS (!=) et non ÉGALES (==) pour afficher. Ces deux points étaient incohérent lors de votre implémentation.

Share this post


Link to post
Share on other sites

Bon et bien je remercie grandement Julien et Martin pour leur précieuse aide ... c'est vraiment tiptop ...Exactement ce que je cherchais à faire depuis quelques temps ...

Encore un grand merci à vous 2!!!

Bonne fin de journée ...

Share this post


Link to post
Share on other sites

Bon ben désolé je n'arrive pas à le mettre en résolu /// J'ai cliquez sur Mark Solved  mais je vois pas de changement ... j'ai édité mon premier post mais je n'ai pas accès au titre ...donc je ne sais pas trop ...

Ca y est j'y suis parvenu!!!

Edited by romelik (see edit history)

Share this post


Link to post
Share on other sites

Bonjour. Une petite quesiton, je suis sous PS 1.6, la solution fonctionne parfaitement merci à tous. Cependant, si il n'y a qu'une caractérisque et que c'est justement elle que l'on souhaite cacher, l'onglet "Fiche technique" reste présent. Y'a t'il une possibilité de le cacher dans ce cas ?

Share this post


Link to post
Share on other sites

Bonjour

Une petite règle CSS display:none  bien placée dans le product.tpl devrait je penses faire l'affaire:

Dans la section ----Data Sheet ---

Modifier:

<section class="page-product-box" style="margin-bottom: inherit">

 

Par

 

<section class="page-product-box" style="margin-bottom: inherit; display:none">

Share this post


Link to post
Share on other sites

Bonjour,

cette fonctionnalité marche très bien pour moi. Seulement je voudrais que cette caractéristique soit affichée si les personnes sont connectées sur leur compte client.

Quelqu'un aurait il une idée ? Avec un If logged j'imagine mais je ne sais pas comment le faire.

Merci de votre aide !

Share this post


Link to post
Share on other sites

Bonjour,

je voudrais cacher 3 caractéristique, j'ai donc testé avec:

{foreach from=$features item=feature}
						{if $feature.id_feature != 33 && $feature.id_feature != 34 && $feature.id_feature != 35}
						<tr class="{cycle values="odd,even"}">
							{if isset($feature.value)}              
							<td>{$feature.name|escape:'html':'UTF-8'}:</td>
							<td>{$feature.value|escape:'html':'UTF-8'}</td>
							{/if}
						</tr>
{/if}
						{/foreach}

mais elle apparaissent toujours.

presta 1.6.1

Une piste?

merci

Share this post


Link to post
Share on other sites

Bonjour

Peut être vider le cache de prestashop et le cache du navigateur... ou en navigation privée...

Share this post


Link to post
Share on other sites

je ne connais pas ton niveau donc peut être que mes questions ne vont pas te paraître opportune... mais tu es sûr d'être dans le bon fichier... le product.tpl de ton thème si tu n'utilise pas le thème de prestashop

Share this post


Link to post
Share on other sites

Dans paramètres avancées ->performance-> tu as bien coché " Recompiler les fichiers de templates s'ils ont été mis à jour"

Edited by romelik (see edit history)

Share this post


Link to post
Share on other sites

J'ai trouvé, je suis passé par le nom de la caractéristique au lieu de l'id. Ca fonctionne.

Merci

Share this post


Link to post
Share on other sites

Pour les personnes sous PS 1.7, j'ai fais la manip avec quel fichier qui ne sont pas les même. voilà ce que j'ai fais (est qui fonctionne !)

 

·       Chercher le fichier suivant :  /……/themes/VOTRETHEME/templates/catalog/_partials/ product-details.tpl

·       Aller ligne 53 chercher : {block name='product_features'}

·       Rajouter :  {if $feature.id_feature != 13} (si c’est l’ID 13 que vous voulez masquer) en ligne 59

·       Rajouter : {/if} en ligne 52

{block name='product_features'}
    {if $product.grouped_features}
      <section class="product-features">
        <p class="h6">{l s='Data sheet' d='Shop.Theme.Catalog'}</p>
        <dl class="data-sheet">
          {foreach from=$product.grouped_features item=feature}
          {if $feature.id_feature != 13}
            <dt class="name">{$feature.name}</dt>
            <dd class="value">{$feature.value|escape:'htmlall'|nl2br nofilter}</dd>
        	{/if}
          {/foreach}
        </dl>
      </section>
    {/if}
  {/block}

Voilà, marche a merveille chez moi. (avec PS 1.7.6.2)

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More