hachaonline.com Posted September 26, 2007 Share Posted September 26, 2007 I would like to create another "Per Item" shipping module since I want to have both "Shipping with insurance" and just shipping. I have tried copying/renaming the item.php module but it doesn't work. I have also tried the Table Rate module however it doesn't multiply the shipping per item. Anyone know how to do this? I'm sure there's a simple solution. Quote Link to comment Share on other sites More sharing options...
Jack_mcs Posted September 26, 2007 Share Posted September 26, 2007 When duplicating a shipping module, you need to copy/rename the module files in the includes/modules/shipping and english/modules/shipping directories. Then you need to edit those files and rename the name of the module within the files, paying attention to case. Let's say you copied the table module and renamed it to tablenew. At the beginning of the first file is class table. That needs to be changed to class tablenew. Farther down you will see MODULE_SHIPPING_TABLE_TEXT_TITLE. That needs to be changed to MODULE_SHIPPING_TABLENEW_TEXT_TITLE. Change all such instances, being careful not to change actual database table names. Then do the same in the other file. Install the new module in admin and it should be working. Jack Quote Support Links: For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc. All of My Addons Get the latest versions of my addons Recommended SEO Addons Link to comment Share on other sites More sharing options...
alex_hill Posted September 28, 2007 Share Posted September 28, 2007 When duplicating a shipping module, you need to copy/rename the module files in the includes/modules/shipping and english/modules/shipping directories. Then you need to edit those files and rename the name of the module within the files, paying attention to case. Let's say you copied the table module and renamed it to tablenew. At the beginning of the first file is class table. That needs to be changed to class tablenew. Farther down you will see MODULE_SHIPPING_TABLE_TEXT_TITLE. That needs to be changed to MODULE_SHIPPING_TABLENEW_TEXT_TITLE. Change all such instances, being careful not to change actual database table names. Then do the same in the other file. Install the new module in admin and it should be working. Jack I tried these exact steps, with the table module, but it doesnt seem to load the text. When I list the available modules in admin, the one for my new module is a blank row, and the install button wont work. I have checked that the language file is the same name as the module file. Any suggestions? Thanks Quote Link to comment Share on other sites More sharing options...
HDLLC Posted September 30, 2007 Share Posted September 30, 2007 I tried these exact steps, with the table module, but it doesnt seem to load the text. When I list the available modules in admin, the one for my new module is a blank row, and the install button wont work. I have checked that the language file is the same name as the module file. Any suggestions? Thanks Thanks for the information, Jack! Much appreciated! I too am having some difficulties with the files... Do we simply look for every instance of "table" and change every one that is not a db table name? I've tried a couple of different variations... Nothing seems to work. I keep getting errors in the admin... Do you, by chance, have a changed file that we can look at for reference? Thanks, in advance! --Jeff Quote Link to comment Share on other sites More sharing options...
HDLLC Posted September 30, 2007 Share Posted September 30, 2007 Thanks for the information, Jack! Much appreciated! I too am having some difficulties with the files... Do we simply look for every instance of "table" and change every one that is not a db table name? I've tried a couple of different variations... Nothing seems to work. I keep getting errors in the admin... Do you, by chance, have a changed file that we can look at for reference? Thanks, in advance! --Jeff Okay - I have it. I'll post the file that works for reference. Look for instances of table2 and TABLE2 - where appropriate. Case is important - as Jack has stated - so pay close attention. Best wishes! --Jeff <?php /* $Id: table.php,v 1.27 2003/02/05 22:41:52 hpdl Exp $ osCommerce, Open Source E-Commerce Solutions [url="http://www.oscommerce.com"]http://www.oscommerce.com[/url] Copyright © 2003 osCommerce Released under the GNU General Public License */ class table2 { var $code, $title, $description, $icon, $enabled; // class constructor function table2() { global $order; $this->code = 'table2'; $this->title = MODULE_SHIPPING_TABLE2_TEXT_TITLE; $this->description = MODULE_SHIPPING_TABLE2_TEXT_DESCRIPTION; $this->sort_order = MODULE_SHIPPING_TABLE2_SORT_ORDER; $this->icon = ''; $this->tax_class = MODULE_SHIPPING_TABLE2_TAX_CLASS; $this->enabled = ((MODULE_SHIPPING_TABLE2_STATUS == 'True') ? true : false); if ( ($this->enabled == true) && ((int)MODULE_SHIPPING_TABLE2_ZONE > 0) ) { $check_flag = false; $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_SHIPPING_TABLE2_ZONE . "' and zone_country_id = '" . $order->delivery['country']['id'] . "' order by zone_id"); while ($check = tep_db_fetch_array($check_query)) { if ($check['zone_id'] < 1) { $check_flag = true; break; } elseif ($check['zone_id'] == $order->delivery['zone_id']) { $check_flag = true; break; } } if ($check_flag == false) { $this->enabled = false; } } } // class methods function quote($method = '') { global $order, $cart, $shipping_weight, $shipping_num_boxes; if (MODULE_SHIPPING_TABLE2_MODE == 'price') { $order_total = $cart->show_total(); } else { $order_total = $shipping_weight; } $table_cost = split("[:,]" , MODULE_SHIPPING_TABLE2_COST); $size = sizeof($table_cost); for ($i=0, $n=$size; $i<$n; $i+=2) { if ($order_total <= $table_cost[$i]) { $shipping = $table_cost[$i+1]; break; } } if (MODULE_SHIPPING_TABLE2_MODE == 'weight') { $shipping = $shipping * $shipping_num_boxes; } $this->quotes = array('id' => $this->code, 'module' => MODULE_SHIPPING_TABLE2_TEXT_TITLE, 'methods' => array(array('id' => $this->code, 'title' => MODULE_SHIPPING_TABLE2_TEXT_WAY, 'cost' => $shipping + MODULE_SHIPPING_TABLE2_HANDLING))); if ($this->tax_class > 0) { $this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']); } if (tep_not_null($this->icon)) $this->quotes['icon'] = tep_image($this->icon, $this->title); return $this->quotes; } function check() { if (!isset($this->_check)) { $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_TABLE2_STATUS'"); $this->_check = tep_db_num_rows($check_query); } return $this->_check; } function install() { tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('Enable Table Method', 'MODULE_SHIPPING_TABLE2_STATUS', 'True', 'Do you want to offer table rate shipping?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Shipping Table', 'MODULE_SHIPPING_TABLE2_COST', '25:8.50,50:5.50,10000:0.00', 'The shipping cost is based on the total cost or weight of items. Example: 25:8.50,50:5.50,etc.. Up to 25 charge 8.50, from there to 50 charge 5.50, etc', '6', '0', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Table Method', 'MODULE_SHIPPING_TABLE2_MODE', 'weight', 'The shipping cost is based on the order total or the total weight of the items ordered.', '6', '0', 'tep_cfg_select_option(array(\'weight\', \'price\'), ', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Handling Fee', 'MODULE_SHIPPING_TABLE2_HANDLING', '0', 'Handling fee for this shipping method.', '6', '0', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Tax Class', 'MODULE_SHIPPING_TABLE2_TAX_CLASS', '0', 'Use the following tax class on the shipping fee.', '6', '0', 'tep_get_tax_class_title', 'tep_cfg_pull_down_tax_classes(', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Shipping Zone', 'MODULE_SHIPPING_TABLE2_ZONE', '0', 'If a zone is selected, only enable this shipping method for that zone.', '6', '0', 'tep_get_zone_class_title', 'tep_cfg_pull_down_zone_classes(', now())"); tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_SHIPPING_TABLE2_SORT_ORDER', '0', 'Sort order of display.', '6', '0', now())"); } function remove() { tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')"); } function keys() { return array('MODULE_SHIPPING_TABLE2_STATUS', 'MODULE_SHIPPING_TABLE2_COST', 'MODULE_SHIPPING_TABLE2_MODE', 'MODULE_SHIPPING_TABLE2_HANDLING', 'MODULE_SHIPPING_TABLE2_TAX_CLASS', 'MODULE_SHIPPING_TABLE2_ZONE', 'MODULE_SHIPPING_TABLE2_SORT_ORDER'); } } ?> and then in the languages/english/modules/shipping: <?php /* $Id: table.php,v 1.5 2002/11/19 01:48:08 dgw_ Exp $ osCommerce, Open Source E-Commerce Solutions [url="http://www.oscommerce.com"]http://www.oscommerce.com[/url] Copyright © 2002 osCommerce Released under the GNU General Public License */ define('MODULE_SHIPPING_TABLE2_TEXT_TITLE', 'Next Day'); define('MODULE_SHIPPING_TABLE2_TEXT_DESCRIPTION', 'Next Day'); define('MODULE_SHIPPING_TABLE2_TEXT_WAY', 'Best Way'); define('MODULE_SHIPPING_TABLE2_TEXT_WEIGHT', 'Weight'); define('MODULE_SHIPPING_TABLE2_TEXT_AMOUNT', 'Amount'); ?> Quote Link to comment Share on other sites More sharing options...
hachaonline.com Posted October 1, 2007 Author Share Posted October 1, 2007 Thanks for the help guys. I will try it out soon to see if it works. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.