In einem Projekt gab es die Aufgabenstellung aus einem CSV-Export Drupal-User und Adressdaten in das Commerce-Profil des Users via Feeds zu importieren.
Es gibt dafür im Modul Feeds den "User Processor" und den "Commerce Customer Profile Processor". Die Schwierigkeit ist allerdings nach dem Import des Users, die Profildaten dem passenden Usern zuzuordnen. Das geht im "Commerce Customer Profile Processor" nur über die User-ID des Drupal-Users (uid). Diese User-ID steht mir aber in meinem CSV-Import nicht zur Verfügung, denn die User-ID wird ja beim Import der User erst von Drupal erzeugt.
Um dafür eine Lösung zu finden habe ich ein eigenes Plugin für das Modul Feeds Tamper verwendet.
Der Code für das Plugin lautet:
<?php
/**
* @file
* Get the userid to username.
*/$plugin = array(
'form' => 'feeds_tamper_userid_to_username_form',
'callback' => 'feeds_tamper_userid_to_username_callback',
'name' => 'Userid to Username',
'multi' => 'loop',
'category' => 'SQL',
);function feeds_tamper_userid_to_username_form($importer, $element_key, $settings) {
$form = array();
$form['info'] = array(
'#markup' => t('This plugin deliver userid to username.'),
);
return $form;
}function feeds_tamper_userid_to_username_callback($result, $item_key, $element_key, &$field, $settings) {
$query = "SELECT uid FROM users WHERE name = '" . $field ."'";
$result = db_query($query);
$field = $result->fetchField();
}
Das Plugin wird in den Ordner plugins des Tamper-Moduls gespeichert mit dem Dateinamen userid_to_username.inc. Dann findet man das Plugin (ggf. noch Cache löschen vorher) als Option für Feeds Tamper und kann damit das Feld Username aus dem Import in die passende User-ID umwandeln. Das Plugin holt sich dazu per SQL die passende User-ID zum Usernamen.
Infos dazu:
https://drupalcommerce.org/questions/8534/how-import-users-and-customer-...
Neuen Kommentar schreiben