Magento Extension B2B Professional für Händlerbereich

Magento Extension B2B Professional für Händlerbereich

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:

if(is_object($sourceModel)){
 
  XXXXXXXXXXXX  Hier die originale Zeile.  
 
} else {
  Mage::log($e->source_model);
}
4. Preisblock weiterhin angezeigt. Nach Untersuchung wurde es festgestellt. Die Extension prüft Preisblock mittels Klassennamen. Die eingetragenen Klassennamen sind Magento Preis Block und MageSetup Preis Block. Da wir aber German Setup verwendet haben, müssen wir selber die Konfiguration erweitern. Es gibt keine Oberfläche dazu. Wir müssen die config.xml bearbeiten.
                    <catalog>Mage_Catalog_Block_Product_Price</catalog><bundle>Mage_Bundle_Block_Catalog_Product_Price</bundle><mage_setup>FireGento_MageSetup_Block_Catalog_Product_Price</mage_setup><mage_setup_bundle>FireGento_MageSetup_Block_Bundle_Catalog_Product_Price</mage_setup_bundle>                    <german_setup>FireGento_GermanSetup_Block_Catalog_Product_Price</german_setup>                    <german_setup_bundle>FireGento_GermanSetup_Block_Bundle_Catalog_Product_Price</german_setup_bundle>
Danach Cache löschen. Preisblöcke sind dann richtig ersetzt, wenn Benutzer nicht einloggt. Mit diesem Verfahren kann man auch weitere Blöcke, die keine Preisblöcke sind, ersetzen.
5. “In den Warenkorb” in der Kategorieliste ist immer noch da. B2B Professional hat nur den Button aus der Produktseite entfernen können, da sie den Teil nur als Block “product.info.addtocart” entfernen können. In der Liste wurde der Button aber nicht als einen Unterblock eingebaut.
Der Einfachste Weg ist Einbau einer Prüfung in der Produktlistevorlage, ob man eingeloggt hat.
                    <?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 
Share this

ehdel