- Posts: 128
- Thank you received: 2
Change fields shown for serials on front end vendor view
10 years 1 month ago #251649
by sabroso
Change fields shown for serials on front end vendor view was created by sabroso
-- HikaShop version -- : 2.6.4
-- HikaSerial version -- : 1.10.4
-- Joomla version -- : 3.6.0
-- PHP version -- : 5.5
Hi there,
I'm trying to change the fields that are shown in the views stats.php and export.php whithin hikaserial/serialsmarket
By default this fields are shown for each row:
I want to remove ["user_email"] and add two order custom fields I have created “order_cust1” and “order_cust2”.
I can do this with a view override but the problem is that I need to do a database query per row/serial. So if I had 1,000 serials there would be 1,000 database queries which I think it is not ideal.
I can see the query performed is the following:
Is there a way I can modify the query via a plugin event?
Many thanks
-- HikaSerial version -- : 1.10.4
-- Joomla version -- : 3.6.0
-- PHP version -- : 5.5
Hi there,
I'm trying to change the fields that are shown in the views stats.php and export.php whithin hikaserial/serialsmarket
By default this fields are shown for each row:
Code:
["serial_data"]=> string(12) "fEwjmVJV5VVB" ["serial_status"]=> string(8) "assigned" ["user_email"]=> string(21) "mail@mail.com" ["order_number"]=> string(4) "B3S9"
I want to remove ["user_email"] and add two order custom fields I have created “order_cust1” and “order_cust2”.
I can do this with a view override but the problem is that I need to do a database query per row/serial. So if I had 1,000 serials there would be 1,000 database queries which I think it is not ideal.
I can see the query performed is the following:
Code:
SELECT serial.serial_data,serial.serial_status,hk_user.user_email,hk_order.order_number FROM #__hikaserial_serial AS serial INNER JOIN #__hikashop_order AS hk_order ON serial.serial_order_id = hk_order.order_parent_id INNER JOIN #__hikashop_order_product AS hk_order_product ON (hk_order_product.order_product_id = serial.serial_order_product_id AND hk_order_product.order_id = hk_order.order_parent_id) LEFT JOIN #__hikashop_user AS hk_user ON hk_order.order_user_id = hk_user.user_id WHERE (serial.serial_pack_id = 2) AND (hk_order.order_type = 'subsale') AND (hk_order.order_vendor_id = 2) AND (hk_order_product.product_id = 3)
Is there a way I can modify the query via a plugin event?
Many thanks
Please Log in or Create an account to join the conversation.
10 years 1 month ago #251654
by Jerome
Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.
Replied by Jerome on topic Change fields shown for serials on front end vendor view
Hi,
It is something we can add into the next HikaSerial release.
In the "serialmarket/view.html.php" file, at the end of the export function, just before the query is made, it it possible to add such content
So you will have a trigger that you can use in a plugin.
Please note that it will also require some modifications int the function to provide "named" array.
Like replacing
By
So in the plugin you check easily the different elements, knowing which table is already link, etc.
Regards,
It is something we can add into the next HikaSerial release.
In the "serialmarket/view.html.php" file, at the end of the export function, just before the query is made, it it possible to add such content
Code:
JPluginHelper::importPlugin('hikashop');
JPluginHelper::importPlugin('hikaserial');
JPluginHelper::importPlugin('hikamarket');
$dispatcher = JDispatcher::getInstance();
$dispatcher->trigger('onBeforeMarketSerialExport', array($pack_id, $product_id, $target_vendor_id, &$select, &$tables, &$filters));
Please note that it will also require some modifications int the function to provide "named" array.
Like replacing
Code:
$select = array(
'serial.serial_data',
'serial.serial_status'
);
Code:
$select = array(
'serial_data' => 'serial.serial_data',
'serial_status' => 'serial.serial_status'
);
Regards,
Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.
Please Log in or Create an account to join the conversation.
10 years 1 month ago - 10 years 1 month ago #251691
by sabroso
Replied by sabroso on topic Change fields shown for serials on front end vendor view
Thank you very much, the trigger is enough for now since I know the order of the field I want to swap and then add some additional ones.
This sorts me out for export.php but, would it be possible to do something similar for stats.php? I need to get a couple of custom fields from the hk_order table for each of the serials.
So when looping through
I would have access to
from the override file for stats.php
Would this be possible with another trigger? where would it go?
Many thanks!
This sorts me out for export.php but, would it be possible to do something similar for stats.php? I need to get a couple of custom fields from the hk_order table for each of the serials.
So when looping through
Code:
foreach ($this->serials as $serial)
I would have access to
Code:
$serial->order_custom1
$serial->order_custom2
from the override file for stats.php
Would this be possible with another trigger? where would it go?
Many thanks!
Last edit: 10 years 1 month ago by sabroso.
Please Log in or Create an account to join the conversation.
10 years 1 month ago #251704
by Jerome
Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.
Replied by Jerome on topic Change fields shown for serials on front end vendor view
Hi,
In the stats view, you have access to " $this->orders ".
That is how the order number can be displayed
You can load your custom field directly in a local variable
Regards,
In the stats view, you have access to " $this->orders ".
That is how the order number can be displayed
Code:
$this->orders[ (int)$serial->order_id ]->order_number
Code:
$query = 'SELECT hk_order.order_id, hk_order.order_custom1, hk_order.order_custom2 FROM '.hikaserial::table('shop.order').' AS hk_order WHERE hk_order.order_id IN ('.implode(',', array_keys($this->orders)).')';
$this->db->setQuery($query);
$my_orders = $this->db->loadObjectList('order_id');
Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.
Please Log in or Create an account to join the conversation.
10 years 1 month ago - 10 years 1 month ago #251755
by sabroso
Replied by sabroso on topic Change fields shown for serials on front end vendor view
Brilliant, thank you very much.
Please add the previously discussed event trigger into view.html.php in the export function for the next Hikaserial version.
Cheers!
Please add the previously discussed event trigger into view.html.php in the export function for the next Hikaserial version.
Cheers!
Last edit: 10 years 1 month ago by sabroso.
Please Log in or Create an account to join the conversation.
10 years 1 month ago #251767
by Jerome
Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.
Replied by Jerome on topic Change fields shown for serials on front end vendor view
Hi,
Sure, the patch for trigger has been already committed yesterday.
Regards,
Sure, the patch for trigger has been already committed yesterday.
Regards,
Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.
Please Log in or Create an account to join the conversation.
Moderators: Obsidev
Time to create page: 0.062 seconds