Автор: Пользователь скрыл имя, 17 Сентября 2012 в 23:48, практическая работа
Как объяснялось в предыдущей главе, страницы портала как правило, включает заголовок с логотипом, навигация по меню (горизонтальное и/или вертикальной вкладок навигации), площадь окна портала содержание и колонтитул. Есть два уровня абстракции, чтобы создать страницу портала в Liferay.
</layout-template>
</standard>
Файлы из этих трех из собственного окна стандартных шаблонов макета находятся в ${PORTAL_ROOT_HOME}/layouttpl/
<div class="columns-max" id="main-content" role="main">
<div class="portlet-layout">
<div class="portlet-column portlet-column-only" id="column-1">
$processor.processMax("
</div>
</div>
</div>
Если вы сравните файл один стандартный шаблон макета, такие как эксклюзивный, с соответствующим файлом другого стандартный шаблон макета, такие как pop_up, вы обнаружите, что они точно так же. Разница с сервером обработки.
Liferay вне окна пользовательских шаблонов макета
Как и выше трех из собственного окна стандартных шаблонов макета, Есть десять из собственного окна пользовательских шаблонов макета определены в:
${PORTAL_ROOT_HOME}/WEB-INF/
<custom>
<layout-template id="freeform" name="Freeform">
<template-path>/layouttpl/
<wap-template-path>/layouttpl/
<thumbnail-path>/layouttpl/
<roles>
<role-name>User</role-name>
</roles>
</layout-template>
<layout-template id="1_column" name="1 Column">
<template-path>/layouttpl/
<wap-template-path>/layouttpl/
<thumbnail-path>/layouttpl/
</layout-template>
// ignore details
<layout-template id="2_2_columns" name="2-2 Columns">
<template-path>/layouttpl/
<wap-template-path>/layouttpl/
<thumbnail-path>/layouttpl/
</layout-template>
</custom>
Эти десять из собственного окна пользовательских шаблонов макета доступны для пользователей с правом разрешения (Manage Pages permission) для применения в индивидуальном порядке на странице портала. Их исходные коды находятся в the ${PORTAL_ROOT_HOME}/layouttpl/
$processor.processColumn("
Создание нового пользовательского макета
Теперь мы знаем, что шаблон макета составляет около, что он делает, и как применять одну из вне окна пользовательских шаблонов Liferay в расположение на странице портала. Настало время для нас, чтобы создать наш собственный пользовательский шаблон макета.
Создание макета шаблонов производится в подобной манере к созданию портлеты и темы. Это может быть выполнено с помощью плагинов Liferay SDK.
Создание скелета шаблон макета в Plugins SDK
Существует layouttpl папки внутри Liferay Плагины SDK, где все новые шаблоны компоновки проживают. SDK предоставляет скрипт для создания скелета нового шаблона макета. Чтобы создать новый шаблон макета, вы запускаете команду в этой папке layouttpl похож на тот, который вы используете для создания нового портала или тему.
Теперь перейдите к ${liferay.plugins.sdk.home}/la
Для Windows:
create <layout-template-name> "<layout template simple description>"
Для Unix / Linux / Mac:
./create.sh <layout-template-name> "<layout template simple description>"
Где <layout-template-name> папка шаблон макета имя в файловой структуре, и <layout template simple description> это текст, который на самом деле будет отображаться на Manage | Page Layout страницы. Папка шаблон макета имя не должно содержать пустое пространство в имени. Второй параметр должен иметь кавычки, чтобы пробелы в описании шаблона макета должен быть создан.
Например, следующая команда, чтобы создать пустой скелет 1_3 макет Колонны на Windows:
C:\workspace_6.0.5_book\
Liferay предлагает Liferay IDE как плагин Eclipse. Вы можете использовать Liferay IDE для создания шаблона макета, включая скелет папки и файлы, созданные сценарии выполняются в приведенной выше команде.
Теперь вы можете пойти в Windows Explorer и заметили, что шаблон макета
папку с именем 1_3_columns-layouttpl был создан автоматически при ${liferay.plugins.sdk.home}/la
Вы заметите, следующие три файла в папке DOCROOT Вашего макета шаблона:
1_3_columns.tpl: Это файл шаблона макета для регулярного веб-браузеров.
1_3_columns.wap.tpl: Это файл шаблона макета для мобильных устройств.
1_3_columns.png: Это стандартный образ миниатюры из того, что раскладка выглядит следующим образом. Это миниатюр отображается, когда пользователь портала с правым кликов разрешение на управление | Макет страницы страницы из меню Dockbar.
Liferay может автоматически определять клиента, который будет использоваться для подключения к узлу портала и подать соответствующий шаблон. Если клиент мобильного устройства, он будет служить 1_3_columns.wap.tpl файл. В противном случае, он будет служить 1_3_columns.tpl файл для обычных веб-браузер.
Добавление собственной реализации в файлы шаблона макета
Оба выше порожденных 1_3_columns.tpl и 1_3_columns.wap.tpl файлы пустые. 1_3_columns.png по умолчанию изображение, которое не представляет фактическое шаблон макета, мы должны создать. Следующие шаги, чтобы добавить свои коды на два файла шаблона.
Открытое 1_3_columns.tpl файл в выбранной редактор, добавьте следующие коды, а затем сохранить его.
<div class="columns-1-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("
</td>
</tr>
<tr>
<td class="aui-w33 portlet-column portlet-column-first" id="column-2">
$processor.processColumn("
</td>
<td class="aui-w33 portlet-column" id="column-3">
$processor.processColumn("
</td>
<td class="aui-w33 portlet-column portlet-column-last" id="column-4">
$processor.processColumn("
</td>
</tr>
</table>
</div>
Пожалуйста, обратите внимание, что этот шаблон макета в два ряда: первый ряд имеет только одну колонку и второй ряд состоит из трех одинаково широкий столбцов. Каждая клетка определяется строк и столбцов имеет уникальный идентификатор, например, колонка-1, колонка-2, колонка-3, а в графе-4. Этот уникальный идентификатор важно для придания этому праву портлетов (ы) в нужное место на странице портала, где этот шаблон макета был применен.
Теперь мы копируем и тот же код из 1_3_columns.tpl к 1_3_columns.wap.tpl файл. Вы можете изменить 1_3_columns.wap.tpl файл, как вы хотите, чтобы освежить дизайн шаблон макета для мобильных устройств.
В-третьих, мы должны сделать, заключается в использовании программа для работы с изображениями, таких как GIMP или Adobe Photoshop для создания 1_3_columns.png, что выглядит так, как шаблон макета должно выглядеть.
Строительство и регистрации шаблон макета
Теперь у нас есть все необходимые файлы на месте. Откройте командную строку, перейдите в каталог ${liferay.plugins.sdk.home}/la
Теперь войти в систему как администратор портала и убедитесь, вновь созданный шаблон макета, который был зарегистрирован в Liferay портал, как показано на Manage | Page Layout страницы:
Следующим шагом является создание Test Page с именем пробной страницы, применять вновь созданный шаблон макета на этой странице, и добавить несколько примеров портлетов в каждой ячейке строки и столбца. Вы можете видеть, что этот новый макет был успешно создан, развернутых в применении к тестовой странице, как показано на следующем скриншоте:
Как шаблон макета оказываемых в Liferay?
Мы знаем, что страницы портала включает в себя темы, шаблон макета, один или несколько портлетов, расположенных в сетке-подобную структуру столбце шаблон макета. Эти три слоя абстракции контроль внешнего вида страницы портала и как окно портала содержания располагаются в колонки. Теперь давайте посмотрим на код потока и объяснить, как эти компоненты работают вместе во время портал процесс рендеринга страницы.
Главная Servlet в Liferay портал
Liferay Портал реализован в Struts и включает в себя Main Servlet Сервлет-класс com.liferay.portal.servlet. MainServlet как зарегистрированный ниже в ${PORTAL_ROOT_HOME}/WEB-INF/
<servlet>
<servlet-name>Main Servlet</servlet-name>
<servlet-class>com.liferay.
<init-param>
<param-name>config</param-
<param-value>/WEB-INF/struts-
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>detail</param-
<param-value>0</param-value>
</init-param>
<load-on-startup>1</load-on-
</servlet>
Как показано на выделенной линии выше, Главное Servlet включает нагрузку на запуск элемента. Дополнительного содержания этого элемента должно быть целое число, указывающее порядок, в котором сервлет должен быть загружен. Контейнер должен гарантировать, что сервлеты, отмеченные ниже целые загружаются до сервлеты, отмеченные выше целые числа. Есть более чем 20 сервлеты зарегистрированных в Liferay портал web.xml и нагрузки на тип запуска Главная сервлета в натуральных числах 1 ниже, чем в любой другой сервлет в этом файле. Это указывает на то, что этот сервлет должен быть загружен (экземпляра и его инициализации () метод, называемый) на запуск веб-приложения после портал развертывания приложения.
Давайте внимательнее посмотрим на исходный код com.liferay.portal.servlet. MainServlet.java, который доступен в Liferay-портал-SRC-{version.nu
initPortlets метод анализирует все портлеты, определенных в портлет-custom.xml, портлет-ext.xml, Liferay-portlet.xml, и Liferay-портлет-ext.xml перед вызовом несколько других интерфейсов API для создания портлетов. В зависимости от среды Liferay, некоторые из этих XML-файлы, которые не могут существовать.
initLayoutTemplates метод анализирует все расположение шаблонов, определенных в Liferay-топологии templates.xml и Liferay макетов-шаблонов-ext.xml перед вызовом инициализации метод com.liferay.portal.service.Lay
initThemes метод анализирует все темы, определенные в Liferay-вид и feel.xml и Liferay-выглядеть и чувствовать-ext.xml перед вызовом Init () метод для инициализации com.liferay.portal.service.The
В дополнение к MainServlet, вы могли заметить существование com.liferay.portal.struts.Port
Страница рендеринга, как объясняется с кодом потока
Liferay страницах портала предоставляются по следующему механизму в виде серии шагов от браузера запрос через все, вплоть до оказания отдельных портлетов.
1. Первоначальный запрос приходит на сервер портала Liferay из браузера, и бьет службы (запрос, ответ) метод сервлета com.liferay.portal.servlet.Mai
2. Метод MainServlet.processServicePre называется.
3. Метод com.liferay.portal.events.Even
servlet.service.events.pre = com.liferay.portal.events.
Планировка и тема, которая будет отображаться определяются в ServicePreAction.servicePre метод. Ниже приведен список некоторых из атрибутов запроса, которые хранятся для последующего использования кода:
WebKeys.LAYOUT: текущую схему
WebKeys.LAYOUTS: других доступных макетов
WebKeys.THEME: тема для отображения
WebKeys.COLOR_SCHEME: цветовую схему для использования в конкретной теме. Тему и цветовую схему, как правило, определяется с помощью запроса расположение, как только он был определен