Jump to content

Mobile Site Issue


Recommended Posts

I've had this for years but thought it was a problem with my site or host or something.

But I've today made a fresh install store, from the latest version on a totally different server and the issue exists there too, on a brand new store.

This is with iPhone 11, but has happened with numerous phones and on my old site at least, Android too.

To replicate, go to store, click on an item, within the description add it to basket, then go directly to the cart, and try to pay, it doesnt work, just closes the side bit back down, over and over, the only way to fix is to go back to the root and try to checkout again.

Edited by Retrodisco
Link to post
Share on other sites

"Try to pay"

What are you doing at this point? What gateways are listed? (where the URL has ?_a=checkout)

"doesn't work"

What are you clicking on that doesn't work?

"closes the side bit back down"

I don't have a side bit showing. All I have, below the text entry field for the coupon code, is:

Choose Payment Method  Continue Shopping

( ) Payment Test Gateway

[@ Update]                   [Checkout >]

 

Link to post
Share on other sites

It doesnt get to list a gateway as you cant even get to see the cart.

Like I said enter a mobile store, visit an item page, click to add to cart, then immediate try to secure checkout and you can't, wont open the cart, just goes back to the item.

He's a video I uploaded to Youtube.

I add an item to the cart and then try three times to go to checkout, I add it to cart again (2 in cart now) and try again, and cannot. To make it work I need to click the site logo to go back to the front page and then try to enter the cart and checkout works.

I have replicated this on two different stores and skin didnt change it either.

 
 
Adding item to basket from the root, or category and NOT from the item page itself doesnt create this issue.
 
Edited by Retrodisco
Link to post
Share on other sites

Scrolling to the bottom of the page when the right off-canvas menu has slide open, shows the footer has intruded onto the off-canvas area.

This would suggest a missing or an extra opening or closing DIV tag somewhere.

Please do this: in admin, Store Settings, Advanced tab, Debugging mode, Enable debugging and enter your IP address in the following text box (www.showmyip.com).

This will make it easier to find the rogue tags.

 

 

  • Thanks 1
Link to post
Share on other sites

Interesting.

One error I found (not affecting this problem) is probably in the template element.breadcrumb.php.

In the source as seen in my browser, there is this:

  <ul class="breadcrumbs">
    <li>
      <a href="https://www.citybugstore.co.uk">
        <span class="show-for-small-only"><i class="fa fa-home"></i></span>
        <span class="show-for-medium-up">Home
      </a>
    </li>

Note the missing </span> after the word Home.

Still looking for the real problem.

Link to post
Share on other sites

Everything is lining up nicely. No tags that are wildly out of proper indentation.

But probably in content.product.php, find:

      {include file='templates/element.product.horizontal_gallery.php'}

Lots of stuff could be between the line above and the lines below.

Considering, however, much of has been removed, moved, or commented
out, maybe it was not done perfectly.

Try removing the </div> below.

      </div>
   </form>
   {if $SHARE}
   <hr>

That might be the wrong one to remove.

If things get squirrely, look at the code just after the table of specifications. One of those two </div> tags may be the extra one.

But I am not finding any bad user content.

The </span> needs to be immediately after the word Home.

Link to post
Share on other sites

Thanks

I cant find the line

{include file='templates/element.product.horizontal_gallery.php'}

in that file though...

Heres the entire file

 

{*
 * CubeCart v6
 * ========================================
 * CubeCart is a registered trade mark of CubeCart Limited
 * Copyright CubeCart Limited 2015. All rights reserved.
 * UK Private Limited Company No. 5323904
 * ========================================
 * Web:   http://www.cubecart.com
 * Email:  [email protected]
 * License:  GPL-3.0 https://www.gnu.org/licenses/quick-guide-gplv3.html
 *}
{if isset($PRODUCT) && $PRODUCT}
<div itemscope itemtype="http://schema.org/Product">
   <form action="{$VAL_SELF}" method="post" class="add_to_basket">
      <div class="row">
         <div class="small-12 columns">
            <h1 itemprop="name">{$PRODUCT.name}</h1>
         </div>
      </div>
      <div class="row">
         <div class="small-5 medium-7 columns">            
            <a href="#" class="open-clearing" data-thumb-index="0"><img src="{$PRODUCT.medium}" alt="{$PRODUCT.name}" id="img-preview"></a>
            {if $GALLERY}
            <ul class="clearing-thumbs small-block-grid-3 medium-block-grid-5 marg-top" data-clearing>
               {foreach from=$GALLERY item=image}
               <li><a href="{$image.source}"><img src="{$image.small}" data-image-swap="{$image.medium}" data-caption="{$PRODUCT.name}{if !empty($image.description)}: {/if}{$image.description}" class="th image-gallery" alt="{$LANG.catalogue.click_enlarge}"></a></li>
               {/foreach}
            </ul>
            {/if}
         </div>
         <div class="small-7 medium-5 columns">
          {if !empty($PRODUCT.description)} {$PRODUCT.description}{/if}
            {if is_array($OPTIONS)}
            {foreach from=$OPTIONS item=option}
            {if $option.type == Catalogue::OPTION_RADIO}
            <div class="row">
               <div class="small-12 columns">
                  {* If we only have one required option replace with hidden field *}
                  {if $option.required && count($option.values)===1}
                  <label for="option_{$option.option_id}" class="return">{$option.option_name}</label>
                  {$option.values.0.value_name}{if $option.values.0.price} {$option.values.0.symbol}{$option.values.0.price}{/if}
                  <input type="hidden" name="productOptions[{$option.option_id}]" id="option_{$option.option_id}" value="{$option.values.0.assign_id}" data-price="{$option.values.0.decimal_price}">
                  {else}
                  <div class="pseudo-label">{$option.option_name}{if $option.required} ({$LANG.common.required}){/if}</div>
                  <span id="error_option_{$option.option_id}">
                     {foreach from=$option.values item=value name=options}
                     <div><input type="radio" name="productOptions[{$option.option_id}]" id="rad_option_{$value.assign_id}" value="{$value.assign_id}" class="nomarg" data-price="{$value.decimal_price}"{if $smarty.foreach.options.first} rel="error_option_{$option.option_id}" {if $option.required}required{/if}{/if}>
                        <label for="rad_option_{$value.assign_id}" class="return">{$value.value_name}{if $value.price} {$value.symbol}{$value.price}{/if}</label>
                     </div>
                     {/foreach}
                  </span>
                  {/if}
               </div>
            </div>
            {elseif $option.type == Catalogue::OPTION_SELECT}
            <div class="row">
               <div class="small-12 columns">
                  {* If we only have one required option replace with hidden field *}
                  {if $option.required && count($option.values)===1}
                  <label for="option_{$option.option_id}" class="return">{$option.option_name}</label>
                  {$option.values.0.value_name}{if $option.values.0.price} {$option.values.0.symbol}{$option.values.0.price}{/if}
                  <input type="hidden" name="productOptions[{$option.option_id}]" id="option_{$option.option_id}" value="{$option.values.0.assign_id}" data-price="{$option.values.0.decimal_price}">
                  {else}
                  <label for="option_{$option.option_id}" class="return">{$option.option_name}{if $option.required} ({$LANG.common.required}){/if}</label>
                  <select name="productOptions[{$option.option_id}]" id="option_{$option.option_id}" class="nomarg" {if $option.required}required{/if}>
                  <option value="">{$LANG.form.please_select}</option>
                  {foreach from=$option.values item=value}
                  <option value="{$value.assign_id}" data-price="{$value.decimal_price}">{$value.value_name}{if $value.price} {$value.symbol}{$value.price}{/if}</option>
                  {/foreach}
                  </select>
                  {/if}
               </div>
            </div>
            {else}
            <div class="row">
               <div class="small-12 columns">
                  <label for="option_{$option.option_id}" class="return">{$option.option_name}{if $option.price} {$option.symbol}{$option.price}{/if}{if $option.required} ({$LANG.common.required}){/if}</label>
                  {if $option.type == Catalogue::OPTION_TEXTBOX}
                  <input type="text" name="productOptions[{$option.option_id}][{$option.assign_id}]" id="option_{$option.option_id}" data-price="{$option.decimal_price}" {if $option.required}required{/if}>
                  {elseif $option.type == Catalogue::OPTION_TEXTAREA}
                  <textarea name="productOptions[{$option.option_id}][{$option.assign_id}]" id="option_{$option.option_id}" data-price="{$option.decimal_price}" {if $option.required}required{/if}></textarea>
                  {/if}
               </div>
            </div>
            {/if}
            {/foreach}
            {/if}
            {if $PRODUCT.review_score && $CTRL_REVIEW}
            <p itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
               <meta itemprop="ratingValue" content="{$REVIEW_AVERAGE}">
               <meta itemprop="reviewCount" content="{$REVIEW_COUNT}">
               {for $i = 1; $i <= 5; $i++}
               {if $PRODUCT.review_score >= $i}
               <img src="{$STORE_URL}/skins/{$SKIN_FOLDER}/images/star.png" alt="">
               {elseif $PRODUCT.review_score > ($i - 1) && $PRODUCT.review_score < $i}
               <img src="{$STORE_URL}/skins/{$SKIN_FOLDER}/images/star_half.png" alt="">
               {else}
               <img src="{$STORE_URL}/skins/{$SKIN_FOLDER}/images/star_off.png" alt="">
               {/if}
               {/for}
            <div>{$LANG_REVIEW_INFO}</div>
            </p>
            {/if}
            {if ($CTRL_ALLOW_PURCHASE) && (!$CATALOGUE_MODE)}
            <h3>
               {if $PRODUCT.ctrl_sale}
               <span class="old_price" id="fbp" data-price="{$PRODUCT.full_base_price}">{$PRODUCT.price}</span>
               <span class="sale_price" id="ptp" data-price="{$PRODUCT.price_to_pay}">{$PRODUCT.sale_price}</span>
               {else}
               <span id="ptp" data-price="{$PRODUCT.price_to_pay}">{$PRODUCT.price}</span>
               {/if}
            </h3>
            {if isset($PRODUCT.discounts)}
            <p>(<a href="#quantity_discounts">{$LANG.catalogue.bulk_discount}</a>)</p>
            {/if}
            <div class="row collapse">
               {if $PRODUCT.available == '0'}
               <div class="small-12 columns">
                  <input type="submit" value="{$LANG.common.unavailable}" class="button small disabled expand marg-top" disabled>
               </div>
               {else}
               <div class="medium-2 columns show-for-medium-up">
                  <input type="text" name="quantity" value="1" class="quantity required text-center">
                  <input type="hidden" name="add" value="{$PRODUCT.product_id}">
               </div>
               <div  class="small-12 medium-10 columns">
                  <button type="submit" value="{$LANG.catalogue.add_to_basket}" class="button postfix">{$LANG.catalogue.add_to_basket}</button>
               </div>
               {/if}
            </div>
            {else}
            {if $CTRL_HIDE_PRICES}
            <p class="buy_button"><strong>{$LANG.catalogue.login_to_view}</strong></p>
            {else if $CTRL_OUT_OF_STOCK}
            <p class="buy_button"><strong>{$LANG.catalogue.out_of_stock}</strong></p>
            {/if}
            {/if}
            {if isset($PRODUCT.discounts)}<br />
         <div class="content" id="quantity_discounts">
            <p>{$LANG.catalogue.quantity_discounts_explained}</p>
   
            
            <table>
               <thead>
                  <tr>
                     <th>{$LANG.common.quantity}</th>
                     <th>{$LANG.catalogue.price_per_unit}</th>
                  </tr>
               </thead>
               <tbody>
                  {foreach from=$PRODUCT.discounts item=discount}
                  <tr>
                     <td>{$discount.quantity}+</td>
                     <td>{$discount.price}</td>
                  </tr>
                  {/foreach}
               </tbody>
            </table>
         </div>
         {/if}
         <hr>
            <div class="content{if empty($PRODUCT.description)} active{/if}" id="product_spec">
            <table>
               <tbody>
                  <tr>
                     <td>{$LANG.catalogue.product_code}</td>
                     <td>{$PRODUCT.product_code}</td>
                  </tr>
                  {if $PRODUCT.manufacturer}
                  <tr>
                     <td>{$LANG.catalogue.manufacturer}</td>
                     <td>{$MANUFACTURER}</td>
                  </tr>
                  {/if}
                  {if $PRODUCT.stock_level}
                  <tr>
                     <td>{$LANG.catalogue.stock_level}</td>
                     <td>{$PRODUCT.stock_level}</td>
                  </tr>
                  {/if}
                  <tr>
                     <td>{$LANG.common.condition}</td>
                     <td>{$PRODUCT.condition}</td>
                  </tr>
                  {if $PRODUCT.product_weight > 0}
                  <tr>
                     <td>{$LANG.common.weight}</td>
                     <td>{$PRODUCT.product_weight}{$CONFIG.product_weight_unit}</td>
                  </tr>
                  {/if}
               </tbody>
            </table>
         </div>
         </div>
      </div>
      
      
      
         
         
      </div>
   </form>
   {if $SHARE}
   {foreach from=$SHARE item=html}
   {$html}
   {/foreach}
   {/if}
   <hr>
   {include file='templates/element.product_reviews.php'}
   {foreach from=$COMMENTS item=html}
   {$html}
   {/foreach}
</div>
{else}
<p>{$LANG.catalogue.product_doesnt_exist}</p>
{/if}

Edited by Retrodisco
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...