Jump to content


  • Content count

  • Joined

  • Last visited

  • Days Won


Posts posted by Demitry

  1. Quote

    But I saw in your older posts that you have already updated to PWA 3 series.

    No, actually I have version 2.5 ...I keep a spreadsheet of all the changes and addons I install and this is the latest one I have. That version 2.4 I got from the /admin/orders.php file top header part. I must not have updated that when moving to 2.5

    Anyway, thanks Rainer. Looks like I need to just update everything to version 3.0.5 ...I just downloaded it and am on my way. Thanks again!

  2. Quote

    which PWA version are you using.

    Looks like version 2.4

    And after looking at the addon download page the latest version is 4.0.0 ... so, I need to update.

    Is the latest version compatible for BS Edge or is it designed for Phoenix?


    Also, just a suggestion, ..to make the invoice link in the Order Update email clickable, as opposed to having the customer copy and paste it into a new browser window. Though you may already have that changed in the newer versions.

                //$link = $check_status['customers_guest'] != '1' ? EMAIL_TEXT_INVOICE_URL . ' ' . tep_catalog_href_link('account_history_info.php', 'order_id=' . $oID, 'SSL') . "\n" : '';
                $link = $check_status['customers_guest'] != '1' ? EMAIL_TEXT_INVOICE_URL . ' <a href="' . tep_catalog_href_link('account_history_info.php', 'order_id=' . $oID, 'SSL') . '" target="new">' . tep_catalog_href_link('account_history_info.php', 'order_id=' . $oID, 'SSL') . '</a>' . "\n" : '';


  3. @raiwa

    hi Rainer,

    I have BS Edge on PHP7.2 and I cannot seem to get the Order Update emails to display the review links of the purchased products. So far, I’ve only been testing the registered customer account.

    I looked through this forum and could not locate anything in regards to this issue. Here is the code block for these links from my /admin/orders.php file.

    Do your review links display in the Order Update emails? Any idea of what I can do to get them to display? Thanks.

    // PWA guest checkout
            $check_status_query = tep_db_query("select customers_name, customers_guest, reviews_key, customers_email_address, orders_status, date_purchased from orders where orders_id = '" . (int)$oID . "'");
            $check_status = tep_db_fetch_array($check_status_query);
            if ( ($check_status['orders_status'] != $status) || tep_not_null($comments) ) {
              tep_db_query("update " . TABLE_ORDERS . " set orders_status = '" . tep_db_input($status) . "', last_modified = now() where orders_id = '" . (int)$oID . "'");
              $customer_notified = '0';
              if (isset($_POST['notify']) && ($_POST['notify'] == 'on')) {
                $notify_comments = '';
                if (isset($_POST['notify_comments']) && ($_POST['notify_comments'] == 'on')) {
                  $notify_comments = sprintf(EMAIL_TEXT_COMMENTS_UPDATE, $comments) . "\n\n";
    // PWA guest checkout BEGIN
                if ( isset($_POST['add_reviews']) && ($_POST['notify'] == 'on') ) {
                  $order = new order($oID);
                  $products_review_links = constant('MODULE_CONTENT_PWA_REVIEWS_' . strtoupper($language)) . ':' . "\n";
                  for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
                    if ($check_status['customers_guest'] == '1') {
                      $products_review_links .= '<a href="' . tep_catalog_href_link('product_reviews_write_pwa.php', 'products_id=' . tep_get_prid($order->products[$i]['id']) . '&pwa_id=' . $check_status['reviews_key'], 'SSL', false) . '">' . $order->products[$i]['name'] . '</a>' . "\n";
                    } elseif ($check_status['customers_guest'] != '1') {
                      $products_review_links .= '<a href="' . tep_catalog_href_link('product_reviews_write.php', 'products_id=' . tep_get_prid($order->products[$i]['id']), 'SSL', false) . '">' . $order->products[$i]['name'] . '</a>' . "\n";
                $link = $check_status['customers_guest'] != '1' ? EMAIL_TEXT_INVOICE_URL . ' ' . tep_catalog_href_link('account_history_info.php', 'order_id=' . $oID, 'SSL') . "\n" : '';
                $email = STORE_NAME . "\n" . EMAIL_SEPARATOR . "\n" . EMAIL_TEXT_ORDER_NUMBER . ' ' . $oID . "\n" . $link . EMAIL_TEXT_DATE_ORDERED . ' ' . tep_date_long($check_status['date_purchased']) . "\n\n" . $products_review_links . "\n" . $notify_comments . sprintf(EMAIL_TEXT_STATUS_UPDATE, $orders_status_array[$status]);
    // PWA guest checkout END


  4. Quote

    <?php if ( !defined ( MODULE_THEME_SWITCHER_STATUS ) || MODULE_THEME_SWITCHER_STATUS != 'true' ) { ?>

        <link rel="stylesheet" type="text/css" href="ext/bootstrap/css/bootstrap.min.css">

    <?php } ?>

    you can put it in your head

    Thanks Kevin, but I don't use the Theme Switcher addon. And, I actually do need BootStrap for that page.

    I resolved this topic's issue by doing what I originally said,.. via separating the modules into two cm-folders and calling them each as a block in the related parts of my template.


  5.       echo '</td>' . "\n" .
       '<td class="dataTableContent" valign="top">' . $order->products[$i]['model'] . '</td>' . "\n" .
       '<td class="dataTableContent" align="right" valign="top">' . tep_display_tax_value($order->products[$i]['tax']) . '%</td>' . "\n" .
       '<td class="dataTableContent" align="right" valign="top"><strong>' . $currencies->format($order->products[$i]['final_price'], true, $order->info['currency'], $order->info['currency_value']) . '</strong></td>' . "\n" .
       '<td class="dataTableContent" align="right" valign="top"><strong>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax'], true), true, $order->info['currency'], $order->info['currency_value']) . '</strong></td>' . "\n" .
       '<td class="dataTableContent" align="right" valign="top"><strong>' . $currencies->format($order->products[$i]['final_price'] * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . '</strong></td>' . "\n" .
       '<td class="dataTableContent" align="right" valign="top"><strong>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax'], true) * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . '</strong></td>' . "\n" .
          echo '      </tr>' . "\n";

    For one thing you have two echo statements and the first one is not closed with a semicolon. My development software is showing two other syntax errors in this block that I compared to my code and could not find. So, I replaced those two lines and the errors went away. Try this for that same block I posted above.

          echo '</td>' . "\n" .
       '<td class="dataTableContent" valign="top">' . $order->products[$i]['model'] . '</td>' . "\n" .
       '<td class="dataTableContent" align="right" valign="top">' . tep_display_tax_value($order->products[$i]['tax']) . '%</td>' . "\n" .
       '<td class="dataTableContent" align="right" valign="top"><strong>' . $currencies->format($order->products[$i]['final_price'], true, $order->info['currency'], $order->info['currency_value']) . '</strong></td>' . "\n" . 
       '<td class="dataTableContent" align="right" valign="top"><strong>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax'], true), true, $order->info['currency'], $order->info['currency_value']) . '</strong></td>' . "\n" .
       '<td class="dataTableContent" align="right" valign="top"><strong>' . $currencies->format($order->products[$i]['final_price'] * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . '</strong></td>' . "\n" .
       '<td class="dataTableContent" align="right" valign="top"><strong>' . $currencies->format(tep_add_tax($order->products[$i]['final_price'], $order->products[$i]['tax'], true) * $order->products[$i]['qty'], true, $order->info['currency'], $order->info['currency_value']) . '</strong></td>' . "\n";
          echo '      </tr>' . "\n";


  6. Quote

    i try your addon there is a issue with a sql on checkout you have to null the value and add a tracking_no varchar(225) utf8_unicode_ci Yes NULL also edit the checkout_process.php                           'tracking_no' => $order->info['tracking_no'],

    i fixed it now it works at my end

    Thanks Peter, I was just going to ask you if you've had any issues with it. And, I have nothing in the error log as well.

    The utf8_unicode_ci  in the orders_history_status table is something I did miss, but it works fine. I'll change it on the next update.

    As far as adding tracking related code to the checkout_process.php file, ..again, I'm not sure why that would be needed. The tracking number is not issued or processed during checkout.


  7. Ok, so a quick update,...

    I downloaded Phoenix v1.0.2.0 (Community Edition) and looked at the product_info.php page and related pi modules. It's pretty much the same as the BS Edge. So, I assume the new Product Information System is not in the "Community Edition."

    I also looked at the oscTemplate class (something I should have done from the start) and now understand it far better than I did before.

    After that I decided to test what Malcolm referred to and include the individual modules and their related language files in the Left Column and Right Column of my template. That did not work either and there were no errors in the error log.

    So, unless one of the Sr. developers has a quick working solution, I think my alternative is (as mentioned before), to just create another module block for the Right Column and move the individual modules I want to display in the Right Column to that module group folder.

  8. @Dan Cole

    Dan, thank you for the explanation and yeah, it does seem like something I could use. Though is that something I can integrate with BS Edge?, ..because I am really not up to starting from scratch with a newer version of osC.



    hi Malcolm,

    Actually, I thought of doing the same thing, but only after I created this page post, lol.

    I have not tried it yet and my thoughts were that the modules have to be ran through the oscTemplate.

    However, I am not sure if that makes any difference in terms of security or anything else. I just don't know how calling the module block contents through the oscTemplate actually works. Perhaps I need to explore that first.

  9. @Kevin.Dallas

    One more thing about the usability of creating a feature like this. I assume that you need to make changes once in a while to a tracking number due to an initial data-entry error.

    With your solution,.. changing it in the Order History Update section/log will not send an email to the customer to notify them of the correction. And, it will not date/time stamp that correction for your own records, so that you can go back and see when you made this change.

    Of course, you could hire a developer to have these features added as well, but why? All you have to do is post another Order Update with the correct tracking number and add a note saying that this is the correct tracking number so, please discard the one sent in the last update.

    This will record in your Order History Update section/log and it will send an email to the customer notifying them of the change. Better record keeping, no need to get into the database, and no need to pay a developer. Problem solved!

  10. @Kevin.Dallas

    Kevin, as I understand it,.. I think what you're looking for is the ability to edit the tracking number after you've submitted it via Order Status Update.

    Unfortunately my addon that Peter mentioned does not do this. You can enter it via the input field and it will be stored in the database for that particular Order Status Update, but to alter it after it was submitted with the Update button on that page, means having to go into the database.

    I suggest contacting the author of the addon you're using to see if they can do this for you. What I think you need is to have the tracking number field in the Order Status Update section be an input-box that displays the tracking number saved in the database and can then be edited using onChange event.

    Sorry I cannot be of more help.



  11. Quote

    Would the pi functionality not be the place to start for this? Combined with module control it could make the system extremely customisable.

    Lee, I believe that you’re referring to the same Product Information System that Dan mentioned. I’m currently in the dark when it comes to that particular topic. However, I completely support any and all initiatives that would make this software easier to customize …and especially, for the non-technical user.

  12. Thank you all for your response.

    ok, so a bit more clarity on what I'm doing. I have a site where there are no left or right columns, so the center column stretches the width of the page. I added a simple template to some of the pages that breaks up that center column into two sections; the left is 8 col and the right is 4 (on desktop), ..along with a 1px border that separates them. See screenshot below. The yellow and green areas are part of this template.

    Calling the oscTemplate module block would place all the modules in either left or right sections. So, to break up these individual modules I could either create a new module folder (lets say call it checkout_success_rc .."rc" for right column) and place those modules in that folder. Then call it in the page template for that right side (see code structure below the image).

    However, I was wondering if there is a way to just call the individual modules instead of the entire set. If that was possible, then I would not need to create an additional module folder. I could just call individual modules from the same set into either the left column or the right column.



    <div class="contentContainer">
      <div class="contentText row">
        <div class="col-xs-12 col-sm-8 split-page-8-4-cs-left">
          <?php echo $oscTemplate->getContent('checkout_success'); ?>
          <div class="clearfix"></div>
        <div class="col-xs-12 col-sm-4 split-page-8-4-cs-right">
          <?php echo $oscTemplate->getContent('checkout_success_rc'); ?>


  13. @kgtee

    hi KG, thank you for the reply.

    I read Burt's post and both, his array of good_pages and the option of selecting the pages for the modules to be activated on, do not address the challenge I have with calling the individual modules from a module block.

    So, what I want to do is call each of the five modules within that /includes/modules/content/checkout_success/ folder, one at a time. That would allow me to place them where I want on the "same" page. I'm not trying to get these module to display on other pages. I want them all on the checkout_success.php page. However, to position them according to my custom template I need to call them individually.


  14. hi,

    I have BS Edge on PHP 7.2 and, ...I have a custom template layout. I am trying to figure out if there is a way to call individual modules within the oscTemplate block into different parts of my template.

    I know how the modules within a oscTemplate block can be managed via sort order and BS row width, but this does not work for my template structure.

    I could create a new module block and move those individual modules that I want in a different part of the template into that folder and then call that block into the template, but I would rather not create more module folders and instead, just pull individual modules out of the same module block and place them where I need them in my custom template. Is that possible?


    So, ..for example: the checkout_success.php page calls a block of modules in the /includes/modules/content/checkout_success/ folder using this code:


    In that content module folder are five individual modules and their related templates. I'm looking for a way to call each of these individually instead of as a whole block.

    Any help would be greatly appreciated.

  15. hi Phil,


    The article goes on to note that there have been some API changes since v1 and v2, so upgrading jQuery is more than just dropping in a new library.

    What API changes are there? As I mentioned in the post above, I installed the latest jQuery v3.4.1 and everything is running smooth. Are there any other changes I need to make?

  16. I have BS Edge running on PHP 7.2 and decided to try updating the jQuery version from 3.1.1 to 3.4.1 on the catalog side.

    I cannot see any issues at this point. The checkout seems to work fine and nothing seems to be off.

    Is there anything in particular I should be looking for? Nothing seems to be breaking the site or causing problems.

    And, are there any other changes I need to make, other than adding the new jQuery 3.4.1 file to /ext/jquery/ folder and changing the call for that file in /includes/template_top.php?


  17. hi,

    I applied Gergely's solution and tested the same product_info page before and after. The one part I did not use from the solution, was the code changed for ht_grid_list_view.php file. For some reason the last line was causing an error in the application I am using and I decided not to use that particular change. I also used my own .htaccess DEFLATE script. The GTMetrix results are in the screenshot below.


    Shaving off two requests and 100+ms is Great!

    However, after the changes, the page loads where not smooth. I cleared the browser cache and every time I'd reload a page or load a new one, it would flash an "un-formatted" version of the page for like a split second and that made page-loading jumpy.

    After playing around for a while in trying to get an ideal order of resources being loaded to eliminate that jumpiness, I ended up reverting the changes for the /includes/template_top.php file, but kept some of the other ones.

    Just wanted to thank you for addressing the page loading speed issue and for providing a viable working solution. The test results prove that it works!



  18. @raiwa

    hi Rainer,

    I wanted to download and install this addon, but am confused as to which version to get. I have BS Edge with BS3.

    Several of the more recent releases say, " Older versions, FROZEN, EDGE and Gold BS3, please use Discount_Codes_4.4.3_BS"

    However, there is no 4.4.3 BS,.. there is 4.4.2 BS and then there are 3 newer releases after that starting with 5.0.0.

    So, I assume I need the 4.4.2 BS? ..and then,.. do I need to manually transfer some of the newer changes from the 3 later releases?


  19. Quote

    There's really no reason to have it that I can see. It just adds another step in managing the product.

    For the most part I agree, but I have custom image code that is not part of osC and it creates folders inside the catalog/image folder and uploads images to that folder. So, I have to figure out how to integrate that code with insert product and update product instead of using it for preview. Or keep the preview and possibly use localStorage for those fields.

    I'll figure something out, thanks.

  20. yeah, mine is the same. see below:

      } elseif ($action == 'new_product_preview') {
        if (tep_not_null($_POST)) {
          $pInfo = new objectInfo($_POST);
          $products_name = $_POST['products_name'];
          $products_description = $_POST['products_description'];
          $products_url = $_POST['products_url'];
    // BOF: Header Tags SEO
          $products_head_title_tag = $_POST['products_head_title_tag'];
          $products_head_title_tag_alt = $_POST['products_head_title_tag_alt'];
          $products_head_title_tag_url = $_POST['products_head_title_tag_url'];
          $products_head_desc_tag = $_POST['products_head_desc_tag'];
          $products_head_keywords_tag = $_POST['products_head_keywords_tag'];
          $products_head_breadcrumb_text = $_POST['products_head_breadcrumb_text'];
          $products_head_listing_text = $_POST['products_head_listing_text'];
          $products_head_sub_text = $_POST['products_head_sub_text'];
          $products_head_additional_words = $_POST['products_head_additional_words'];
    // EOF: Header Tags SEO


    I also thought that it might be in this block which is a bit further down for the preview page. Here I have one of the deprecated each() functions updated, but it makes no difference either way in terms of the issue at hand.

          //while (list($key, $value) = each($_POST)) {
          foreach($_POST as $key => $value) {
            if (!is_array($_POST[$key])) {
              echo tep_draw_hidden_field($key, htmlspecialchars(stripslashes($value)));
          $languages = tep_get_languages();
          for ($i = 0, $n = sizeof($languages); $i < $n; $i++) {
            echo tep_draw_hidden_field('products_name[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_name[$languages[$i]['id']])));
            echo tep_draw_hidden_field('products_description[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_description[$languages[$i]['id']])));
          // BOF: Header Tags SEO
            echo tep_draw_hidden_field('products_head_title_tag[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_head_title_tag[$languages[$i]['id']])));
            echo tep_draw_hidden_field('products_head_title_tag_alt[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_head_title_tag_alt[$languages[$i]['id']])));
            echo tep_draw_hidden_field('products_head_title_tag_url[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_head_title_tag_url[$languages[$i]['id']])));
            echo tep_draw_hidden_field('products_head_desc_tag[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_head_desc_tag[$languages[$i]['id']])));
            echo tep_draw_hidden_field('products_head_keywords_tag[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_head_keywords_tag[$languages[$i]['id']])));
            echo tep_draw_hidden_field('products_head_breadcrumb_text[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_head_breadcrumb_text[$languages[$i]['id']])));
            echo tep_draw_hidden_field('products_head_listing_text[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_head_listing_text[$languages[$i]['id']])));
            echo tep_draw_hidden_field('products_head_sub_text[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_head_sub_text[$languages[$i]['id']])));
            echo tep_draw_hidden_field('products_head_additional_words[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_head_additional_words[$languages[$i]['id']])));
          // EOF: Header Tags SEO
            echo tep_draw_hidden_field('products_url[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_url[$languages[$i]['id']])));


    So,.. what I did was to replace the categories.php file with the one from the less than 2.3 version. And after replacing all the directory and filename definitions for a basic test run, I went through to the preview page and then clicked the Back button and the result was the same -- all of the fields for the header_tags_seo.php module were empty.

    I tried doing the same thing by swapping out the header_tags_seo.php module, which is where all the HT fields are coming up empty, with no change. I cannot seem to pin point it. Maybe it's something else that PHP7.2 doesn't like.