Saya memprogram plugin bidang khusus untuk Virtuemart 2.6.6, yang menampilkan beberapa parameter pada halaman produk misalnya "ukuran", dan parameter tersebut juga merupakan variabel keranjang.
Artikel ini sangat membantu:
https://www.spiralscripts.co.uk/Joomla-Tips/custom-plugin-fields-in-virtuemart-2-2.html
Dan tentu saja forum stackoverflow dan plugin kustom VM default pabrik.
Semuanya berfungsi (ukurannya ditampilkan di tampilan detail produk, dan di keranjang, saat Anda menambahkan produk ke dalamnya) tetapi satu hal:
- setelah mengirim pesanan parameternya belum ditampilkan di detail pesanan, jadi saya tidak tahu ukuran produk yang dibeli.
Saya menempatkan fungsi-fungsi berikut ke dalam plugin saya, tetapi tidak menyelesaikan masalah saya:
function plgVmOnViewCart($product, $row, &$html)
{
if (empty($product->productCustom->custom_element) or $product->productCustom->custom_element != $this->_name) return '';
if (!$plgParam = $this->GetPluginInCart($product)) return false ;
$html .= '<div class="parameterek_attributes">';
foreach ($plgParam as $attributes) {
foreach ($attributes as $k => $attribute) {
if ($k =='child_id') continue;
if ($k == 'custom_param_default3') $name = 'Veľkosť'; else $name = '';
$html .='<span class="parameterek_attribute"> '.$name.': '.JText::_($attribute).' </span>';
}
}
$html.='</div>';
return true;
}
/**
*
* shopper order display BackEnd
*/
function plgVmDisplayInOrderBE($item, $row,&$html)
{
if (empty($item->productCustom->custom_element) or $item->productCustom->custom_element != $this->_name) return '';
if(!empty($productCustom)){
$item->productCustom = $productCustom;
}
$this->plgVmOnViewCart($item, $row,$html);
}
/**
*
* shopper order display FrontEnd
*/
function plgVmDisplayInOrderFE($item, $row,&$html)
{
if (empty($item->productCustom->custom_element) or $item->productCustom->custom_element != $this->_name) return '';
$this->plgVmOnViewCart($item, $row,$html);
}
Ke dalam tabel database bernama #__virtuemart_order_items disimpan nilai: seperti:
{"357":"5"}
tapi seharusnya seperti ini:
{"357":"ukuran M"}
Saya melihat bahwa fungsi kuncinya adalah GetPluginInCart($product), dan ketika saya mencetak $product->param dalam fungsi itu saya mendapatkan output ini, ketika saya melalui proses checkout:
Array
(
[0] => Array
(
[parameterek] => Array
(
[custom_param_default3] => L
)
)
)
tetapi setelah saya menyelesaikan pesanan dan masuk ke detail pesanan, $product->param memiliki nilai ini:
Array
(
[357] => 5
)
- Jadi menurut saya, sebelum saya menyelesaikan pesanan, saya harus menangani parameter produk yang dipilih dan mengubahnya menjadi bentuk yang benar, tetapi saya tidak tahu caranya.
Di situs berikut https://dev.virtuemart.net/projects/virtuemart/wiki/Product_Plugins
Saya menemukan fungsi:
plgVmOnViewCartOrder($product, $param,$productCustom, $row)
handel $param before adding it in the order
return $param;
tetapi ketika saya mencari string "plgVmOnViewCartOrder" di seluruh instalasi kebajikanmart, tidak ditemukan, jadi berarti tidak diluncurkan (?)
Jika ada yang bisa membantu saya atau mengirimkan dokumentasi yang adil akan sangat baik. Terima kasih!