2009-08-22 9 views
3

Ich benutze Magento und erstelle einen Produktfinder. Gibt es eine Weise, die ich zu einem konfigurierbaren Element Beispiel verknüpfen können: mystore.com/bedding-sheetsWie bekomme ich die URL zu einem konfigurierbaren Element in Magento?

können sagen, ich Einem Bekannten einen Link auf das Blatt schicken möchten, die 250 * 250cm ist, würde ich den Link denken war vielleicht: mystore.com/bedding-sheets?attribute496=1 (außer dies ist nicht der Fall)

<dl class="last"> 
    <dt><label>Size<span class="required"> *</span></label></dt> 
    <dd class="last"> 
    <select class="required-entry super-attribute-select" id="attribute496" name="super_attribute[496]"> 
     <option value="">Choose option...</option> 
     <option value="4">200*200cm</option> 
     <option value="3">200*230cm</option> 
     <option value="2">200*250cm</option> 
     <option value="1">250*250cm</option></select> 
    </dd> 
</dl> 

Wer weiß, ob es möglich ist, eine solche Verknüpfung zu erstellen?

EDIT: So war ich in der Lage, herauszufinden, wie ein Element in der Warenkorb /Kasse/Warenkorb/add Produkt = 47 & Menge = 1 & super_attribute [496] = 4

mit hinzufügen?

Ich möchte jedoch, dass der Benutzer eine Vorschau des Artikels erhält, den er erhält, anstatt ihn einfach in den Warenkorb zu legen.

+0

Vor allem: Können Sie uns sagen, welche Art von Optionen Sie in der URL angeben können? Menge? Eingabefelder? Auswahlfelder vorwählen? Termine? Das sind verschiedene Dinge in Magento, die Sie kennen. –

+0

Optionen einer Auswahlbox, ein konfigurierbares Element. – Moak

+0

Okay, hast du dann versucht, was ich in meiner Antwort beschrieben habe? Es sollte Ihnen ermöglichen, genau das zu tun, was Sie tun möchten! Wenn Sie in Schwierigkeiten geraten, lassen Sie es mich wissen. –

Antwort

4

Dies ist nicht möglich, ohne Änderungen an Magento vorzunehmen.

Nehmen wir nun an die ausgewählten Optionen einer Auswahlbox in der URL vordefinieren wollte:

Zuerst Sie den Baustein Mage_Catalog_Block_Product_View_Options_Type_Select überschreiben müssen. (Ich gehe davon aus, dass Sie Ihr eigenes Modul bereits erstellt haben - ich Sie nicht haben und müssen dabei helfen lassen Sie mich wissen)

Um dies zu tun Sie diesen Eintrag Ihrer config.xml hinzufügen müssen:

<config> 
    <global> 
     <blocks> 
      <catalog> 
       <rewrite> 
        <product_view_options_type_select>YourCompany_YourModuleName_Product_View_Options_Type_Select</product_view_options_type_select> 
       </rewrite> 
      </catalog> 
     </blocks> 
    </global> 
</config> 

Nächstes fügen Sie die Klasse YourCompany_YourModuleName_Product_View_Options_Type_Select die Mage_Catalog_Block_Product_View_Options_Type_Select erweitern muss.

In dieser Klasse müssen Sie jetzt die Funktion getValuesHtml() überschreiben. Um zu beginnen, sollten Sie es aus der Klasse kopieren, die Sie erweitern.

In dieser Funktion sollten Sie diese foreach finden:

foreach ($_option->getValues() as $_value) { 
     $priceStr = $this->_formatPrice(array(
      'is_percent' => ($_value->getPriceType() == 'percent') ? true : false, 
      'pricing_value' => $_value->getPrice(true) 
     ), false); 
     $select->addOption(
      $_value->getOptionTypeId(), 
      $_value->getTitle() . ' ' . $priceStr . '' 
     ); 
    } 

Danach fügen Sie:

$standardValue = $this->getRequest()->getParam($_option->getid()); 
//Mage::log("Option Name: "$_option->getid()); 
$select->setValue($standardValue); 

Dies sollte es tun. Leider kann ich das jetzt nicht testen. Lass es mich wissen, wenn du Probleme hast.

Ich bin mir nicht sicher, ob der $_option->getid() der richtige Name für Ihren Parameter ist. Aber Sie könnten versuchen, das herauszufinden, wenn Sie in der einen Zeile kommentieren, die ich in der Codeliste von oben für Sie auskommentiert habe. Öffnen Sie in Ihrer Magento-Installation die Datei var/log/system.log, in der nun der Name Ihrer URL-Parameter angezeigt werden soll.

Nun, da Sie wissen, wie Sie die URL-Parameter benennen, können Sie genau das tun, was Sie wollten: url/to/product?option:

PS: Wenn Sie sich fragen, warum wir eine neue Klasse erstellen, anstatt sie direkt im Magento Kern zu ändern: Wir tun dies, um Probleme beim Update auf eine neue Version von Magento zu vermeiden.

Ich hoffe, ich könnte helfen.

+0

Diese Lösung wird nicht funktionieren, habe ich diese Klasse gelöscht ** Mage_Catalog_Block_Product_View_Options_Type_Select ** und konfigurierbare Produktblatt funktioniert gut, die beweisen, dass jede Überschreibung, wenn diese Klasse keine Ergebnisse geben wird –

Verwandte Themen