[Virtuemart] Customize Order List search keywords

The default Order List search keyword doesn't check for customer's email address, billing addresses, phone numbers, Custom Message... To include all these:

In /administrator/components/com_virtuemart/html/order.order_list.php

locate this section

if (!empty($keyword)) {
        $q  .= "(#__{vm}_orders.order_id LIKE '%$keyword%' ";
        $q .= "OR #__{vm}_orders.order_status LIKE '%$keyword%' ";
        $q .= "OR first_name LIKE '%$keyword%' ";
        $q .= "OR last_name LIKE '%$keyword%' ";
        $q .= "OR CONCAT(`first_name`, ' ', `last_name`) LIKE '%$keyword%' ";

The add the keywords that you wish to include.

Below is an example code. The codes are pretty self-explanatory.
$list  = "SELECT #__{vm}_orders.order_id,order_status, #__{vm}_orders.cdate,#__{vm}_orders.mdate,order_total,order_currency,#__{vm}_orders.user_id,";
$list .= "first_name, last_name, user_email, address_1, address_2, city, phone_1, phone_2, zip, customer_note ";
$list .= "FROM #__{vm}_orders, #__{vm}_order_user_info, WHERE ";
$count = "SELECT count(*) as num_rows FROM #__{vm}_orders, #__{vm}_order_user_info WHERE ";
$q = "address_type = 'BT' AND ";
if (!empty($keyword)) {
        $q  .= "(#__{vm}_orders.order_id LIKE '%$keyword%' ";
        $q .= "OR #__{vm}_orders.order_status LIKE '%$keyword%' ";
        $q .= "OR first_name LIKE '%$keyword%' ";
        $q .= "OR last_name LIKE '%$keyword%' ";
        $q .= "OR CONCAT(`first_name`, ' ', `last_name`) LIKE '%$keyword%' ";
        $q .= "OR user_email LIKE '%$keyword%' ";
        $q .= "OR address_1 LIKE '%$keyword%' ";
        $q .= "OR address_2 LIKE '%$keyword%' ";
        $q .= "OR city LIKE '%$keyword%' ";
        $q .= "OR phone_1 LIKE '%$keyword%' ";
        $q .= "OR phone_2 LIKE '%$keyword%' ";
        $q .= "OR zip LIKE '%$keyword%' ";
        $q .= "OR customer_note LIKE '%$keyword%' ";
        $q .= ") AND ";
}
if (!empty($show)) {
 $q .= "order_status = '$show' AND ";
}
$q .= "(#__{vm}_orders.order_id=#__{vm}_order_user_info.order_id) ";
$q .= "AND #__{vm}_orders.vendor_id='".$_SESSION['ps_vendor_id']."' ";
$q .= "ORDER BY #__{vm}_orders.cdate DESC ";
$list .= $q . " LIMIT $limitstart, " . $limit;
$count .= $q;

Enjoy.

Comments

  1. oh man you are amazing thnx
    put i have a question ?
    how can i view the address_1 or product_name or vendors_name in Order List page

    ReplyDelete
  2. @mezo

    Glad that this article helped you.

    Regarding you question, I've posted another article. Feel free to check it out.

    :)

    ReplyDelete

Post a Comment

Popular posts from this blog

[Azure Websites PHP] Cross Domain request results in blank response page after Preflight HTTP OPTIONS

[Magento] Create Contact Form with Dynamic Recipient