Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

bksbeat

Members
  • Posts

    252
  • Joined

  • Last visited

Posts posted by bksbeat

  1. This is complicated to explain but I will try my best, but I honestly not sure how to resolve this. Two Years ago I was encountering "user exceed maximum sql queries" issues and I had hired someone, who creates multiple database users, hence creating a loop which resolved the problem. Then in Jan 2002 we also upgraded to php ver 7. My website has been working perfectly for months? I have been out of the country the last month and today I was trying to add new products to admin for the first time in a few months.  Every few minutes I was getting a "cannot connect to database server" issue. If I refresh the screen, it fixes the issue. This is happening on both my admin and my actual website. I have been on the phone for the past 2 hours with my hosting company, which escalated it to their tech group and they sent me back this, implying that it is not their problem but a oscommerce issue? The fact that I never had this pronlem for months and 100% certain that noone has touched my files over the last few months, I am pretty certain that the hosting company has done something. But at this point all I am trying to do is fix the problem. Below is what they sent me back. If anyone can help me, it will be much appreciated....

     

    Hello Gary,

    Thank you for taking the time to speak with me today. As we discussed, here ae the details of what needs to be done:

    CX created website using oscommerce application. In the file /public_html/admin/includes/configure.php I am able to following:

    // define our database connection
      define('DB_SERVER', 'nontando.netfirmsmysql.com'); // eg, localhost - should not be empty for productive servers
      define('DB_SERVER_USERNAME', $dbase_user);
      define('DB_SERVER_PASSWORD', $dbase_pass);
      define('DB_DATABASE', 'john');
      define('USE_PCONNECT', 'false'); // use persistent connections?
      define('STORE_SESSIONS', 'mysql'); // leave empty '' for default handler or set to 'mysql'
    ?>

    But in that file in another location he defined DB username and password in loop condition. Error logs shows:

    20221024T143331: www.nontando.com/index.php
    PHP Warning:  mysqli_connect(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /hermes/bosnacweb05/bosnacweb05aw/b240/nf.nontando/public_html/includes/functions/database.php on line 16
    PHP Warning:  mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: Name

    Thank you very much for your patience and understanding.
     

     

  2. Had this add-on working 100% for years. Past few months had 0 records loading into google shopping so I have just installed googlefeeder 3.4. It is loading and working but unfortunately with no records again loading into google shopping. Just checked merchant center and am now getting some more details re. my errors.

    Shopping: 0 / 1,056 successful

    Missing tax information: 1056 errors

    Missing shipping information: 1056 errors

    Item warnings: 1056 errors Missing recommended attribute: google product category: 1056 warnings

    Insufficient product identifiers: Missing 2 out of 3 attributes (gtin, brand, mpn) 1056 errors

     

    I presume the "fixes" lie with googlefeeder.php - current code

    <?php
    //  Title: Google Base Data Feeder
    //  Version: 3.3 by Jack York (aka Jack_mcs) - www.oscommerce-solution.com
    //  google feed requirements - http://www.google.com/support/merchants/bin/answer.py?hl=en&answer=188494
    
    chdir('../');
    include_once 'includes/application_top.php';
    $use_mysqli = false; 
    if (function_exists('tep_get_version')) { 
       $ver = tep_get_version();
       if (isset($ver[4]) && $ver[4] > 1) { //only versions after 2.3.1 use mysqli
          $use_mysqli = true;
       }
    } 
    $myfetch_mysql = ($use_mysqli ? mysqli_fetch_object : mysql_fetch_object);
     
    /*************** BEGIN MASTER SETTINGS ******************/
    
    define('SEO_ENABLED','true');    //Change to 'false' to disable if Ultimate SEO URLs is not installed
    define('FEEDNAME', 'nontando.txt');       //from your googlebase account
    define('DOMAIN_NAME', 'www.nontando.com'); //your correct domain name (don't include www unless it is used but do include the shops directory)
    define('FTP_USERNAME', 'nontando'); //created from within your googlebase account
    define('FTP_PASSWORD', 'b8WEBWw9nbinbACvf'); //created from within your googlebase account
    define('CONVERT_CURRENCY', '0'); //set to 0 to disable - only needed if a feed in a difference currecny is required
    define('CURRENCY_TYPE', 'USD');  //(eg. USD, EUR, GBP)
    define('DEFAULT_LANGUAGE_ID', $languages_id);   //Change this to the id of your language if different than what is set as the default language in admin
    define('QUOTES_CATEGORY_NAME',''); //if the Quotes contribution is installed, enter the name of the quotes category here
    define('SKIP_CATEGORY_ID', ''); //don't list any categories (or their products) listed here - separate each id by a comma
    define('SKIP_PRODUCT_ID', ''); //don't list any products listed here - separate each id by a comma
    
    /*************** OPTIONS - IF ENABLED, ALSO SET THE SIMILAR OPTION FARTHER DOWN ******************/
    define('OPTIONS_ENABLED', 1);
    define('OPTIONS_ENABLED_AGE_RANGE', 0);
    define('OPTIONS_ENABLED_ATTRIBUTES', 0);
    define('OPTIONS_ENABLED_BRAND', 1);            //if set, see options for this setting below
    define('OPTIONS_ENABLED_CONDITION', 1);
    define('OPTIONS_ENABLED_CURRENCY', 0);
    define('OPTIONS_ENABLED_EXPIRATION', 1);
    define('OPTIONS_ENABLED_FEED_LANGUAGE', 0);
    define('OPTIONS_ENABLED_GTIN', 0);              //if set, a database field named products_gtin must exist
    define('OPTIONS_ENABLED_GOOGLE_PRODUCT_CATEGORY', 0); //http://www.google.com/support/merchants/bin/answer.py?answer=160081
    define('OPTIONS_ENABLED_GOOGLE_UTM', 0);
    define('OPTIONS_ENABLED_IDENTIFIER_EXISTS', 1); //set to 0 if required - https://support.google.com/merchants/answer/188494?hl=en
    define('OPTIONS_ENABLED_ISBN', 0);              //if set, a database field named products_isbn must exist
    define('OPTIONS_ENABLED_MADE_IN', 0);
    define('OPTIONS_ENABLED_MPN', 1);               //if set, see options for this setting below
    define('OPTIONS_ENABLED_PRODUCT_MODEL', 0);     //displays the product model
    define('OPTIONS_ENABLED_PRODUCT_TYPE', 1);
    define('OPTIONS_ENABLED_SHIPPING', 0);
    define('OPTIONS_ENABLED_INCLUDE_TAX', 0);       //0 = no tax, 1 = uses google method, 2 = UK Vat
    define('OPTIONS_ENABLED_UPC', 0);               //if set, a database field named products_upc must exist
    define('OPTIONS_ENABLED_WEIGHT', 0);
    
    //some of the following only work if the matching option is enabled above.
    define('OPTIONS_AGE_RANGE', '20-90 years');
    
    define('OPTIONS_AVAILABILITY', 'quantity');     //in stock - Include this value if you are certain that it will ship (or be in-transit to the customer) in 3 business days or less.
                                                    //available for order - Include this value if it will take 4 or more business days to ship it to the customer.
                                                    //out of stock - You’re currently not accepting orders for this product.
                                                    //preorder - You are taking orders for this product, but it’s not yet been released.
                                                    //if empty (no entry), the data will be loaded from the database. A field in the products description table named products_availability is required
                                                    //if "quantity," the field will be popuplated via the quantity: 0 or less = out of stock, greater than 0 = in stock
                                                    //if "status," the field will be popuplated via the status field. in or out of stock
    
    define('OPTIONS_BRAND', 'name');                //leave blank to load from the database field named products_brand, set to "name"  to substitute the products name, manu to substitute the manufactueres name or model to substitute the products model
    define('OPTIONS_CONDITION', 'new');             //possible entries are New, Refurbished, Used or blank, which loads from the database field named products_condition
    define('OPTIONS_CURRENCY', 'USD');
    define('OPTIONS_CURRENCY_THOUSANDS_POINT', ','); //this is the thousands point as in $1,000.
    define('OPTIONS_DATE_FORMAT', 'Y-m-d');         //change how the date is formatted
    define('OPTIONS_FEED_LANGUAGE', 'en');
    define('OPTIONS_GOOGLE_UTM', '?utm_source=GoogleBase1&utm_medium=BaseFeed1&utm_campaign=products'); //see http://www.google.com/support/googleanalytics/bin/answer.py?hl=en&answer=55578
    define('OPTIONS_GOOGLE_PRODUCT_CATEGORY', '');  //enter db to load from a database field named google_product_category enter or enter a specific google category - see taxomy - http://www.google.com/support/merchants/bin/answer.py?answer=160081
    define('OPTIONS_GTIN', '');
    define('OPTIONS_ISBN', '');
    define('OPTIONS_MADE_IN', 'US');
    define('OPTIONS_MPN', 'model');                       //leave blank to load from the database field named products_mpn, set to "name"  to substitute the products name, manu to substitute the manufactueres name or model to substitute the products model
    define('OPTIONS_PRODUCT_TYPE', ''); //full means the full category path (i.e., hardware,printers), anything else, or blank, means just the products category (i.e., printers)
    
    //the following is for the shipping override option - enter multiple values separated by a comma
    //Format entries follow. A colon must be present for each field, whether it is entered or not.
    // COUNTRY - OPTIONAL - If country isn't included, we'll assume the shipping price applies to the target country of the item. If region isn't included, the shipping price will apply across the entire country.
    // REGION  - OPTIONAL - blank for entire country, otherwise, us two-letter State (CA), full zip code (90210) or wildcard zip code (902*)
    // SERVICE - OPTIONAL - The service class or delivery speed, i.e. ground
    // PRICE   - REQUIRED - Fixed shipping price (assumes the same currency as the price attribute)
    define('OPTIONS_SHIPPING_STRING', 'US:FL:Ground:7.00'); //says charge shipping to US for residents of Florida at 5% and don't apply tax to shipping
    
    define('OPTIONS_TAX_RATE' , '20.0'); //default = 0 (e.g. for 20.0% tax use "$taxRate = 20.0;")  //only used in the next line
    define('OPTIONS_TAX_CALC', (OPTIONS_ENABLED_INCLUDE_TAX == 2 ? (OPTIONS_TAX_RATE/100) + 1 : '1')); //UK. US tax rate - US is ignorded since it is 1
    //the following is for the tax override option - enter multiple values separated by a comma
    //Format entries follow. A colon must be present for each field, whether it is entered or not.
    // COUNTRY  - OPTIONAL - country the tax applies to - only US for now
    // REGION   - OPTIONAL - blank for entire country, otherwise, us two-letter State (CA), full zip code (90210) or wildcard zip code (902*)
    // TAX      - REQUIRED - default = 0 (e.g. for 5.76% tax use 5.76)
    // SHIPPING - OPTIONAL - do you charge tax on shipping - choices are y or n
    define('OPTIONS_TAX_STRING', 'US:FL:5.00:n'); //says charge tax to US for residents of Florida at 5% and don't apply tax to shipping
    
    define('OPTIONS_UPC', '');
    define('OPTIONS_WEIGHT_ACCEPTED_METHODS', 'lb'); //Valid units include lb, pound, oz, ounce, g, gram, kg, kilogram.
    
    //the following allow skipping certain items
    define('OPTIONS_IGNORE_PRODUCT_PRICE', 0);  //0 = include products with price of 0 in output, 1 = ignore products with price of 0
    define('OPTIONS_IGNORE_PRODUCT_ZERO', 0);  //0 = include products with qty of 0 in output, 1 = ignore products with qty of 0
    
    /*************** END MASTER SETTINGS ******************/
    
    
    /*************** NO EDITS NEEDED BELOW THIS LINE *****************/
    
    //********************
    //  Start TIMER
    //  -----------
    $stimer = explode( ' ', microtime() );
    $stimer = $stimer[1] + $stimer[0];
    //  -----------
    
    define('FTP_ENABLED', (isset($_GET['noftp']) ? '0' : '1'));   //DO NOT CHANGE THIS LINE
    $OutFile = "feeds/" . FEEDNAME;
    $destination_file = FEEDNAME;
    $source_file = $OutFile;
    $imageURL = 'http://' . DOMAIN_NAME . '/images/';
    if(SEO_ENABLED=='true'){
       $productURL = 'product_info.php'; // ***** Revised for SEO
       $productParam = "products_id=";   // ***** Added for SEO
    }else{
       $productURL = 'http://' . DOMAIN_NAME . '/product_info.php?products_id=';
    }
    
    $already_sent = array();
    
    if(CONVERT_CURRENCY)
    {
       if(SEO_ENABLED=='true'){
           $productParam="currency=" . CURRENCY_TYPE . "&products_id=";
       }else{
           $productURL = "http://" . DOMAIN_NAME . "/product_info.php?currency=" . CURRENCY_TYPE . "&products_id=";  //where CURRENCY_TYPE is your currency type (eg. USD, EUR, GBP)
       }
    }
    
    $feed_exp_date = @[member=date](OPTIONS_DATE_FORMAT, time() + 2419200 );
     
    $quotes = '';
    if (QUOTES_CATEGORY_NAME !== '') {
       $quotes = " and products.customers_email_address = '' and products.quotes_email_address = ''";
    }
    
    $identfierCtr = 0; //check if the identifier exists field applies
    $extraFields = '';
    if (OPTIONS_AVAILABILITY == '') {
       $extraFields .= ' products_description.products_availability as availability, ';
    }
    if (OPTIONS_ENABLED_BRAND == 1) {
       $identfierCtr++;
       
       if (strlen(OPTIONS_BRAND) == 0) {
           $extraFields .= ' products.products_brand as brand, ';
       } else {
           switch (OPTIONS_BRAND) {
               case 'name':   $extraFields .= ' products_description.products_name as brand, '; break;
               case 'manu':   $extraFields .= ' manufacturers.manufacturers_name as brand, ';   break;
               case 'model':  $extraFields .= ' products.products_model as brand, ';            break;
               default:       $extraFields .= ' products_description.products_name as brand, ';
           }
       }
    }
    if (OPTIONS_ENABLED_CONDITION == 1 && strlen(OPTIONS_CONDITION) == 0) {
       $extraFields .= ' products.products_condition as pcondition, ';
    }
    if (OPTIONS_ENABLED_GTIN == 1  && strlen(OPTIONS_GTIN) == 0) {
       $identfierCtr++;
       $extraFields .= ' products.products_gtin as gtin, ';
    }
    if (OPTIONS_ENABLED_ISBN == 1  && strlen(OPTIONS_ISBN) == 0) {
       $extraFields .= ' products.products_isbn as isbn, ';
    }
    if (OPTIONS_ENABLED_MPN == 1) {
       $identfierCtr++;
    
       if (strlen(OPTIONS_MPN) == 0) {
           $extraFields .= ' products.products_mpn as mpn, ';
       } else {
           switch (OPTIONS_MPN) {
               case 'name':   $extraFields .= ' products_description.products_name as mpn, '; break;
               case 'manu':   $extraFields .= ' manufacturers.manufacturers_name as mpn, ';   break;
               case 'model':  $extraFields .= ' products.products_model as mpn, ';            break;
               default:       $extraFields .= ' products_description.products_name as mpn, ';
           }
       }
    }
    
    if (OPTIONS_ENABLED_UPC == 1  && strlen(OPTIONS_UPC) == 0) {
       $extraFields .= ' products.products_upc as upc, ';
    }
    
    if (OPTIONS_ENABLED_GOOGLE_PRODUCT_CATEGORY == 1 && OPTIONS_GOOGLE_PRODUCT_CATEGORY == 'db') {
       $extraFields .= ' products_description.google_product_category as google_category, ';
    }
    
    if (tep_not_null(SKIP_CATEGORY_ID)) {
       $ids = explode(',', SKIP_CATEGORY_ID);
       for ($i = 0; $i < count($ids); ++$i) {
           $cStr .=  $ids[$i] . ",";       
       }
       $cStr = substr($cStr, 0, -1);
       $skipCatIDS = " and categories.parent_id NOT IN (" . $cStr . ") ";
    }
    
    if (tep_not_null(SKIP_PRODUCT_ID)) {
       $ids = explode(',', SKIP_PRODUCT_ID);
       $skipIDS = ' and ( ';
       for ($i = 0; $i < count($ids); ++$i) {
           $skipIDS .= ' products.products_id != ' . $ids[$i] . ' and ';
       }
       $skipIDS = substr($skipIDS, 0, -4) . ' ) ';
    }
    
    $sql = "
    SELECT concat( '" . $productURL . "' ,products.products_id) AS product_url,
    products_model AS prodModel,
    manufacturers.manufacturers_id,
    products.products_id AS id,
    products_description.products_name AS name,
    products_description.products_description AS description,
    products.products_quantity AS quantity,
    products.products_status AS prodStatus,
    products.products_weight AS prodWeight, " . $extraFields . "
    FORMAT( IFNULL(specials.specials_new_products_price, products.products_price) * " . OPTIONS_TAX_CALC . ",2) AS price,
    CONCAT( '" . $imageURL . "' ,products.products_image) AS image_url,
    products_to_categories.categories_id AS prodCatID,
    categories.parent_id AS catParentID,
    categories_description.categories_name AS catName
    FROM (categories,
    categories_description,
    products,
    products_description,
    products_to_categories)
    
    left join manufacturers on ( manufacturers.manufacturers_id = products.manufacturers_id )
    left join specials on ( specials.products_id = products.products_id AND ( ( (specials.expires_date > CURRENT_DATE) OR (specials.expires_date is NULL) OR (specials.expires_date = 0) ) AND ( specials.status = 1 ) ) )
    
    WHERE products.products_id=products_description.products_id
    AND products.products_id=products_to_categories.products_id
    AND products_to_categories.categories_id=categories.categories_id
    AND categories.categories_id=categories_description.categories_id " . $quotes . $skipCatIDS . $skipIDS . "
    AND categories_description.language_id = " . DEFAULT_LANGUAGE_ID . "
    AND products_description.language_id = " . DEFAULT_LANGUAGE_ID . "
    ORDER BY
    products.products_id ASC
    ";
    
    $quotes = '';
    if (QUOTES_CATEGORY_NAME !== '') {
        $quotes = " and categories_description.categories_name NOT LIKE '" . QUOTES_CATEGORY_NAME . "' ";
    }
    
    $catInfo = "
    SELECT
    categories.categories_id AS curCatID,
    categories.parent_id AS parentCatID,
    categories_description.categories_name AS catName
    FROM
    categories,
    categories_description
    WHERE categories.categories_id = categories_description.categories_id " . $quotes .   "
    AND categories_description.language_id = " . DEFAULT_LANGUAGE_ID . "";
    
    function findCat($curID, $catTempPar, $catTempDes, $catIndex) {
       if( (isset($catTempPar[$curID])) && ($catTempPar[$curID] != 0) ) {
           if(isset($catIndex[$catTempPar[$curID]])) {
               $temp=$catIndex[$catTempPar[$curID]];
           } else {
               $catIndex = findCat($catTempPar[$curID], $catTempPar, $catTempDes, $catIndex);
               $temp = $catIndex[$catTempPar[$curID]];
           }
       }
       if( (isset($catTempPar[$curID])) && (isset($catTempDes[$curID])) && ($catTempPar[$curID] == 0) ) {
           $catIndex[$curID] = $catTempDes[$curID];
       } else {
           $catIndex[$curID] = $temp . ", " . $catTempDes[$curID];
       }
       return $catIndex;
    }
    
    $catIndex = array();
    $catTempDes = array();
    $catTempPar = array();
    $processCat = tep_db_query( $catInfo )or die( $FunctionName . ": SQL error " . tep_db_error() . "| catInfo = " . htmlentities($catInfo) );
    
    while ( $catRow = $myfetch_mysql( $processCat ) ) {
       $catKey = $catRow->curCatID;
       $catName = $catRow->catName;
       $catParID = $catRow->parentCatID;
       if($catName != "") {
          $catTempDes[$catKey]=$catName;
          $catTempPar[$catKey]=$catParID;
       }
    }
    
    foreach($catTempDes as $curID=>$des)  { //don't need the $des
    	  $catIndex = findCat($curID, $catTempPar, $catTempDes, $catIndex);
    }
    
    $_strip_search = array(
    "![\t ]+$|^[\t ]+!m", // remove leading/trailing space chars
    '%[\r\n]+%m'); // remove CRs and newlines
    $_strip_replace = array(
    '',
    ' ');
    $_cleaner_array = array(">" => "> ", "®" => "", " " => " ", "®" => "", "™" => "", "™" => "", "\t" => "", '"' => '', """ => "\"");
    
    if ( file_exists( $OutFile ) ) {
       unlink( $OutFile );
    }
    
    $output = "link\ttitle\tdescription\tprice\timage_link\tid\tavailability";
    $attributesColumns = array();
    
    //create optional section
    if(OPTIONS_ENABLED == 1) {
       if(OPTIONS_ENABLED_AGE_RANGE == 1) 		$output .= "\tage_range";
       if(OPTIONS_ENABLED_BRAND == 1)            	$output .= "\tbrand";
       if(OPTIONS_ENABLED_CONDITION == 1)       	$output .= "\tcondition";
       if(OPTIONS_ENABLED_CURRENCY == 1)        	$output .= "\tcurrency";
       if(OPTIONS_ENABLED_EXPIRATION == 1)      	$output .= "\texpiration_date";
       if(OPTIONS_ENABLED_FEED_LANGUAGE == 1)   	$output .= "\tlanguage";
       if(OPTIONS_ENABLED_GOOGLE_PRODUCT_CATEGORY == 1) $output .= "\tgoogle product category";
       if(OPTIONS_ENABLED_GTIN == 1)            	$output .= "\tgtin";
       if(OPTIONS_ENABLED_IDENTIFIER_EXISTS == 1 && $identfierCtr > 1)  $output .= "\tidentifier exists";
       if(OPTIONS_ENABLED_ISBN == 1)            	$output .= "\tisbn";
       if(OPTIONS_ENABLED_MADE_IN == 1)         	$output .= "\tmade_in";
       if(OPTIONS_ENABLED_MPN == 1)                 $output .= "\tmpn";
       if(OPTIONS_ENABLED_PRODUCT_MODEL == 1)   	$output .= "\tmodel";
       if(OPTIONS_ENABLED_PRODUCT_TYPE == 1)    	$output .= "\tproduct_type";
       if(OPTIONS_ENABLED_SHIPPING == 1)         	$output .= "\tshipping";
       if(OPTIONS_ENABLED_INCLUDE_TAX == 1)         $output .= "\ttax";
       if(OPTIONS_ENABLED_UPC == 1)             	$output .= "\tupc";
       if(OPTIONS_ENABLED_WEIGHT == 1)          	$output .= "\tshipping_weight";
    
       if (OPTIONS_ENABLED_ATTRIBUTES == 1)  {
           $products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name from products_options popt, products_attributes patrib where popt.language_id = '" . (int)1 . "' order by popt.products_options_name") or die(tep_db_error());
           while ($products_options_name = $myfetch_mysql($products_options_name_query)) {
               $attributesColumns[] = $products_options_name->products_options_name;
               $name = strtolower($products_options_name->products_options_name);
               $name = str_replace(" ","_", $name);
               $output .= "\tc:" . $name;
           }
    
           /*
           //If you want to only show particular attributes, comment out the above and uncomment this section.
           //Then enter two lines for each one you want to show. For example, if the atttributes you want to
           //show are named Color and Fabric, the entries would appear as follows:
    
           $attributesColumns[] = "Color";
           $attributesColumns[] = "Fabric";
    
           $output .= "\tc:" . strtolower("Color");
           $output .= "\tc:" . strtolower("Fabric");
           */
       }
    }
    $output .= "\n";
    
    
    $result=tep_db_query( $sql )or die( $FunctionName . ": SQL error " . tep_db_error() . "| sql = " . htmlentities($sql) );
    
    //Currency Information
    if(CONVERT_CURRENCY) {
       $sql3 = "
       SELECT
       currencies.value AS curUSD
       FROM
       currencies
       WHERE currencies.code = '" . CURRENCY_TYPE . "'";
    
       $result3=tep_db_query( $sql3 )or die( $FunctionName . ": SQL error " . tep_db_error() . "| sql3 = " . htmlentities($sql3) );
       $row3 = $myfetch_mysql( $result3 );
    }
    
    $loop_counter = 0;
    $statsArray = array();      //record messages
    $statsArrayPrice = array(); //record prices of 0
    $statsArrayQty = array();   //record quantities of 0
    $showPriceZero = false;
    $showQtyZero = false;
    
    
    while( $row = $myfetch_mysql( $result ) ) {
       if (isset($already_sent[$row->id])) continue; // if we've sent this one, skip the rest of the while loop
       if (OPTIONS_IGNORE_PRODUCT_PRICE > 0 && $row->price <= 0) continue; //skip products with 0 price
       if (OPTIONS_IGNORE_PRODUCT_ZERO > 0 && $row->quantity < 1) continue; //skip products with 0 qty
       if (OPTIONS_IGNORE_PRODUCT_PRICE < 1 && $row->price <= 0 && $row->prodStatus == 1) {$statsArray['price']++; $showPriceZero = true; }//record for warning
       if (OPTIONS_IGNORE_PRODUCT_ZERO < 1 && $row->quantity < 1 && $row->prodStatus == 1) {$statsArray['qty']++; $showQtyZero = true; } //record for warning
    
       $statsArray['total']++;
    
       if ( $row->prodStatus == 1 ) {
          if (CONVERT_CURRENCY) {
              $row->price = preg_replace("/[^.0-9]/", "", $row->price);
              $row->price = $row->price *  $row3->curUSD;
              $row->price = number_format($row->price, 2, '.', OPTIONS_CURRENCY_THOUSANDS_POINT);
          }
    
          $availability = '';
          switch (OPTIONS_AVAILABILITY) {
             case 'quantity': $availability = ($row->quantity > 0 ? 'in stock' : 'out of stock'); break;
             case 'status':   $availability = ($row->prodStatus == 1 ? 'in stock' : 'out of stock'); break;
             case '':         $availability = $row->availability; break;
             default:         $availability = OPTIONS_AVAILABILITY;
          }
    
          $google_utm = (OPTIONS_ENABLED_GOOGLE_UTM ? OPTIONS_GOOGLE_UTM : '');
          $pURL = $row->product_url;
    
          if(SEO_ENABLED=='true'){
              $output .= tep_href_link($productURL,$productParam . $row->id, 'NONSSL', false) . $google_utm . "\t";
              $pURL = tep_href_link($productURL,$productParam . $row->id, 'NONSSL', false);
          } else {
              $output .= $row->product_url . $google_utm . "\t";
          }
    
          if ($showPriceZero) {
              $showPriceZero = false;
              $statsArrayPrice[] = $pURL;
          }
          if ($showQtyZero) {
              $showQtyZero = false;
              $statsArrayQty[] = $pURL;
          }
    
          $output .=
          preg_replace($_strip_search, $_strip_replace, strip_tags( strtr($row->name, $_cleaner_array) ) ) . "\t" .
          preg_replace($_strip_search, $_strip_replace, strip_tags( strtr($row->description, $_cleaner_array) ) ) . "\t" .
          $row->price . "\t" .
          $row->image_url . "\t" .
        //  $catIndex[$row->prodCatID] . "\t" .
          $row->id . "\t" . $availability;
    
          //optional values section
          if(OPTIONS_ENABLED == 1) {
             if(OPTIONS_ENABLED_AGE_RANGE == 1)
                $output .= "\t" . OPTIONS_AGE_RANGE;
             if(OPTIONS_ENABLED_BRAND == 1)
                $output .= "\t" . (isset($row->brand) ? $row->brand : (strlen(OPTIONS_BRAND) ? $row->name : "Not Supported"));
             if(OPTIONS_ENABLED_CONDITION == 1)
                $output .= "\t" . (isset($row->pcondition) ? $row->pcondition : OPTIONS_CONDITION);
             if(OPTIONS_ENABLED_CURRENCY == 1)
                $output .= "\t" . OPTIONS_CURRENCY;
             if(OPTIONS_ENABLED_EXPIRATION == 1)
                $output .= "\t" . $feed_exp_date;
             if(OPTIONS_ENABLED_FEED_LANGUAGE == 1)
                $output .= "\t" . OPTIONS_FEED_LANGUAGE;
             if(OPTIONS_ENABLED_GOOGLE_PRODUCT_CATEGORY == 1)
                $output .= "\t" . (OPTIONS_GOOGLE_PRODUCT_CATEGORY == 'db' ? $row->google_category : OPTIONS_GOOGLE_PRODUCT_CATEGORY);
             if(OPTIONS_ENABLED_GTIN == 1)
                $output .= "\t" . (isset($row->gtin) ? $row->gtin : (strlen(OPTIONS_GTIN) ? OPTIONS_GTIN : "Not Supported"));
                
             if (OPTIONS_ENABLED_IDENTIFIER_EXISTS == 1 && $identfierCtr > 1) {
                $icnt = 0;
                if (OPTIONS_ENABLED_BRAND && empty($row->brand)) $icnt++;
                if (OPTIONS_ENABLED_GTIN && empty($row->gtin)) $icnt++;   
                if (OPTIONS_ENABLED_MPN && empty($row->mpn)) $icnt++;  
                if ($icnt > 1) { //at least two required fields are empty
                  $output .= "\tFALSE";
                } else {
                  $output .= "\tTRUE";
                }
             }   
                
             if(OPTIONS_ENABLED_ISBN == 1)
                $output .= "\t" . (isset($row->isbn) ? $row->isbn : (strlen(OPTIONS_ISBN) ? OPTIONS_ISBN : "Not Supported"));
             if(OPTIONS_ENABLED_MADE_IN == 1)
                $output .= "\t" . OPTIONS_MADE_IN;
             if(OPTIONS_ENABLED_MPN == 1)
                $output .= "\t" . (isset($row->mpn) ? $row->mpn : (strlen(OPTIONS_MPN) ? OPTIONS_MPN : "Not Supported"));
             if(OPTIONS_ENABLED_PRODUCT_MODEL == 1)
                $output .= "\t" . (! empty($row->prodModel) ? $row->prodModel : $row->catName);
             if(OPTIONS_ENABLED_PRODUCT_TYPE == 1)
                $output .= "\t" . ((OPTIONS_PRODUCT_TYPE == strtolower('full')) ? $catIndex[$row->prodCatID] : $row->catName);
             if(OPTIONS_ENABLED_SHIPPING == 1)
                $output .= "\t" . OPTIONS_SHIPPING_STRING;
             if(OPTIONS_ENABLED_INCLUDE_TAX == 1)
                $output .= "\t" . OPTIONS_TAX_STRING;
             if(OPTIONS_ENABLED_UPC == 1)
                $output .= "\t" . (isset($row->upc) ? $row->upc : (strlen(OPTIONS_UPC) ? OPTIONS_UPC : "Not Supported"));
             if(OPTIONS_ENABLED_WEIGHT == 1)
                $output .= "\t" . $row->prodWeight . ' ' .OPTIONS_WEIGHT_ACCEPTED_METHODS;
    
             /******************* BEGIN HANDLING THE ATTRIBUTES ********************/
             if (OPTIONS_ENABLED_ATTRIBUTES == 1)
             {
                $products_attributes_query = tep_db_query("select count(*) as total from products_options popt, products_attributes patrib where patrib.products_id='" . $row->id . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)1 . "'");
                $products_attributes = $myfetch_mysql($products_attributes_query);
                if ($products_attributes->total > 0) {
                  $products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name from products_options popt, products_attributes patrib where patrib.products_id='" . (int)$row->id . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)1 . "' order by popt.products_options_name") or die(tep_db_error());
    
                  $trackTabs = '';
    
                  while ($products_options_name = $myfetch_mysql($products_options_name_query)) {
                    $products_options_array = array();
                    $products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from products_attributes pa, products_options_values pov where pa.products_id = '" . (int)$row->id . "' and pa.options_id = '" . $products_options_name->products_options_id . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)1 . "'");
                    while ($products_options = $myfetch_mysql($products_options_query)) {
                      $products_options_array[] = array('id' => $products_options->products_options_values_id, 'text' => $products_options->products_options_values_name);
                    }
    
                    for ($a = 0; $a < count($attributesColumns); ++$a)
                    {
                       if ($products_options_name->products_options_name == $attributesColumns[$a])
                       {
                         if ($a == 0)
                           $trackTabs = "\t";
                         else
                         {
                           if (empty($trackTabs))
                             $trackTabs = str_repeat("\t", $a);
                           $trackTabs .= "\t";
                         }
    
                         $output .= $trackTabs;
                         foreach ($products_options_array as $arr)
                           $output .=  $arr['text'] . ',';
                         $output = substr($output, 0, -1);
                       }
                    }
                  }
                }
             }
             /******************* END HANDLING THE ATTRIBUTES ********************/
          }
          $output .= " \n";
       }
    
       $already_sent[$row->id] = 1;
       $loop_counter++;
    
       if ($loop_counter>750) {
          $fp = fopen( $OutFile , "a" );
          $fout = fwrite( $fp , $output );
          fclose( $fp );
          $loop_counter = 0;
          $output = "";
       }
    }
    
    $fp = fopen( $OutFile , "a" );
    $fout = fwrite( $fp , $output );
    fclose( $fp );
    
    echo '<p style="margin:auto; text-align:left">';
    printf( "Feed contains %d products.", $statsArray['total'] );
    echo '</p>';
    
    $warning = false;
    if (count($statsArray['price']) > 0) {
      $warning = true;
      echo '<p style="margin:auto; text-align:left;  padding:10px; 0px">';
      printf( "***Warning:*** There are %d products with a price of $0.<br>", $statsArray['price'] );
    
      for ($i = 0; $i < count($statsArrayPrice); ++$i) {
          echo  '   ' . $i . ' - ' . $statsArrayPrice[$i] .'<br>';
      }
    
      echo '</p>';
    }
    
    if (count($statsArray['qty']) > 0) {
      $warning = true;
      echo '<p style="margin:auto; text-align:left; padding-bottom:10px; ">';
      printf( "***Warning:*** There are %d products with a quantity of 0.<br>", $statsArray['qty'] );
    
      for ($i = 0; $i < count($statsArrayQty); ++$i) {
          echo  '   ' . $i . ' - ' . $statsArrayQty[$i] .'<br>';
      }
    
      echo '</p>';
    }
    
    if (tep_not_null(SKIP_PRODUCT_ID)) {
      echo '<p style="margin:auto; text-align:left; padding-bottom:10px; ">';
      printf( "The following product ID's were skipped: %s.", SKIP_PRODUCT_ID );
      echo '</p>';
    }
    
    $completed = 'File Completed' . ($warning ? ' (with warnings): ' : ':' );
    
    echo '<p style="margin:auto; text-align:left">';
    echo "$completed <a href=\"../" . $OutFile . "\" target=\"_blank\">" . $destination_file . "</a><br>\n\n";
    echo '</p>';
    
    
    $csvFileDest = str_replace('.txt', '.csv', $destination_file);
    $csvFileLocn = str_replace('.txt', '.csv', $OutFile);
    $csvStr = str_replace("\t", '", "', '"' . $output);
    $csvStr = str_replace("\n", "\"\n\"", $csvStr);
    $csvStr = substr($csvStr,0,-1);
    $csvStr = str_replace("\t", '", "', '"' . $output . '"');
    
    $fp = fopen( $csvFileLocn , "a" );
    $fout = fwrite( $fp , $csvStr );
    fclose( $fp );
    
    echo '<p style="margin:auto; text-align:left; padding-top:10px;">';
    echo 'Use the following for easier viewing from this page. It is still in development and not meant for anything other than viewing.' . "<br>\n\n";
    echo "$completed <a href=\"../" . $csvFileLocn . "\" target=\"_blank\">" . $csvFileDest . "</a><br>\n";
    echo '</p>';
    
    
    chmod($OutFile, 0777);
    
    
    //Start FTP
    
    function ftp_file( $ftpservername, $ftpusername, $ftppassword, $ftpsourcefile, $ftpdirectory, $ftpdestinationfile ) {
       // set up basic connection
       $conn_id = ftp_connect($ftpservername);
       if ( $conn_id == false ) {
          echo "FTP open connection failed to $ftpservername <BR>\n" ;
          return false;
       }
    
       // login with username and password
       $login_result = ftp_login($conn_id, $ftpusername, $ftppassword);
    
       // check connection
       if ((!$conn_id) || (!$login_result)) {
          echo "FTP connection has failed!<BR>\n";
          echo "Attempted to connect to " . $ftpservername . " for user " . $ftpusername . "<BR>\n";
          return false;
       } else {
          echo "Connected to " . $ftpservername . ", for user " . $ftpusername . "<BR>\n";
       }
    
       if ( strlen( $ftpdirectory ) > 0 ) {
          if (ftp_chdir($conn_id, $ftpdirectory )) {
             echo "Current directory is now: " . ftp_pwd($conn_id) . "<BR>\n";
          } else {
             echo "Couldn't change directory on $ftpservername<BR>\n";
             return false;
          }
       }
    
       ftp_pasv ( $conn_id, true ) ;
       // upload the file
       $upload = ftp_put( $conn_id, $ftpdestinationfile, $ftpsourcefile, FTP_ASCII );
    
       // check upload status
       if (!$upload) {
          echo "$ftpservername: FTP upload has failed!<BR>\n";
          return false;
       } else {
          echo "Uploaded " . $ftpsourcefile . " to " . $ftpservername . " as " . $ftpdestinationfile . "<BR>\n";
       }
    
       // close the FTP stream
       ftp_close($conn_id);
    
       return true;
    }
    
    if (FTP_ENABLED)
       ftp_file( "uploads.google.com", FTP_USERNAME, FTP_PASSWORD, $source_file, "", $destination_file);
    
    //End FTP
    
    
    //  End TIMER
    //  ---------
    $etimer = explode( ' ', microtime() );
    $etimer = $etimer[1] + $etimer[0];
    
    echo '<p style="margin:auto; text-align:center">';
    printf( "Script timer: <b>%f</b> seconds.", ($etimer-$stimer) );
    echo '</p>';
    
    
    
    
    //  ---------
    
    ?>
    

    Any assistance will be much appreciated

  3. I have 2 questions, one regarding Googlebase datafeed and one regarding Bing Datafeed running ver 2.9), lets start with the latter.

    My Bing datafeed has never worked. The error I get when I run from admin is:

    File completed: bingshopping.txt
    FTP connection has failed!
    Attempted to connect to uploads.google.com for user googleFTP-username

     

    My Googlebase feed has always worked. I know Google has changed their shopping data requirements in recent months. Hence, although this has always worked perfectly for years I am now getting status reports saying all records were proccesed, eg

    1,097 items processed

    Shopping: 0 / 1,097
    Uploaded at: March 22, 2015 6:00:00 AM EDT
    Processed at: March 22, 2015 6:15:01 AM EDT

     

    The errors are related to missing tax info, missing shipping info, insufficient product identifiers. Unfortunately, some of these fields, I have never used, eg. product udentifiers. I use tax info & shipping info, and nothing has changed re. field attributes, from before (when I ran the script for years and never got any years) to now, when Google has changed their requirements. Any ideas ? Should I install the latest add-on update - will that resolve the issue?

     

    Thanks

    Gary

  4. I had this add-on installed a few months ago and works great - www.nontando.com (left side menu)

    However today I added a new category and although it appears in my top menu, it does not appear in my left sided menu (i.e. superfish cat. box). I then deleted a category from admin, and for some reason this still appears in the left menu. It looks like anything I change re. categories does not get reflected in the left menu. Almost seems like it has been hardcoded. I did not install this but if someone can give me an idea where to check that will be appreciated

    Regards

    Gary

  5. Jase - Just had one or two more questions that are puzzling me.

    When you are in Response Mail Manager>Status update and you do a "test" the subject header you receive in the email says "Status Update". Yet, when you change the status of an order within admin, eg. processing, shipping, etc the subject header says "Order update". The format and template is the same so that part is working? Is this suppose to be like that?

  6. I have never sent a mailing yet. I did try and send it and it just said customer sent=0? I am not sure about the mmstatus and why it does not send any mailing - What I am trying to understand, as per my earlier message, can I use a newsletter that already has a flag = sent and how, is at all, can I copy and existing newsletter rather than have to recreate a a new one each time.

  7. I have one or two more issues/questions:

     

    When we installed this add-on, in BulkMail manager it had a default weekly newsletter. This newsletter has sent flag = true with a date of 7/15/11 as date sent. I have since edited this newsletter using the layout, etc for my own use. When I tried to send it, it came back with 0 sent. The "test" works fine. Is this because it has already been sent and you cannot resend it? In this regard, what if I want to use the same format for my newsletters, i.e. ideally I would like to copy an existing one and just change images, text, etc - how would I do this?

    Thanks, gary

  8. We have installed this add-on and it is great. Having one issue which I am not sure if it related to mail manager but it use to work before and now does not, i.e. when customer registers/creates new account. I use to receive a confirmation to my email letting me know. I am now not receiving this email. I am using "Response Mail" options and those are working, i.e. customer received emails, and when I test to my email I get those emails. Any ideas?

     

    Thanks, Gary

  9. We installed this a few days ago. All pretty much working except password reset. Not sure what is going on here but have been testing using my own account and getting email with EMAIL_PASSWORD_REMINDER_SUBJECT

     

    appearing as the subject and appearing in the email is: EMAIL_PASSWORD_REMINDER_BODY

     

    That is it!

     

    My website is www.nontando.com

     

    Thanks, Gary

  10. Hi Jim,

     

    Sorry for all the crazy questions but I have changed template_top and copied it my server

    I have copied across the 2 new files.

     

    Now I go into admin and I dont see any Header Tags module in module to configure?

    I am following your install instructions and dont read anything else that I was suppose to have done.

     

    I am using osc 2.2? Could that be the problem?

     

    Regards, Gary

  11. Hi Folks,

    I am looking to install this add-on but I am concerned about template_top.php as I have edited this file in the past to accomodate other add-ons, hence

    if someone can guide me what to edit/add to my existing code that would be much appreciated. I know I can run a comparison but that will still not exactly help me here...My current code looks like this:

     

    ?php
    /*
     $Id$
     osCommerce, Open Source E-Commerce Solutions
     http://www.oscommerce.com
     Copyright (c) 2010 osCommerce
     Released under the GNU General Public License
    */
     $oscTemplate->buildBlocks();
     if (!$oscTemplate->hasBlocks('boxes_column_left')) {
       $oscTemplate->setGridContentWidth($oscTemplate->getGridContentWidth() + $oscTemplate->getGridColumnWidth());
     }
     if (!$oscTemplate->hasBlocks('boxes_column_right')) {
       $oscTemplate->setGridContentWidth($oscTemplate->getGridContentWidth() + $oscTemplate->getGridColumnWidth());
     }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" <?php echo HTML_PARAMS; ?>>
    <head>
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8">
    <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>" />
    <?php include(DIR_WS_INCLUDES . 'easy_meta_tags.php'); ?>
    <base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>" />
    <link rel="stylesheet" type="text/css" href="ext/jquery/ui/redmond/jquery-ui-1.8.6.css" />
    <script type="text/javascript" src="ext/jquery/jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="ext/jquery/ui/jquery-ui-1.8.6.min.js"></script>
    <?php
     if (tep_not_null(JQUERY_DATEPICKER_I18N_CODE)) {
    ?>
    <script type="text/javascript" src="ext/jquery/ui/i18n/jquery.ui.datepicker-<?php echo JQUERY_DATEPICKER_I18N_CODE; ?>.js"></script>
    <script type="text/javascript">
    $.datepicker.setDefaults($.datepicker.regional['<?php echo JQUERY_DATEPICKER_I18N_CODE; ?>']);
    </script>
    <?php
     }
    ?>
    <script type="text/javascript" src="ext/jquery/bxGallery/jquery.bxGallery.1.1.min.js"></script>
    <link rel="stylesheet" type="text/css" href="ext/jquery/fancybox/jquery.fancybox-1.3.4.css" />
    <script type="text/javascript" src="ext/jquery/fancybox/jquery.fancybox-1.3.4.pack.js"></script>
    <link rel="stylesheet" type="text/css" href="ext/960gs/<?php echo ((stripos(HTML_PARAMS, 'dir="rtl"') !== false) ? 'rtl_' : ''); ?>960_24_col.css" />
    <link rel="stylesheet" type="text/css" href="stylesheet.css" />
    <?php echo $oscTemplate->getBlocks('header_tags'); ?>
    </head>
    <body>
    <div id="bodyWrapper" class="container_<?php echo $oscTemplate->getGridContainerWidth(); ?>">
    <?php require(DIR_WS_INCLUDES . 'header.php'); ?>
    <div id="bodyContent" class="grid_<?php echo $oscTemplate->getGridContentWidth(); ?> <?php echo ($oscTemplate->hasBlocks('boxes_column_left') ? 'push_' . $oscTemplate->getGridColumnWidth() : ''); ?>">
    

     

    Thnk you for your help, Gary

  12. Thanks Robert - I appreciate your support and patience.

    Between my hosting company and Oscommerce, it has become too frustrating for me.

    I dont how to resolve this. I have shared with you my htaccess file and anything I seemed to add to this file, causes an error. I dont know enough about server settings, etc, and what is required here.

     

    I am planning to recreate my website using weebly - i know a few others that have moved across and they are all extremely happy

  13. This is what my root htaccess file looks like now.....

     

    
    # $Id: .htaccess,v 1.3 2003/06/12 10:53:20 hpdl Exp $
    #
    # This is used with Apache WebServers
    #
    # For this to work, you must include the parameter 'Options' to
    # the AllowOverride configuration
    #
    # Example:
    #
    # <Directory "/usr/local/apache/htdocs">
    #   AllowOverride Options
    # </Directory>
    #
    # 'All' with also work. (This configuration is in the
    # apache/conf/httpd.conf file)
    
    # The following makes adjustments to the SSL protocol for Internet
    # Explorer browsers
    
    <IfModule mod_setenvif.c>
     <IfDefine SSL>
       SetEnvIf User-Agent ".*MSIE.*" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
     </IfDefine>
    </IfModule>
    
    
    
    # If Search Engine Friendly URLs do not work, try enabling the
    # following Apache configuration parameter
    #
    # AcceptPathInfo On
    
    # Fix certain PHP values
    # (commented out by default to prevent errors occuring on certain
    # servers)
    #
    #<IfModule mod_php4.c>
    #  php_value session.use_trans_sid 0
    #  php_value register_globals 1
    #</IfModule>
    
    

     

     

    this is what I am recommended to inset as per the contribution (or partly thereof)

     

    # If you are getting errors you may need to comment this out like ..
    # Options +FollowSymLinks
    Options +SymLinksIfOwnerMatch
    <IfModule mod_rewrite.c>
     RewriteEngine On
     # RewriteBase instructions
     # Change RewriteBase dependent on how your shop is accessed as below.
     # http://www.mysite.com = RewriteBase /
     # http://www.mysite.com/catalog/ = RewriteBase /catalog/
     # http://www.mysite.com/catalog/shop/ = RewriteBase /catalog/shop/
     # Change RewriteBase using the instructions above
     RewriteBase /
     RewriteRule ^([a-z0-9/-]+)-p-([0-9]+).html$ product_info.php [NC,L,QSA]
     RewriteRule ^([a-z0-9/-]+)-c-([0-9_]+).html$ index.php [NC,L,QSA]
     RewriteRule ^([a-z0-9/-]+)-m-([0-9]+).html$ index.php [NC,L,QSA]
     RewriteRule ^([a-z0-9/-]+)-pi-([0-9]+).html$ popup_image.php [NC,L,QSA]
     RewriteRule ^([a-z0-9/-]+)-pr-([0-9]+).html$ product_reviews.php [NC,L,QSA]
     RewriteRule ^([a-z0-9/-]+)-pri-([0-9]+).html$ product_reviews_info.php [NC,L,QSA]
     # Articles contribution
     RewriteRule ^([a-z0-9/-]+)-t-([0-9_]+).html$ articles.php [NC,L,QSA]
     RewriteRule ^([a-z0-9/-]+)-au-([0-9]+).html$ articles.php [NC,L,QSA]
     RewriteRule ^([a-z0-9/-]+)-a-([0-9]+).html$ article_info.php [NC,L,QSA]
     # Information pages
     RewriteRule ^([a-z0-9/-]+)-i-([0-9]+).html$ information.php [NC,L,QSA]
     # Links contribution
     RewriteRule ^([a-z0-9/-]+)-links-([0-9_]+).html$ links.php [NC,L,QSA]
     # Newsdesk contribution
     RewriteRule ^([a-z0-9/-]+)-n-([0-9]+).html$ newsdesk_info.php [NC,L,QSA]
     RewriteRule ^([a-z0-9/-]+)-nc-([0-9]+).html$ newsdesk_index.php [NC,L,QSA]
     RewriteRule ^([a-z0-9/-]+)-nri-([0-9]+).html$ newsdesk_reviews_info.php [NC,L,QSA]
     RewriteRule ^([a-z0-9/-]+)-nra-([0-9]+).html$ newsdesk_reviews_article.php [NC,L,QSA]
    </IfModule>
    

     

     

    This is how I would like my shop to be accessed.

     

    # http://www.mysite.com = RewriteBase /

     

     

    At this moment, if I take the recommended htacess code and insert it in and ftp it across as soon as I change my config settings for uri format to rewrite

    I get an error and forced to remove the code that I have added to htacess.

     

    Hence, if someone can just tell me, based on what i am trying to do, what code exactly am I suppose to add to htaccess.

     

    Thanks, Gary

  14. Okay had someone take a look at my issue...here is his comments....

    Initial Investigation:

    Site urls are appearing http://www.nontando.com/index.php/beadwork-c-54 because "Choose the uri format" to "Standard" in Seo Urls 5 configuration. To remove index.php from url "Choose the uri format" should be set to "rewrite".

    I tried to do but gives 404 error on front end.

    Also checked htaccess and found no rules has been defined.

    Please ask your developer who installed the contribution to add respective htaccess changes.

    I found your store is on production mode and there are orders coming.

    Changing anything in htaccess can might down the site.

     

    Can someone that knows this contr. give me an idea why resetting it to "rewrite" will cause a 404 error?

  15. I installed this about 3 years ago and to be perfectly honest I have no idea if it is actually working or not. I am not sure if there were bugs at that time but one thing that I know that is defintely not working and is my main concern, is for my website, i.e. www.nontando.com when you select one of my categories, lets say masks it displays the url as

    http://www.nontando.com/index.php/masks-c-29

     

    where based on my config settings (see below) it should not be displaying the index.php

    Ideally all I want for SEO purposes is just: www.nontando.com/masks

    Anyway, I dotn know if this the problem but the config settings has it as "mysite". I have no idea how I can reset/change this to nontando.com - defintely cannot do it thru config?

    Below is my current settings as appearing on config ...

     

    ANy guidance will be much appreciated

    Gary

     

     

     

    Enable SEO URLs 5? true

    Enable the cache? true

    Enable multi language support? false

    Output W3C valid URLs? true

    Select your chosen cache system? mysql

    Set the number of days to store the cache. 7

    Choose the uri format standard

    Choose how your product link text is made up p

    Filter Short Words 3

    Add category parent to beginning of category uris? false

    Remove all non-alphanumeric characters? false

    Add cPath to product URLs? false

    Enter special character conversions. (Better to use the file

    Turn performance reporting on true/false. false

    Turn variable reporting on true/false. false

    Force www.mysite.com/ when www.mysite.com/index.php true

    Reset USU5 Cache

  16. Hopefully someone can help me. I installed this contr. about 2 years ago and always thought it was working fine.

    I have been working hard, the last few months, on trying to improve my SEO across my website , i.e. www.nontando.com

    The one thing I have noticed which is hurting my SEO is when I click on any categories it displays it as

    http://www.nontando.com/index.php/masks-c-29

    rather than

    www.nontando/masks

    which I would much prefer and much better for SEO purposes.

    I have checked my SEO URL 5 config settings and it looks like this:

    Enable SEO URLs 5? true icon_arrow_right.gif Enable the cache? true icon_info.gif Enable multi language support? false icon_info.gif Output W3C valid URLs? true icon_info.gif Select your chosen cache system? mysql icon_info.gif Set the number of days to store the cache. 7 icon_info.gif Choose the uri format standard icon_info.gif Choose how your product link text is made up p icon_info.gif Filter Short Words 3 icon_info.gif Add category parent to beginning of category uris? false icon_info.gif Remove all non-alphanumeric characters? false icon_info.gif Add cPath to product URLs? false icon_info.gif Enter special character conversions. (Better to use the file icon_info.gif Turn performance reporting on true/false. false icon_info.gif Turn variable reporting on true/false. false icon_info.gif Force www.mysite.com/ when www.mysite.com/index.php true icon_info.gif Reset USU5 Cache

     

     

    So, I am not really sure where I have gone wrong - I may be going in the wrong direction but maybe, even if it not related to this contr. someone can guide me in the right direction.

  17. Hi Folks, This all very weird, so helpfully someone can help.

    I installed this contr. months ago and it has been working 100% all the time. I am not sure if this has anything to do with it, but in the last few weeks I have installed a few contributions, i.e. featured products, kiss meta tags, seo url5.

    I noticed last night that the thumnail category browse feature is not appearing at all. I went back to the contr. and checked all again - uploaded the files, checked the code. Still nothing. I also noticed that my right column (column_right.php) was not appeaing in product_info.php.

    I removed the text below, and then my right column was appearing, put the code back and no right column.

    <br>

     

    <? include(DIR_WS_MODULES . 'thumb_bar.php'); ?>

     

    </br>

    <!-- body_text_eof //-->

     

    Even though, I have it appearing in the code below as it was, the above code is not on the live file on the server otherwise I would have no right column appearing? I have no idea why this contribution is not working anymore. If anyone can shed any light that would be great. As per the contributon, it was just 2 files to upload (done) one code change in product_info.php (done).

     

    On a different note and while you have a copy of the product_info.php, you will see on my website, i.e. www.nontando

    a strange ">" appearing above the title name. No idea where this is suddently coming from? I am gussing this is coming from product_info.php, so if you can see anything in the code that may cause that, please let me know.

     

    Thanks so much, Gary

     

     

     

     

     

     

     

    <?php
    /*
     $Id: product_info.php,v 1.97 2003/07/01 14:34:54 hpdl Exp $
    
     osCommerce, Open Source E-Commerce Solutions
     http://www.oscommerce.com
    
     Copyright (c) 2003 osCommerce
    
     Released under the GNU General Public License
    */
    
     require('includes/application_top.php');
    
     require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_PRODUCT_INFO);
    
     $product_check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");
     $product_check = tep_db_fetch_array($product_check_query);
    ?>
    <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html <?php echo HTML_PARAMS; ?>>
    
    <link rel="stylesheet" href="lightbox/lightbox.css" type="text/css" media="screen" />
    <script type="text/javascript" src="lightbox/prototype.js"></script>
    <script type="text/javascript" src="lightbox/scriptaculous.js?load=effects"></script>
    <script type="text/javascript" src="lightbox/builder.js"></script>
    <script type="text/javascript" src="lightbox/lightbox.js"></script>
    
    <?php include_once DIR_WS_MODULES . 'kiss_meta_tags/kiss_meta_tags.php'; ?> 
    
    
    
    
    <base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>">
    <link rel="stylesheet" type="text/css" href="stylesheet.css">
    <script language="javascript"><!--
    function popupWindow(url) {
     window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=100,height=100,screenX=150,screenY=150,top=150,left=150')
    }
    //--></script>
    </head>
    <body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">
    <!-- header //-->
    <?php require(DIR_WS_INCLUDES . 'header.php'); ?>
    <!-- header_eof //-->
    
    <!-- body //-->
    <table border="0" width="100%" cellspacing="3" cellpadding="3">
     <tr>
       <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
    <!-- left_navigation //-->
    <?php require(DIR_WS_INCLUDES . 'column_left.php'); ?>
    <!-- left_navigation_eof //-->
       </table></td>
    <!-- body_text //-->
       <td width="100%" valign="top"><?php echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_PRODUCT_INFO, tep_get_all_get_params(array('action')) . 'action=add_product')); ?><table border="0" width="100%" cellspacing="0" cellpadding="0"><a href='http://www.pawanwebworld.com' target='_blank' title='Pawan Web World' alt='Pawan Web World'></a>
    <?php
     if ($product_check['total'] < 1) {
    ?>
         <tr>
           <td><?php new infoBox(array(array('text' => TEXT_PRODUCT_NOT_FOUND))); ?></td>
         </tr>
         <tr>
           <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
         </tr>
         <tr>
           <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
             <tr class="infoBoxContents">
               <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
                 <tr>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                   <td align="right"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . tep_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</a>'; ?></td>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                 </tr>
               </table></td>
             </tr>
           </table></td>
         </tr>
    <?php
     } else {
       $product_info_query = tep_db_query("select p.products_id, pd.products_name, pd.products_description, p.products_model, p.products_quantity, p.products_image, pd.products_url, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_date_available, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'");
       $product_info = tep_db_fetch_array($product_info_query);
    
       tep_db_query("update " . TABLE_PRODUCTS_DESCRIPTION . " set products_viewed = products_viewed+1 where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and language_id = '" . (int)$languages_id . "'");
    
    
    
    
    
       if ($new_price = tep_get_products_special_price($product_info['products_id'])) {
         $products_price = '<s>' . $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) . '</s> <span class="productSpecialPrice">' . $currencies->display_price($new_price, tep_get_tax_rate($product_info['products_tax_class_id'])) . '</span>';
       } else {
         $products_price = $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id']));
       }
    
       if (tep_not_null($product_info['products_model'])) {
         $products_name = $product_info['products_name'] . '<br><span class="smallText">[' . $product_info['products_model'] . ']</span>';
       } else {
         $products_name = $product_info['products_name'];
       }
    ?>
         <tr>
           <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
             <tr>
               <td class="pageHeading" valign="top"><?php echo $products_name; ?></td>
               <td class="pageHeading" align="right" valign="top"><?php echo $products_price; ?></td>
             </tr>
           </table></td>
         </tr>
         <tr>
           <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
         </tr>
         <tr>
           <td class="main">
    <?php
       if (tep_not_null($product_info['products_image'])) {
    ?>
             <table border="0" cellspacing="0" cellpadding="2" align="right">
               <tr>
                 <td align="center" class="smallText">
    <script language="javascript"><!--
    document.write('<?php echo '<a href="' . tep_href_link(DIR_WS_IMAGES . $product_info['products_image']) . '" target="_blank" rel="lightbox" title="'.$product_info['products_name'].'" >' . tep_image(DIR_WS_IMAGES . $product_info['products_image'], $product_info['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'hspace="5" vspace="5"') . '<br>' . TEXT_CLICK_TO_ENLARGE . '</a>'; ?>');
    //--></script>
    <noscript>
    <?php echo '<a href="' . tep_href_link(DIR_WS_IMAGES . $product_info['products_image']) . '" target="_blank" rel="lightbox" title="'.$product_info['products_name'].'" >' . tep_image(DIR_WS_IMAGES . $product_info['products_image'], $product_info['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'hspace="5" vspace="5"') . '<br>' . TEXT_CLICK_TO_ENLARGE . '</a>'; ?>');
    </noscript>
                 </td>
               </tr>
             </table>
    <?php
       }
    ?>
             <p><?php echo stripslashes($product_info['products_description']); ?></p>
    <?php
       $products_attributes_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "'");
       $products_attributes = tep_db_fetch_array($products_attributes_query);
       if ($products_attributes['total'] > 0) {
    ?>
             <table border="0" cellspacing="0" cellpadding="2">
               <tr>
                 <td class="main" colspan="2"><?php echo TEXT_PRODUCT_OPTIONS; ?></td>
               </tr>
    <?php
         $products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "' order by popt.products_options_name");
         while ($products_options_name = tep_db_fetch_array($products_options_name_query)) {
           $products_options_array = array();
           $products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "'");
           while ($products_options = tep_db_fetch_array($products_options_query)) {
             $products_options_array[] = array('id' => $products_options['products_options_values_id'], 'text' => $products_options['products_options_values_name']);
             if ($products_options['options_values_price'] != '0') {
               $products_options_array[sizeof($products_options_array)-1]['text'] .= ' (' . $products_options['price_prefix'] . $currencies->display_price($products_options['options_values_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .') ';
             }
           }
    
           if (isset($cart->contents[$HTTP_GET_VARS['products_id']]['attributes'][$products_options_name['products_options_id']])) {
             $selected_attribute = $cart->contents[$HTTP_GET_VARS['products_id']]['attributes'][$products_options_name['products_options_id']];
           } else {
             $selected_attribute = false;
           }
    ?>
               <tr>
                 <td class="main"><?php echo $products_options_name['products_options_name'] . ':'; ?></td>
                 <td class="main"><?php echo tep_draw_pull_down_menu('id[' . $products_options_name['products_options_id'] . ']', $products_options_array, $selected_attribute); ?></td>
               </tr>
    <?php
         }
    ?>
             </table>
    <?php
       }
    ?>
           </td>
         </tr>
         <tr>
           <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
         </tr>
    <?php
       $reviews_query = tep_db_query("select count(*) as count from " . TABLE_REVIEWS . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "'");
       $reviews = tep_db_fetch_array($reviews_query);
       if ($reviews['count'] > 0) {
    ?>
         <tr>
           <td class="main"><?php echo TEXT_CURRENT_REVIEWS . ' ' . $reviews['count']; ?></td>
         </tr>
         <tr>
           <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
         </tr>
    <?php
       }
    
       if (tep_not_null($product_info['products_url'])) {
    ?>
         <tr>
           <td class="main"><?php echo sprintf(TEXT_MORE_INFORMATION, tep_href_link(FILENAME_REDIRECT, 'action=url&goto=' . urlencode($product_info['products_url']), 'NONSSL', true, false)); ?></td>
         </tr>
         <tr>
           <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
         </tr>
    <?php
       }
    
       if ($product_info['products_date_available'] > date('Y-m-d H:i:s')) {
    ?>
         <tr>
           <td align="center" class="smallText"><?php echo sprintf(TEXT_DATE_AVAILABLE, tep_date_long($product_info['products_date_available'])); ?></td>
         </tr>
    <?php
       } else {
    ?>
         <tr>
           <td align="center" class="smallText"><?php echo sprintf(TEXT_DATE_ADDED, tep_date_long($product_info['products_date_added'])); ?></td>
         </tr>
    <?php
       }
    ?>
    
    >
    
    
         <tr>
           <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
         </tr>
         <tr>
           <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
             <tr class="infoBoxContents">
               <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
                 <tr>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                   <td class="main"><?php echo '<a href="' .tep_href_link(FILENAME_DEFAULT,tep_get_all_get_params(array('products_id'))) . '">' .
                    tep_image_button('button_back.gif', IMAGE_BUTTON_BACK)
    . '</a>'; ?>
              </td>
    
                   <td class="main"align="middle"><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCT_REVIEWS, tep_get_all_get_params()) . '">' . tep_image_button('button_reviews.gif', IMAGE_BUTTON_REVIEWS) . '</a>'; ?></td>
                   <td class="main" align="right"><?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART); ?></td>
                   <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                 </tr>
               </table></td>
             </tr>
           </table></td>
         </tr>
         <tr>
           <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
         </tr>
         <tr>
           <td>
    <?php
       if ((USE_CACHE == 'true') && empty($SID)) {
         echo tep_cache_also_purchased(3600);
       } else {
         include(DIR_WS_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS);
       }
     }
    ?>
           </td>
         </tr>
       </table></form></td>
    
    <br>
    
    <? include(DIR_WS_MODULES . 'thumb_bar.php'); ?>		
    
    </br>
    <!-- body_text_eof //-->
    
       <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">
    <!-- right_navigation //-->
    <?php require(DIR_WS_INCLUDES . 'column_right.php'); ?>
    <!-- right_navigation_eof //-->
       </table></td>
     </tr>
    </table>
    <!-- body_eof //-->
    
    <!-- footer //-->
    
    
    
    <?php require(DIR_WS_INCLUDES . 'footer.php'); ?>
    <!-- footer_eof //-->
    <br>
    </body>
    </html>
    <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>
    

×
×
  • Create New...