위젯 박스 (Widget Box) 생성하기

위젯박스(Widget Box) 는 말 그대로 위젯을 담는 박스라고 생각할 수 있습니다.

위젯박스(Widget Box) 는 사이트의 화면에 출력됩니다.

사이트 관리자는 위젯박스의 편집 페이지에서 다수의 위젯을 생성한 다음, 생성된 위젯들을 위젯박스에 배치할 수 있습니다.

사이트 관리자나 개발자는 위젯박스 삽입 코드를 사용하여 화면 어디에나 위젯박스를 출력할 수 있습니다.

(출처: https://www.xpressengine.com/guide/xe-service/service-widget_box)

 


작성된 코드는 migrations\\WidgetboxMigration.php 에 있습니다.

PHP Code

$widgetBoxHandler = app('xe.widgetbox');
$dashboard = $handler->find('dashboard');

if($dashboard === null) 
{
    $handler->create([
        'id'=>'dashboard',
        'title'=>'dashboard',
        'content'=> $this->getDefaultDashboard(),
        'options' => ['presenter' => \\Xpressengine\\Widget\\Presenters\\XEUIPresenter::class]
    ]);
}

$userProfile = $handler->find('user-profile');
if($userProfile === null) 
{
    $handler->create([
			'id'=>'user-profile', 
			'title'=>'User Profile'
		]);
}

/**
 * Get the widget-box data for the dashboard.
 *
 * @return array
 */
private function getDefaultDashboard()
{
    return json_decode('[[{"grid":{"md":6,"xs":"12"},"rows":[],"widgets":[{"@attributes":{"id":"widget\\/xpressengine@systemInfo","title":"System Info","skin-id":"widget\\/xpressengine@systemInfo\\/skin\\/xpressengine@default"},"skin":""}]},{"grid":{"md":6,"xs":"12"},"rows":[],"widgets":[{"@attributes":{"id":"widget\\/xpressengine@storageSpace","title":"Storage \\uc0ac\\uc6a9\\ub7c9","skin-id":"widget\\/xpressengine@storageSpace\\/skin\\/xpressengine@default"},"limit":"5","skin":""}]}],[{"grid":{"md":"6","xs":"12"},"rows":[],"widgets":[{"@attributes":{"id":"widget\\/xpressengine@contentInfo","title":"Content Info","skin-id":"widget\\/xpressengine@contentInfo\\/skin\\/xpressengine@default"}}]},{"grid":{"md":"6","xs":"12"},"rows":[],"widgets":[{"@attributes":{"id":"widget\\/news_client@news","title":"News","skin-id":"widget\\/news_client@news\\/skin\\/news_client@default"}}]}]]', true);
}

Blade PHP Code

<!--//기본프로필 -->
@if($widgetbox)
	<div class="card-wrap">
	    <div class="xe-container">
	        {{ uio('widgetbox', ['id' => 'user-profile', 'link'=> xe_trans('xe::edit')]) }}
	    </div>
	</div>
@endif
  • share