Jump to content

Besoin d'aide pour la création d'un second onglet accessoire


Recommended Posts

Bonjour,

 

Voilà quelques jours je postais afin d'obtenir de l'aide pour créer un onglet supplémentaire, jusque la aucun soucis puisque dans le principe c'est très simple.

 

Or mon problème actuel est de pouvoir afficher le contenu voulu dans cet onglet.

 

Le principe étant d'avoir le même affichage que l'onglet accessoire mais avec les données d'une autre table (même nombre de champs et même type).

 

J'ai donc créé un module, je l'ai attaché à un hook (qui était déjà présent, car je n'ai pas été capable de faire le miens ... et pourtant j'en ai lu des documentations ... je dois pas être bon, vraiment ^^)

et j'ai indiqué qu'il fallait afficher le .tpl de mon module dans le hook.

 

Il me reste donc à adapter le code suivant afin d'obtenir ma liste d'article ainsi que leur lien, etc

{if isset($accessories) AND $accessories}
 <!-- accessories -->
 <ul id="idTab4" class="bullet">
  <div class="block products_block accessories_block clearfix">
   <div class="block_content">
 <ul>
 {foreach from=$accessories item=accessory name=accessories_list}
  {assign var='accessoryLink' value=$link->getProductLink($accessory.id_product, $accessory.link_rewrite, $accessory.category)}
  <li class="ajax_block_product {if $smarty.foreach.accessories_list.first}first_item{elseif $smarty.foreach.accessories_list.last}last_item{else}item{/if} product_accessories_description">
   <h5><a href="{$accessoryLink|escape:'htmlall':'UTF-8'}">{$accessory.name|truncate:22:'...':true|escape:'htmlall':'UTF-8'}</a></h5>
   <div class="product_desc">
    <a href="{$accessoryLink|escape:'htmlall':'UTF-8'}" title="{$accessory.legend|escape:'htmlall':'UTF-8'}" class="product_image"><img src="{$link->getImageLink($accessory.link_rewrite, $accessory.id_image, 'medium')}" alt="{$accessory.legend|escape:'htmlall':'UTF-8'}" width="{$mediumSize.width}" height="{$mediumSize.height}" /></a>
    <a href="{$accessoryLink|escape:'htmlall':'UTF-8'}" title="{l s='More'}" class="product_description">{$accessory.description_short|strip_tags|truncate:70:'...'}</a>
   </div>
   <p class="product_accessories_price">
    {if $accessory.show_price AND !isset($restricted_country_mode) AND !$PS_CATALOG_MODE}<span class="price">{if $priceDisplay != 1}{displayWtPrice p=$accessory.price}{else}{displayWtPrice p=$accessory.price_tax_exc}{/if}</span>{/if}
    <a class="button" href="{$accessoryLink|escape:'htmlall':'UTF-8'}" title="{l s='View'}">{l s='View'}</a>
    {if $accessory.available_for_order AND !isset($restricted_country_mode) AND !$PS_CATALOG_MODE}<a class="exclusive button ajax_add_to_cart_button" href="{$link->getPageLink('cart.php')}?qty=1&id_product={$accessory.id_product|intval}&token={$static_token}&add" rel="ajax_id_product_{$accessory.id_product|intval}" title="{l s='Add to cart'}">{l s='Add to cart'}</a>{/if}
   </p>
  </li>
 {/foreach}
 </ul>
   </div>
  </div>
 </ul>
{/if}

 

Mais la cela devient chose impossible pour moi, je ne trouve pas ou la variable $accessories est créée et c'est cela qui me bloque pour l'instant.

 

Est-ce que quelqu'un pourrait m'éguiller ?

 

Merci

Link to comment
Share on other sites

Bonjour,

Pas besoin de créer de nouveaux hooks si vous voulez créer un nouvel onglet. hook_tab et hook_tab_content sont là pour ça...

La variable $accessories est très certainement générées dans ./classes/Product.php. Si vous voulez modifier ce fichier proprement, pensez à utiliser l'override.

Link to comment
Share on other sites

Bonjour Hedrad,

Tout d'abord merci pour ton aide.

Effectivement j'ai vite abandonné la création d'un nouveau hook dès le moment ou j'ai vu qu'un autre était présent.

A propos de l'override, je ne connaissais pas, mais c'est effectivement la façon la plus simple d'ajouter des classes à products.php.

 

Pour ma part j'étais parti sur un module, je pense que le principe ressemble à celui de l'override mais en ... moins propre.

 

C'est mon premier site et je suis relativement débutant dans la programmation web, je risque donc de vous faire peur lorsque vous verrez certains de mes codes :rolleyes:

 

J'ai un peu avancé depuis mon dernier poste, seulement mon principal problème est maintenant de trouver comment afficher mes résultats de requêtes effectuées dans mon module.

 

Voici le code dans mon module :

public function hookproductTabContent($params)
    {
	    global $smarty;
	    $product = $smarty->get_template_vars('product');
	    $id_produit = Db::getInstance()->getValue('SELECT `id_product`
												    FROM `'._DB_PREFIX_.'product`
												    WHERE `reference` = '. $product->reference);
	    $result = Db::getInstance()->Execute("SELECT `id_product`, `reference`
												    FROM  `"._DB_PREFIX_."product`, `"._DB_PREFIX_."product_lang`
												    WHERE `"._DB_PREFIX_."product`.`id_product` = `"._DB_PREFIX_."product_lang`.`id_product`
												    AND `id_lang` = '1'
												    AND `"._DB_PREFIX_."product`.`id_product` = (SELECT `id_product_2` FROM `"._DB_PREFIX_."munition` WHERE `id_product_1` = ".$id_produit.")");
	    $munitions = mysql_fetch_array($result);
	    $smarty->assign('munitions', $munitions);
	    return $this->display(__FILE__, 'blockMunition.tpl');
    }

 

Et j'essaye d'afficher une simple information de ce tableau d'information de cette manière :

{$munitions.reference}

 

Mais rien ... :(

 

Donc je suppose que vous allez rire un bon coup et me dire que je suis un benêt (j'en suis un :lol: ) mais au moins je saurai ou je fais faux :) .

Link to comment
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...