Макеты Шаблонов Liferay

Автор: Пользователь скрыл имя, 17 Сентября 2012 в 23:48, практическая работа

Описание работы

Как объяснялось в предыдущей главе, страницы портала как правило, включает заголовок с логотипом, навигация по меню (горизонтальное и/или вертикальной вкладок навигации), площадь окна портала содержание и колонтитул. Есть два уровня абстракции, чтобы создать страницу портала в Liferay.

Работа содержит 1 файл

Макеты Шаблонов Liferay.doc

— 236.00 Кб (Скачать)

WebKeys.THEME_DISPLAY: Все настройки, связанные с объектом themeDisplay

Вы можете настроить дослужебной события, предоставляя собственную реализацию таких как com.your.own.impl.ServicePreAction.java в плагине Liferay доб и добавив следующую строку конфигурации для вашего портала ext.properties:

servlet.service.events.pre = com.your.own.impl.ServicePreAction

4. Код темы инфраструктуры будет вызывать com.liferay.taglib.util.ThemeUtil класса оказать содержание темы. Это вызывает либо includeJSP () метод для включения JSP отображаемое содержимое, или includeVM () метод для включения скорости отображаемое содержимое.

5. При использовании скорости основе темы, запрос будет проходить через com.liferay.portal.velocity.VelocityVariables класса и его insertVariables метод. Именно здесь различные переменные скорости добавляются к скорости связи для использования вниз по течению тему системы.

6. / /html/common/themes/portal.jsp является "верхним уровнем" отображения страницы. Он выбирает portal_normal.jsp или portal_pop_up.jsp на основе текущего состояния отображения темы, и включает его, используя <liferay-theme:include> пользовательских тегов, осуществляемый com.liferay.taglib.theme.IncludeTag, что, в свою очередь, звонки com.liferay.taglib.util.ThemeUtil.include (). Скачать с Wow! книга www.wowebook.com

7. MainServlet.callParentService(request,response) вызывается перед вызовом super.service (запрос, ответ) метод. Эта услуга метод определен в суперклассе javax.servlet.http.HttpServlet из org.apache.struts.action.ActionServlet.

8. Struts вызывается для обработки запроса на обслуживание. Liferay использует пользовательский запрос Struts процессор com.liferay.portal.struts.PortalRequestProcessor. Его конструктор добавляет /portal/layout своей _lastPaths атрибут и PortalRequestProcessor.getLastPath(request) метод вычисляет последний путь посетили, и расходные материалы путь по умолчанию для первого входа в портал.

9. Как указано ниже, в ${PORTAL_ROOT_HOME}/WEB-INF/struts-config.xml, первоначальный запрос /portal/layout is handled by com.liferay.portal.action.LayoutAction

<action path="/portal/layout" type="com.liferay.portal.action.LayoutAction">

<forward name="portal.layout" path="portal.layout" />

</action>

10. Следующая конфигурация в ${PORTAL_ROOT_HOME}/WEB-INF/tiles-defs.xml приносит странице портала в /portal/layout.jsp, которая указывает на /html/portal/layout.jsp файл.

<definition name="portal.layout" extends="portal">

<put name="content" value="/portal/layout.jsp" />

<put name="selectable" value="true" />

</definition>

11. В LayoutAction.execute метод, используется следующий код, чтобы получить themeDisplay и верстка:

ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute (WebKeys.THEME_DISPLAY);

Макета = themeDisplay.getLayout ();

12. LayoutAction.processLayout звонки includeLayoutContent метод, как показано ниже:

includeLayoutContent (запрос, ответ, themeDisplay, верстка);

13. LayoutAction.includeLayoutContent метод оказывает / HTML / портал / макет / просмотр / portlet.jsp как часть страницы портала, как показано ниже:

String path = StrutsUtil.TEXT_HTML_DIR;

/* path = "/html" */

path += PortalUtil.getLayoutViewPage(layout);

/* path = "/html/portal/layout/view/portlet.jsp" */

RequestDispatcher rd = ctx.getRequestDispatcher(path);

rd.include(req, stringServletRes);

 

14. LayoutAction.processLayout метод оказывает /html/portal/layout.jsp как часть страницы портала. Это достигается, как показано ниже:

return mapping.findForward("portal.layout");

Как вы можете видеть в шагах 13 и 14, выше portlet.jsp и layout.jsp являются двумя ключевыми файлами в портал рендеринга страницы. Портал включает в себя оказание расположение содержимого до загрузки страницы, потому портлетов на странице можно задать заголовок страницы и подзаголовок.

Теперь давайте более подробно рассмотрим / HTML / портал / макет / просмотр / portlet.jsp файл. Следующую строку занимает velocityTemplateContent качестве входного атрибута.

RuntimePortletUtil.processTemplate(application, request, response,

pageContext, velocityTemplateId, velocityTemplateContent)

 

При выводе этой velocityTemplateContent в консоли, и вы должны быть в состоянии видеть выход, как показано на следующем, когда вы используете пользовательский шаблон 1_3_columns шаблон, который мы создали ранее в этой главе.

<div class="columns-3" id="main-content" role="main">

<table class="portlet-layout">

<tr>

<td class="portlet-column portlet-column-only" id="column-1" colspan="3">

$processor.processColumn("column-1", "portlet-column-content portlet-column-content-only")

</td>

</tr>

<tr>

<td class="aui-w33 portlet-column portlet-column-first" id="column-2">

$processor.processColumn("column-2", "portlet-column-content portlet-column-content-first")

</td>

<td class="aui-w33 portlet-column" id="column-3">

$processor.processColumn("column-3", "portlet-column-content")

</td>

<td class="aui-w33 portlet-column portlet-column-last" id="column-4">

$processor.processColumn("column-4", "portlet-column-content portlet-column-content-last")

</td>

</tr>

</table>

</div>

 

Означает ли это выглядеть знакомо? Этот выход точно такие же, как в 1_3_columns.tpl который мы создали в шаблон макета 1_3_columns. Видите ли, мы создали пользовательский шаблон, применил его к странице портала, и этот файл шаблона макета назначается именно так, как это должно velocityTemplateContent атрибут.

 

Теперь давайте вернемся к RuntimePortletUtil.processTemplate API вызова в /html/portal/layout/view/portlet.jsp файл и посмотрите, как она работает. Во-первых, она генерирует следующего содержания:

 

<div class="columns-3" id="main-content" role="main">

<table class="portlet-layout">

<tr>

<td class="portlet-column portlet-column-only" id="column-1" colspan="3">

[$TEMPLATE_COLUMN_column-1$]

</td>

</tr>

<tr>

<td class="aui-w33 portlet-column portlet-column-first" id="column-2">

[$TEMPLATE_COLUMN_column-2$]

</td>

<td class="aui-w33 portlet-column" id="column-3">

[$TEMPLATE_COLUMN_column-3$]

</td>

<td class="aui-w33 portlet-column portlet-column-last" id="column-4">

[$TEMPLATE_COLUMN_column-4$]

</td>

</tr>

</table>

</div>

 

Затем он генерирует следующий код, если у нас есть четыре портлетов, B, C, D и на этой странице и они загружены в колонках 1, 2, 3 и 4, соответственно.

<div class="columns-3" id="main-content" role="main">

<table class="portlet-layout">

<tr>

<td class="portlet-column portlet-column-only" id="column-1" colspan="3">

[$TEMPLATE_PORTLET_A$]

</td>

</tr>

<tr>

<td class="aui-w33 portlet-column portlet-column-first" id="column-2">

[$TEMPLATE_PORTLET_B$]

</td>

<td class="aui-w33 portlet-column" id="column-3">

[$TEMPLATE_PORTLET_C$]

</td>

<td class="aui-w33 portlet-column portlet-column-last" id="column-4">

[$TEMPLATE_PORTLET_D$]

</td>

</tr>

</table>

</div>

Это достигается путем следующий код в метод RuntimePortletUtil.processTemplate.

Map<String, String> columnsMap = processor.getColumnsMap();

Iterator<Map.Entry<String, String>> columnsMapItr =

columnsMap.entrySet().iterator();

while (columnsMapItr.hasNext()) {

Map.Entry<String, String> entry = columnsMapItr.next();

String key = entry.getKey();

String value = entry.getValue();

output = StringUtil.replace(output, key, value);

}

Для каждого столбца в макете страницы, класс PortletColumnLogic процессов каждого портлета использованием processContent() метод. В этом методе, HTML, которая окружает каждого окна портала не генерируется. Дальнейшая обработка затем делегированы метод RuntimePortletUtil.processPortlet ().

В конце концов, для каждого окна портала, методом com.liferay.portal.util.PortalUtil.renderPortlet () вызывается, в котором содержится призыв /html/portal/render_portlet.jsp оказать содержание отдельных портлетов. Это, в свою очередь, вызывает /html/common/themes/portlet.jsp,, который заканчивается вызовом /html/common/themes/portlet_content.jsp.

Наконец, следующая строка в конце RuntimePortletUtil.processTemplate () API вызова генерирует окончательный вывод, что portlet.jsp потребностей для визуализации.

return StringUtil.replace(output, "[$TEMPLATE_PORTLET_", "$]?", contentsMap);

 

Теперь тема, окон портала и шаблон макета на странице все обработке и подготовке. ProcessServicePost (запрос, ответ) метод Главная Servlet вызывается в конце концов блок внутри службы сервлета (запрос, ответ) метод.

Процесс метод класса com.liferay.portal.events.EventsProcessorUtil называется начать пост-служба событий процесса после Struts обрабатывает запрос. По умолчанию, после службы событий реализуются в com.liferay.portal.events.ServicePostAction из-за следующей строки конфигурации в portal.properties:

servlet.service.events.post=com.liferay.portal.events.ServicePostAction

Как и в дослужебной событий, вы можете настроить пост-служба событий, предоставляя собственную реализацию таких как com.your.own.impl.ServicePostAction.java в плагине доб в Liferay 6.x Плагины SDK и добавив следующую строку Ваш портал-ext.properties:

servlet.service.events.post=com.your.own.impl.ServicePostAction

Этот процесс над излагаются некоторые из основных шагов для отображения страницы портала с темой, шаблон макета, а также один или несколько окон портала. Это довольно сложная цепь действий. Для простоты, некоторые другие вызовы API в этом процессе, не перечисленные здесь.

По умолчанию конфигурации для верстки шаблона

Liferay Portal набора сотни конфигурации по умолчанию в portal.properties файл, который упакован в ${PORTAL_ROOT_HOME}/WEB-INF/lib/portal-impl.jar файл. Некоторые из этих параметров конфигурации, связанных с настроек внешнего вида и могут быть перезаписаны в portal-ext.properties файл.

Настройка шаблона макета по умолчанию ID

По умолчанию, Liferay использует 2_columns_ii шаблон макета по умолчанию макета. Если вы хотите, вы можете изменить это значение по умолчанию на свой собственный шаблон дизайна, такие как 1_3_columns шаблон макета, который мы создали в начале этой главы. Это можно сделать, добавив следующую строку portal-ext.properties файл установки Liferay. Обратите внимание, что вы можете найти ID шаблон макета в liferay-layout-templates.xml файл макета шаблона.

default.layout.template.id=1_3_columns

Остальные настройки по умолчанию, такие как по умолчанию Гость общественного макеты, по умолчанию Пользователь общественного макеты, пользователя по умолчанию Частные макеты и т.д. также может быть настроен на портале ext.properties-файл. Вы можете найти более подробную информацию о первоначальным настройкам по умолчанию в portal.properties.

Резюме

В этой главе вы узнали основные понятия Liferay макет портала, и как тема, макет и портлеты работают вместе, чтобы создать страницу портала, как создать свой собственный шаблон макета и отрисовки страниц кода потока, и так далее .

В следующей главе, мы будем смотреть на стиль страницы портала.



Информация о работе Макеты Шаблонов Liferay