Positionnement champs personnalisé dans le template

  • Posts: 140
  • Thank you received: 5
  • Hikaserial Subscription Hikashop Business
1 year 10 months ago #348268

Bonjour,

J'ai une question dont la réponse est peut être super simple. (j'ai cherché mais pas trouvé)

Voilà je souhaite créer plein de champs personnalisé pour mes fiches produits. Et ensuite les afficher a différent endroit de la page produit. (et non a la suite)
Actuellement, j'ai bien compris que les champs personnalisé sont appelé dans "product / show_default"
Qui lui même appel : "show_block_custom_main"

Mais du coup les champs apparaissent à la suite... moi je voudrais les faire un peu n'importe ou dans ma mise en page.
Je me dis que le top, serait de les appeler individuellement pour pouvoir les mettre à l'emplacement de mon choix.
(pour une mise en page aux petits oignons)

Il n'y aurai pas une méthode, genre un appel ? J'ai testé de mettre dans mon "product / show_default" un truc comme ça :
<?php echo $this->element->NOMDEMONCHAMPS; ?>

NOMDEMONCHAMPS : j'ai mis le nom de mon champs personnalisé...
Mais évidemment ça ne fonctionne pas... je ne sais pas codé, je me dis dans mon fort intérieur que c'est possible... avec le bon appel ?
peut etre ?...
Si vous aviez une idée ?
Merci

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

  • Posts: 82863
  • Thank you received: 13372
  • MODERATOR
1 year 10 months ago #348269

Bonjour,

Le code est bon. Par contre, c'est la version simple.
Si le produit a des variantes, alors $this->element contient les données de la variante par défaut, et $this->element->main contient les données du produit principal.
Aussi, ce code va afficher les données brutes de la base de données. Donc par exemple, pour un champ "ajax file", il va afficher le nom du fichier dans le dossier d'upload, et non le lien de téléchargement du fichier comme le fait l'affichage par défaut.
Pour avoir un affichage plus propre, il faut faire comme ceci:

<?php
	$fieldClass = hikashop_get('class.field');
	$field = $fieldClass->getField('NOMDEMONCHAMPS', 'product');
	echo $fieldClass->show($field,$this->element->NOMDEMONCHAMPS);
?>
Aussi, notez qu'il faut remplacer NOMDEMONCHAMPS par le nom de colonne du champ et pas le label, et que la casse (minuscule/majuscule) doit être respectée.

Last edit: 1 year 10 months ago by nicolas.
The following user(s) said Thank You: pincealinge

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

  • Posts: 140
  • Thank you received: 5
  • Hikaserial Subscription Hikashop Business
1 year 10 months ago #348293



Enorme !!!!!!!!

Le champs des possible est infini !!! j'ai des paillettes dans les yeux !!

Du coup, j'ai cherché ton code dans le forum, je suis tombé sur ça, ça complète (pour ceux qui passerai par là.)

www.hikashop.com/forum/development/89757...-description-if.html

Merci !!!!!

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

  • Posts: 140
  • Thank you received: 5
  • Hikaserial Subscription Hikashop Business
1 year 9 months ago #349206

C'est juste fantastique.
Du coup je place ça, et j'ai le contenu de mon champs personnalisé qui apparait ou je veux, j'adore... Mais il me manque un truc, le titre du champs personnalisé :

<?php 
if(!empty($this->element->nom-du_champ)) {
	echo '<div class="titre">TITRE DU CHAMPS PERSONNALISÉ</div>';
	$fieldClass = hikashop_get('class.field');
	$field = $fieldClass->getField('nom-du_champ', 'product');
	echo '<div class="description">' . $fieldClass->show($field,$this->element->nom-du_champ) . '</div>';
   
}
if(!empty($this->element->autortext)) {
	echo '<div >' . $this->element->autortext . '</div>'; 
}
?>

Je ne sais pas comment faire pour récupéré le "nom" du titre du champs personnalisé…

Donc a la place de ça :
echo '<div class="titre">TITRE DU CHAMPS PERSONNALISÉ</div>';

J'ai essayé ça :
echo '<div class="titre">'  . $fieldClass->show($field_realname,$this->element->nom-du_champ) .  '</div>';

Evidement ça ne fonctionne pas… en même temps je suis intégrateur css...

Si tu as une solution, mille merci.

Last edit: 1 year 9 months ago by nicolas.

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

  • Posts: 82863
  • Thank you received: 13372
  • MODERATOR
1 year 9 months ago #349208

Bonjour,

Vous n'êtes pas loin.
Vous pouvez faire comme ceci:

<?php 
if(!empty($this->element->nom-du_champ)) {
	$fieldClass = hikashop_get('class.field');
	$field = $fieldClass->getField('nom-du_champ', 'product');
	echo '<div class="titre">'.$fieldClass->getFieldName($field).'</div>';
	echo '<div class="description">' . $fieldClass->show($field,$this->element->nom-du_champ) . '</div>';
   
}
if(!empty($this->element->autortext)) {
	echo '<div >' . $this->element->autortext . '</div>'; 
}
?>

Last edit: 1 year 9 months ago by nicolas.
The following user(s) said Thank You: pincealinge

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

  • Posts: 140
  • Thank you received: 5
  • Hikaserial Subscription Hikashop Business
1 year 9 months ago #349333

C'est tellement beau, merci

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

Time to create page: 0.064 seconds
Powered by Kunena Forum