Results 1 to 2 of 2
  1. #1
    Join Date
    Jan 2008
    Posts
    26
    Plugin Contributions
    1

    Default Guide: How to add sorting for featured products

    Sorry if this is posted in the wrong forum, feel free to move it...
    I didn't want to upload this as a contrib yet because I have never done one before, and have only been working with zen cart for a couple weeks.
    Also I really suck at creating instructions/documentation
    So if anyone wants to rewrite this, or make it a contrib, feel free to (but credit would be nice)

    What this does:
    Adds a sort field to featured products. It works like how you can sort regular categories and products.



    Instructions
    Like always, BACK UP your store and database before attempting.
    I did this on a stock zen cart, but maybe I missed something or made a mistake as I have only worked with zen for a few weeks.

    Step 1: Run this query on the database
    PHP Code:
    ALTER TABLE `featuredADD `sort_orderINT11 NOT NULL DEFAULT '0' AFTER `featured_date_available` ; 

    Step 2: In /admin/includes/languages/featured.php
    Add these 2 defines
    PHP Code:
    define('TABLE_HEADING_SORT_ORDER','Sort');
    define('TEXT_FEATURED_SORT_ORDER''Sort Order:'); 
    Step 3: In /admin/featured.php
    At around line 44 in case 'insert' statement
    After
    PHP Code:
    $expires_date = ((zen_db_prepare_input($_POST['end']) == '') ? '0001-01-01' zen_date_raw($_POST['end'])); 
    Add
    PHP Code:
    $sort_order zen_db_prepare_input($_POST['sort_order']); 

    Change
    PHP Code:
    $db->Execute("insert into " TABLE_FEATURED "
                        (products_id, featured_date_added, expires_date, status, featured_date_available)
                        values ('" 
    . (int)$products_id "',
                                now(),
                                '" 
    zen_db_input($expires_date) . "', '1', '" zen_db_input($featured_date_available) . "')"); 
    To

    PHP Code:
    $db->Execute("insert into " TABLE_FEATURED "
                        (products_id, featured_date_added, expires_date, status, featured_date_available, sort_order)
                        values ('" 
    . (int)$products_id "',
                                now(),
                                '" 
    zen_db_input($expires_date) . "', '1', '" zen_db_input($featured_date_available) . "', '" zen_db_input($sort_order) . "')"); 

    At around line 64 in case 'update' statement

    After
    PHP Code:
    $expires_date = ((zen_db_prepare_input($_POST['end']) == '') ? '0001-01-01' zen_date_raw($_POST['end'])); 
    Add
    PHP Code:
    $sort_order zen_db_prepare_input($_POST['sort_order']); 

    In the
    PHP Code:
     $db->Execute("update " TABLE_FEATURED "
                          set featured_last_modified = now(),
                              expires_date = '" 
    zen_db_input($expires_date) . "',
                              featured_date_available = '" 
    zen_db_input($featured_date_available) . "',
                              sort_order = '" 
    zen_db_input($sort_order) . "'
                          where featured_id = '" 
    . (int)$featured_id "'"); 
    add the sort_order field like it is shown in the statement

    At around line 219

    PHP Code:
     $product $db->Execute("select p.products_id, pd.products_name, p.products_price, p.products_priced_by_attribute,
                                          f.expires_date, f.featured_date_available, f.sort_order 
    Add f.sort_order like shown


    Around line 277
    After
    PHP Code:
    <tr>
                <td class="main"><?php echo TEXT_FEATURED_EXPIRES_DATE?>&nbsp;</td>
                <td class="main"><script language="javascript">EndDate.writeControl(); EndDate.dateFormat="<?php echo DATE_FORMAT_SPIFFYCAL?>";</script></td>
              </tr>
    Add

    PHP Code:
    <tr>
                  <td class="main"><?php echo TEXT_FEATURED_SORT_ORDER;?>&nbsp;</td>
                  <td><?php echo zen_draw_input_field("sort_order"$fInfo->sort_order"size = 3"?></td>
    </tr>
    Around line 304
    Add
    PHP Code:
    <td class="dataTableHeadingContent" align="center"><?php echo TABLE_HEADING_SORT_ORDER?></td>
    Around line 316 change
    PHP Code:
    $order_by " order by pd.products_name "
    to
    PHP Code:
    $order_by " order by f.sort_order "
    Around line 319 change
    PHP Code:
    $featured_query_raw "select p.products_id, pd.products_name, p.products_model, p.products_price, p.products_priced_by_attribute, f.featured_id, f.featured_date_added, f.featured_last_modified, f.expires_date, f.date_status_change, f.status, f.featured_date_available from " TABLE_PRODUCTS " p, " TABLE_FEATURED " f, " TABLE_PRODUCTS_DESCRIPTION " pd where p.products_id = pd.products_id and pd.language_id = '" . (int)$_SESSION['languages_id'] . "' and p.products_id = f.products_id"  $search $order_by
    To
    PHP Code:
    $featured_query_raw "select p.products_id, pd.products_name, p.products_model, p.products_price, p.products_priced_by_attribute, f.featured_id, f.featured_date_added, f.featured_last_modified, f.expires_date, f.date_status_change, f.status, f.featured_date_available, f.sort_order from " TABLE_PRODUCTS " p, " TABLE_FEATURED " f, " TABLE_PRODUCTS_DESCRIPTION " pd where p.products_id = pd.products_id and pd.language_id = '" . (int)$_SESSION['languages_id'] . "' and p.products_id = f.products_id"  $search $order_by
    (Only added ", f.sort_order" to select)


    Around line 353
    Add
    PHP Code:
    <td class="dataTableContent" align="center"><?php echo $featured->fields['sort_order'];?></td>
    right before
    PHP Code:
    <td class="dataTableContent" align="right">
                      <?php echo '<a href="' zen_href_link(FILENAME_FEATURED'page=' $_GET['page'] . '&fID=' 
    )

    Step 4:In /includes/modules/YOUR_TEMPLATE/featured_products.php

    At the end of

    PHP Code:
    $featured_products_query "select distinct p.products_id, p.products_image, pd.products_name, p.master_categories_id
                               from (" 
    TABLE_PRODUCTS " p
                               left join " 
    TABLE_FEATURED " f on p.products_id = f.products_id
                               left join " 
    TABLE_PRODUCTS_DESCRIPTION " pd on p.products_id = pd.products_id )
                               where p.products_id = f.products_id
                               and p.products_id = pd.products_id
                               and p.products_status = 1 and f.status = 1
                               and pd.language_id = '" 
    . (int)$_SESSION['languages_id'] . "' ORDER by f.sort_order"
    Add the "order by f.sort_order" like shown


    At the end of
    PHP Code:
    $featured_products_query "select distinct p.products_id, p.products_image, pd.products_name, p.master_categories_id
                                    from (" 
    TABLE_PRODUCTS " p
                                    left join " 
    TABLE_FEATURED " f on p.products_id = f.products_id
                                    left join " 
    TABLE_PRODUCTS_DESCRIPTION " pd on p.products_id = pd.products_id)
                                    where p.products_id = f.products_id
                                    and p.products_id = pd.products_id
                                    and p.products_status = 1 and f.status = 1
                                    and pd.language_id = '" 
    . (int)$_SESSION['languages_id'] . "'
                                    and p.products_id in (" 
    $list_of_products ") order by f.sort_order"
    Add the "order by f.sort_order" like shown

    Change
    PHP Code:
    $featured_products $db->ExecuteRandomMulti($featured_products_queryMAX_DISPLAY_SEARCH_RESULTS_FEATURED); 
    To
    PHP Code:
    $featured_products $db->Execute($featured_products_queryMAX_DISPLAY_SEARCH_RESULTS_FEATURED); 
    Change
    PHP Code:
    $featured_products->MoveNextRandom(); 
    to
    PHP Code:
    $featured_products->MoveNext(); 
    Step 5:In \includes\modules\pages\featured_products\header_php.php
    ****NOTE I dont know how to get this working with templates.
    I am relatively new to zen cart, so couldn't figure out where the template folder whould go


    change
    PHP Code:
    $featured_products_query_raw "SELECT p.products_id, p.products_type, pd.products_name, p.products_image, p.products_price, p.products_tax_class_id, p.products_date_added, m.manufacturers_name, p.products_model, p.products_quantity, p.products_weight, p.product_is_call,
                                      p.product_is_always_free_shipping, p.products_qty_box_status,
                                      p.master_categories_id
                                      FROM (" 
    TABLE_PRODUCTS " p
                                      LEFT JOIN " 
    TABLE_MANUFACTURERS " m on (p.manufacturers_id = m.manufacturers_id), " .
    TABLE_PRODUCTS_DESCRIPTION " pd
                                      LEFT JOIN " 
    TABLE_FEATURED " f on pd.products_id = f.products_id )
                                      WHERE p.products_status = 1 and p.products_id = f.products_id and f.status = 1
                                      AND p.products_id = pd.products_id and pd.language_id = :languagesID " 
    .
    $order_by
    To


    PHP Code:
    $featured_products_query_raw "SELECT p.products_id, p.products_type, pd.products_name, p.products_image, p.products_price, p.products_tax_class_id, p.products_date_added, m.manufacturers_name, p.products_model, p.products_quantity, p.products_weight, p.product_is_call,
                                      p.product_is_always_free_shipping, p.products_qty_box_status,
                                      p.master_categories_id
                                      FROM (" 
    TABLE_PRODUCTS " p
                                      LEFT JOIN " 
    TABLE_MANUFACTURERS " m on (p.manufacturers_id = m.manufacturers_id), " .
    TABLE_PRODUCTS_DESCRIPTION " pd
                                      LEFT JOIN " 
    TABLE_FEATURED " f on pd.products_id = f.products_id )
                                      WHERE p.products_status = 1 and p.products_id = f.products_id and f.status = 1
                                      AND p.products_id = pd.products_id and pd.language_id = :languagesID order by f.sort_order "

    NOTE*** I got rid of the $order_by variable, because I didn't know if it effected anything else, so put it straight into the query

    I think that should be it....
    I haven't tested it with featured products side boxes because I don't use it

  2. #2
    Join Date
    Dec 2005
    Location
    SWFL
    Posts
    469
    Plugin Contributions
    0

    Default Re: Guide: How to add sorting for featured products

    Thank you for posting that!

    Mods -- would it be possible to get this either stickied or added to the FAQs for reference?

    Thanks!
    Lesli in SW Florida ~ writer, teacher, and dodging hurricanes!

 

 

Similar Threads

  1. How to add featured products to ez-pages?
    By monkeyboy in forum Templates, Stylesheets, Page Layout
    Replies: 2
    Last Post: 24 Nov 2009, 08:06 PM
  2. Add a sticker for featured products
    By hengxi in forum Setting Up Categories, Products, Attributes
    Replies: 1
    Last Post: 6 Sep 2009, 04:40 AM
  3. Featured Products Sorting
    By Vladimir7 in forum All Other Contributions/Addons
    Replies: 4
    Last Post: 12 Mar 2009, 05:24 AM
  4. Sorting Featured Products
    By Steve W in forum Setting Up Categories, Products, Attributes
    Replies: 5
    Last Post: 12 Jan 2009, 12:13 AM
  5. featured items sorting mod not sorting
    By elishama3 in forum All Other Contributions/Addons
    Replies: 0
    Last Post: 27 Mar 2008, 04:39 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
disjunctive-egg
Zen-Cart, Internet Selling Services, Klamath Falls, OR