Jump to content
thirty bees forum

cprats

Members
  • Posts

    143
  • Joined

  • Last visited

  • Days Won

    5

Everything posted by cprats

  1. cprats

    Goodbye

    In my opinion, we cannot let die the best ecommerce software I've ever seen, and we must do whatever is necessary to guarantee this goes on. We could all migrate to PS1.7, but I don't want to rely on that software: headaches suddenly ended when I met TB. I am a PS1.6 refugee from the time it was announced support would be stopped to favour 1.7, and I won't go back.
  2. I need to translate Stirpe, but I could do that only partially: In Translations - Installed modules I could only translate "Pay with card" (Pagar con tarjeta) and "Pay now" button (Pagar). The fields "card number, "MMYY" and "CVV" do not appear there. How can I complete the translation?
  3. Possibly it is not worth it: it labels as "vulnerabilities" libraries Bootstrap@3.3.7 and jQuery@1.11.0, but most probably Google relies on this tool for SEO.
  4. Hello, Testing with Google Audits (Lighthouse) I've noticed that the category images, perfectly showing when Crhome charges the page, do not show after an audit is performed, and they show up again when you close the right window of the audit. Here what I say (and I take as example the thirtybees demo site https://front.thirtybees.com/ ). Mine has the same problem, while others don't. Under "best practices" section, messages warn this: Failed to load resource: the server responded with a status of 404 () Does anyone have any idea of why this happens?
  5. I did a little hack with @datakick Blackhole for Bad Bots wonderful module and .htaccess again. Here is what I did to alternatively solve this issue without having to block large ranges of IPs: I've changed the contact-us friendly url to domain.com/random-url I've set disallow rules for bots under robots txt for the former url /*contact-us. Nothing better to get sure spambots will use that link than setting a disallow rule for it. I've redirected domain.com/contact-us to blackhole for bad bots in .htaccess file and I've had some fun watching that pest being trapped there. Here's the .htaccess code for if anyone needs it: Redirect 302 /contact-us https://www.yourdomain.com/modules/blackholebots/blackhole/ (remember to change the /contact-us url for your contact page to anything else and to clear cache before making the redirect in .htaccess)
  6. One of my sites has recently been flooded with spam mail through contact form, with some 10,000 emails from qq dot com addresses. As the system sends a confirmation message to the sender ("Your message has been correctly sent"), I had the same amount of outgoing mail, and the hosting company suspended outgoing mail from the domain. I installed the No Captcha reCAPTCHA module, and I also blocked all Chinese IP ranges through .htaccess, and this stopped the flood of junk mail. As this website is based in the US I could use the Captcha module with no worries about cookies and EU laws, but here is the question: what happens if one of my sites based in the EU is spam bombarded? Using cookies there would be quite more complicated, as I would need to block all cookies with a GPRD module, and wait and see if the visitor wanted to allow cookies on his computer of if he ever bothered to click the "accept" button on a bottom bar. Meanwhile, as cookies should be disabled for Captcha until visitor's acceptance, Chinese bots would be able to continue spamming with no limits, as Captcha would not display for them neither unless they accidentally clicked on the "accept cookies" button. Is there a way to avoid sending the "Your message has been correctly sent" message when contact form is used?
  7. You could also use "Bankwire Module" and instead of giving a bank account number through it, you could write down instructions on other offline payment methods, or offer them alongside with a bank account number if you need this module to enable bank wires.
  8. Blackhole for Bad Bots is a free module by @datakick very useful to block disrespectful crawlers. The system is very simple and effective: the module traps and blocks any originating IP for any bot crawling the directory /blackhole/, that has a disallow rule for all agents in robots.txt file. But using .htaccess this module can also be very helpful to block a very large sort of nefandous hits by spammers, scanners, scammers, etc, etc, etc. I recently had an issue with spammer bots generating fake shopping carts, and Blackhole for Bad Bots module helped to stop that flood of garbage. All bots entered the site hitting a non existent folder, and they all followed this pattern. The result, after some code in .htaccess to redirect such visits to the black hole, was the complete annihilation of such annoyance. Here is another example of what Blackhole for Bad Bots module can do for you, beyond of trapping nasty crawlers: for sure you get dozens of hits to non existent wp-login.php file, or to xmlrpc.php. You should host your thirtybees installation alone in a server and not to mix it with other websites running WordPress (this is why you should do this). Here is a way to have fun with WordPress' brute force bots hitting thirtybees. Place this code in your .htaccess file: Redirect 302 /wp-login.php https://www.your-domain-name.com/modules/blackholebots/blackhole/ Redirect 302 /wp-config.php https://www.your-domain-name.com/modules/blackholebots/blackhole/ Redirect 302 /xmlrpc.php https://www.your-domain-name.com/modules/blackholebots/blackhole/ I've just redirected the hits that return a page-not-found.html that spends 33887 bytes. After the redirection to the black hole, the size of the file served is just 243 bytes, as the bot gets the module's ban warning, which is text only. So this will save you bandwidth and it will also block the source IP for that attack. See in your server logs what your needs are, and modify the redirections at your convenience. Of course, needless to say, never redirect to the black hole a folder or a file that effectively is in your server. If you have to block it, it is better to delete it. Redirect only bind hits to non existent files/folders by probe bots that only make you waste bandwidth.
  9. Here it is how I've managed this issue, for if it happens it can be useful to anyone else. I did this through htaccess and apparently it works: Redirect 302 /en/11111111111111111112222ct11111111111111111112222/ https://www.xxx.com/modules/blackholebots/blackhole/
  10. This is exactly what bots do: 185.32.222.115 - - [04/Feb/2020:01:52:55 -0500] "GET /en/11111111111111111112222ct11111111111111111112222/ HTTP/1.0" 404 33888 "https://www.xxx.com/en/11111111111111111112222ct11111111111111111112222/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36" 185.32.222.115 - - [04/Feb/2020:01:52:55 -0500] "GET / HTTP/1.0" 301 - "https://xxx.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36" 185.32.222.115 - - [04/Feb/2020:01:52:56 -0500] "GET / HTTP/1.0" 301 - "https://www.xxx.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36" 185.32.222.115 - - [04/Feb/2020:01:52:57 -0500] "GET /en/ HTTP/1.0" 200 34870 "https://www.xxx.com/en/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36" 185.32.222.115 - - [04/Feb/2020:01:52:58 -0500] "GET /en/post-war HTTP/1.0" 200 241360 "https://www.xxx.com/en/post-war" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36" 185.32.222.115 - - [04/Feb/2020:01:53:01 -0500] "GET /en/cart?add=1&id_product=19428&token=9fg8673114e862a47705t5c92gcr42d8 HTTP/1.0" 302 - "https://www.xxx.com/en/cart?add=1&id_product=19428&token=6df7174591c401b74915h1d53rvt78y9" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36" 185.32.222.115 - - [04/Feb/2020:01:53:01 -0500] "GET /en/order?ipa=19428 HTTP/1.0" 302 - "https://www.xxx.com/en/order?ipa=19428" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36" 185.32.222.115 - - [04/Feb/2020:01:53:02 -0500] "GET /en/quick-order HTTP/1.0" 200 233983 "https://www.xxx.com/en/quick-order" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36" 185.32.222.115 - - [04/Feb/2020:01:53:05 -0500] "POST /en/authentication HTTP/1.0" 200 153154 "https://www.xxx.com/en/quick-order" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36"
  11. I have several tens of hits a day to a non existent folder: /en/11111111111111111112222ct11111111111111111112222/ This results in the creation of fake shopping carts, as the intention of the bot is to post spam in a non existent forum or to send spam email through a product page instead of from the contact form. Can Bad Bots Blackhole be used to block the originating IPs of such annoyance? Instead, any htaccess code to redirect bots hitting such a directory anywhere else, preferably a black hole or poisonous website? Thank-you.
  12. Thank-you. I stopped the attack while it was ongoig by blocking the IP yesterday afternoon, and since then it has not started again from anywhere else.
  13. Thanks for the reply. Should I worry for what happened? How can I check if this has had consequences?
  14. I've found dozens of queries like these in the visitors raw data: 141.98.81.178 - - [23/Dec/2019:13:04:32 -0500] "GET /en/cart?add=1&id_product=14495%27%29%20UNION%20ALL%20SELECT%20NULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL--%20ToBE&token=6dc8273224e872a47705f5c92fce42d6 HTTP/1.1" 200 6635 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.134 Safari/534.16" 141.98.81.178 - - [23/Dec/2019:13:04:33 -0500] "GET /en/cart?add=1&id_product=14495%27%29%20UNION%20ALL%20SELECT%20NULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL--%20YqvM&token=6dc8273224e872a47705f5c92fce42d6 HTTP/1.1" 200 6636 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.134 Safari/534.16" 141.98.81.178 - - [23/Dec/2019:13:04:34 -0500] "GET /en/cart?add=1&id_product=14495%27%29%20UNION%20ALL%20SELECT%20NULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL--%20Auku&token=6dc8273224e872a47705f5c92fce42d6 HTTP/1.1" 200 6637 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.134 Safari/534.16" 141.98.81.178 - - [23/Dec/2019:13:04:34 -0500] "GET /en/cart?add=1&id_product=14495%27%29%20UNION%20ALL%20SELECT%20NULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL--%20DFwZ&token=6dc8273224e872a47705f5c92fce42d6 HTTP/1.1" 200 6637 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.134 Safari/534.16" 141.98.81.178 - - [23/Dec/2019:13:04:36 -0500] "GET /en/cart?add=1&id_product=14495%27%29%20UNION%20ALL%20SELECT%20NULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL%2CNULL--%20KpXZ&token=6dc8273224e872a47705f5c92fce42d6 HTTP/1.1" 200 6639 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.134 Safari/534.16" I never seen this before. I have PrestaVault so I did a scan of the site, and found nothing suspicious. Any idea of what did this pretend?
  15. I was wondering if 6G Fireewall .htaccess code could be useful (or compatible) with thirtybees: https://perishablepress.com/6g/ Does anyone use this code?
  16. There may be a bug in the forum. You quote a message by "me" I didn't write. It appears as if it was mine, but I did not post that text.
  17. I ask if that work you did there to set up this subscription system couldn't be transformed into a module for TB to be sold through your marketplace.
  18. I've seen this: https://thirtybees.com/blog/twilighting-patreon/?utm_source=back-office&utm_medium=rss&utm_campaign=back-office-ES&utm_content=download Awesome! @lesley why not turning that code into a module doing exactly this?
  19. Store updated to 1.1. Fast and smooth. Only one fixing to the theme needed to keep community theme instead the new default one, with the much appreciated help of @wakabayashi:
  20. Yes, I use one page checkout. I can't understand what must I move. I am using TB's community-theme-default 1.0 Here is the code of themes/community-theme-default/order-carrier.tpl. Could you please highlight what I should move? Thank-you. {if !$opc} {capture name=path}{l s='Shipping:'}{/capture} {assign var='current_step' value='shipping'} <div id="carrier_area"> <h1 class="page-heading">{l s='Shipping:'}</h1> {include file="$tpl_dir./order-steps.tpl"} {include file="$tpl_dir./errors.tpl"} <form id="form" action="{$link->getPageLink('order', true, NULL, "{if $multi_shipping}multi-shipping={$multi_shipping}{/if}")|escape:'html':'UTF-8'}" method="post" name="carrier_area"> {else} <div id="carrier_area" class="opc-main-block"> <h1 class="page-heading step-num"><span>2</span> {l s='Delivery methods'}</h1> <div id="opc_delivery_methods" class="opc-main-block"> <div id="opc_delivery_methods-overlay" class="opc-overlay" style="display: none;"></div> {/if} <div class="order_carrier_content box"> {if isset($virtual_cart) && $virtual_cart} <input id="input_virtual_carrier" class="hidden" type="hidden" name="id_carrier" value="0"> <div class="alert alert-warning">{l s='No carrier is needed for this order.'}</div> {else} <div id="HOOK_BEFORECARRIER"> {if isset($carriers) && isset($HOOK_BEFORECARRIER)} {$HOOK_BEFORECARRIER} {/if} </div> {if isset($isVirtualCart) && $isVirtualCart} <div class="alert alert-warning">{l s='No carrier is needed for this order.'}</div> {else} <div class="delivery_options_address"> {if isset($delivery_option_list)} {foreach $delivery_option_list as $id_address => $option_list} <p class="carrier_title"> {if isset($address_collection[$id_address])} {l s='Choose a shipping option for this address:'} {$address_collection[$id_address]->alias} {else} {l s='Choose a shipping option'} {/if} </p> <div class="delivery_options"> {foreach $option_list as $key => $option} <div class="delivery_option"> <div> <table class="resume table table-bordered{if !$option.unique_carrier} hide{/if}"> <tr> <td class="delivery_option_radio"> <input id="delivery_option_{$id_address|intval}_{$option@index}" class="delivery_option_radio" type="radio" name="delivery_option[{$id_address|intval}]" data-key="{$key}" data-id_address="{$id_address|intval}" value="{$key}"{if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key} checked="checked"{/if}> </td> <td class="delivery_option_logo"> <label for="delivery_option_{$id_address|intval}_{$option@index}"> {foreach $option.carrier_list as $carrier} {if $carrier.logo} <img class="order_carrier_logo" src="{$carrier.logo|escape:'htmlall':'UTF-8'}" alt="{$carrier.instance->name|escape:'htmlall':'UTF-8'}"> {elseif !$option.unique_carrier} {$carrier.instance->name|escape:'htmlall':'UTF-8'} {if !$carrier@last} - {/if} {/if} {/foreach} </label> </td> <td> <label for="delivery_option_{$id_address|intval}_{$option@index}"> {if $option.unique_carrier} {foreach $option.carrier_list as $carrier} <strong>{$carrier.instance->name|escape:'htmlall':'UTF-8'}</strong> {/foreach} {if isset($carrier.instance->delay[$cookie->id_lang])} <br>{l s='Delivery time:'}&nbsp;{$carrier.instance->delay[$cookie->id_lang]|escape:'htmlall':'UTF-8'} {/if} {/if} {if count($option_list) > 1} <br> {if $option.is_best_grade} {if $option.is_best_price} <span class="best_grade best_grade_price best_grade_speed">{l s='The best price and speed'}</span> {else} <span class="best_grade best_grade_speed">{l s='The fastest'}</span> {/if} {elseif $option.is_best_price} <span class="best_grade best_grade_price">{l s='The best price'}</span> {/if} {/if} </label> </td> <td class="delivery_option_price"> <label for="delivery_option_{$id_address|intval}_{$option@index}"> <div class="delivery_option_price"> {if $option.total_price_with_tax && !$option.is_free && (!isset($free_shipping) || (isset($free_shipping) && !$free_shipping))} {if $use_taxes == 1} {if $priceDisplay == 1} {convertPrice price=$option.total_price_without_tax}{if $display_tax_label} {l s='(tax excl.)'}{/if} {else} {convertPrice price=$option.total_price_with_tax}{if $display_tax_label} {l s='(tax incl.)'}{/if} {/if} {else} {convertPrice price=$option.total_price_without_tax} {/if} {else} {l s='Free'} {/if} </div> </label> </td> </tr> </table> {if !$option.unique_carrier} <table class="delivery_option_carrier{if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key} selected{/if} resume table table-bordered{if $option.unique_carrier} hide{/if}"> <tr> {if !$option.unique_carrier} <td rowspan="{$option.carrier_list|@count}" class="delivery_option_radio"> <input id="delivery_option_{$id_address|intval}_{$option@index}" class="delivery_option_radio" type="radio" name="delivery_option[{$id_address|intval}]" data-key="{$key}" data-id_address="{$id_address|intval}" value="{$key}"{if isset($delivery_option[$id_address]) && $delivery_option[$id_address] == $key} checked="checked"{/if}> </td> {/if} {assign var="first" value=current($option.carrier_list)} <td class="delivery_option_logo{if $first.product_list[0].carrier_list[0] eq 0} hide{/if}"> {if $first.logo} <img class="order_carrier_logo" src="{$first.logo|escape:'htmlall':'UTF-8'}" alt="{$first.instance->name|escape:'htmlall':'UTF-8'}"> {elseif !$option.unique_carrier} {$first.instance->name|escape:'htmlall':'UTF-8'} {/if} </td> <td class="{if $first.product_list[0].carrier_list[0] eq 0} hide{/if}"> <input type="hidden" value="{$first.instance->id|intval}" name="id_carrier"> {if isset($first.instance->delay[$cookie->id_lang])} <i class="icon icon-info-sign"></i> {strip} {$first.instance->delay[$cookie->id_lang]|escape:'htmlall':'UTF-8'} &nbsp; {if count($first.product_list) <= 1} ({l s='For this product:'} {else} ({l s='For these products:'} {/if} {/strip} {foreach $first.product_list as $product} {if $product@index == 4} <abbr title=" {/if} {strip} {if $product@index >= 4} {$product.name|escape:'htmlall':'UTF-8'} {if isset($product.attributes) && $product.attributes} {$product.attributes|escape:'htmlall':'UTF-8'} {/if} {if !$product@last} ,&nbsp; {else} ">&hellip;</abbr>) {/if} {else} {$product.name|escape:'htmlall':'UTF-8'} {if isset($product.attributes) && $product.attributes} {$product.attributes|escape:'htmlall':'UTF-8'} {/if} {if !$product@last} ,&nbsp; {else} ) {/if} {/if} {/strip} {/foreach} {/if} </td> <td rowspan="{$option.carrier_list|@count}" class="delivery_option_price"> <div class="delivery_option_price"> {if $option.total_price_with_tax && !$option.is_free && (!isset($free_shipping) || (isset($free_shipping) && !$free_shipping))} {if $use_taxes == 1} {if $priceDisplay == 1} {convertPrice price=$option.total_price_without_tax}{if $display_tax_label} {l s='(tax excl.)'}{/if} {else} {convertPrice price=$option.total_price_with_tax}{if $display_tax_label} {l s='(tax incl.)'}{/if} {/if} {else} {convertPrice price=$option.total_price_without_tax} {/if} {else} {l s='Free'} {/if} </div> </td> </tr> {foreach $option.carrier_list as $carrier} {if $carrier@iteration != 1} <tr> <td class="delivery_option_logo{if $carrier.product_list[0].carrier_list[0] eq 0} hide{/if}"> {if $carrier.logo} <img class="order_carrier_logo" src="{$carrier.logo|escape:'htmlall':'UTF-8'}" alt="{$carrier.instance->name|escape:'htmlall':'UTF-8'}"> {elseif !$option.unique_carrier} {$carrier.instance->name|escape:'htmlall':'UTF-8'} {/if} </td> <td class="{if $carrier.product_list[0].carrier_list[0] eq 0} hide{/if}"> <input type="hidden" value="{$first.instance->id|intval}" name="id_carrier"> {if isset($carrier.instance->delay[$cookie->id_lang])} <i class="icon icon-info-sign"></i> {strip} {$carrier.instance->delay[$cookie->id_lang]|escape:'htmlall':'UTF-8'} &nbsp; {if count($first.product_list) <= 1} ({l s='For this product:'} {else} ({l s='For these products:'} {/if} {/strip} {foreach $carrier.product_list as $product} {if $product@index == 4} <abbr title=" {/if} {strip} {if $product@index >= 4} {$product.name|escape:'htmlall':'UTF-8'} {if isset($product.attributes) && $product.attributes} {$product.attributes|escape:'htmlall':'UTF-8'} {/if} {if !$product@last} ,&nbsp; {else} ">&hellip;</abbr>) {/if} {else} {$product.name|escape:'htmlall':'UTF-8'} {if isset($product.attributes) && $product.attributes} {$product.attributes|escape:'htmlall':'UTF-8'} {/if} {if !$product@last} ,&nbsp; {else} ) {/if} {/if} {/strip} {/foreach} {/if} </td> </tr> {/if} {/foreach} </table> {/if} </div> </div> {/foreach} </div> <div class="hook_extracarrier" id="HOOK_EXTRACARRIER_{$id_address}"> {if isset($HOOK_EXTRACARRIER_ADDR) && isset($HOOK_EXTRACARRIER_ADDR.$id_address)}{$HOOK_EXTRACARRIER_ADDR.$id_address}{/if} </div> {foreachelse} {assign var='errors' value=' '|explode:''} <div class="alert alert-warning" id="noCarrierWarning"> {foreach $cart->getDeliveryAddressesWithoutCarriers(true, $errors) as $address} {if empty($address->alias)} {l s='No carriers available.'} {else} {assign var='flag_error_message' value=false} {foreach $errors as $error} {if $error == Carrier::SHIPPING_WEIGHT_EXCEPTION} {$flag_error_message = true} {l s='The product selection cannot be delivered by the available carrier(s): it is too heavy. Please amend your cart to lower its weight.'} {elseif $error == Carrier::SHIPPING_PRICE_EXCEPTION} {$flag_error_message = true} {l s='The product selection cannot be delivered by the available carrier(s). Please amend your cart.'} {elseif $error == Carrier::SHIPPING_SIZE_EXCEPTION} {$flag_error_message = true} {l s='The product selection cannot be delivered by the available carrier(s): its size does not fit. Please amend your cart to reduce its size.'} {/if} {/foreach} {if !$flag_error_message} {l s='No carriers available for the address "%s".' sprintf=$address->alias} {/if} {/if} {if !$address@last} <br> {/if} {foreachelse} {l s='No carriers available.'} {/foreach} </div> {/foreach} {/if} </div> <div id="extra_carrier" style="display: none;"></div> {if $opc} <p class="carrier_title">{l s='Leave a message'}</p> <div> <p>{l s='If you would like to add a comment about your order, please write it in the field below.'}</p> <textarea class="form-control" cols="120" rows="2" name="message" id="message">{strip} {if isset($oldMessage)}{$oldMessage|escape:'html':'UTF-8'}{/if} {/strip}</textarea> </div> {/if} {if $recyclablePackAllowed} <p class="carrier_title">{l s='Recyclable Packaging'}</p> <div class="checkbox recyclable"> <label for="recyclable"> <input type="checkbox" name="recyclable" id="recyclable" value="1"{if $recyclable == 1} checked="checked"{/if}> {l s='I would like to receive my order in recycled packaging.'} </label> </div> {/if} {if $giftAllowed} {if $opc} <hr style=""> {/if} <p class="carrier_title">{l s='Gift'}</p> <div class="checkbox gift"> <label for="gift"> <input type="checkbox" name="gift" id="gift" value="1"{if $cart->gift == 1} checked="checked"{/if}> {l s='I would like my order to be gift wrapped.'} {if $gift_wrapping_price > 0} &nbsp;<i>({l s='Additional cost of'} <span class="price" id="gift-price"> {if $priceDisplay == 1} {convertPrice price=$total_wrapping_tax_exc_cost} {else} {convertPrice price=$total_wrapping_cost} {/if} </span> {if $use_taxes && $display_tax_label} {if $priceDisplay == 1} {l s='(tax excl.)'} {else} {l s='(tax incl.)'} {/if} {/if}) </i> {/if} </label> </div> <p id="gift_div"> <label for="gift_message">{l s='If you\'d like, you can add a note to the gift:'}</label> <textarea rows="2" cols="120" id="gift_message" class="form-control" name="gift_message">{$cart->gift_message|escape:'html':'UTF-8'}</textarea> </p> {/if} {/if} {/if} {if $conditions && $cms_id && (! isset($advanced_payment_api) || !$advanced_payment_api)} {if $opc} <hr style=""> {/if} {if isset($override_tos_display) && $override_tos_display} {$override_tos_display} {else} <div class="box"> <div class="checkbox"> <label for="cgv"> <input type="checkbox" name="cgv" id="cgv" value="1" {if $checkedTOS}checked="checked"{/if}> {l s='I agree to the terms of service and will adhere to them unconditionally.'} </label> <a href="{$link_conditions|escape:'html':'UTF-8'}" class="iframe" rel="nofollow">{l s='(Read the Terms of Service)'}</a> </div> </div> {/if} {/if} </div> {if !$opc} <p class="cart_navigation clearfix"> <input type="hidden" name="step" value="3"> <input type="hidden" name="back" value="{$back}"> {if !$is_guest} {if $back} <a href="{$link->getPageLink('order', true, NULL, "step=1&back={$back}{if $multi_shipping}&multi-shipping={$multi_shipping}{/if}")|escape:'html':'UTF-8'}" title="{l s='Previous'}" class="btn btn-lg btn-default"> <i class="icon icon-chevron-left"></i> {l s='Continue shopping'} </a> {else} <a href="{$link->getPageLink('order', true, NULL, "step=1{if $multi_shipping}&multi-shipping={$multi_shipping}{/if}")|escape:'html':'UTF-8'}" title="{l s='Previous'}" class="btn btn-lg btn-default"> <i class="icon icon-chevron-left"></i> {l s='Continue shopping'} </a> {/if} {else} <a href="{$link->getPageLink('order', true, NULL, "{if $multi_shipping}multi-shipping={$multi_shipping}{/if}")|escape:'html':'UTF-8'}" title="{l s='Previous'}" class="btn btn-lg btn-default"> <i class="icon icon-chevron-left"></i> {l s='Continue shopping'} </a> {/if} {if isset($virtual_cart) && $virtual_cart || (isset($delivery_option_list) && !empty($delivery_option_list))} <button type="submit" name="processCarrier" class="btn btn-lg btn-success pull-right standard-checkout"> <span> {l s='Proceed to checkout'} <i class="icon icon-chevron-right right"></i> </span> </button> {/if} </p> </form> {else} </div> {/if} </div> {strip} {if !$opc} {addJsDef orderProcess='order'} {if isset($virtual_cart) && !$virtual_cart && $giftAllowed && $cart->gift == 1} {addJsDef cart_gift=true} {else} {addJsDef cart_gift=false} {/if} {addJsDef orderUrl=$link->getPageLink("order", true)|escape:'quotes':'UTF-8'} {addJsDefL name=txtProduct}{l s='Product' js=1}{/addJsDefL} {addJsDefL name=txtProducts}{l s='Products' js=1}{/addJsDefL} {/if} {if $conditions} {addJsDefL name=msg_order_carrier}{l s='You must agree to the terms of service before continuing.' js=1}{/addJsDefL} {/if} {/strip}
  21. I just was referring to the fact that I can't change the theme, so I need to keep the community default instead of the new one. I have aging customers who dislike big changes.
  22. Could you solve it? Or we must wait that the team fixes the issue?
×
×
  • Create New...