Ho creato un attributo personalizzato seguente usando i moduli.Come aggiungere ulteriore campo "Elenco a discesa" in Magento One Page Checkout
Questo è l'attributo Elenco a discesa per Cliente.
Dovrebbe essere visualizzato nella pagina di pagamento (Cliente come ospite/utente esistente) Pagina account cliente, Account cliente Crea/Pagina di registro, Pagina di modifica cliente amministratore.
Attualmente sono in grado di visualizzare l'attributo nella sezione Amministrazione in Indirizzo cliente.
Desidero che questo attributo venga visualizzato nella pagina di pagamento anche nella sezione indirizzo del cliente.
Ho il file di controllo billing.phtml
, così come altri attributi sono scritti in modo statico, ma non sono sicuro. Come scrivere l'attributo personalizzato in billing.phtml come elenco a discesa. e quale altro file è necessario aggiornare per visualizzare questo attributo. Per favore fatemi sapere dove sto sbagliando o qualcos'altro da aggiungere al mio codice.
Qualsiasi consiglio sarebbe apprezzato.
Qui di seguito è il mio codice -
Nome File -/app/code/local/PS/PB/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<PS_PB>
<version>0.1.0</version>
</PS_PB>
</modules>
<global>
<helpers>
<pb>
<class>PS_PB_Helper</class>
</pb>
</helpers>
<models>
<pb>
<class>PS_PB_Model</class>
<resourceModel>pb_mysql4</resourceModel>
</pb>
</models>
<resources>
<customerattribute1462360584_setup>
<setup>
<module>PS_P</module>
<class>Mage_Customer_Model_Entity_Setup</class>
</setup>
<connection>
<use>core_setup</use>
</connection>
</customerattribute1462360584_setup>
<customerattribute1462360584_write>
<connection>
<use>core_write</use>
</connection>
</customerattribute1462360584_write>
<customerattribute1462360584_read>
<connection>
<use>core_read</use>
</connection>
</customerattribute1462360584_read>
</resources>
</global>
</config>
File -/app/code/local/PS/PB/Helper/Data.php
<?php
class PS_PB_Helper_Data extends Mage_Core_Helper_Abstract
{
}
File -/app/code/local/PS/PB/Model/Eav/Entity/Attribute/Source/Customeroptions14623605840.php
<?php
class PS_PB_Model_Eav_Entity_Attribute_Source_Customeroptions14623605840 extends Mage_Eav_Model_Entity_Attribute_Source_Abstract
{
/**
* Retrieve all options array
*
* @return array
*/
public function getAllOptions()
{
if (is_null($this->_options)) {
$this->_options = array(
array(
"label" => Mage::helper("eav")->__("End Consumer/DIY"),
"value" => 1
),
array(
"label" => Mage::helper("eav")->__("Service Technician"),
"value" => 2
),
array(
"label" => Mage::helper("eav")->__("Other Professional"),
"value" => 3
),
);
}
return $this->_options;
}
/**
* Retrieve option array
*
* @return array
*/
public function getOptionArray()
{
$_options = array();
foreach ($this->getAllOptions() as $option) {
$_options[$option["value"]] = $option["label"];
}
return $_options;
}
/**
* Get a text for option value
*
* @param string|integer $value
* @return string
*/
public function getOptionText($value)
{
$options = $this->getAllOptions();
foreach ($options as $option) {
if ($option["value"] == $value) {
return $option["label"];
}
}
return false;
}
/**
* Retrieve Column(s) for Flat
*
* @return array
*/
public function getFlatColums()
{
$columns = array();
$columns[$this->getAttribute()->getAttributeCode()] = array(
"type" => "tinyint(1)",
"unsigned" => false,
"is_null" => true,
"default" => null,
"extra" => null
);
return $columns;
}
/**
* Retrieve Indexes(s) for Flat
*
* @return array
*/
public function getFlatIndexes()
{
$indexes = array();
$index = "IDX_" . strtoupper($this->getAttribute()->getAttributeCode());
$indexes[$index] = array(
"type" => "index",
"fields" => array($this->getAttribute()->getAttributeCode())
);
return $indexes;
}
/**
* Retrieve Select For Flat Attribute update
*
* @param int $store
* @return Varien_Db_Select|null
*/
public function getFlatUpdateSelect($store)
{
return Mage::getResourceModel("eav/entity_attribute")
->getFlatUpdateSelect($this->getAttribute(), $store);
}
}
File -/app/code/local/PS/PB/sql/customerattribute1462360584_setup
<?php
$installer = $this;
$installer->startSetup();
$installer->addAttribute("customer_address", "cstpb", array(
"type" => "int",
"backend" => "",
"label" => "Primary Business",
"input" => "select",
"source" => "pb/eav_entity_attribute_source_customeroptions14623605840",
"visible" => true,
"required" => true,
"default" => "",
"frontend" => "",
"unique" => false,
"note" => ""
));
$attribute = Mage::getSingleton("eav/config")->getAttribute("customer_address", "cstpb");
$used_in_forms=array();
$used_in_forms[]="adminhtml_customer";
$used_in_forms[]="checkout_register";
$used_in_forms[]="customer_account_create";
$used_in_forms[]="customer_account_edit";
$used_in_forms[]="adminhtml_checkout";
$used_in_forms[]="adminhtml_customer_address";
$used_in_forms[]="customer_register_address";
$used_in_forms[]="customer_address_edit";
$attribute->setData("used_in_forms", $used_in_forms)
->setData("is_used_for_customer_segment", true)
->setData("is_system", 0)
->setData("is_user_defined", 1)
->setData("is_visible", 1)
->setData("sort_order", 100)
;
$attribute->save();
$installer->endSetup();
XML File -/app/etc/modules/PS_PB.xml
<?xml version="1.0"?>
<config>
<modules>
<PS_PB>
<active>true</active>
<codePool>local</codePool>
<version>0.1.0</version>
</PS_PB>
</modules>
</config>
Aggiornamenti
Dopo aver effettuato la correzione nel file config.xml, funziona correttamente.
Per controllare gli errori in
config.xml
, aprire questo file nel browser dopo aver modificato in> qualsiasi editor in modo che mostri l'errore.
Ora l'attributo sta visualizzando la pagina di checkout e la pagina del cliente admin e cliente il mio account ma in questa sezione. Non sono in grado di aggiornarlo. Quali campi devono essere aggiunti in config.xml per tag customer_account.
ho aggiunto come questo in config.xml
<customer_account>
<primary_business>
<create>1</create>
<update>1</update>
</primary_business>
</customer_account>
Avete ancora problemi che mostrano l'attributo sulle pagine di pagamento? Quale versione di Magento stai usando? – codedge
Inoltre perché sei aggiungere l'attributo al 'address' cliente e non a' 'del cliente? Come ho capito un "tecnico di servizio" f. ex. è qualcosa che è collegato a un cliente e _non_ un indirizzo. – codedge
@codedge Sì, ho ancora problemi con l'aggiunta di attributi. Ora mio attributo viene aggiunto al front-end e pagina di checkout, ma voglio aggiungere con Firecheckout modello non con core Magento Files. Quali campi devono essere aggiunti nel file di configurazione per chiamare qualsiasi classe e il suo metodo. –