Problem Solving

Buttons or Content not showing

Sometimes either the button or the associated content does not show or is partially obscured by other items on the page. This is more likely if you place a button at the side of the window, but can happen anywhere on the page. The usual cause of such issues is the z-index. 

Experiment with setting the z-index configuration option in the Button Design dialogue. In many cases it is simply a matter of setting it to 10 or 20. Sometimes to overlay blocks such as video or navigation elements you may need to set it as high as a few thousand.

Other items on page show through button or content

Many of the blocks used with Button Nav do not have any default background. The default background is transparent and the background colour or image of the page or area shows through.

When these blocks are displayed in a dropdown, overlay or slide out, the same can happen to allow other items on the page to show through.

The solution is to provide a background. This can be set in the Button Design dialogue. With lightbox and slide out templates there are separate background colour options for the content and for a background overlay.

You can also use the regular Block Design dialogue to set a background colour, image, borders, padding and theme classes. By default, these are applied to the button and not to what is shown by the button. However, since v1.9.0 Button Nav has an option to move or copy block design into the content.

Block Design applies to the button, not the content!

ConcreteCMS applies Block Design as a wrapper to the block, which means that by defaulty any block design will show about the button, not inside the button dropdown, slide out or overlay.

Since v1.9.0, Button Nav has an option to move or copy block design inside the button dropdown, slide out or overlay to wrap the actual content. Look for the select optioin at the bottom of the Button Design dialogue.

Button and/or content show inline before being moved to the side of the window

Blocks with button nav templates are rendered inline, just like any other block. 

When a button is placed at the edge of the window, CSS is used as far as possible to handle the placement, but some aspects of this are necessarily done by JavaScript after the page has loaded. The consequence can be a flash of unstyled content (FOUC) for the block as the page loads.

There are two simple solutions to such problems.

  1. Move the block with a Button Nav template to lower down the page, where it will not show until scrolled. The movement is then completed before a visitor can see it.
     
  2. Use Block Design to add the class btn-nav-hidden to the block. This will hide the block until Button Nav is fully ready after a page has loaded.

You may also find this useful in association with the option to move Block Design inside.

Window side placement changes after updating Button Nav

Before version 1.9.0 of Button Nav, the placement of buttons to the left or right edges of the window was not accurate. 

With Button Nav v1.9.0, the way window left/right edge placement is calculated has been improved to be an accurate percentage from the top of the window.

A consequence is that on sites upgrading to this version, any existing buttons placed on the left/right window edges will now appear accurately according to the percentage set, which may be lower than intended when the percentage was first set taking into account the inaccuracy!

If you only have a few buttons at window left/right edges, you can simply edit the Button Design to what you require.

If you have tens or hundreds of buttons, you are probably looking for an automated solution. 

The MySQL queries below can be used to directly edit the button design in the database table. They can be applied with the MySQL command line or using the SQL option in phpMyAdmin. I strongly recommend taking a database backup before applying any manual SQL updates to your database.

You will most likely want to reduce the offset, so should apply the updates to smaller offsets first and work upwards. Otherwise you run the risk of applying multiple adjustments to the same button!

/* 
 * To move all window left buttons from 25% to 20%
 * Adjust the percentages as necessary.
 * When applying a series of adjustments, start with the 
 * smallest to avoid multiple application to the same 
 * button
 */
UPDATE `JlNavButtonDesign`
SET `behaviours` =
    REPLACE (
        `behaviours`,
        '"btn-nav-window-left","placement_offset":"20"',
        '"btn-nav-window-left","placement_offset":"25"'
    )
WHERE `behaviours` LIKE '%btn-nav-window-left%';

/*
 * To move all window right buttons from 30% to 20%
 */
UPDATE `JlNavButtonDesign`
SET `behaviours` =
    REPLACE (
        `behaviours`,
        '"btn-nav-window-right","placement_offset":"30"',
        '"btn-nav-window-right","placement_offset":"20"'
        )
WHERE `behaviours` LIKE '%btn-nav-window-right%';

/*
 * To see all current button offsets
 */
SELECT `behaviours`,
    REGEXP_SUBSTR(
       `behaviours` ,
       "_offset.+?([\d]+)"
    ) AS 'offset'
FROM `JlNavButtonDesign`
WHERE `behaviours` LIKE '%btn-nav-window-left%';

/*
 * To see what offsets are in use
 */
SELECT DISTINCT
    REGEXP_SUBSTR( `behaviours` ,  "([0-9]+)") AS 'offset'
FROM `JlNavButtonDesign`
WHERE `behaviours` LIKE '%btn-nav-window-right%';

Whoops on install

What we mean here is an internal code exception in an addon or the core when you click the install button from the Add Functionality dashboard page or when you visit a page after installing an addon package. 

If you experience such an issue, here are a few things you can check that may resolve the problem.

  1. Php Version. Check your php version is compatible with the addon, For example, check if you are running php5.6 when an addon requires php7+. You can find the php version in the report at /dashboard/system/environment/info. As a general guide, if your site is ConcreteCMS version 8+ then aim to run on at least php7.2. (It will run on lower versions, but less efficiently)
  2. Database Entities. ConcreteCMS uses a database abstraction layer called Doctrine. Doctrine works by creating proxy classes that map between php data and the database and sometimes these get out of step or muddled into a chicken and egg dilemma. The dashboard page at /dashboard/system/environment/entities has a switch to control when the proxy classes are regenerated. Try placing this into Development mode when installing an addon package (but remember to disable development mode to speed up a live site)
  3. Cache. ConcreteCMS makes extensive use of a number of different caching mechanisms to speed up web pages. When installing a package, sometimes outdated cached data causes issues with the install. Try disabling all the caches at /dashboard/system/optimization/cache when installing an addon package (but remember to re-enable the caches for a live site).
  4. Theme. Most marketplace themes are well behaved. Nevertheless, sometimes a theme can interfere with an addon package, so try switching the site theme back to Atomik using /dashboard/pages/themes. You won't loose any content on the front of your site, but some page areas may not be shown until you swap back to your theme.
  5. Middleware. Some addons implement middleware layers that manipulate pages before and/or after the main rendering of each page. If such addons are installed, there is a possibly they could interfere with the dashboard and other addon installation. Most such middleware implementations include condition checks to ensure they don't mess with the dashboard, but perhaps you can switch them temporarily off just to be sure.

If you experience a code error on or immediately after install and need assistance, please use the Get Help link from the addon marketplace page to report the problem. On the Whoops report, click the [copy] button immediately below the error message. That will provide a stack trace you can paste into the help request and save time having to request that report later.

Manually Installing or Updating an Addon or Theme

Perhaps you are unable to connect your site directly to the ConcreteCMS marketplace to install an addon or theme. This manual process works for all addons and themes - not just mine.

  1. In your concrete account, find the addon/theme in your Purchase History > Licenses and download. Make sure to scroll down to the most recent version before downloading.
  2. Then copy the zip to your site /packages/ directory and unzip (not /concrete/packages !!!). This is usually easiest using your host cPanel file manager.
  3. In your site, visit the Dashboard > Extend page and the theme package will be ready to install or update

The process is exactly the same for addons and themes, except themes have an extra step of activating the theme after installing.

Sometimes step 3 above can run out of PHP execution time. This is most likely when installing an addon or theme that installs a large amount of sample content. You should not run into such an issue with any of my addons or themes.

If you do run into such issues, you can run the install manually from the shell command line.

$ concrete/bin/concrete5 c5:package-install my_package_handle

or

$ concrete/bin/concrete5 c5:package-update my_package_handle

When updating, be sure to replace the previously installed package directory rather than adding to it. If not, you could end up accumulating obsolete debris from a previous version of the package.

If you find yourself needing to install or update many addons or themes manually, consider my Package Magic addon.

Once Package Magic Starter is installed, through the marketplace or manually, all further installs can be handled from the site dashboard using Package Magic.