We needed to have different messages for unregistered visitors and members of our site. Members get a link to Account Upgrade and non-members don't.
We added a new phrase to be shown to unregistered visitors and named it "rellect_adblock_detector_message_public".
Then we changed the "rellect_adblock_detector_js" template to
Works like expected.
We added a new phrase to be shown to unregistered visitors and named it "rellect_adblock_detector_message_public".
Then we changed the "rellect_adblock_detector_js" template to
Code:
<xen:require css="rellect_adblock_detector.css" />
<xen:comment>
# <script> tags already opened in the 'page_container_js_body' hook.
</xen:comment>
XenForo.rellect = XenForo.rellect || {};
XenForo.rellect.AdBlockDetectorParams = {
expiry: {$expiry},
hours: {$hours},
canDismiss: {$canDismissAlert},
type: "{$xenOptions.rellect_adblock_detector_alert_type}",
phrases: {
title: "{xen:jsescape {xen:phrase rellect_adblock_detector_title}}",
message: "{xen:jsescape {xen:if "{$visitor.user_id}", "{xen:phrase rellect_adblock_detector_message}", "{xen:phrase rellect_adblock_detector_message_public}"}}",
close: "{xen:jsescape {xen:phrase close}}"
},
loadScript: function(url, loadFn, errorFn){
var script = $('<script />', {
async: 'async',
src: url
})
.load(function(){
if(loadFn){
loadFn();
loadFn = null;
}
})
.error(function(jqXHR, textStatus){
/* When script is blocked, textStatus is undefined. */
if(typeof textStatus !== 'undefined'){
return;
}
if(errorFn){
errorFn(jqXHR, textStatus);
errorFn = null;
}
});
document.getElementsByTagName('body')[0].appendChild(script[0]);
}
};
var AdBlockDetectorWorkaround = function(){
/* This is just in case the handler script is blocked by the adblocker */
if(!XenForo.rellect.AdBlockDetector){
console.log('AdBlock detector failed. Trying workaround.');
XenForo.ajax('index.php', {dataType: 'html', AdblockDetector: 1}, function(ajaxData){
if(XenForo.hasTemplateHtml(ajaxData)){
try{
jQuery.globalEval(ajaxData.templateHtml);
}
catch(e){}
}
}, {
error: function(){
console.log('AdBlock detector workaround failed.');
}
});
}
};
XenForo.rellect.AdBlockDetectorParams.loadScript(
'js/rellect/AdBlockDetector/handler{xen:if "{$xenOptions.uncompressedJs} == '0'", ".min"}.js?rev={$xenAddOns.rellect_adblock_detector}',
false,
AdBlockDetectorWorkaround
);
Works like expected.
