Bonjour Nicolas,
j'ai avancé dans ma création de "item custom fields" qui peuvent être customisés dans le "back end product form"; mais je suis coincé.
J'ai crée un "Dropdown customizable" custom field type (en fait, quasiment une copie du Single Dropdown").
J'ai créé "Product custom field" avec ce type. C'est donc un "Single Dropdown" avec plusieurs choix (value, title,disable).. Ce que je veux faire c'est l"afficher comme tel dans "product" ( c'est à dire que je veux afficher toutes les triplettes (value, title,disable) pour modifier les valeurs de "title" et "disable" dans product, et donc pouvoir customiser selon ces valeurs ce que je vais afficher dans le catalogue).
J'y arrive bien, en modifiant "\administrator\components\com_hikashop\views\product\tmpl\form.php".
Mon problème c'est que je n'arrive pas à sauvegarder ces valeurs:
1/ Je ne trouve pas où Hikashop sauve les valeurs liées aux custom field (j'ai regardé dans le controller "product", la class 'product', et je ne vois rien qui va chercher les inputs "data[product]" de la form. DONC 1ERE QUESTION: Ou est-ce?
2/ en fait, ce que je voudrais sauvegarder, c'est l'équivalent du champ "field_value" (donc une concatenation de 'value, title, diable) en faisant un "Implode" de ces trois valeurs (et un ExplodeValues en retour lorsque je veux les avoir). 2EME QUESTION: est-ce bien possible, suis-je sur la bonne voie?
pour info voici la partie de code de "form.php" que j'ai modifié:
if(!empty($this->fields)){?>
<table class="admintable table" width="100%">
<?php foreach($this->fields as $fieldName => $oneExtraField){
if(!$oneExtraField->field_backend){
if($oneExtraField->field_type = "customtext"){?>
<tr><td><input type="hidden" name="data[product][<?php echo $fieldName; ?>]" value="<?php echo $this->element->$fieldName; ?>" /></td></tr>
<?php
}
}
else{
if($oneExtraField->field_type == "plg.dropdownfreefield"){
//get the Generic field from the field table
$classGenField=hikashop_get('class.field');
$field_id=$oneExtraField->field_id;
$GenField = $classGenField->get($field_id);
$GenFieldValue=$GenField->field_value;
//get the custom values from the product info
$custom_field_values=get_custom_values($product_id,$name_column);
?>
<tr id="fieldopt_multivalues">
<td class="key" valign="top">
<?php echo JText::_( 'FIELD_VALUES' ); ?>
</td>
<td>
<table id="hikashop_field_values_table" class="hikaspanleft table table-striped table-hover"><tbody id="tablevalues">
<tr>
<td><?php echo JText::_('FIELD_VALUE')?></td>
<td><?php echo JText::_('FIELD_TITLE'); ?></td>
<td><?php echo JText::_('FIELD_DISABLED'); ?></td>
</tr>
<?php
if(!empty($GenField->field_value) && is_array($GenField->field_value)){
foreach($GenField->field_value as $titleGen => $valueGen){
//get the individual values coming from the "item" field (customized in the "product table", not the "field table"
$cust_title=$custom_field_values->title;
if (empty($cust_title)) $cust_title=$this->escape($valueGen->value);
$checked='';
if((int)$value->disabled) $checked = 'checked';
?>
<tr>
<td><input type="text" name="field_values[title][]" value="<?php echo $titleGen; ?>" /></td>
<td><input type="text" name="field_values[value][]" value="<?php echo $cust_title; ?>" /></td>
<td><input type="checkbox" name="field_values[disabled][]" value="1" <?php echo ' '.$checked ?>></td>
</tr>
<?php
}
}?>
</tbody>
</table>
</td>
</tr>
<?php
}
else{?>
<tr id="hikashop_product_<?php echo $fieldName; ?>">
<td class="key">
<?php echo $this->fieldsClass->getFieldName($oneExtraField);?>
</td>
<td>
<?php
if(!isset($this->element->$fieldName))
$this->element->$fieldName = $oneExtraField->field_default;
?>
<?php $onWhat='onchange'; if($oneExtraField->field_type=='radio') $onWhat='onclick'; ?>
<?php echo $this->fieldsClass->display($oneExtraField,$this->element->$fieldName,'data[product]['.$fieldName.']',false,' '.$onWhat.'="hikashopToggleFields(this.value,\''.$fieldName.'\',\'product\',0);"'); ?>
</td>
</tr>
<?php }
}
} ?>
</table>
<?php }?>