/** * Retorna el menú de trabajos en el formato del widget TbMenu para su uso en las vistas "detalle" y "listado". */ public function menuTrabajos() { $out = array(); $trabajos = Trabajos::model()->findAll(); $cabecera = array('label' => 'Nuestros trabajos', 'itemOptions' => array('class' => 'nav-header')); array_push($out, $cabecera); foreach ($trabajos as $trabajo) { $item = array('label' => $trabajo->nombre, 'url' => array('trabajos/detalle', 'n' => $trabajo->nombre_seo), 'itemOptions' => array('class' => Yii::app()->controller->id == 'trabajos' && Yii::app()->controller->action->id == 'detalle/' ? 'active' : '')); array_push($out, $item); } return $out; }
/** * Muestra el detalle de un trabajo en particular. * @param integer $n el nombre_seo del trabajo. */ public function actionDetalle($n) { $baseUrl = Yii::app()->baseUrl; $scr = Yii::app()->getClientScript(); $scr->registerScriptFile($baseUrl . '/js/jquery.magnific-popup.min.js'); $scr->registerCssFile($baseUrl . '/css/magnific-popup.css'); $this->layout = 'trabajos'; $model = Trabajos::model()->findByAttributes(array('nombre_seo' => $n)); if (!$model) { //Si aún así no hay modelo rederigir al inicio. $this->redirect('listado'); } $this->render('detalle', array('model' => $model)); }
<?php /* @var $this Controller */ $this->beginContent('//layouts/main'); ?> <div class='wrap'> <div class='right'> <div class='well'> <?php echo $content; ?> </div> </div> <div class='left'> <?php $this->widget('booster.widgets.TbMenu', array('type' => 'list', 'items' => Trabajos::model()->menuTrabajos())); ?> </div> </div> <?php $this->endContent();