Yii Layout Mengenai layout yii, membagi page, konfigurasi layout
#1
Posted 12 June 2010 - 11:36 PM
#2
Posted 13 June 2010 - 05:19 PM
Pemula, on 12 June 2010 - 11:36 PM, said:
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.
#3
Posted 17 June 2010 - 02:35 AM
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.
#4
Posted 17 June 2010 - 05:43 AM
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
#5
Posted 17 June 2010 - 10:25 PM
nasrul, on 17 June 2010 - 05:43 AM, said:
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,,
#6
Posted 18 June 2010 - 02:20 AM
nasrul, on 17 June 2010 - 05:43 AM, said:
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
prestashop_module1.jpg (82.53K)
Number of downloads: 73
prestashop_module2.jpg (72.23K)
Number of downloads: 72
prestashop_home.jpg (77.69K)
Number of downloads: 57
Nah, sy ingin membuat modulnya seperti itu..
satu lagi mas
terima kasih banyak..
#7
Posted 19 June 2010 - 07:19 PM
kenapa tidak Anda teruskan
#8
Posted 20 June 2010 - 12:54 AM
nasrul, on 19 June 2010 - 07:19 PM, said:
kenapa tidak Anda teruskan
saya dah coba googling n dapat dotplant dan flexica, cuma belum tak coba.
#9
Posted 20 June 2010 - 10:13 PM
sekali-kali bikin cookbook-nya juga boleh tuh..
thanks before bro
#10
Posted 03 July 2010 - 10:23 AM
nasrul, on 20 June 2010 - 10:13 PM, said:
sekali-kali bikin cookbook-nya juga boleh tuh..
thanks before bro
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?
#11
Posted 04 July 2010 - 12:12 AM
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..
#12
Posted 04 July 2010 - 11:14 PM
Quote
sebenarnya yg sy maksud adalah membuat web cms dengan Yii
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!

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?
#13
Posted 05 July 2010 - 02:43 AM
fastcrash, on 04 July 2010 - 11:14 PM, said:
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!

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?

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..
#14
Posted 05 July 2010 - 03:17 AM
Quote
soalnya klo ada penambahan modul baru terus tulis manual, ribet..
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));
#15
Posted 02 August 2010 - 02:20 AM
fastcrash, on 05 July 2010 - 03:17 AM, said:
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.

Help














