Support » Plugin: EMC2 Popup Disclaimer » I tweaked the plugin a little

  • Andrei G


    Thanks for this great plugin. It’s exactly what I needed.

    I tweaked it a little to better fit my purpose and wanted to share the details here.

    First, I needed for the disclaimer to get activated regardless on which page of the site a visitor landed. But once they clicked Accept, the cookie set should be valid for the entire site, not just the page or folder they landed on.

    When using permalinks, it may happen that there are multiple levels of “folders”, like:

    By default, the cookie was set for the root folder of the page, not the root folder of the site.

    Thus, I modified emc2pdc.js of the plugin to also set the path of the cookie, as such:

    $j.cookie('emc2pdc', 'agreed', { expires: cexpire, path:'/' });

    Another issue was that the content of the page was displayed without formatting, or at least it so appeared. The problem was the fact that the formatting was there, but no styling was applied to it, especially for paragraphs (which had zero margins).

    That is because many themes, including the latest TwentyTwelve theme, use a css reset. Then, they overwrite various tags with more specificity in the stylesheet.

    In this case, the styling for <p> tags was defined as part of the post entry div. Since the popup did not respect the same post and page classes, there was no match for the paragraphs in the styelesheet.

    I fixed it by adding the .entry-content class to the emc2pdc-disclaimer div (in emc2pdc-admin.php), as such:

    echo '<div id="emc2pdc-disc-wrap" '.$debug.'><div id="emc2pdc-disclaimer" class="entry-content">';

    Now, it actually behaves like any other page or post on the site, style-wise, so whatever styles have been defined for pages and post contents, it will pick up on them.

    Finally, I noticed that the plugin would generate the divs and links to jquery, fancybox, etc, regardless of the cookie state. That meant that regardless of whether the disclaimer needed to be displayed or not, every page would load the various jquery, jquery easing, jquery fancybox and other scripts and css files, which wasn’t necessary.

    These resources should only be loaded if the disclaimer needs to be displayed. Otherwise, there is no need for them.

    To fix this, I added a check for the emc2pdc cookie in the emc2pdc_disclaimer() function in emc2pdc-admin.php, as such:

    function emc2pdc_disclaimer( $atts, $force=NULL, $id=NULL) {
    	if (!isset($_COOKIE["emc2pdc"])) { //check if a disclaimer cookie exists - only generate divs if cookie doesn't exist

    (obviously, make sure to add the corresponding ending curly bracket to end the if)

    This will only load the needed files to display the disclaimer only if a cookie doesn’t already exists.

Viewing 1 replies (of 1 total)
  • Plugin Author Eric McNiece


    Excellent! And incredibly detailed… thank you SO MUCH for sharing! I will certainly adjust these features for the next release.

Viewing 1 replies (of 1 total)
  • The topic ‘I tweaked the plugin a little’ is closed to new replies.