PDA

Zobacz pełną wersję : Tytuł modułu reklamy jako hiperłącze (link do innej strony)



plczarny
06-12-2009, 00:06
Witam
Mam następujący problem:
Na stronie mam 3 reklamy (Ułożone pionowo). Każda z nich składa się z obrazka i tytułu. Standardowo Joomla! "zamienia na hiperłącze" jedynie obrazek, choćbym nie wiem jak mocno i jak długo klikał na tytuł i tak nie przeniesie mnie na inną stronę ;-)

Problem rozwiązałem, ale szukam lepszego rozwiązania.
Oto jak tego dokonałem:

plik nazwa_templatki/html/modules.php


<?php
function modChrome_reklama( $module, &$params )
{
echo $module->content;
echo '<div class="reklama_tytul'.$params->get('moduleclass_sfx').'">';
echo '<a href="'.$params->get('titleLink').'" target="_blank">'. $module->title.'</a>'; //$params->get('titleLink') pobiera wartość z nowo utworzonego pola w parametrach modułu (zdjęcie niżej)
echo '</div>';
}
?>http://img686.imageshack.us/img686/3122/przechwytywaniep.png

to pole powstało po modyfikacji pliku nazwa_templatki/modules/mod_banners/mod_banners.xml
dodałem tam następujący kod


<!-- To jest moj parametr -->
<param name="titleLink" type="text" default="" label="Link" description="PARAMLINKURL" />
<!-- To jest moj parametr -->I teraz chodzi mi o to aby nie trzeba był tworzyć nowego pola. Czym mogę zastąpić $params->get('titleLink') aby link pobierał się automatycznie?

______________________________
Udało mi się znaleźć satysfakcjonujące mnie rozwiązanie :)

należy utworzyć plik :
nazwa_templatki/html/mod_banners/default.php

o następującej zawartości:


<?php // no direct access
defined('_JEXEC') or die('Restricted access');
$baseurl = JURI::base();
?>
<div class="bannergroup<?php echo $params->get('moduleclass_sfx') ?>">
<?php if ($headerText) : ?>
<div class="bannerheader"><?php echo $headerText ?></div>
<?php endif; ?>

<?php foreach($list as $item) :
$link = JRoute::_('index.php?option=com_banners&task=click&bid='. $item->bid);
?>
<div class="banneritem<?php echo $params->get('moduleclass_sfx') ?>">
<?php
if (trim($item->custombannercode)) :
// Text based banners
echo str_replace(
array('{CLICKURL}', '{NAME}'),
array($link, $item->name),
$item->custombannercode
);
elseif (BannerHelper::isImage($item->imageurl)) :
// Image based banner
if ($item->clickurl) :
$target = $params->get('target', 1);
// Wrap the banner in a link
if ($target == 1) :
// Open in a new window
?>
<a href="<?php echo $link; ?>" target="_blank_"
title="<?php echo htmlspecialchars($item->name, ENT_QUOTES, 'UTF-8');?>">
<img src="<?php echo $baseurl;?>images/banners/<?php echo $item->imageurl;?>"
alt="<?php echo JText::_('Banner');?>" /></a>

<?php
elseif ($target == 2):
// open in a popup window
?>
<a href="javascript:void window.open('<?php echo $link;?>', '', 'toolbar=no,location=no,status=no,menubar=no,scrol lbars=yes,resizable=yes,width=780,height=550'); return false"
title="<?php echo htmlspecialchars($item->name, ENT_QUOTES, 'UTF-8');?>">
<img src="<?php echo $baseurl;?>images/banners/<?php echo $item->imageurl;?>"
alt="<?php echo JText::_('Banner');?>" /></a>
<?php
else :
// open in parent window
?>
<a href="<?php echo $link;?>"
title="<?php echo htmlspecialchars($item->name, ENT_QUOTES, 'UTF-8');?>">
<img src="<?php echo $baseurl;?>images/banners/<?php echo $item->imageurl;?>"
alt="<?php echo JText::_('Banner');?>" /></a>
<?php
endif;
else :
// Just display the image if no link specified
?>
<img src="<?php echo $baseurl;?>images/banners/<?php echo $item->imageurl;?>" alt="<?php echo JText::_('Banner');?>" /></a>
<?php
endif;
elseif (BannerHelper::isFlash($item->imageurl)) :
//echo $item->params;
$params2 = new JParameter($item->params);
$width = $params2->get('width');
$height = $params2->get('height');
$imageurl = $baseurl."images/banners/".$item->imageurl;
?>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" border="0" width="<?php echo $width;?>" height="<?php echo $height;?>">
<param name="movie" value="<?php echo $imageurl;?>" />
<embed src="<?php echo $imageurl;?>"
loop="false"
pluginspage="http://www.macromedia.com/go/get/flashplayer"
type="application/x-shockwave-flash"
width="<?php echo $width;?>"
height="<?php echo $height;?>">
</embed>
</object>";
<?php
endif;
?><div class="clr"></div>
</div>
<?php endforeach; ?>

<?php if ($footerText) : ?>
<div class="bannerfooter<?php echo $params->get('moduleclass_sfx') ?>">
<a href="<?php echo $link;?> " target="_blank_"><?php echo $footerText ?></a>
</div>
<?php endif; ?>
</div>


Dzięki temu linkiem staje się tekst w polu "Treść stopki" (moduł reklamy)
To rozwiązanie jest zdecydowanie wygodniejsze, nie trzeba się bawić w żadne kopiowanie linku.