Olá a todos,
Eu tinha um script obsoleto para banner rotativo, mais era somente para 3 categoria fixa.
Tive que desenvolver um dinâmico, vamos lá.
Não sei se posicionei os meus códigos correto.
/protected/components/Controller.php
public function init() {
$banners = Categoria::model()->findAll(array(
'condition' => 'categoria = :categoria',
'params' => array(':categoria' => 'banner')
));
foreach ($banners as $key => $value) {
$banner[$value->titulo] = Banner::model()->with(array('arquivo'))->findAll(array(
'select' => 'b.codbanner, b.titulo, b.datacriacao, b.url, a.arquivo as arquivo',
'condition' => 'a.bd = :bd AND b.liberar = :liberar AND b.codcategoria = :codcategoria',
'params' => array(':bd' => 'banner', ':liberar' => 1, ':codcategoria' => $value->codcategoria),
'order' => 'rand()',
'limit' => 10
));
}
Yii::app()->session->add('banners', $banner);
}
Agora o Widget que criei:
class boxBanner extends CWidget {
public $categoria, $posicao;
public function init() {
}
public function run() {
$banner = Yii::app()->session['banners'];
$codbanner = $banner[$this->categoria][$this->posicao]->codbanner;
$titulo = $banner[$this->categoria][$this->posicao]->titulo;
$datacriacao = $banner[$this->categoria][$this->posicao]->datacriacao;
$url = $banner[$this->categoria][$this->posicao]->url;
$arquivo = $banner[$this->categoria][$this->posicao]->arquivo;
$pathinfo = pathinfo($arquivo);
$extension = $pathinfo['extension'];
$pasta = ($datacriacao = explode(' ', $datacriacao)) ? preg_replace('/-/', '_', $datacriacao[0]) : $datacriacao[1];
list($largura, $altura) = explode('x', $this->categoria);
if ($extension == "jpg" || $extension == "gif" || $extension == "png") {
echo CHtml::link(CHtml::image(Yii::app()->baseUrl . '/up/banner/' . $pasta . '/' . $arquivo, $titulo, array('width' => $largura, 'height' => $altura)), Yii::app()->createUrl('banner/view', array('id' => $codbanner)), array('target' => '_blank', 'title' => $titulo));
} else if ($extension == "swf") {
echo "<div onclick=\"open('verlink.php?id=$codbanner', null,'height=$altura,width=$largura,status=yes,toolbar=yes,menubar=yes,resizable=yes,location=yes,scrollbars=yes')\" style=\"position:absolute; cursor: pointer; width:$largura" . "px; height:$altura" . "px; z-index:1\">
<table width=\"$largura\" height=\"$altura\" style=\"cursor: pointer;\">
<td></td>
</table>
</div>
<div align=\"left\" style=\"cursor: pointer;\">
<script type=\"text/javascript\">
AC_FL_RunContent('codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0', 'width', '$largura', 'height', '$altura', 'src', '" . substr($pasta, 0, -4) . "', 'wmode', 'opaque', 'quality', 'high', 'pluginspage', 'http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','" . substr($pasta, 0, -4) . "' );
</script>
</div>
<noscript>
<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0\" width=\"$largura\" height=\"$altura\">
<param name=\"movie\" value=\"$pasta\">
<param name=\"quality\" value=\"high\">
<param name=\"wmode\" value=\"transparent\">
<embed src=\"$pasta\" wmode=\"transparent\" quality=\"high\" pluginspage=\"http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\" width=\"$largura\" height=\"$altura\">
</embed>
</object>
</noscript>";
}
$banner = Banner::model()->findByPk($codbanner);
$banner->view += 1;
$banner->save(false);
}
}
O script ta funcionando perfeito, eu só postei aqui, para saber se fiz algo de errado de declarar a construção do array no init() do Controller, ou se tinha uma colocação correta de fazer este widget.
Valeu