Jump to content


  • Content count

  • Joined

  • Last visited

  • Days Won


Everything posted by ecartz

  1. ecartz

    display number of items per page

    I don't think that is the right place. Look for $listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id'); and replace it with if (!tep_session_is_registered('max_products_per_page')) tep_session_register('max_products_per_page'); if (!isset($max_products_per_page) || !is_integer($max_products_per_page) || ($max_products_per_page < 1)) $max_products_per_page = MAX_DISPLAY_SEARCH_RESULTS; if (isset($HTTP_GET_VARS['mppp']) && is_numeric($HTTP_GET_VARS['mppp']) && ($HTTP_GET_VARS['mppp'] > 0)) $max_products_per_page = intval($HTTP_GET_VARS['mppp']); $mppp_list = array(); for ($i = 1; $i <= 5; $i += 1) { //change $i <= 5 to show more or less page options, default is 5 (Example: 12, 24, 36, 48, 60 (total: 5 options)) $mppp = intval($i * 12); //change $i * 12 for products shown per page, default is 12 $mppp_list[] = array('id' => $mppp, 'text' => $mppp); } $mppp_list[] = array('id' => 9999999, 'text' => TEXT_ALL_ITEMS); $gvhf = ''; $ignore = array('page', 'mppp'); if (is_array($HTTP_GET_VARS) && (sizeof($HTTP_GET_VARS) > 0)) { reset($HTTP_GET_VARS); while (list($key, $value) = each($HTTP_GET_VARS)) { if ( (strlen($value) > 0) && ($key != tep_session_name()) && (!in_array($key, $ignore)) ) { $gvhf .= tep_draw_hidden_field($key, $value); } } } $maxpppform = tep_draw_form('prod_per_page', basename($PHP_SELF), 'get') . $gvhf . tep_draw_pull_down_menu('mppp', $mppp_list, $max_products_per_page, 'class="form-control input-sm" style="width:70px;" onchange="this.form.submit()"') . '</form>'; $listing_split = new splitPageResults($listing_sql, $max_products_per_page, 'p.products_id'); Then put the <form class="form-inline pull-right"> <label class="control-label"><?php echo TEXT_SHOW; ?></label> <?php echo $maxpppform; ?> </form> Wherever you have it now (so long as it is after the other code that you added), as that is working. It's also worth noting that Edge already has a version of this. You might check to see if Frozen does as well. If so, you might be better off just updating to Frozen rather than trying to figure out how to implement this. Another thing is that you may want to replace $HTTP_GET_VARS with $_GET everywhere that it appears. And there may be similar issues that aren't leaping out at me.
  2. ecartz

    Payment Modules Issues

    Some things to try: 1. Does Authorize.net work? I.e. at least let you get to the confirmation page (as I understand it, you're stuck on the payment page). If not, this might be a PHP 5.6 issue, as that's what changed. 2. Have you tried using a diff program like ExamDiff or Kdiff3 to check if the core payment files have been changed? I would try this before trying an update or fresh install. 3. Have you checked compatibility of the payment modules? I.e. are they supposed to work with 2.3.3? I notice that there are modules for Stripe and Authorize.net that are currently part of the distribution. Are you using the Stripe module from 2.3.3? Or a different one? It's possible that 2.3.3 did not have Stripe included. You'd have to download it and check. 4. Have you found that error message in the source files? What sends it? Why? If you have an if statement with multiple clauses, break it up into smaller pieces with different error messages (for debugging; plan to restore the original file later). 5. Make a copy of the site on another domain name and with a separate database. Then try to update that. Then you can see how difficult that is. When I see "edited core", I think of systems like Drupal which use hooks instead of direct code edits. The osCommerce system has relatively few hooks. So "editing core" is often the only way that people can change functionality at all.
  3. ecartz

    Voice search strategies

    The biggest thing that you can do to help voice search is look at what search criteria are actually being used on your site and optimize for them. For example, if you have a lot of searches for blew dresses or fresh meet, make sure that those searches find things listed as blue dresses and fresh meat respectively. You should be doing this kind of thing anyway. But it would currently be focused on typos, like blu dresses or fresh met rather than homophones. Homophones are much more of a problem with voice search, as the voice parser may not always figure out what word is meant. The basic idea is that you track what searches returned no results. Look at them and understand why they failed. For example, if you sell clothes and get a search for fresh meat, that's simple user error that you can ignore. But an empty search for blew or blu dresses when you do have blue dresses is something that should be fixed. You can see this on Amazon and Google. They say something like "Showing results for blew dresses, but did you really mean blue dresses perhaps?" They link to the possible alternative and sometimes they show both results mixed together. When they mix them, they often link both alternatives.
  4. ecartz

    Product image upside down

    That's in the language file (the main one). For example, from includes/languages/english.php, it says: define('HTML_PARAMS', ''); From admin/includes/languages/english.php , it has define('HTML_PARAMS','dir="ltr" lang="en"'); That's left to right. To change to right to left, replace ltr with rtl. Also change the lang to the two letter code for your language. I.e. replace the en with whatever is appropriate. You can read more about the dir parameter to the html tag at https://www.w3.org/International/questions/qa-html-dir There should be a .css file in your catalog directory. Change your fonts in that. It used to be called stylesheet.css but may have been renamed, e.g. to user.css.
  5. ecartz

    product Quantity

    Can you try making just one change at a time? I'd try the language files first. If you get error messages just with the language file changes, please post those errors, the code that you added, and some of the surrounding code for context. If those go through fine, then add the image files. Change admin/categories.php last. And just to be sure we are both on the same page, where it says LANGUAGE, you should be writing something like english, e.g. /admin/includes/languages/english/categories.php
  6. ecartz

    Cokies in backend and configure

    Cookie domain should be just a domain like .oscommerce.com or forums.oscommerce.com A cookie path of / is probably correct. Sometimes it might be something like /catalog or similar. In general, / is enough so long as you aren't running other web software on the same domain. The problem that you would see then would be the two software applications confusing each other by stomping on each other's cookies. That's when you might want to restrict the cookies to just the /catalog path. If you force cookies, that means that people who have cookies turned off won't work with your site. It can occasionally fix things if the software is diagnosing cookies as disabled but they really exist. But it is more likely to break things. Similar problem:
  7. ecartz


    Which version of osCommerce are you using? And with what Add-ons? Traditionally image upload has been separate from basic osCommerce, and when I look at https://github.com/gburton/Responsive-osCommerce/blob/master/includes/functions/html_output.php it's not there. I would expect to find it either in https://github.com/gburton/Responsive-osCommerce/blob/master/includes/languages/english.php or https://github.com/gburton/Responsive-osCommerce/blob/master/includes/languages/english/product_info.php But it really depends on where the Add-on might have put it. And of course it depends on how German is stored in your languages. German? Deutsch?
  8. According to Mozilla at https://developer.mozilla.org/en-US/docs/Web/API/Storage/getItem You can say instead: // HeadScroll save checkbox state to session $(function(){ $('#scroll').each(function() { var $el = $(this); var $checked = sessionStorage.getItem($el.prop('id')); if ($checked === null) { sessionStorage.setItem($el.prop('id'), 'true'); } $el.prop('checked', sessionStorage[$el.prop('id')] === 'true'); }); $('#scroll').on('change', function() { var $el = $(this); sessionStorage[$el.prop('id')] = $el.is(':checked'); }); }); I haven't tried this. This is just from looking at docs.
  9. ecartz

    Keeping Error Logs Clean

    The first warning seems to be telling you that $cPath_array is not an array. This usually means that it is missing a $cPath_array = array(); That may need to appear much higher in the file (or even in a different file) though, as it needs to appear before anything is put in the variable. Perhaps put it above the application_top.php include in index.php. You could also surround this line with if (is_array($cPath_array)) { } But that may just shift or delay the problem. The second warning seems to be saying that the delivery country is a string, not an array. Either change it to $dest_country = $order->delivery['country']; Or set $order-delivery to be an array. This may be a sign that an add-on was installed incorrectly. It seems to be getting set the old way but the module is querying it the new way. If you used an order.php file from an older add-on, it may set it the old way. The third warning is telling you that either $shipping_weight is set to a non-numeric value or SHIPPING_BOX_WEIGHT is or is not defined at all. An add-on may be missing a database change that should have been made. You could hard code something like define(SHIPPING_BOX_WEIGHT, 3); and the error might disappear. But then you won't be able to edit the value without changing this code. Better would be to make the change in the database. Also, make sure that you don't have it configured as something like "3 lbs". That value should be purely numeric. No units. So just 3 or whatever number is appropriate. The fourth warning is telling you that $$link is not set properly. This should probably be fatal but seems to be happening only in the admin area, possibly intermittently. If you can make it happen consistently under some circumstances, that would be easier to diagnose.
  10. ecartz


    It sounds like one of your shipping module or CCGV made changes to checkout_process.php directly rather than via module. You would need to figure out what those changes were and make equivalent changes in paypal_express.php or whatever the name is. I believe the file that you need to modify is under the ext directory, but it's been a while since I've played with it. I believe this is what Tim was suggesting. The short version is that the PayPal files duplicate some of the functionality from checkout_process.php, so add-ons that modify checkout_process.php also require changes to other PayPal files. This is beyond just copying files. You almost certainly have to edit files manually. In the past, I've used a tool called KDiff3 to help me with these kinds of tasks. I leave it up to you whether you want to try to figure out how to make such manual edits or not. Depending on how you value your time and frustration, it may be time to pay someone to do it.
  11. ecartz

    Forum Software Update (31st July 2018)

    It looks like the report post link is in a color that is close to the background color. But if you hover over it, it shows up. It also might show up if you used it recently and it shows the visited color. I didn't try that. I tend to browse with Javascript off, so that might change things too.
  12. ecartz

    Excel Populate for Oscommerce

    This is the wrong forum for add-on questions, but two quick comments: return ord($data[$pos]) | (ord($data[$pos+1]) << 8) | // line 27 (ord($data[$pos+2]) << 16) | (ord($data[$pos+3]) << 24); This probably doesn't parse properly. Consider return ord($data[$pos]) | (ord($data[$pos+1]) << 8) | (ord($data[$pos+2]) << 16) | (ord($data[$pos+3]) << 24); For the other line, try a smaller file. It seems to be complaining that things are too big.
  13. Contribution link: DHTML State Selection This add on addresses a missing feature and fixes a bug in address editing. In standard osCommerce, when you add or edit an address, you have to enter the state (or province or county or region or whatever it is called in your country) free hand into a text box. The desired feature being to select from a drop down to avoid typos, etc. Then, if you submit, it replaces your entry with a drop down menu of all the states in that country. However, if you selected the wrong country, you then have to change the country and submit the form to get the correct drop down. That's the bug. This add on dynamically switches between drop down menus for the various countries. For example, with the default osCommerce install, it will allow you to select the United States as the country and then pick Alabama (or any of the other US states) from a drop down menu. Then, if you change your country to Canada, the drop down will show a list of Canadian provinces. If you pick a country that does not have any zones in the database, it will show the standard text input. The add on also defaults the country to the store country setting. There is one feature that is removed. If the user does not have Javascript running in their browser, then this version only ever shows the text input. This fixes the bug of not being able to switch countries but at the price of never offering the convenience of the drop down to a non-javascript user. A possible future enhancement would be to show both the text input and the drop down in this case. However, that was beyond the scope of the current project. Another add on that does something similar via AJAX is Country-State Selector. I haven't used it, so I pass on the question of which is better.
  14. ecartz

    Linkpoint Connect 2.0

    I am getting ready to upload a new version of the Linkpoint Connect payment module for osCommerce. I have made no changes in the previous module. What I have done is to add a new module (with english language file) that does not collect any credit card information. Instead, it posts the order information to Linkpoint, which then collects the card information and processes the payment. This module should be suitable for shops that do not want to meet the PCI/DSS requirements for collecting credit card information. The uploaded zip has both modules in it. Posting the topic before the module so that I can include a link to this thread in the module description. Previous versions have not included a support thread, which has led to some fragmentation of the topics. This is especially burdensome since there are four separate contributions for Linkpoint. Hopefully posting a support thread will collect any new information in one place. Known issue with the new module: when you post to Linkpoint, it shows the credit card holder's name, street address, state, and zip code but not the city. It gets the city, but it does not allow the city to be changed even though it will allow the zip and state to be changed. This is a weird behavior, but as best I can tell, it is a Linkpoint issue rather than an issue with the module. If someone finds out differently, they should post here. URL for the contribution: http://addons.oscommerce.com/info/2423
  15. Since there doesn't seem to be a support thread for this contribution, posting one. The Admin Reports Count Reset contribution is at http://addons.oscommerce.com/info/2246 Note that the contribution actually clears the values in the database. This affects the best sellers list as well as the admin reports. The contribution includes the ability to clear either products viewed or ordered for a single product or for all of the products at once. For this reason, it is best to backup the database before using. Changes can not be undone in the tool. This contribution also allows you to sort the report tables by count (ascending or descending) and product name (again ascending or descending). Further, it fixes a bug in the osCommerce distribution where the row number would show 01 to MAX_SEARCH_RESULTS on each page. The rows will now be numbered correctly, starting at MAX_SEARCH_RESULTS + 1 on the second page. For example, if you have osCommerce configured with MAX_SEARCH_RESULTS of 20, it will show 01 to 20 on the first page, 21 to 40 on the second page, 41 to 60 on the third page, etc. The current version of the contribution (1.5) should be completely compatible with osCommerce 2.2 RC2a and with register_globals set either on or off.
  16. Link to Checkout Redux: http://addons.oscommerce.com/info/7019 This is a public Beta of an add on that rewrites the checkout process to do three things: 1. Insert orders in the database before redirecting to external payment processors (e.g. PayPal). 2. Shorten the checkout registration process by creating the account implicitly rather than explicitly. 3. Accelerate the checkout process by skipping steps where the user was just clicking a continue button. The process goes somewhat like this: for users who are not logged in, they go to a checkout login page where they have the option of logging in or of entering a shipping address (billing address in the case of virtual products). If they enter a shipping address, it creates an account automatically, with a random password. The next step is to check if there is more than one shipping option; if there is, it will show the checkout shipping page and allow the customer to pick; if there is not, it will register the shipping method and skip to the payment page. On the payment page, it will again check if there is more than one option; if there is, it will let the customer pick; if there is not (or after the customer picks), it will go to the confirmation page. After the customer confirms, it goes to checkout_process (always) and inserts the order. If the payment method includes a redirect, it will then do a form post via javascript (for users who do not have javascript enabled, they will have to click a continue button). When payment completes and redirects back to checkout_process, the email gets sent unless the payment module has a process_notification variable set. In that case, it will wait to send the email until the notification is received by the processor. For customers who registered during this checkout, an additional section will be added to the email that explains how they can activate their accounts. If the customer cancels the transaction at the processor, the order will be marked cancelled and the products will be reloaded into the shopping cart. A store owner can browse these cancelled orders and optionally take actions to try to recover them (e.g. emailing the customer asking if there was a technical problem; offering a discount, etc.). For a store that only has one payment method and one shipping method, the normal effect of all this will be for the checkout to consist of a login step, a confirmation step, payment, and a notification step. For all customers, it removes the shipping and payment selection steps (if not needed). For new customers, it also removes the click to go to registering an account and the click to continue after registering the account. What was a minimum of seven clicks for a new customer is now down to just three (checkout, submit address, confirm) plus anything extra required by the payment processor. This add on includes a modified version of the PayPal Standard module that incorporates the notification method from the add on. Other payment modules with IPN style functionality would need to be modified to use the new method to take advantage of how this add on works. Fortunately, this consists mostly of deleting code from the payment module. The notification processor does need to be modified to include the emailing portion of the contribution, which is packaged into a module for reuse in that way. The package also includes a Google Analytics integration (to demonstrate the advantages of some of the checkout success changes; contrast with the osCommerce Google Analytics module upon which it is very loosely based), alternate files for use with the DHTML State Selection add on, and an example of how to integrate another add on that changes the checkout_process.php file: Gift Voucher (GV) and Discount Coupons (DC) for RC1, RC2, RC2a. Unfortunately, due to the completeness with which the add on changes checkout_process.php, it's not suitable for installation on modified stores (it can be done, but you really need to know what you are doing). The installation instructions require that you start with a clean osCommerce 2.2 RC2a store and copy over the existing files. Once you've done that, the installation instructions include information for integrating other add ons with the modified files, using the included integrations as examples.
  17. When I upload it, BTS 1.7 will be updated to the 2.2 RC2a standards. From the changelog: The Basic Template Structure location in the contributions area remains the same. There is no functional improvement in this release. The only changes are to increase compatibility with RC2a. Therefore, no upgrade instructions have been provided. If you are using an older version, you can continue to do so. If you launch a new RC2a store, you can use this version.
  18. ecartz

    DHTML State Selection

    It's not clear to me why the language would make a difference. None of the new SQL queries are language dependent. Also, if I try it on my test site, it works (at least in Spanish and German). Perhaps the problem would be more obvious if you posted a link to the page that is not working?
  19. ecartz

    Checkout Redux [Support Thread]

    The relevant section of code is if ($check_email['total'] > 0) { $error = true; $email_exists = true; $messageStack->add('checkout_address', sprintf(ENTRY_EMAIL_ADDRESS_EXISTS_ERROR, tep_href_link(FILENAME_PASSWORD_FORGOTTEN, '', 'SSL'))); } However, I don't know that there is a simple fix that preserves the advantages of the current system. One possibility would be to delete the previous row or change the email address in it so that the new row could be added. That's what the Purchase without Account contribution does. E.g. something like if ($check_email['total'] > 0) { tep_db_query("delete from " . TABLE_CUSTOMERS . " where customers_email_address = '" . tep_db_input($email_address) . "'"); } Note: I haven't tested this in any way.
  20. ecartz

    Purchase Without Account

    The name of the add on is Checkout Redux.
  21. As written, guests should not be able to see My Account, as they don't have an account and wouldn't be able to use any of the My Account links. No historical orders, no password to change, etc. The only thing that they could do would be to edit addresses, and there is already provision in checkout for that.
  22. ecartz

    Charset langauge chandges problems

    For 1, you would change // charset for web pages and emails define('CHARSET', 'iso-8859-1'); to the appropriate charset in includes/languages/russian.php (or whatever language). Russian currently looks correct on your site, appearing in KOI-8. Maybe you fixed this. You also might need to make the same change in the admin languages file. For 2, if you were using the original template, the navigation would look like <td align="right" class="headerNavigation"><?php if (tep_session_is_registered('customer_id')) { ?><a href="<?php echo tep_href_link(FILENAME_LOGOFF, '', 'SSL'); ?>" class="headerNavigation"><?php echo HEADER_TITLE_LOGOFF; ?></a> | <?php } ?><a href="<?php echo tep_href_link(FILENAME_ACCOUNT, '', 'SSL'); ?>" class="headerNavigation"><?php echo HEADER_TITLE_MY_ACCOUNT; ?></a> | <a href="<?php echo tep_href_link(FILENAME_SHOPPING_CART); ?>" class="headerNavigation"><?php echo HEADER_TITLE_CART_CONTENTS; ?></a> | <a href="<?php echo tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'); ?>" class="headerNavigation"><?php echo HEADER_TITLE_CHECKOUT; ?></a> </td> and would be localizable. If your template does not do this, then you would need to change it so that it does. It would be hard to explain further without seeing the code that your template uses to display the navigation, but the idea is that you should replace hard coded strings like Home with code like <?php echo HEADER_TITLE_TOP; ?>
  23. ecartz

    Basic Template Structure 1.7

    In admin >> Configuration >> My Store, there should be an option for "Template Switching Allowed". Set that to true, and the template switcher should appear at the top of the page in the included templates. If you need to add it to a new template, it's the following code: <?php // include template switcher in every template if ( bts_select('common', 'common_top.php') ) include (bts_select('common', 'common_top.php')); // BTSv1.5 ?>
  24. ecartz

    Dates By Products AddOn Development

    Are you using an option types contribution? The installation should show you where you need to make changes to pass a date rather than a MySQL ID. The simplest thing would be to install something like Option Types v2 and then use the text passing capability to pass the date value (rather than try to pass a MySQL date value). Date would simply be a new option type in that scenario, a new case in various switch statements.
  25. ecartz

    How long until v3 is ready?

    That would be in the News & Announcements section. In particular, you can find the revised roadmap in the first post of the 3.0 Alpha 5 release thread.