Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Multistore: Warenkorb auf Produktseite defekt
 
thisisklara
Jr. Member
 
Total Posts:  4
Joined:  2012-11-13
 

Hallo zusammen,

bei der zweiten Webseite einer neu installierten Magento 1.7 Community Edition funktioniert auf der Produktseite der Warenkorb nicht und ich such schon seit Tagen nach dem Fehler.

Bitte bitte Hilfe.

Hier die Situation:

Der Shop hat eine Webseite mit 2 Stores für Endkunden (b2c) und eine zweite Webseite mit 2 Stores für Geschäftskunden (b2b). Beide teilen sich den selben Katalog, nur die Preise, Steuern, Zugriffsrechte etc sind unterschiedlich. Davon ist allerdings noch nichts eingerichtet, die Installation ist jungfräulich.

Was wo liegt
Die Hauptinstallation liegt in
www.mystim.com/store/
und verweist auf die b2c Webseite. Hier funktioniert alles prima.

Für die B2B-Webseite gibt es das Unterverzeichnis
www.mystim.com/store/b2b/
Da liegen die angepasste index.php und ht.access drin.

In der Konfiguration von B2B ist für sicher und ungesichert das selbe eingestellt:
Basis-URL - http://www.mystim.com/store/
Basis-Link-URL - http://www.mystim.com/store/b2b/
alles andere auf Standard

Was passiert
Will man auf der B2B Seite ein einfaches Produkt in den Warenkorb legen, funktioniert das nur in der Listenansicht. In der Produktansicht kommt der freundliche Hinweis “Artikel kann nicht in den Warenkorb gelegt werden”.

In der Listenansicht ruft der Warenkorb-Button die Funktion

onclick="setLocation('<?php echo $this->getAddToCartUrl($_product) ?>')"
auf und das funktioniert bestens.
In der Produktansicht ruft der Button aber
productAddToCartForm.submit(this)
auf, und die Funktion überträgt eine falsche URL. Das Formular verwendet als action
$this->getSubmitUrl($_product)
und das gibt die Produkt-Url http://www.mystim.com/store/b2b/produkt.html zurück. Das B2B hat in der URL aber nichts verloren.

Ich hätte gerne, dass Funktion die Basis-URL zum Bauen nimmt, nicht die Basis-Link-URL, aber ich komm einfach nicht drauf, wie ich das machen soll.

Ich hab die Funktion in Abstract.php gefunden und so sieht sie aus:

/**
     * Retrieve url for add product to cart
     * Will return product view page URL if product has required options
     *
     * @param Mage_Catalog_Model_Product $product
     * @param array $additional
     * @return string
     */
    public function getAddToCartUrl($product$additional = array())
    
{
        
if ($product->getTypeInstance(true)->hasRequiredOptions($product)) {
            
if (!isset($additional['_escape'])) {
                $additional[
'_escape'true;
            
}
            
if (!isset($additional['_query'])) {
                $additional[
'_query'= array();
            
}
            $additional[
'_query']['options''cart';

            return 
$this->getProductUrl($product$additional);
        
}
        
return $this->helper('checkout/cart')->getAddUrl($product$additional);
    
}

    
/**
     * Retrieves url for form submitting:
     * some objects can use setSubmitRouteData() to set route and params for form submitting,
     * otherwise default url will be used
     *
     * @param Mage_Catalog_Model_Product $product
     * @param array $additional
     * @return string
     */
    
public function getSubmitUrl($product$additional = array())
    
{
        $submitRouteData 
$this->getData('submit_route_data');
        if (
$submitRouteData{
            $route 
$submitRouteData['route'];
            
$params = isset($submitRouteData['params']) ? $submitRouteData['params': array();
            
$submitUrl $this->getUrl($routearray_merge($params$additional));
        
else {
            $submitUrl 
$this->getAddToCartUrl($product$additional);
        
}
        
return $submitUrl;
    
}

Ich vermute, dass SubmitRouteData das Problem ist, aber von da aus komm ich nicht weiter.

Interessanterweise funktioniert das Hinzufügen zum wunschzettel ganz einwandfrei. Hier die beiden Funktionen im Vergleich:

<script type="text/javascript">
    
//<![CDATA[
        
var productAddToCartForm = new VarienForm('product_addtocart_form');
        
productAddToCartForm.submit = function(buttonurl{
            
if (this.validator.validate()) {
                
var form this.form;
                var 
oldUrl form.action;

                if (
url{
                   form
.action url;
                
}
                
var null;
                try 
{
                    this
.form.submit();
                
catch (e{
                }
                this
.form.action oldUrl;
                if (
e{
                    
throw e;
                
}

                
if (button && button != 'undefined'{
                    button
.disabled true;
                
}
            }
        }
.bind(productAddToCartForm);

        
productAddToCartForm.submitLight = function(buttonurl){
            
if(this.validator{
                
var nv Validation.methods;
                
delete Validation.methods['required-entry'];
                
delete Validation.methods['validate-one-required'];
                
delete Validation.methods['validate-one-required-by-name'];
                if (
this.validator.validate()) {
                    
if (url{
                        this
.form.action url;
                    
}
                    this
.form.submit();
                
}
                Object
.extend(Validation.methodsnv);
            
}
        }
.bind(productAddToCartForm);
    
//]]>
    
</script>

Was mach ich falsch? Hab ich was übersehen?

Was ich nach Stunden langem Googeln schon versucht habe:
Das Verzeichnis var/tmp angelegt
alle möglichen Base-URL / Base-Link-Variationen ausprobiert (immer der gleiche Fehler)
die index.php mal den store, mal ne website ausführen lassen

Wenn irgendwer irgendeine Lösung hat - bitte her damit. Muss nicht mal hübsch sein. Inzwischen wäre ich auch über hässlich aber funktionsfähig glücklich.

Schon mal ein Vorschuss-danke!
Klara

File Attachments
index.php  (File Size: 3KB - Downloads: 13)
 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top