Advertisment modul - akkor is létrehoz blokkot, ha kikapcsolt a reklám..

The spam filter installed on this site is currently unavailable. Per site policy, we are unable to accept new submissions until that problem is resolved. Please try resubmitting the form in a couple of minutes.
Kategória: 
Leírás

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:

[geshifilter-code]<div id="logo" class="<?php if (!$ad_top): print "no-ad"; ?><?php endif; ?>">[/geshifilter-code]

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:

[geshifilter-drupal6]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; }[/geshifilter-drupal6]

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

A mező tartalma nem nyilvános.
  • Internal paths in double quotes, written as "internal:node/99", for example, are replaced with the appropriate absolute URL or relative path.
  • Engedélyezett HTML elemek: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <del> <img>
  • A webcímek és email címek automatikusan linkekké alakulnak.
  • A sorokat és bekezdéseket a rendszer automatikusan felismeri.
  • Engedélyezett HTML elemek: <a> <blockquote> <br> <cite> <code> <dd> <del> <div> <dl> <dt> <em> <li> <ol> <p> <span> <strong> <ul>
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <bash>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <mysql>, <php>, <python>, <ruby>, <sql>. The supported tag styles are: <foo>, [foo].
  • Minden email cím át lesz alakítva ember által olvasható módon, vagy (ha a JavaScript engedélyezett) ki lesz cserélve kattintható, de biztonságos hivatkozásra.