We’re experiencing technical difficulties and our courses are temporarily unavailable. Thanks for your patience! Nous rencontrons des difficultés techniques. Nos cours sont temporairement indisponibles. Merci de votre patience!
Adult ADHD – Pharmacotherapy and Behavioural StrategiesManaging Acute Cough in Pharmacy PracticeUnwrapping Lozenges: Pharmacist Guidance on Medicated vs Non-Medicated OptionsAcute Pain Management in Pharmacy Practice: Oral and Topical AnalgesicsLyme Disease Recognition and Management: Clinical Insights for PharmacistsBeyond Benzodiazepines: The Pharmacist’s Role in Advancing Chronic Insomnia Treatment with DORAs
Puissance VAX : Rehausser la couverture vaccinale grâce à une approche rapide et factuelleAu-delà des benzodiazépines : le rôle du pharmacien dans l’avancement du traitement de l’insomnie chronique avec les ADROTraitement de la douleur aiguë en pratique de la pharmacie : Analgésiques oraux et topiquesTraitement de la toux aiguë en contexte de pratique pharmaceutiqueDéballer les pastilles : Informer les pharmaciens sur les options médicamenteuses et non-médicamenteusesPrévention du VRS pour tous les nourrissons
Trouvez votre prochain cours
Parcourez les derniers cours de formation continue en pharmacie.
Catégories
Professions
Régions
Accreditations
“No courses were found based on your selected filters. Feel free to check back later as new courses are added regularly.”
(function() {
var ajaxurl = window.ajaxurl ||
(window.wp && wp.ajax && wp.ajax.settings && wp.ajax.settings.url) ||
'/wp-admin/admin-ajax.php';
var injecting = false;
var lastInjectedAt = 0;
var afterIndex = 3; // insert AFTER the 4th item → appears as #5
// Target this specific FacetWP results inside your wrapper
function getContainer() {
return document.querySelector('.coursesListWrapper .facetwp-template') ||
document.querySelector('.facetwp-template');
}
function getItems(c) { return c ? c.querySelectorAll('.e-loop-item') : []; }
function reflowGrid() {
try {
if (window.elementorFrontend?.elements?.$window) {
elementorFrontend.elements.$window.trigger('resize');
} else if (typeof jQuery !== 'undefined') {
jQuery(window).trigger('resize');
} else {
window.dispatchEvent(new Event('resize'));
}
} catch (e) {}
}
// --- PURGE HELPERS ---------------------------------------------------------
var PURGE_SELECTOR = '.rxbri-courses-rectangle-placement, .rxbri-course-ads-placement, .rxbri-blog-ads-placement, .mdbc2-carousel-ads-placement';
function purgeStrays(container) {
if (!container) return;
document.querySelectorAll(PURGE_SELECTOR).forEach(function(el) {
if (container.contains(el) && !el.closest('.course-ads-slot')) el.remove();
});
}
function purgeBurst(container) {
purgeStrays(container);
setTimeout(function(){ purgeStrays(container); }, 50);
setTimeout(function(){ purgeStrays(container); }, 150);
setTimeout(function(){ purgeStrays(container); }, 300);
setTimeout(function(){ purgeStrays(container); }, 600);
}
// ---------------------------------------------------------------------------
function injectAd() {
// throttle in case 'facetwp-loaded' fires twice quickly
var now = Date.now();
if (now - lastInjectedAt < 200) return;
lastInjectedAt = now;
if (injecting) return;
injecting = true;
var c = getContainer();
if (!c) { injecting = false; return; }
// HARD CLEAN first
purgeBurst(c);
// Remove previously injected ad (ours)
c.querySelectorAll('.course-ads-slot').forEach(function(el){ el.remove(); });
var it = getItems(c);
var count = it.length;
if (count === 0) {
purgeBurst(c);
injecting = false;
return;
}
var targetEl = (count > afterIndex) ? it[afterIndex] : it[count - 1];
fetchAndInsert(c, targetEl);
}
function fetchAndInsert(container, afterEl) {
var xhr = new XMLHttpRequest();
var data = new FormData();
data.append('action', 'my_get_advads_placement');
data.append('placement', 'courses-rectangle-placement'); // your placement slug
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
try {
var resp = JSON.parse(xhr.responseText);
if (resp && resp.success && resp.data) {
// final sweep before inserting
purgeBurst(container);
var wrap = document.createElement('div');
wrap.className = 'e-loop-item course-ads-slot';
wrap.innerHTML = resp.data; // should contain .rxbri-courses-rectangle-placement
if (afterEl) {
afterEl.insertAdjacentElement('afterend', wrap);
} else {
container.appendChild(wrap);
}
purgeBurst(container);
if (typeof jQuery !== 'undefined') {
jQuery(document).trigger('advanced_ads_ready');
}
reflowGrid();
}
} catch(e) {}
}
injecting = false;
}
};
xhr.open('POST', ajaxurl, true);
xhr.send(data);
}
// Bind to FacetWP loaded (initial + every facet change)
if (typeof jQuery !== 'undefined') {
jQuery(document).off('facetwp-loaded.coursesAds').on('facetwp-loaded.coursesAds', injectAd);
} else if (window.FWP?.hooks?.addAction) {
if (!window.__coursesAdsBound) {
FWP.hooks.addAction('facetwp/loaded', injectAd);
window.__coursesAdsBound = true;
}
}
})();