Import : pas de "parent category"

  • Posts: 257
  • Thank you received: 7
11 years 5 months ago #111279

Bonjour,
Comment se fait-il que lorsque j'exporte la base, la colonne "parent category" soit vide sur les lignes des fiches produits?
Le problème est que j'ai des noms communs dans les catégories. Du coup, à l'import Hikashop ne distribue pas forcément dans la bonne catégorie.
Merci.

Last edit: 11 years 4 months ago by oliv. Reason: réglé

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

  • Posts: 2334
  • Thank you received: 403
11 years 4 months ago #111318

Bonjour,

Si je comprend bien, le problème est l'import qui n'importe pas les catégories?
Pourriez vous nous donner un example du csv que vous utilisez pour importer les produits?
De même, est-ce que les produits ont bien une parent catégorie dans la base?

The following user(s) said Thank You: oliv

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

  • Posts: 257
  • Thank you received: 7
11 years 4 months ago #112696

Bonjour,

C'est bien à l'export que la colonne "parent category" est vide.
Puis-je vous envoyer par e-mail le fichier csv que j'exporte depuis Hikashop?
Pour répondre à votre dernière question : oui.

Merci.

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

  • Posts: 12953
  • Thank you received: 1778
11 years 4 months ago #112704

Bonjour,

Bien sure, cela nous aiderai peut-être à comprendre votre problème, une capture d'écran de l'un de vos produit nous serai aussi utile :).

Last edit: 11 years 4 months ago by Mohamed Thelji.
The following user(s) said Thank You: oliv

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

  • Posts: 257
  • Thank you received: 7
11 years 4 months ago #112708

Voici une capture d'écran d'un produit et son url .



Je vous ai envoyé le fichier d'export par e-mail.

Merci.

Attachments:

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

  • Posts: 12953
  • Thank you received: 1778
11 years 4 months ago #112973

Je pensais plutôt à une capture d'écran de la page de configuration de l'un de vos produits, afin de bien vérifier que vos produit appartienne bien à une certaine catégorie et comparer le tout avec le fichier d'export CSV que vous m'avez envoyé.

Merci :).

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

  • Posts: 12953
  • Thank you received: 1778
11 years 4 months ago #113019

Le haut de page résume les catégories et leurs structures, puis ensuite on attribut ces catégories sur tout les produits via la colonne "categories".

Après avoir examiné votre fichier CSV, je le trouve tout à fait normal, pourriez vous me donner un des exemples de problème que vous rencontrez lors de l'import de ce fichier CSV à partir de capture d'écran.

Merci :).

The following user(s) said Thank You: oliv

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

  • Posts: 257
  • Thank you received: 7
11 years 4 months ago #113022

Le fait est que je supprime toujours ces lignes du haut du tableau parce qu'à une époque (il y a quelques mois), quand elles étaient présentes, ça me plantait le site alors qu'en les retirant non.
Je fais un test en les laissant et revient vers vous.
Merci.

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

  • Posts: 257
  • Thank you received: 7
11 years 4 months ago #113207

Bonjour,
Après un test d'import, en effet, si je laisse les lignes des catégories et leurs structures, j'obtiens un message d'erreur pour chaque ligne. Hikashop ne reconnais pas le produit et pour cause c'est une catégorie :


Et puis donc, comme j'ai des sous-catégories qui portent les mêmes noms, il les distribue dans n'importe quelle sous-catégorie.
Merci.

Attachments:

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

  • Posts: 82906
  • Thank you received: 13378
  • MODERATOR
11 years 4 months ago #113339

Ces messages ne sont pas un problème.

Les lignes de la structure de catégories ne sont pas nécessaire si vous avez déjà vos catégories dans votre boutique.

L'export utilise en effet par défaut le nom des catégories ce qui est en effet un problème dans votre cas.
MAis dans ce cas, il suffit d'éditer le fichier "export" de la vue "product" via Affichage>vues et changer la ligne:
$data[] = $category->category_name;

en:
$data[] = $category->category_id;

pour récupérer l'id des catégories au lieu de leur nom dans le CSV et ainsi ne plus avoir ce soucis à l'import.

The following user(s) said Thank You: oliv

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

  • Posts: 257
  • Thank you received: 7
11 years 4 months ago #113354

Bonjour,

Merci pour votre réponse qui, je le pense, nous amène vers la solution.

Par contre je n'ai pas trouvé la ligne

$data[] = $category->category_name;

dans le fichier export de la vue product.

C'est peut-être parce que ce fichier a déjà été modifié pour d'autres raisons? (les relates, les options???)
<?php
/**
 * @package    HikaShop for Joomla!
 * @version    1.6.0
 * @author    hikashop.com
 * @copyright  (C) 2010-2012 HIKARI SOFTWARE. All rights reserved.
 * @license    GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?>
<?php
ob_end_clean();
if(ob_get_level()>2) ob_end_clean();
ob_start();
$eol= "\r\n";
$characteristic = hikashop_get('class.characteristic');
$characteristic->loadConversionTables($this);
$config =& hikashop_config();
$separator = $config->get('csv_separator',";");
$db =& JFactory::getDBO();
$columnsTable = $db->getTableFields(hikashop_table('product'));
$columnsArray = reset($columnsTable);
$columnsArray['categories_ordering']='categories_ordering';
$columns = $products_columns = array_keys($columnsArray);
$product_table_count = count($columns);
$columns['parent_category']='parent_category';
$columns['categories_image']='categories_image';
$columns['categories']='categories';
$columns['price_value']='price_value';
$columns['price_currency_id']='price_currency_id';
$columns['price_min_quantity']='price_min_quantity';
$columns['price_access']='price_access';
$columns['files']='files';
$columns['images']='images';
$columns['related']='related';
$columns['options']='options';
$characteristicsColumns = array();
if(!empty($this->characteristics)){
  foreach($this->characteristics as $characteristic){
    if(empty($characteristic->characteristic_parent_id)){
      $columns[$characteristic->characteristic_value]=$characteristic->characteristic_value;
      $characteristicsColumns[]=$characteristic->characteristic_value;
    }
  }
}
$after_category_count = count($columns)-($product_table_count+3);
$output='';
foreach($columns as $column){
  if(!empty($column)){
    $output.= '"'.str_replace('"','\\'.'"',$column).'"';
  }
  $output.= $separator;
}
echo rtrim($output,$separator).$eol;
$output='';
if(!empty($this->categories)){
  foreach($this->categories as $category){
    echo '"'.str_repeat('"'.$separator.'"',$product_table_count-1).'"'.$separator;
    if(!empty($category->category_parent_id) && isset($this->categories[$category->category_parent_id])){
      echo '"'.str_replace('"','""',$this->categories[$category->category_parent_id]->category_name).'"'.$separator;
    }else{
      echo '""'.$separator;
    }
    if(!empty($category->file_path)){
      echo '"'.str_replace('"','""',$category->file_path).'"'.$separator;
    }else{
      echo '""'.$separator;
    }
    echo '"'.str_replace('"','""',$category->category_name).'"'.$separator.'"'.str_repeat('"'.$separator.'"',$after_category_count-1).'"'.$eol;
  }
}
if(!empty($this->products)){
  foreach($this->products as $k => $product){
    if($product->product_type=="variant"){
      $this->products[$k]->product_parent_id = str_replace('"','""',$this->products[$product->product_parent_id]->product_code);
    }
  }
  foreach($this->products as $product){
    foreach($products_columns as $column){
      echo '"'.str_replace('"','""',$product->$column).'"'.$separator;
    }
    $categories = array();
    if(!empty($product->categories)){
      foreach($product->categories as $category){
        if(!empty($this->categories[$category])){
          $categories[]=str_replace(array('"',',',';'),array('""','\\,','\\;'),$this->categories[$category]->category_name);
        }
      }
    }
    echo '""'.$separator.'""'.$separator;
    if(!empty($categories)){
      echo '"'.implode($separator,$categories).'"'.$separator;
    }else{
      echo '""'.$separator;
    }
    $values = array();
    $codes = array();
    $qtys = array();
    $accesses = array();
    if(!empty($product->prices)){
      foreach($product->prices as $price){
        $values[]=$price->price_value;
        $codes[]=$this->currencies[$price->price_currency_id]->currency_code;
        $qtys[]=$price->price_min_quantity;
        $accesses[]=$price->price_access;
      }
    }
    if(empty($values)){
      echo '""'.$separator.'""'.$separator.'""'.$separator.'""'.$separator;
    }else{
      echo '"'.implode('|',$values).'"'.$separator.'"'.implode('|',$codes).'"'.$separator.'"'.implode('|',$qtys).'"'.$separator.'"'.implode('|',$accesses).'"'.$separator;
    }
    $files = array();
    if(!empty($product->files)){
      foreach($product->files as $file){
        $files[]=str_replace(array('"',',',';'),array('""','\\,','\\;'),$file->file_path);
      }
    }
    if(empty($files)){
      echo '""'.$separator;
    }else{
      echo '"'.implode($separator,$files).'"'.$separator;
    }
    $images = array();
    if(!empty($product->images)){
      foreach($product->images as $image){
        $images[]=str_replace(array('"',',',';'),array('""','\\,','\\;'),$image->file_path);
      }
    }
    if(empty($images)){
      echo '""'.$separator;
    }else{
      echo '"'.implode($separator,$images).'"'.$separator;
    }
    $related = array();
    if(!empty($product->related)){
      foreach($product->related as $rel){
        $related[]=str_replace(array('"',',',';'),array('""','\\,','\\;'),@$this->products[$rel]->product_code);
      }
    }
    if(empty($related)){
      echo '""'.$separator;
    }else{
      echo '"'.implode($separator,$related).'"'.$separator;
    }
    $options = array();
    if(!empty($product->options)){
      foreach($product->options as $rel){
        $options[]=str_replace(array('"',',',';'),array('""','\\,','\\;'),@$this->products[$rel]->product_code);
      }
    }
    if(empty($options)){
      echo '""';
    }else{
      echo '"'.implode($separator,$options).'"';
    }
    if(!empty($product->variant_links)){
      echo $separator;
      $characteristics=array();
      if(!empty($characteristicsColumns)){
        foreach($product->variant_links as $char_id){
          if(!empty($this->characteristics[$char_id])){
            $char = $this->characteristics[$char_id];
            if(!empty($this->characteristics[$char->characteristic_parent_id])){
              $key = $this->characteristics[$char->characteristic_parent_id]->characteristic_value;
              $characteristics[$key] = str_replace('"','""',$char->characteristic_value);
            }
          }
        }
        $chars = array();
        foreach($characteristicsColumns as $characteristic){
          $chars[] = '"'.@$characteristics[$characteristic].'"';
        }
        echo implode($separator,$chars);
      }
    }elseif(!empty($characteristicsColumns)){
      echo $separator;
      echo str_repeat('""'.$separator,count($characteristicsColumns)-1).'""';
    }
    echo $eol;
  }
}
$data = ob_get_clean();
header("Pragma: public");
header("Expires: 0"); // set expiration time
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=hikashopexport.csv;");
header("Content-Transfer-Encoding: binary");
header('Content-Length: '.strlen($data));
echo $data;
exit;

Merci.

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

  • Posts: 12953
  • Thank you received: 1778
11 years 4 months ago #113360

Je pense que la meilleure chose à faire serait éventuellement :
- De sauvegarder votre fichier export sur un fichier texte.
- De supprimer tout les changements effectué sur le fichier à l'aide de l'icone "poubelle", via la liste de tout vos fichier de vue ("Hikashop->Affichage->Vues")
- Et enfin d'appliquer la modification que Nicolas vous a donnée.

The following user(s) said Thank You: oliv

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

  • Posts: 257
  • Thank you received: 7
11 years 4 months ago #113362

Bonjour Mohamed,

Pour tester, je vais le faire.

Mais cette solution ne me convient pas car si des changements on été effectués dans ce fichier c'est bien pour des raisons particulières. Hors, il est vrai que je n'ai pas précisément noté lesquels.

Merci.

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

  • Posts: 82906
  • Thank you received: 13378
  • MODERATOR
11 years 4 months ago #113368

Vous avez en effet une ancienne ver du fichier, mais la modification reste somme toute similaire...

Remplacez simplement category_name par category_id et cela devrait faire pareil.

The following user(s) said Thank You: oliv

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

  • Posts: 257
  • Thank you received: 7
11 years 4 months ago #113386

Champion, Nicolas!

Impeccable, ça fonctionne.

Et alors je me demande : Si on modifie les fichiers dans la console d'administration de Joomla, c'est pour garder ses modifs à chaque mise à jour.

Du coup ces fichiers là ne bénéficient pas de mise à jour dans leur écriture? C'est pas embêtant?

Merci.

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

  • Posts: 12953
  • Thank you received: 1778
11 years 4 months ago #113395

Non, les fichiers de vues modifiés via "Hikashop->Affichage->Vues" ne sont pas écrasés et donc pas mis jours.
Cependant les fichiers seront automatiquement mis à jours une fois ses customisations effacées, ce qui vous laisse le choix de migrer ou non vos propres modifications en fonctions de la nouvelle version du fichier de vue.

The following user(s) said Thank You: oliv

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

  • Posts: 257
  • Thank you received: 7
11 years 4 months ago #113396

Merci.

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

Time to create page: 0.119 seconds
Powered by Kunena Forum