классификация макетов и ссылок меню в LifeRay - PullRequest
0 голосов
/ 14 ноября 2011

Я устанавливаю макеты через крючок

с дружественным URL следующим образом

/ cat1 / link1, / cat1 / link2

и

/ cat2 / link3, / cat2 / link4

Я хочу, чтобы при переходе к cat1 / link1

Навигационные ссылки должны быть link1 и link2

и когда я перехожу к cat2 / link3

Навигационные ссылки должны быть link3 и link4

Как мне этого добиться?

или кто-нибудь может подсказать, как я могу сгруппировать макеты для нескольких сайтов в разные категории в одной установке liferay?

Спасибо ..

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Что вам нужно знать о коде:

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

Код:

Organization organization =
    OrganizationLocalServiceUtil.addOrganization(
        userId, OrganizationConstants.DEFAULT_PARENT_ORGANIZATION_ID,
        "My Org 1", OrganizationConstants.TYPE_REGULAR_ORGANIZATION, true,
        regionId, countryId, statusId, comments, true, serviceContext);

Group group = organization.getGroup();

GroupLocalServiceUtil.updateFriendlyURL(group.getGroupId(), "/cat1");

LayoutLocalServiceUtil.addLayout(
    group.getCreatorUserId(), group.getGroupId(), "false",
    LayoutConstants.DEFAULT_PARENT_LAYOUT_ID, "My Link 1", StringPool.BLANK,
    StringPool.BLANK, LayoutConstants.TYPE_PORTLET, false, "/link1",
    false, serviceContext);

LayoutLocalServiceUtil.addLayout(
    group.getCreatorUserId(), group.getGroupId(), "false",
    LayoutConstants.DEFAULT_PARENT_LAYOUT_ID, "My Link 2", StringPool.BLANK,
    StringPool.BLANK, LayoutConstants.TYPE_PORTLET, false, "/link2",
    false, serviceContext);

organization =
    OrganizationLocalServiceUtil.addOrganization(
        userId, parentOrganizationId, name, type, recursable, regionId,
        countryId, statusId, comments, true, serviceContext);

group = organization.getGroup();

GroupLocalServiceUtil.updateFriendlyURL(group.getGroupId(), "/cat2");

LayoutLocalServiceUtil.addLayout(
    group.getCreatorUserId(), group.getGroupId(), "false",
    LayoutConstants.DEFAULT_PARENT_LAYOUT_ID, "My Link 3", StringPool.BLANK,
    StringPool.BLANK, LayoutConstants.TYPE_PORTLET, false, "/link3",
    false, serviceContext);

LayoutLocalServiceUtil.addLayout(
    group.getCreatorUserId(), group.getGroupId(), "false",
    LayoutConstants.DEFAULT_PARENT_LAYOUT_ID, "My Link 4", StringPool.BLANK,
    StringPool.BLANK, LayoutConstants.TYPE_PORTLET, false, "/link4",
    false, serviceContext);
1 голос
/ 16 ноября 2011

Чтобы создать организацию (это из семи винтиков StartupAction.java)

long userId = defaultUserId;
long parentOrganizationId = OrganizationConstants.DEFAULT_PARENT_ORGANIZATION_ID;

String name = "7Cogs, Inc.";
String type = OrganizationConstants.TYPE_REGULAR_ORGANIZATION;

boolean recursable = true;
long regionId = 0;
long countryId = 0;
int statusId = GetterUtil.getInteger(PropsUtil.get("sql.data.com.liferay.portal.model.ListType.organization.status"));
String comments = null;

ServiceContext serviceContext = new ServiceContext();

serviceContext.setAddCommunityPermissions(true);
serviceContext.setAddGuestPermissions(true);

Organization organization =
        OrganizationLocalServiceUtil.addOrganization(
        userId, parentOrganizationId, name, type, recursable, regionId,
        countryId, statusId, comments, serviceContext);

Group group = organization.getGroup();
GroupLocalServiceUtil.updateFriendlyURL(group.getGroupId(), "/7cogs");

Вы уверены, что вам нужны две организации, а не два сообщества?

ОБНОВЛЕНИЕ для вопроса в комментарии:

Чтобы получить название организации в теме (скорость), вы можете использовать (если вы находитесь на страницах (группе) организации)

В portal-ext.properties

journal.template.velocity.restricted.variables=

В vm файле темы

Liferay 6

#set($os = $serviceLocator.findService("com.liferay.portal.service.OrganizationLocalService"))
#set($organization = $os.getOrganization($themeDisplay.getScopeGroup().getOrganizationId()))
$organization.getName()

Liferay 5.x

#set($os = $serviceLocator.findService("com.liferay.portal.service.OrganizationLocalServiceUtil"))
#set($organization = $os.getOrganization($themeDisplay.getScopeGroup().getOrganizationId()))
$organization.getName()

РЕДАКТИРОВАТЬ:

Если ваш пользователь является членом организации(ы), чем вы можете использовать

#foreach($org in $themeDisplay.getUser().getOrganizations())
    $org.getName()<br>
#end

Обратите внимание, что пользователь может быть членом нескольких организаций, и вы получите все их.

...