Jump to content

bsmither

Member
  • Posts

    18,012
  • Joined

  • Last visited

  • Days Won

    605

Posts posted by bsmither

  1. In the Foundation skin template "element.call_to_action.php", at the end of the file, add:

    <hr>
    <div>
      {$PRODUCT.description_short}
    </div>

    In the Foundation skin template "content.category.php", find:

    Near line 97:
    {$product.description_short}
    
    Change to:
    {* $product.description_short *}

    The change above makes the template code into a template comment.

    I do not know what you mean by "automatic insertion details".

    In admin, Store Settings, Layout tab, Product Precis (latest versions of CubeCart now call this "Maximum Short Description Length"), set this to a higher number if you find that the Short Description is getting cut short.

  2. I think there isn't anything wrong with the admin skin, but please check something. In the admin skin template main.php, at the very end, add:

    {debug}

    Then, when requesting a page, the browser will popup a window. (You may need to give the browser permission to do this, and then reload the page.)

    Looking at the popup, scroll to $TOUR_AUTO_START. The Value will be "true" or "false".

    Looking directly at the database using an external utility, look at CubeCart_admin_users, 'tour_shown' column. Does the column exist?

    In admin, Store Settings, Advanced tab, enable debug mode and enter your local IP address in the text field that follows (www.showmyip.com).

    Below the admin page will be a grey debug area. Find the SESSION:, '__admin_data' section, 'tour_shown' key. The value will be 1 or 0.

  3. On the bottom part...?

    Well, what you are seeing is called the "Tour". It gets shown every time an administrator logs in -- for each who have logged in for three or fewer times.

    If you, perhaps having logged in for more than three times, yet are seeing this, perhaps your CubeCart_admin_users database record has been disturbed.

    Otherwise, there is a fault with respect to getting, analyzing, or determining if the Tour should be shown.

    In admin, Administrators, Edit Administrator, there is a checkbox to "Prevent welcome tour on next login?".

    The Tour is supposed to be a slide show in a popup (colorbox, actually, I think), but you are showing it above as if the content is there, but not being affected by the javascript that is supposed to control it.

    (You should edit the post above to de-link the "NextX" links that point to your admin site.)

  4. Here is a set of edits that should get you a solution.

    The admin skin template categories.index.php:

    Find:
    
        <div><label for="seo_path">{$LANG.settings.seo_path} *</label><span><input type="text" name="seo_path" id="seo_path" class="textbox" value="{$CATEGORY.seo_path}"></span></div>
        <div><label for="seo_meta_description">{$LANG.settings.seo_meta_description}</label><span><textarea name="cat[seo_meta_description]" id="seo_meta_description" class="textbox">{$CATEGORY.seo_meta_description}</textarea></span></div>
    
    After that, add:
    
        <div><label for="seo_meta_keywords">{$LANG.settings.seo_meta_keywords} **</label><span><textarea name="cat[seo_meta_keywords]" id="seo_meta_keywords" class="textbox">{$CATEGORY.seo_meta_keywords}</textarea></span></div>
    
    Find:
    
      <p>* {$LANG.settings.seo_path_auto}</p>
    
    After that, add:
    
      <p>** Use a code from this list to associate a manufacturer with this category.</p>
      <table>
        <thead>
          <tr>
            <td>Code</td>
            <td>{$LANG.catalogue.title_manufacturer}</td>
          </tr>
        </thead>
        <tbody>
    {foreach from=$MANUFACTURERS item=manufacturer}
          <tr>
            <td><strong>MANU:{$manufacturer.id}</strong></td>
            <td>{$manufacturer.name}</td>
          </tr>
    {foreachelse}
          <tr>
            <td colspan="2" align="center"><strong>{$LANG.form.none}</strong></td>
          </tr>
    {/foreach}
        </tbody>
      </table>

    The admin source file categories.index.inc.php:

    Near line 413, find:
    
            $GLOBALS['smarty']->assign('SELECT_CATEGORIES', $select_categories);
            $GLOBALS['smarty']->assign('MODE_ADDEDIT', true);
            foreach ($GLOBALS['hooks']->load('admin.category.addedit_display') as $hook) {
                include $hook;
            }
    
    After that, add:
    
            $manufacturers = $GLOBALS['db']->select('CubeCart_manufacturers', false, false, array('name' => 'ASC'));
            $GLOBALS['smarty']->assign('MANUFACTURERS', $manufacturers);

    In the Admin side, we are re-adding and using a setting in Add/Edit Categories (that had been removed in a much earlier version). The corresponding database table column should still be available - the 'seo_meta_keywords'. Here, the admin would enter, as a keyword, a Code that represents the manufacturer.

    On the Store side, there will be a search pattern looking for this Code, and that will fetch the manufacturer details to be used on the View Category page for the sub-cats, if appropriate.

    The class file catalogue.class.php:

    Find the public function displaySubCategory()
    
    In that function, find:
    
                            $cat['url'] = $GLOBALS['seo']->buildURL('cat', $cat['cat_id'], '&');
                            $cat['products_number'] = $products;
    
    After that, add:
    
                            preg_match('/MANU:([\d]+)/', $cat['seo_meta_keywords'], $manu_match);
                            $cat['manufacturer_tag'] = $this->getManufacturer($manu_match[1] ?? false, true);
                            $cat['manufacturer_name'] = strip_tags($this->getManufacturer($manu_match[1] ?? false));
    
    Find the public function getManufacturer()
    
    Change:
    
        public function getManufacturer($manufacturer_id)
    
    To:
    
        public function getManufacturer($manufacturer_id, $placeholder = false)
    
    Change:
    
                    return '<a href="'.$manufacturers[0]['URL'].'" target="_blank">'.$manufacturers[0]['name'].'</a>';
    
    To:
    
                    return '<a href="'.$manufacturers[0]['URL'].'" target="_blank">'.($placeholder ? '%s' : $manufacturers[0]['name']).'</a>';

    The Foundation skin template content.category.php:

    Find:
    
    {if isset($SUBCATS) && $SUBCATS}
    <ul class="medium-block-grid-6 text-center small-block-grid-3" data-equalizer>
       {foreach from=$SUBCATS item=subcat}
       <li data-equalizer-watch>
          <a href="{$subcat.url}" title="{$subcat.cat_name}">
            <img class="th" src="{$subcat.cat_image}" alt="{if isset($subcat.image_tags.alt)}{$subcat.image_tags.alt}{else}{$subcat.cat_name}{/if}"{if isset($subcat.image_tags.title)} title="{$subcat.image_tags.title}"{/if}>
          </a>
          <br>
          <a href="{$subcat.url}" title="{$subcat.cat_name}"><small>{$subcat.cat_name}</small></a>
       </li>
       {/foreach}
    </ul>
    {/if}
    
    Change to:
    
    {if isset($SUBCATS) && $SUBCATS}
    <ul class="medium-block-grid-6 text-center small-block-grid-3" data-equalizer>
       {foreach from=$SUBCATS item=subcat}
    {capture "subcatImage"}<img class="th" src="{$subcat.cat_image}" alt="{if isset($subcat.image_tags.alt)}{$subcat.image_tags.alt}{else}{$subcat.cat_name}{/if}"{if isset($subcat.image_tags.title)} title="{$subcat.image_tags.title}"{/if}>{/capture}
       <li data-equalizer-watch>
    {if $subcat.manufacturer_tag}{$subcat.manufacturer_tag|replace:"%s":$smarty.capture.subcatImage}
    {else}
            <a href="{$subcat.url}" title="{$subcat.cat_name}">{$smarty.capture.subcatImage}
            </a>
    {/if}   <br>
    {if $subcat.manufacturer_tag}{$subcat.manufacturer_tag|replace:"%s":"<small>{$subcat.manufacturer_name}</small>"}
    {else}
          <a href="{$subcat.url}" title="{$subcat.cat_name}"><small>{$subcat.cat_name}</small></a>
    {/if}
       </li>
       {/foreach}
    </ul>
    {/if}

    However: Now that the sub-cat image and caption are linked to the manufacturer's web site, the customer must intuit that the only way to get to a sub-cat is via the Navigation bar. Hopefully, that won't be too non-obvious.

  5. The stock behavior of the sub-cat images are links to those categories, as well as the caption (name of the category) of the image shown below the image.

    Where would a link that points to the manufacturer's website be shown? An additional link below the child category's name? Co-opt the link being used by the child category's image? (Which this latter choice seems to be what you want.)

    With respect to "when the user exits out of the brands website it will go back to his website", that's how browsers usually work - a link calls open a new tab, and when that new tab is closed, the browser returns to showing the calling window/tab. Or is there something wanted that is more involved?

    Even though you are making Manufacturers into categories, there is no direct relationship between the two.

    Some sort of connection will need to be established that "this category" is associated with "that manufacturer" - which, obviously, won't be applicable to every category.

    Each category has its "Description". A link (target="_blank") to the manufacturer's website can be included here. What is your opinion on this idea?

  6. I will give this some thought. I assume you have the permission of the various manufacturers to use their logos on your site - maybe you're an authorized distributor with certain benefits?

    Where did the "Shop by Brands" come from?

    Ok, I see this as a legit category, with child categories.

  7. Some of what you describe might be some of the features of Enhanced Manufacturers:

    https://www.cubecart.com/extensions/plugins/enhanced-manufacturers

    The description of the features set there is a bit sparse.

    But, when using the Advanced Search, one can filter against a manufacturer. When viewing a product, the Specification tab will contain the name of the manufacturer, and will be a hyperlink if one was provided when adding/editing a manufacturer in admin.

    That link has a 'target' attribute equal to "_blank" which will open the web page pointed to by the link in a new browser window or tab.

  8. There is no difference of an admin logging in from a previous CubeCart 6 version versus the latest version.

    There are three places where that message could be generated from. We can add custom code that will reveal which of the three situations triggered the message.

    Look in /classes/admin.class.php:

    Near lines 345, 414, and 455, change:
    $GLOBALS['gui']->setError($GLOBALS['language']->account['error_login']);
    To:
    $GLOBALS['gui']->setError($GLOBALS['language']->account['error_login']." at ".__METHOD__.":".__LINE__);

     

  9. I have been evaluating CC6411 as it currently exists (pre-release state) running on PHP 8.2. I have run through almost all features and functions of CC6411.

    I have taken the opportunity to post issues on the Github to deal with the many instances of PHP (as of 8.0) issuing warnings about unknown array keys and unknown variables, as well as other pieces of code that could be optimized.

    I have not actually run CC6410 under PHP 8.2, but given that I have carefully analyzed the current differences between CC6410-release and CC6411-pre-release, I can be confident that CC6410 will run without crashing on PHP 8.2.

  10. Not with CubeCart's current feature set. However, I have written this:

    https://forums.cubecart.com/topic/56223-digital-files-linked-to-a-products-options/

    There is also:

    https://www.cubecart.com/extensions/plugins/product-addons-easily-purchase-related-products-kit-builder

     

  11. Well spotted!

    And should also do the 'alt' attribute as well.

    In the skin's javascript file 2.cubecart.js:

    Near line 141, find:
    
        $(".image-gallery").hover(function() {
            var src = $(this).attr("data-image-swap");
            $('#img-preview').attr("src", src);
        });
    
    Change to:
    
        $(".image-gallery").hover(function() {
            var src = $(this).attr("data-image-swap");
            var ttl = $(this).attr("title");
            var alt = $(this).attr("alt");
            $('#img-preview').attr("src", src).attr("title",ttl).attr("alt",alt);
        });

    You will need to have CubeCart clear its internal cache (to refresh its minified file of all the skin's javascript code).

  12. "If I set to start of this year it shows no popular products."

    Interesting. In admin, Store Settings, Advanced tab, enable Debug mode and enter your local IP address in the next field (www.showmyip.com).

    Request the homepage.

    Below the content there will be a grey debug area listing all of the SQL statements used. You may have to have the browser search the HTML for date_added. The query for Best Sellers based on sales will look something like:

    SELECT `oi`.`product_id`, `i`.`name`, `i`.`price`, `i`.`sale_price`, `i`.`tax_type`, `i`.`tax_inclusive`,
    SUM(`oi`.`quantity`) as `quantity` 
    FROM `CubeCart_order_inventory` as `oi` 
    JOIN `CubeCart_inventory` as `i` 
    WHERE `oi`.`product_id` = `i`.`product_id` AND `i`.`status` = 1 AND `i`.`date_added` > '2020-01-01' 
    GROUP BY `oi`.`product_id` ORDER BY `quantity` DESC LIMIT 4;

    And based on views:

    SELECT `name`, `product_id`, `quantity`, `price`, `sale_price`, `tax_type`, `tax_inclusive`, `popularity` 
    FROM `CubeCart_inventory` 
    WHERE CubeCart_inventory.status = '1' AND CubeCart_inventory.date_added > '2020-01-01' 
    ORDER BY popularity DESC LIMIT 4;

    In the post above, you wrote a date as June 1 2019. Hopefully, the date you specified in admin would have been 2019-06-01.

  13. Your browser has Developer Tools (via F12). The Tools have a Network tab. The list of requests on the Network tab will show the response of each request - page, image, javascript file, css file, etc.

    For those that have a 404 result, it will help to positively identify what the exact request is that got the 404 response.

     

  14. You should see a simple text entry field just to the right of the drop-down selector for choosing where the data comes from to make the selection of Best Selling products in admin, Store Settings, Layout tab, Popular & Latest Products section, "Source data for popular products". This, then, affects what the customer sees in the Best Sellers box.

    However, your not seeing the change in admin caused me to re-read this conversation. Now, it seems to me, that what you wanted was a way to set a focus on those product sales with specific criteria for the admin's benefit in admin, Statistics, Best Selling Products tab.

    Is that the case?

     

  15. Did this happen all of a sudden?

    If possible, examine the file, found in CubeCart's main folder, .htaccess. Make sure there exists these directives:

    ### Default store 404 page ###
    ErrorDocument 404 /index.php
    
    ## Override default 404 error document for missing page resources ##
    <FilesMatch "\.(gif|jpe?g|png|ico|css|js|svg)$">
      ErrorDocument 404 "<html></html>
    </FilesMatch>
    ##### END CubeCart .htaccess #####

    In CubeCart's administration folder, there should be another .htaccess file:

    ## Default store 404 page
    ErrorDocument 404 "<html></html>

    But as you describe it, you are able to get everywhere else in admin. Is that not the case?

     

  16. Please try this. Download CC6410. Extract just the template files element.product.vertical_gallery.php and element.product.horizontal_gallery.php.

    Replace the two existing template files with these, and re-apply the edits above.

    If you can get into your admin, there will be a "Clear Cache" button in the upper-right of the admin screen. Click it.

    If you can't get into admin, on any web address for your store, at the end, add:

    ?clear_cache=true

     

  17. It is an easy edit, but won't survive an upgrade (as the Foundation skin skin gets replaced in its entirety). So, keep these notes.

    In the template element.product.horizontal_gallery.php:

    Find:
    
    <div class="small-5 medium-7 columns horizontal">
    
    Change to:
    
    <div class="small-12 medium-7 columns horizontal">
    
    Find:
    
    <div class="small-7 medium-5 columns">
    
    Change to:
    
    <div class="small-12 medium-5 columns thickpad-left">

    In the template element.product.vertical_gallery.php:

    Find:
    
    <div class="small-5 medium-{if is_array($GALLERY) && count($GALLERY) > 1}6{else}7{/if} columns text-center nopad">
    
    Change to:
    
    <div class="small-12 medium-{if is_array($GALLERY) && count($GALLERY) > 1}6{else}7{/if} columns text-center nopad">
    
    Find:
    
    <div class="small-7 medium-5 columns thinpad-left">
    
    Change to:
    
    <div class="small-12 medium-5 columns thickpad-left">

    The skin uses either the horizontal or vertical gallery template, but the edit was applied to both just to be complete.

  18. In the templates element.product.vertical.gallery.php (and horizontal), there is this (simplified):

    <ul class="clearing-thumbs data-clearing>
      <li>
        <a>
          <img data-caption="{$PRODUCT.name}{if !empty($image.description)}: {/if}{$image.description}">

    The caption will use the product name, and if there is a 'description' for the image, that will be appended.

    Unfortunately, the FileManager Image Edit Details screen in admin has no text entry field for a description. (I will post an issue in the Github.)

    If the image 'title' is what you want to append to the product name:

    Change:
    data-caption="{$PRODUCT.name}{if !empty($image.description)}: {/if}{$image.description}"
    To:
    data-caption="{$PRODUCT.name}{if !empty($image.image_tags.title)}: {/if}{$image.image_tags.title}"

    If the image 'title' is what you want to replace the product name:

    Change:
    data-caption="{$PRODUCT.name}{if !empty($image.description)}: {/if}{$image.description}"
    To:
    data-caption="{if !empty($image.image_tags.title)}{$image.image_tags.title}{else}{$PRODUCT.name}{/if}"

     

  19. In your hosted control panel, you should have a group of settings that define what specific version of PHP you want your hosted environment to run under, as well as what PHP extensions you want to have installed - such as a "mysqli" database extension that lets PHP talk to a database.

    There will be a dozen or two extensions you can enable for your environment for PHP to use.

    Choose to enable the ZIP and MB_String extensions.

     

×
×
  • Create New...