Yii Framework Forum: Yii Layout - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Yii Layout Mengenai layout yii, membagi page, konfigurasi layout Rate Topic: -----

#1 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 12 June 2010 - 11:36 PM

Newbie nich. Ada yang tahu cara membagi layout menjadi 3 g?, soalnya saya dah coba browse di Yii cookbook tapi g mudeng ^_^.. sapa tahu rekan2 ada yg dah pernah buat website dg Yii. terima kasih.
0

#2 User is offline   nasrul 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 98
  • Joined: 14-April 09
  • Location:Sorowako - Indonesia

Posted 13 June 2010 - 05:19 PM

View PostPemula, on 12 June 2010 - 11:36 PM, said:

Newbie nich. Ada yang tahu cara membagi layout menjadi 3 g?, soalnya saya dah coba browse di Yii cookbook tapi g mudeng ^_^.. sapa tahu rekan2 ada yg dah pernah buat website dg Yii. terima kasih.


maksudnya membagi layout menjadi 3 kolom?

dalam floder views, ada folder layouts. di situ layouting yang digunakan setiap halaman pada umumnya.

  • bikin view layoutnya
    buka /protected/views/layouts/layout2.php --> save as dengan nama layout3.php misalnya.
    lalu tambahkan satu div untuk kolom di dalamnya

    <?php $this->beginContent('application.views.layouts.main'); ?>
    <div class="container">
    	<div class="span-19">
                    <div id="menuKiri">
    			<ul>
       			   <li>menu 1</li>
       			   <li>menu 2</li>
       			   <li>menu 3</li>
    			</ul> 
    		</div>
    		<div id="content">
    			<?php echo $content; ?>
    		</div><!-- content -->
    	</div>
    	<div class="span-5 last">
    		<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>
    <?php $this->endContent(); ?>
    

  • atur tampilan pada /css/main.css
    ...
    #menuKiri
    {
        padding: 20px;
    	float:left;
    	margin-right:10px;
    	width:150px;
    }
    ...


  • set $layout pada controller yang ingin ditampilkan
    /protected/controller/SiteController.php

    <?php
    
    class SiteController extends Controller
    {
            //jika kita ingin menjadikan layout ini sebagai default bagi seluruh site/view
    	public $layout='application.views.layouts.column3'; 
    	public function actions()
    	{
    		...
    	}
            ...
            public function actionIndex()
    	{
    		// jika kita ingin menjadikan kalyou tini sebagai default pada halaman site/index saja
    		$this->layout='application.views.layouts.column3';
    		$this->render('index');
    	}
            ...
    


    atau bisa pula dari file viewnya langsung misal pada /protected/views/site/contact.php
    <?php
    $this->pageTitle=Yii::app()->name . ' - Contact Us';
    $this->layout='application.views.layouts.column3';
    ?>
    
    <h1>Contact Us</h1>
    
    ...
    


semoga berhasil. :lol:
0

#3 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 17 June 2010 - 02:35 AM

terima kasih mas nasrul, udah tak coba dan sukses..^_^

saya ingin tanya lagi. saya ingin membuat web yg modulnya bisa di install/uninstall mirip modulnya Joomla/Prestashop. Misalnya: saya membagi halaman web menjadi 4 bagian yaitu header, sidebar, content dan footer. masing2 bagian tsb ingin saya jadikan modul dan dapat di aktifkan/nonaktifkan. Jadi modul-modul tsb dapat diatur di halaman admin.

dan dalam modul-modul tsb dapat di sertakan file seperti image, css dll. Contoh module:
modules/
  + blocklink
  |-+ blocklink.php
  |-+ blocklink.xml
  |-+ logo.gif
  |-+ img
  |-+ main.css
  + ..


Apakah hal tsb mungkin di dalam Yii?, ada contoh webnya g?
terima kasih sebelumnya.
0

#4 User is offline   nasrul 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 98
  • Joined: 14-April 09
  • Location:Sorowako - Indonesia

Posted 17 June 2010 - 05:43 AM

menurut ana, hal ini mungkin namun tidak dari layout.

layout mendefinisikan konten umum yang akan dirender secara keseluruhan + $content yang diambil dari view page yang kita panggil.

caranya:
  • kelompokkan tiap bagian yang akan diatur mode tampilnya ke dalam satu file misal _header.php, _menu.php, dll dan simpan dalam satu direktori khusus misal /protected/views/layouts/render
  • panggil dari view page dengan renderpartial()
    <?php 
    if ($modeTampil) echo $this->renderpartial('/layouts/render/_header', 'model'=>$model);
    
    // jika path_view dimulai dengan '/' akan mengacu pada direktori views
    // sehingga '/layouts/render/' mengacu ke '/protected/views/layouts/render'
    
    // adapun $model adalah model data yang akan digunakan dalam _header.php
    // sifatnya optional sehingga dapat diabaikan jika memang tidak menggunakan data
    ?>
    


semoga membantu :)
0

#5 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 17 June 2010 - 10:25 PM

View Postnasrul, on 17 June 2010 - 05:43 AM, said:

menurut ana, hal ini mungkin namun tidak dari layout.

layout mendefinisikan konten umum yang akan dirender secara keseluruhan + $content yang diambil dari view page yang kita panggil.

caranya:
  • kelompokkan tiap bagian yang akan diatur mode tampilnya ke dalam satu file misal _header.php, _menu.php, dll dan simpan dalam satu direktori khusus misal /protected/views/layouts/render
  • panggil dari view page dengan renderpartial()
    <?php 
    if ($modeTampil) echo $this->renderpartial('/layouts/render/_header', 'model'=>$model);
    
    // jika path_view dimulai dengan '/' akan mengacu pada direktori views
    // sehingga '/layouts/render/' mengacu ke '/protected/views/layouts/render'
    
    // adapun $model adalah model data yang akan digunakan dalam _header.php
    // sifatnya optional sehingga dapat diabaikan jika memang tidak menggunakan data
    ?>
    


semoga membantu :)


Ok, terima kasih telah membalas
akan saya coba,,
0

#6 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 18 June 2010 - 02:20 AM

View Postnasrul, on 17 June 2010 - 05:43 AM, said:

menurut ana, hal ini mungkin namun tidak dari layout.

layout mendefinisikan konten umum yang akan dirender secara keseluruhan + $content yang diambil dari view page yang kita panggil.

caranya:
  • kelompokkan tiap bagian yang akan diatur mode tampilnya ke dalam satu file misal _header.php, _menu.php, dll dan simpan dalam satu direktori khusus misal /protected/views/layouts/render
  • panggil dari view page dengan renderpartial()
    <?php 
    if ($modeTampil) echo $this->renderpartial('/layouts/render/_header', 'model'=>$model);
    
    // jika path_view dimulai dengan '/' akan mengacu pada direktori views
    // sehingga '/layouts/render/' mengacu ke '/protected/views/layouts/render'
    
    // adapun $model adalah model data yang akan digunakan dalam _header.php
    // sifatnya optional sehingga dapat diabaikan jika memang tidak menggunakan data
    ?>
    


semoga membantu :)


saya sudah mencoba seperti yg anda sarankan, terus bagaimana saya bisa menyimpan settingan dari tiap2 modul tsb pada tabel?.
sebenarnya yg sy maksud adalah membuat web cms dengan Yii ^_^. Berikut ini sy sertakan screenshot dari modul halmn modul Prestashop:
Attached File  prestashop_module1.jpg (82.53K)
Number of downloads: 108
Attached File  prestashop_module2.jpg (72.23K)
Number of downloads: 107
Attached File  prestashop_home.jpg (77.69K)
Number of downloads: 86

Nah, sy ingin membuat modulnya seperti itu..:D, soalnya ketika sy ditanya: bagaimana apabila sy ingin menambah blok sidebar, bannner kiri, dll. sy g bisa menjawabnya,, :)

satu lagi mas ;D , bagaimana menyimpan file config Yii(protected/config/main.php) ke tabel database?. agar ketika kita mau menambah module/extensi/komponen tidak harus mengedit file main.php.

terima kasih banyak..
0

#7 User is offline   nasrul 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 98
  • Joined: 14-April 09
  • Location:Sorowako - Indonesia

Posted 19 June 2010 - 07:19 PM

saya sendiri belum pernah memikirkan hal ini, tapi Anda sudah memulainya,,

kenapa tidak Anda teruskan :lol: Gii mungkin solusinya. http://www.yiiframew...uide/topics.gii


0

#8 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 20 June 2010 - 12:54 AM

View Postnasrul, on 19 June 2010 - 07:19 PM, said:

saya sendiri belum pernah memikirkan hal ini, tapi Anda sudah memulainya,,

kenapa tidak Anda teruskan :lol: Gii mungkin solusinya. http://www.yiiframew...uide/topics.gii


:D, makasih mas nasrul atas saranya. Gii ya, pernah baca tuh di guidenya.
saya dah coba googling n dapat dotplant dan flexica, cuma belum tak coba.
0

#9 User is offline   nasrul 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 98
  • Joined: 14-April 09
  • Location:Sorowako - Indonesia

Posted 20 June 2010 - 10:13 PM

OK deh,, kalau sukses jangan lupa dishare yah :)..

sekali-kali bikin cookbook-nya juga boleh tuh.. :P




thanks before bro :lol:


0

#10 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 03 July 2010 - 10:23 AM

View Postnasrul, on 20 June 2010 - 10:13 PM, said:

OK deh,, kalau sukses jangan lupa dishare yah :)..

sekali-kali bikin cookbook-nya juga boleh tuh.. :P




thanks before bro :lol:


oke dech, secepatnya akan sy share ke forum. Terima kasih semuanya.
saya dah bisa buat cms sederhana dengan Yii. Akhirnya atas saran fastcrash sy menggunakan Widget yg sebelumnya tidak kepikir sampai ke situ. CMS yg sy buat sederhana saja, jadi begini didalam layout main sy bagi menjadi beberapa blok div.
Kemudian didalam blok div tsb terdapat widget yg sesuai dg posisinya(misal: mainmenu, sidebar, rightbar). Kemudian sy buat widgetnya, misal untuk sidebar namanya HookSidebar. Di dalam HookSidebar sy load widget2 yg aktif dan sesuai dengan posisinya dari widget modules. sy menggunakan 3 buah tabel yaitu hook, hook_module dan module.
Struktur direktorinya seperti ini:

protected/
  components/
    HookSidebar.php
  modules/
    bloklinks/
      components/
        bloklinks.php
      BlokLinksModule.php


Tapi sy masih punya masalah dengan konfigurasinya, ada yg tahu g cara menyimpan konfigurasi Yii agar bisa di ubah dan ditambah lewat admin atau disimpan ke tabel?
0

#11 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 04 July 2010 - 12:12 AM

Sekedar berbagi cara mengganti path dari halaman statik. Default path halaman statik Yii
terletak pada folder views/site/pages. Apabila ingin mengganti default path tsb ke views/pages. Berikut ini langkah2nya:
1. Buat folder "pages" pada "views"(protected/views).
2. Buat class turunan dari CViewAction(misalnya: EViewAction) dan letakkan pada folder components(protected/components). contoh:
<?php
class EViewAction extends CViewAction
{
	public $basePath = 'application.views.pages';
}
?>


3. Tambahkan definisi pada controllers/SiteController.php. contoh:
public function actions()
{
    return array(
        'page' => array(
            'class' => 'EViewAction',
        ),
    );
}


kemudian cobalah buat halaman statik, misalnya kontakkami.php. kemudian akses url dengan mengetik
http://localhost/blog/index.php?r=site/page&view=kontakkami

Terima kasih

Semoga berguna..
0

#12 User is offline   fastcrash 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 245
  • Joined: 10-March 10
  • Location:South Jakarta

Posted 04 July 2010 - 11:14 PM

Quote

saya sudah mencoba seperti yg anda sarankan, terus bagaimana saya bisa menyimpan settingan dari tiap2 modul tsb pada tabel?.
sebenarnya yg sy maksud adalah membuat web cms dengan Yii ^_^. Berikut ini sy sertakan screenshot dari modul halmn modul Prestashop:


untuk membuat plug n play modul seperti Prestashop, yang dibutuhkan sebenarnya adalah nama dari file source modul yang aktif tersebut dan meloadnya di halaman tertentu dengan kolom tertentu dan poisisi tertentu. untuk itu selain ada tabel modul juga dibutuhkan kolaborasi dengan tabel menu.

jadi misalnya sewaktu menu news di klik, maka lakukan query ke database dgn parameter dari GET tersebut untuk mendapatkan modul apa saja yang dimiliki menu news tersebut. (cukup satu query)

gambaran umum tabel modul
ID                     //  pk modul
Title                  //  Nama Modulnya
Kategori               //  Kategori modul, exm:news, photo, video etc - optional
Source(varchar)        //  source yg akan di include di widget exm:tags.php, static.php, etc
Kolom(int)             //  pembagian kolom dari layout web tersebut, ada brapa kolom?
Position(int)          //  urutan posisi modul di suatu kolom, exm: 1, 2, 3 etc..
Status(boolean)        //  modul di pasang atau tidak?
ID_Menu                //  Fk dari tabel menu - perhatikan jika menu memiliki sub-sub menu -
                       //  (unlimited dynamic menu)


Agar tabel modul tidak cepat overhead karena selau diakses dan jarang sekali berubah(ganti modul paling sebulan sekali), maka hasil query sebaiknya disimpan dalam bentuk array di sebuah file inc/txt.
Jika ada 3 kolom, dibuat 3 file(kolom1.inc, kolom2.inc..), nah file2x inilah yang isinya berupa array record modul nantinya akan diolah(foreach) di setiap kolom/portlet/widget.


wuaahh.. panjang bangeeettt! Posted Image
ya tapi begitulah kira2x gambaran sekilas cara membuat feature modul plug n play yang sudah umum untuk cms-cms saat ini.

ini menurut pengalaman saya, mungkin rekan2x yii lain ada ide yang berbeda? Posted Image
0

#13 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 05 July 2010 - 02:43 AM

View Postfastcrash, on 04 July 2010 - 11:14 PM, said:

untuk membuat plug n play modul seperti Prestashop, yang dibutuhkan sebenarnya adalah nama dari file source modul yang aktif tersebut dan meloadnya di halaman tertentu dengan kolom tertentu dan poisisi tertentu. untuk itu selain ada tabel modul juga dibutuhkan kolaborasi dengan tabel menu.

jadi misalnya sewaktu menu news di klik, maka lakukan query ke database dgn parameter dari GET tersebut untuk mendapatkan modul apa saja yang dimiliki menu news tersebut. (cukup satu query)

gambaran umum tabel modul
ID                     //  pk modul
Title                  //  Nama Modulnya
Kategori               //  Kategori modul, exm:news, photo, video etc - optional
Source(varchar)        //  source yg akan di include di widget exm:tags.php, static.php, etc
Kolom(int)             //  pembagian kolom dari layout web tersebut, ada brapa kolom?
Position(int)          //  urutan posisi modul di suatu kolom, exm: 1, 2, 3 etc..
Status(boolean)        //  modul di pasang atau tidak?
ID_Menu                //  Fk dari tabel menu - perhatikan jika menu memiliki sub-sub menu -
                       //  (unlimited dynamic menu)


Agar tabel modul tidak cepat overhead karena selau diakses dan jarang sekali berubah(ganti modul paling sebulan sekali), maka hasil query sebaiknya disimpan dalam bentuk array di sebuah file inc/txt.
Jika ada 3 kolom, dibuat 3 file(kolom1.inc, kolom2.inc..), nah file2x inilah yang isinya berupa array record modul nantinya akan diolah(foreach) di setiap kolom/portlet/widget.


wuaahh.. panjang bangeeettt! Posted Image
ya tapi begitulah kira2x gambaran sekilas cara membuat feature modul plug n play yang sudah umum untuk cms-cms saat ini.

ini menurut pengalaman saya, mungkin rekan2x yii lain ada ide yang berbeda? Posted Image


sipp, terima kasih. makin menarik nich perbincangannya.
sy ada kendala nih, bagaimana caranya agar file konfigurasi config/main.php dapat ditulisi secara dinamis?.
soalnya klo ada penambahan modul baru terus tulis manual, ribet.. ;D
0

#14 User is offline   fastcrash 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 245
  • Joined: 10-March 10
  • Location:South Jakarta

Posted 05 July 2010 - 03:17 AM

Quote

sy ada kendala nih, bagaimana caranya agar file konfigurasi config/main.php dapat ditulisi secara dinamis?.
soalnya klo ada penambahan modul baru terus tulis manual, ribet.. ;D


semua sudah d load dari database, tinggal di include jadi tidak perlu lagi set main.php??
klo source file, tentu di upload aja.

contoh include file
$this->widget('application.extensions.JQuerySlideTopMenu'.$sourceFile[0], array('items'=>$menu_array));

0

#15 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 02 August 2010 - 02:20 AM

View Postfastcrash, on 05 July 2010 - 03:17 AM, said:

semua sudah d load dari database, tinggal di include jadi tidak perlu lagi set main.php??


maksudnya gimana ya?. Soalnya pada saat mengenerate modul, Nama Modul harus di tambahkan ke main.php agar modulnya bisa diakses oleh Yii.
contohnya seperti ini:
'modules' => array(
    'YMOnline',
),


Caranya agar kita tidak susah2x memasukan Nama Modul ke file main.php gimana ya?.
terima kasih.
0

#16 User is offline   Ade PS 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 01-December 13

Posted 15 May 2014 - 12:59 PM

View Postnasrul, on 17 June 2010 - 05:43 AM, said:

menurut ana, hal ini mungkin namun tidak dari layout.

layout mendefinisikan konten umum yang akan dirender secara keseluruhan + $content yang diambil dari view page yang kita panggil.

caranya:
  • kelompokkan tiap bagian yang akan diatur mode tampilnya ke dalam satu file misal _header.php, _menu.php, dll dan simpan dalam satu direktori khusus misal /protected/views/layouts/render
  • panggil dari view page dengan renderpartial()
    <?php 
    if ($modeTampil) echo $this->renderpartial('/layouts/render/_header', 'model'=>$model);
    
    // jika path_view dimulai dengan '/' akan mengacu pada direktori views
    // sehingga '/layouts/render/' mengacu ke '/protected/views/layouts/render'
    
    // adapun $model adalah model data yang akan digunakan dalam _header.php
    // sifatnya optional sehingga dapat diabaikan jika memang tidak menggunakan data
    ?>
    


semoga membantu :)



Berkaitan dengan hal diatas saya mau tanya mas,
Itu penulisan di layoutnya kan mas?
Trus penulisan pada Controller nya gimana mas untuk memanggil modelTampil dan model nya mas?
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users