Wir haben neulich die Extension B2B Professional für Händlerbereich versucht.
Inzwischen haben wir ein paar Probleme gehabt. Hier mal die Protokoll.
1. Extension kann von http://www.magentocommerce.com/magento-connect/sitewards-b2b-professional.html oder https://github.com/sitewards/B2BProfessional heruntergeladen und installiert werden.
2. Mit der Installation vermutlich auch die Extension Customer Activation installiert. Auf unserem Server ist die Installation aber nicht richtig, so dass Kunden nicht mehr bearbeitet werden. Manuell haben wir die Dateien aus https://github.com/Vinai/customer-activation heruntergeladen und wollten die alten Dateien ersetzen. Das hat nicht geklappt, da viele Dateien in gleichen Namen aber als Verzeichnisse abgelegt wurden. Also die Extension aus app/code/… löschen und die neuen Datei darauf kopieren. So wurde die Dateien ersetzt.
Wegen des ersten Installationsfehlers wurde eine Attribute aus SQL nicht erstellt. Um die Extension nochmals zu installieren, gehe wir zu Tabelle core_resourcen und dort die Zeile für Extension “customeractivation_setup” löschen. Danach im Magento Backend Cache löschen und wieder anmelden. Jetzt kann Kunde wieder bearbeitet werden.
3. Unter Magento 1.9 ein Fehler über toOptionArray gemeldt, wenn man im Backend Kunden -> Kundenkonfiguration aufmacht. Dieser sollte einen Bug von Magento sein.
Dafür muss man die betroffene Zeile durch eine Bedingung geprüft werden:
<?php if (Mage::getSingleton('customer/session')->isLoggedIn()==0): ?>
<p class="availability in-stock"><span><?php echo $this->__('In stock') ?></span></p>
<?php else: ?>
<?php if ( !($_product->getTypeInstance(true)->hasRequiredOptions($_product) || $_product->isGrouped()) ) { ?>
<p><button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="<?php if($enableAjax): ?>setLocationAjax<?php else: ?>setLocation<?php endif; ?>('<?php echo $this->getAddToCartUrl($_product) ?>','<?php echo $_product->getId()?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button></p>
<?php } else { ?>
<button type="button" title="<?php echo $this->__('Add to Cart') ?>" class="button btn-cart" onclick="showOptions('<?php echo $_product->getId()?>')"><span><span><?php echo $this->__('Add to Cart') ?></span></span></button>
<a href='<?php echo $this->getUrl('ajax/index/options',array('product_id'=>$_product->getId()));?>' class='fancybox' id='fancybox<?php echo $_product->getId()?>' style="display: none;" ><?php echo $this->__('Add to Cart') ?></a>
<?php } ?>
<?php endif ?>
6. Anzeige der Adressform auf der Benutzerregistrierungsseite. Normalerweise wird Adressform auf dieser Seite nicht angezeigt.
Durch eine kleine Änderung kann die Adressform daunten angezeigt werden.
https://community.rackspace.com/developers/f/7/t/979
Gehe zu diese Datei /app/design/frontend/base/default/template/customer/form/register.phtml
Bitte noch prüfen, ob Ihr Shop gerade diese Datei verwendet. Wenn eine andere Vorlage oder Extension installiert wurd, kann es sein, dass sie andere Dateien verwendet.
Unter Debugmodus findet man die Pfadinfo.
In dieser Datei suchen wir nach "<?php if($this->getShowAddressFields()): ?>"
vor dieser Zeile fügen wir eine neue Zeile ein.
<?php $this->setShowAddressFields(true)?>
Das war's.
7. Einfügen eines Dateihochladen-Feldes.
Der einfache Weg ist Einfügen eines "File" Attribute in die "Customer".
http://stackoverflow.com/questions/7570078/magento-upload-file-during-registration
Diese Codes kann man auch mittels Tool von http://www.silksoftware.com/magento-module-creator/ generieren.
So sieht man im Backend schon ein Dateihochladen-Element.
In Vorlage /app/design/frontend/base/default/template/customer/form/register.phtml fügen den enctype="multipart/form-data" Teil in form Tag ein, damit Dateien hochgeladen werden kann.
Analog zu dob, taxvat erstellen wir ein Widget für Dateihochladen z.B. \app\code\local\Mage\Customer\Block\Widget\Uploadfile.php (Kopie von taxvat.php, nur geringfügige Anpassung). Legen wir auch eine Vorlage uploadfile.phtml unter \app\design\frontend\base\default\template\customer\widget\uploadfile.phtml.
<label for="<?php echo $this->getFieldId('uploaded_file')?>"<?php if ($this->isRequired()) echo ' class="required"' ?>><?php if ($this->isRequired()) echo '<em>*</em>' ?><?php echo $this->__('Gewerbeschein') ?></label>
<div class="input-box">
<input type="file" id="<?php echo $this->getFieldId('uploaded_file')?>" name="<?php echo $this->getFieldName('uploaded_file')?>" class="input-text <?php echo $this->helper('customer/address')->getAttributeValidationClass('uploaded_file') ?>" <?php echo $this->getFieldParams() ?> />
</div>
Wichtig ist input name und ID, die sollten stimmen. Jetzt können wir Datei hochladen. Und die hochgeladene Datei ist auch im Backend unter Kundenbearbeitung zu sehen.
Falls die Datei beim Hochladen noch verarbeitet werden, z.B. umbenennen oder in bestimmtes Verzeichnis verschieben, kann man mit observer arbeiten.
http://stackoverflow.com/questions/7570078/magento-upload-file-during-registration