Layout kezelés

Hogy lehet a layout-okat kezelni? Nézegetem az alap css-t, de nem találtam semmit sem.

Lényegében 2 layoutot szeretnék, baloldalt egy sidebar, jobb oldalt a tartalom. Tehát a mostani ellentéte lenne.

Pontosítanád egy kicsit a kérdést? Gondolom a yiic webapp által generált layout fájlokat már megtaláltad a views/layouts könytárban, és tudod, hogy ezeket tetszőlegesen módosíthatod/törölheted ill. új layoutokat készithetsz. Pontosan hol akadtál el? A css megírásánál?

Igen, azokat megtaláltam, csak magára a működésére nem jöttem rá, hogy mit hova tesz. Illetve, hogy hol tudom ezeket méretezni, mert a css fájlban erre nem találok utalást.

Igazából, mint írtam azt szeretném, hogyha a sidabar bal oldalon lenne és a tartalmi rész lenne jobb oldalon.

A generált css a Blueprint css frameworkre épül. A column2 layoutban a


<div class="span-19">...</div>

és a


<div class="span-5 last">...</div>

elemek az érdekesek, ezeknek a tartalmát kell felcserélned, az oszlopok szélességét pedig a "span-" értéke határozza meg, de a blueprint oldalán megtalálod a részletes leírást.

Na, ennek jobban utána kell majd nézni akkor, mert nem ismerem még a blueprint frameworköt. :)

hali,

ezt is nezd meg, hatha segit valamelyik!

http://yiithemes.mehesz.net/theme/layoutgen

–iM

Megnézegettem, amit szerettem volna meg is oldottam. Már csak 2 kérdésem lenne ezzel kapcsolatban.

Amikor 2 layer van, hogy mondom meg neki, hogy melyikbe mi kerüljön?

Én ezt "választottam":


<?php $this->beginContent('//layouts/main'); ?>

<div class="span-5">

    <div id="sidebar">

    <?php

            $this->beginWidget('zii.widgets.CPortlet', array(

                    'title'=>'Operations',

            ));

            $this->widget('zii.widgets.CMenu', array(

                    'items'=>$this->menu,

                    'htmlOptions'=>array('class'=>'operations'),

            ));

            $this->endWidget();

    ?>

    </div><!-- sidebar -->

</div>


<div class="span-19 last">

    <div id="content">

        <?php echo $content; ?>

    </div><!-- content -->

</div>

<?php $this->endContent(); ?>

Itt bal oldalt van egy kisebb rész és a tartalmi rész jobb oldalt van. Hogy lehet dinamikus tartalomnál ezt megadni?

Pl ha renderelek több tartalmat, akkor mindegyik view résznél megadom, hogy $this->layout = ‘valami’;

Ez még nem egészen kerek, illetve ti ajaxos kéréseknél, a controllerbe íratjátok ki? Mert én próbáltam saját view-ot csinálni hozzá, de behúzta az egész oldalt, nekem pedig csak a renderelt view tartalmi része kellene.

Ha a dinamikus tartalom több egymástól független résztartalomból áll össze, akkor widgeteket vagy clipeket érdemes használni, a tartalom jellegétől és az oldal szerkezetétől függően.

Ajax kéréseknél használd a renderPartial()-t.

Ez a második részt nem értem. Magában a controllerben használjam így? Ekkor nem fog a többi oldal rész betöltődni? Na ezt megnézem. :)

Igen, a kontrollerben, a $this->render() helyett. Ha ugyanabból az actionból szeretnéd kiszolgálni az ajax és a nem ajax kéréseket is, akkor valahogy így:




if (Yii::app()->request->isAjaxRequest) {

  $this->renderPartial('myView', array('data' => $data));

} else {

  $this->render('myView', array('data' => $data));

}