Как программно создать подкатегорию под каждой категорией в Liferay DXP?

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

Я могу добавить подкатегорию в каждую категорию с помощью Liferay, но не знаю, как добавить их программно? Существуют ли какие-либо методы или классы, которые я могу использовать для их программного добавления? Любая помощь или подсказки будут оценены

Я использую Liferay DXP и Java 1.8.


person Brooklyn99    schedule 03.09.2019    source источник


Ответы (2)


Я не совсем уверен, что именно вам нужно сделать, чтобы попросить две разные вещи.

Чтобы программно добавить категорию, вам необходимо получить ссылку на AssetCategoryLocalService и вызовите один из addCategory методов. Вот пример из тестовый класс:

AssetCategory assetCategory = assetCategoryLocalService.addCategory(
            TestPropsValues.getUserId(), _group.getGroupId(), title,
            _assetVocabulary.getVocabularyId(), serviceContext);

Чтобы убедиться, что имена уникальны, вы можете использовать прослушиватель моделей. Существует пример кода это показывает, как сделать это для Layout, но вы можете следовать тому же подходу, чтобы создать его для AssetCategory.

person Milen Dyankov    schedule 04.09.2019
comment
Привет Милен, Спасибо за ваш ответ. По сути, мне нужно классифицировать и управлять некоторым веб-контентом, и для этого у меня есть список категорий, в которых в настоящее время каждая категория имеет различный контент. Но теперь мне нужно получить контент на основе родительской категории и дочерней подкатегории. - person Brooklyn99; 04.09.2019
comment
Я не понимаю. Вы говорите, что не хотите программно добавлять новые категории, а применяете существующие категории к существующему контенту? - person Milen Dyankov; 05.09.2019
comment
ОК, извините за ненужную путаницу. Основным требованием здесь является создание словаря, и под ним мне нужно создать категорию, а под каждой категорией мне нужно создать подкатегории, что должно быть сделано программно. Ответ выше сможет создать только категорию, но мне нужно знать, могу ли я создавать подкатегории аналогичным образом. - person Brooklyn99; 05.09.2019
comment
Ага. Используйте тот же API. Обратите внимание, что некоторые методы addCategory имеют параметр long parentCategoryId. - person Milen Dyankov; 05.09.2019
comment
здесь, если я добавлю идентификатор родительской категории, как я могу добавить заголовок, имя в родительскую категорию? - person Brooklyn99; 06.09.2019
comment
ну, вы должны сначала создать ii или найти его, затем получить идентификатор, а затем создать дочерний элемент с родительским. - person Milen Dyankov; 06.09.2019

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

По сути, чтобы добавить категорию, сначала нам нужно создать категорию, если она еще не существует, и она должна быть связана со словарем.

AssetVocabulary assetVocabulary=AssetVocabularyLocalServiceUtil.createAssetVocabulary(vocabularyId);
        assetVocabulary.setGroupId(groupId);
        assetVocabulary.setName(vocabularyName);
        assetVocabulary.setTitle(vocabulary, Locale.US);
        assetVocabulary.setCompanyId(companyId);
        AssetVocabularyLocalServiceUtil.updateAssetVocabulary(assetVocabulary);

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

AssetCategory parentCategory= AssetCategoryLocalServiceUtil.createAssetCategory(categoryId);

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

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

AssetCategory childCategory= AssetCategoryLocalServiceUtil.createAssetCategory(categoryId);

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

long catId= parentCategory.getCategoryId(); и установите его в дочернюю категорию. как ниже

childCategory.setParentCategory(catId);

и Когда вы запустите категории, вы увидите Словари-> Категории-> Подкатегории. на портале Лайфрей.

person Brooklyn99    schedule 23.09.2019