Texte de bouton personnalisé selon produit

  • Posts: 23
  • Thank you received: 0
7 years 6 months ago #251989

-- url of the page with the problem -- : conscience-appliquee.com (localhost)
-- HikaShop version -- : 2.6.4 Business
-- Joomla version -- : 3.6.2
-- PHP version -- : 5.6.10
-- Browser(s) name and version -- : Safari 9.0.2 (11601.3.9)

Bonjour,

Pouvez-vous me dire s'il y a une manière simple de personnaliser le texte du bouton "Ajouter au panier" de manière différente selon les produits ?

Je m'explique :
- J'ai des produits physiques et immatériels -> je n'ai pas besoin de changer le texte standard.
- J'ai des services événements où le texte devrait être : "Je m'inscris"

Merci pour vos éclairages,
David

Please Log in or Create an account to join the conversation.

  • Posts: 2607
  • Thank you received: 65
7 years 6 months ago #252020

un champ perso product_genre avec deux valeur physique = 1 immatériel = 0
ou alors tu récupère ton product_type
je sais pas comment est ton bouton , mais si tu veux changer le texte et/ou le style

echo '<button  class="'.panier-' . $product->product_genre.'" name="panier ">'.JText::_('HK_BTN_PANIER_' . $product->product_genre).'</button>' ;

et dans tes textes de substituton
HK_BTN_PANIER_0="La main au panier"
HK_BTN_PANIER_1="Achetez de suite"

Last edit: 7 years 6 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 23
  • Thank you received: 0
7 years 6 months ago #252047

Je ne vois pas comment adapter cela avec ton code.
Voici la partie du view listing_img_pane qui devrait être personnalisée :

<!-- ADD TO CART BUTTON AREA -->
			<?php
			if($this->params->get('add_to_cart') || $this->params->get('add_to_wishlist')){
				$this->setLayout('add_to_cart_listing');
				echo $this->loadTemplate();
			}?>
			<!-- EO ADD TO CART BUTTON AREA -->

Je sais que tu m'avais déjà évoqué les méthodes setLayout et loadTemplate mais je ne vois pas du tout comment les exploiter et à quoi renvoie concrètement l'argument : add_to_cart_listing dans setLayout(). Je suppose que c'est à ce niveau-là que je devrais pouvoir changer le texte du bouton Add to Cart.

Please Log in or Create an account to join the conversation.

  • Posts: 2607
  • Thank you received: 65
7 years 6 months ago #252048

add_to_cart_listing.php c'est une vue parmi d'autre , si tu veux la modifier tu mets celle du component dans ta view product
j'ignore de quoi a l'air ton bouton d'ajout au panier , regarde ton code et dans quelle vue il est

le texte Ajouter au panier et ADD_TO_CART il te suffit de creer de te servir de ce texte et tourner autour

ADD_TO_CART="Ajouter au panier
ADD_TO_CART_0="Ajout produit virtuel"

il te faut juste une valeur pour changer ca

Last edit: 7 years 6 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 23
  • Thank you received: 0
7 years 6 months ago #252051

Merci Eric pour ta réponse. Je sèche néanmoins.

Dans le post précédent, j'avais placé le code affichant le bouton présent dans la vue listing_img_pane.

Je ne vois nulle part où modifier ou ajouter du code pour adapter ADD_TO_CART.

J'ai créé deux items dans le fichier langue :
- ADD_TO_CART="Ajouter au panier"
- ADD_TO_CART_EVENT="Je m'inscris"

Quand je fais une recherche dans le code, à part retrouver un JText dans la classe view.html.php, je ne vois rien d'autre.
Je pensais au départ que ce serait un élément simple et au final, cela semble plus ardu que je ne l'imaginais.

Si tu pouvais m'expliquer un step-by-step la démarche sur base du code présent dans mon post précédent, cela m'aiderait vraiment.

Merci !

Please Log in or Create an account to join the conversation.

  • Posts: 2607
  • Thank you received: 65
7 years 6 months ago #252053

quel est tout le code (html et php) de ton bouton dans listing_img_pane , celui qui affiche ajouter au panier ?
et comment tu differencies tes produits virtuels et reels ? par product_type ou un champ perso ?

Last edit: 7 years 6 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 23
  • Thank you received: 0
7 years 6 months ago #252055

Un champ personnalisé radio nommé event_yes_no défini si le produit est un produit (physique ou virtuel) ou bien un événement. Valeur yes = 1, no = 0

Voici le code complet :

<?php
/**
 * @package	HikaShop for Joomla!
 * @version	2.6.4
 * @author	hikashop.com
 * @copyright	(C) 2010-2016 HIKARI SOFTWARE. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php
$height=$this->image->main_thumbnail_y;
$width=$this->image->main_thumbnail_x;
$mainDivName = $this->params->get('main_div_name','');
$link = hikashop_contentLink('product&task=show&cid='.$this->row->product_id.'&name='.$this->row->alias.$this->itemid.$this->category_pathway,$this);
$htmlLink="";
$cursor="";
if($this->params->get('link_to_product_page',1)){
	$htmlLink='onclick = "window.location.href = \''.$link.'\'"';
	$cursor="cursor:pointer;";
}
$paneHeight='';
if($this->params->get('pane_height','') != '')
	$paneHeight='height:'.$this->params->get('pane_height').'px;';

if(!empty($this->row->extraData->top)) { echo implode("\r\n",$this->row->extraData->top); }
?>
<div class="hk_img_pane_window" id="div_<?php echo $mainDivName.'_'.$this->row->product_id; ?>" <?php echo $htmlLink; ?> >
 	<div class="hk_img_pane_product">
		<!-- PRODUCT IMG -->
		<div class="hikashop_product_image"> 
			<div class="hikashop_product_image_subdiv">
			<?php if($this->params->get('link_to_product_page',1)){ ?>
				<a href="<?php echo $link;?>" title="<?php echo $this->escape($this->row->product_name); ?>">
			<?php }
			$image_options = array('default' => true,'forcesize'=>$this->config->get('image_force_size',true),'scale'=>$this->config->get('image_scale_mode','inside'));
			$img = $this->image->getThumbnail(@$this->row->file_path, array('width' => $this->image->main_thumbnail_x, 'height' => $this->image->main_thumbnail_y), $image_options);
			if($img->success) {
				/**echo '<img class="hikashop_product_listing_image" title="'.$this->escape(@$this->row->file_description).'" alt="'.$this->escape(@$this->row->file_name).'" src="'.$img->url.'"/>';**/
				
		/** START DF1 -- 
		Superposition sur l'image de la date de l'événement en récupérant la date par un champs personnalisé -- 
		**/	
				
				list($le,$day1,$et,$day2,$mois,$annee)=explode(" ",$this->row->event_easy_readable_date);
				echo '
				<div class="hikashop_product_listing_image" style="background-image:url('.$img->url.'); border-color:black;height:'.$this->image->main_thumbnail_y.'px; width:'.$this->image->main_thumbnail_x.'px; border: 0px solid black;">
				
					<div class="ic-date" style="background-color:orange;filter:alpha(opacity=70); opacity:0.8;">
				
								<?php // Day ?>
								<div class="ic-day">
									'.$day1.' & '.$day2.'
								</div>
				
								<?php // Month ?>
								<div class="ic-month">
									'.$mois.'
								</div>
				
								<?php // Year ?>
								<div class="ic-year">
									'.$annee.'
								</div>
				
								<?php // Time ?>
								<div class="ic-time">
									9H-17H30
								</div>
				
					</div>
								
				</div>';
			
		/** EO DF1 -- **/
							
			}
			$main_thumb_x = $this->image->main_thumbnail_x;
			$main_thumb_y = $this->image->main_thumbnail_y;
			if($this->params->get('display_badges',1)){
				$this->classbadge->placeBadges($this->image, $this->row->badges, -10, 0);
			}
			$this->image->main_thumbnail_x = $main_thumb_x;
			$this->image->main_thumbnail_y = $main_thumb_y;
			if($this->params->get('link_to_product_page',1)){ ?>
				</a>
			<?php } ?>
			</div>
		</div>
		<!-- EO PRODUCT IMG -->
		<div class="hikashop_img_pane_panel">
			<!-- PRODUCT NAME -->
			<span class="hikashop_product_name">
					<?php if($this->params->get('link_to_product_page',1)){ ?>
						<a href="<?php echo $link;?>">
					<?php }
						echo $this->row->product_name;
					if($this->params->get('link_to_product_page',1)){ ?>
						</a>
					<?php } ?>
				</span>
			<!-- EO PRODUCT NAME -->
			<!-- PRODUCT CODE -->
				<span class='hikashop_product_code_list'>
					<?php if ($this->config->get('show_code')) { ?>
						<?php if($this->params->get('link_to_product_page',1)){ ?>
							<a href="<?php echo $link;?>">
						<?php }
						echo $this->row->product_code;
						if($this->params->get('link_to_product_page',1)){ ?>
							</a>
						<?php } ?>
					<?php } ?>
				</span>
			<!-- EO PRODUCT CODE -->
			<?php if(!empty($this->row->extraData->afterProductName)) { echo implode("\r\n",$this->row->extraData->afterProductName); } ?>

			<!-- PRODUCT PRICE -->
				<?php
					if($this->params->get('show_price','-1')=='-1'){
						$config =& hikashop_config();
						$this->params->set('show_price',$config->get('show_price'));
					}
					if($this->params->get('show_price')){
						$this->setLayout('listing_price');
						echo $this->loadTemplate();
					}
				?>
			<!-- EO PRODUCT PRICE -->

			<!-- PRODUCT VOTE -->
			<?php
			if($this->params->get('show_vote_product')){
				$this->setLayout('listing_vote');
				echo $this->loadTemplate();
			}
			?>
			<!-- EO PRODUCT VOTE -->

			<!-- ADD TO CART BUTTON AREA -->
			<?php
			if($this->params->get('add_to_cart') || $this->params->get('add_to_wishlist')){
				$this->setLayout('add_to_cart_listing_df');
				
				echo $this->loadTemplate();
				echo 'je suis ici <br />';
				
			}?>
			<!-- EO ADD TO CART BUTTON AREA -->

			<!-- COMPARISON AREA -->
			<?php
			if(JRequest::getVar('hikashop_front_end_main',0) && JRequest::getVar('task')=='listing' && $this->params->get('show_compare')) { ?>
				<br/><?php
				if( $this->params->get('show_compare') == 1 ) {
			?>
				<a class="hikashop_compare_button" href="<?php echo $link;?>" onclick="setToCompareList(<?php echo $this->row->product_id;?>,'<?php echo $this->escape(str_replace("'","\'",$this->row->product_name)); ?>',this); return false;"><?php echo JText::_('ADD_TO_COMPARE_LIST'); ?></a>
			<?php } else { ?>
				<input type="checkbox" class="hikashop_compare_checkbox" id="hikashop_listing_chk_<?php echo $this->row->product_id;?>" onchange="setToCompareList(<?php echo $this->row->product_id;?>,'<?php echo $this->escape(str_replace("'","\'",$this->row->product_name)); ?>',this);"><label for="hikashop_listing_chk_<?php echo $this->row->product_id;?>"><?php echo JText::_('ADD_TO_COMPARE_LIST'); ?></label>
			<?php }
			} ?>
			<!-- EO COMPARISON AREA -->
		</div>
	</div>
</div>
<?php
if(!empty($this->row->extraData->bottom)) { echo implode("\r\n",$this->row->extraData->bottom); }

if($this->rows[0]->product_id == $this->row->product_id){
?>
<style>
	#<?php echo $mainDivName; ?> .hk_img_pane_window{
		margin: auto;
		height:<?php echo $height; ?>px;
		width:<?php echo $width; ?>px;
		<?php echo $cursor; ?>
		overflow:hidden;
		position:relative;
	}
	#<?php echo $mainDivName; ?> .hk_img_pane_product{
		height:<?php echo $height; ?>px;
		width:<?php echo $width; ?>px;
	}
	#<?php echo $mainDivName; ?> .hikashop_img_pane_panel{
		width:<?php echo $width; ?>px;
		<?php echo $paneHeight; ?>
	}
	#<?php echo $mainDivName; ?> .hikashop_product_image{
		height:<?php echo $height;?>px;
		text-align:center;
		clear:both;
	}
	#<?php echo $mainDivName; ?> .hikashop_product_image_subdiv{
		position:relative;
		text-align:center;
		clear:both;
		width:<?php echo $width;?>px;
		margin: auto;
	}
</style>
<?php
}
?>

Please Log in or Create an account to join the conversation.

  • Posts: 23
  • Thank you received: 0
7 years 6 months ago #252182

Je reste dans l'attente d'une solution.
Est-ce que Nicolas ou Mohamed pourrait me proposer une solution ?

Merci,
David

Please Log in or Create an account to join the conversation.

  • Posts: 81622
  • Thank you received: 13084
  • MODERATOR
7 years 6 months ago #252201

Bonjour,

La solution d'erickb est ce qu'il faut faire.
Par contre, c'est dans le fichier "quantity" de la vue "product" que vous trouverez la traduction ADD_TO_CART que vous pourrez changer en fonction du produit.

Please Log in or Create an account to join the conversation.

  • Posts: 2607
  • Thank you received: 65
7 years 6 months ago #252235

ha oui c'est vrai /templates/TPL/html/com_hikashop/product/quantity.php

echo $this->cart->displayButton(JText::_('ADD_TO_CART_' . $this->row->product_genre), 'add', $this->params, $url, $this->ajax, '', $max, $min)

Last edit: 7 years 6 months ago by erickb.

Please Log in or Create an account to join the conversation.

  • Posts: 64
  • Thank you received: 0
6 years 6 months ago #281923

Bonjour,

J'ai exactement le même besoin mais je ne parviens pas à mettre en place. Est ce que l'un d'entre vous pourrais m'expliquer étape par étape comment je peux implémenter cette fonctionnalités ?

Merci :)

Bon week-end

PS : Désolé d'écrire le week-end mais c'est les seules moments calme ou je peux pleinement avancé sur mon projet avec hikashop...


Le fil vert sur le bouton vert, le fil rouge sur le bouton rouge.

Please Log in or Create an account to join the conversation.

  • Posts: 12953
  • Thank you received: 1778
6 years 6 months ago #282004

Bonjour,

Comme indiquer via les précédents messages, il vous faudra créer un champs personnalisé de la table produit et initialiser ce champs pour chaque produit.
www.hikashop.com/support/documentation/4...shop-field-form.html

Il vous faudra ensuite modifier correctement le code des fichiers de la vue "Product" via "Hikashop->Display->Views".
www.hikashop.com/support/documentation/1...-display.html#layout

Please Log in or Create an account to join the conversation.

Time to create page: 0.125 seconds
Powered by Kunena Forum