Az AD modulnak van egy furcsasága: Hiába nincs bekapcsolva a reklám, ha már egyszer elhelyeztük egy régióban a reklámblokkot, akkor minden esetben kerül bele tartalom. Ez több kavarodást is okozhat.
Az én esetemben az volt a gond, hogy a page.tpl.php-ban a reklámblokk régiójának meglétét kellet volna vizsgálni egy feltételben, hogy a logonak extra classt tudjak adni attól függően, hogy van-e hirdetés a fejlécben, vagy nincs.
Ennyi lett volna a feltétel:
<div id="logo" class="<?php if (!$ad_top): print "no-ad"; ?><?php endif; ?>">
A kérdés az volt, hogyan tudnánk rávenni a Drupalt, hogy aktív reklám nélkül az $ad_top régió tök üres legyen?
Először az ad.module alapján a theme_ad_display-t kezdtem el babrálni a sminkem template.php-jében, de ez még egy egyszerűbb modul esetében is néha meghaladja a tudásomat, az ad pedig nem az kimondottan egyestés parti..
Kb. akkor akartam feladni, amikor a dorg-on is láttam a témát hónapok óta megoldatlan issue-ként. Itt ugyan egy patch részmegoldást nyújthat, de elég aktív site lesz ahhoz, hogy ne kezdjek ilyesmivel kísérletezni.
Egyetlen szerencsém volt, hogy hirdetés megjelenés típusa "Nyers" volt, és fix időre kiadott hirdetések lesznek, így a cache-sal sem kellett törődni.
Ez azt jelenti, hogy kikapcsolt hirdetésként ilyen tartalommal jelenik meg a blokk:
<!-- No active ads were found in t1 -->
Miután ha megvesztem sem sikerült a reklámot tartalmazó $contentet vizsgálni a page.tpl.php-ban, a block preprocess felé kezdtem keresgélni.
Kíváncsi voltam, hogy egy üres block template-tel hogy viselkedik a régió.
Ez került block preprocessbe:
function SMINKNEVE_preprocess_block(&$vars, $hook) { $block = $vars['block']; if (($block->module == 'ad') && ($block->content == '<!-- No active ads were found in t1 -->')) { $vars['template_files'] = array('empty-block'); } return $vars; }
Feltöltöttem a smink template könyvtárába egy teljesen üres empty-block.tpl.php nevű file-t, smink gyorstár ürítés, és máris dobtam a hátast: Az $ad_top régióváltozó tök üres volt! Tehát a továbbiakban a page.tpl.php-ban minden további nélkül lehet vizsgálni azt a feltételt, hogy van-e hirdetés, vagy nincs.
Természetesen ez is elég fapados megoldás.. Mindenképpen külön régió kell a hirdetéseknek, és csak a nyers megjelenési formánál működik (mondjuk ezek után csak meg kell nézni a többi forma által generált html-t, és kiegészíteni..), de sajnos azt nem tudom elképzelni egyelőre, hogy több hónapja lezáratlan issue-t oldok meg.
Annyiban tartom jónak ezt a megoldást, hogy legalább page.tpl.php-ban nem generál felesleges html szemetet..
Azért ha valakinek van jobb ötlete, szeretettel várom a kommentek között.
Hozzászólások
Hozzászólás