Para Desenvolvedores

Como pegar a categoria de um post?

Resolvido

Estou fazendo um serviço de 'posts mais vistos' e preciso pegar a categoria desses posts, alguém sabe como consigo fazer isso?

Essa é a parte do código onde pego algumas das outras informações necessárias:

try {
				Content content = ContentManagerFactory.getContentManager().getContent(contentId);

				if (!foundItemIds.contains(contentId)) {
					ContentVersion publishedContentVersion = ContentManagerFactory.getContentManager()
							.getPublishedContentVersion(content.getId(), content.getServiceInstanceId());
					
					Locale locale = publishedContentVersion.getContentLocale().getLocale();
					Object argumentValue = aggrs.get("value");

					JSONObject row = new JSONObject();
					row.put("id", argumentValue);
					row.put("titulo", publishedContentVersion.getPrimaryName());
					row.put("descricao", publishedContentVersion.getIntroduction());
					row.put("href", returnDynamicPath(argumentValue));
					row.put("itemId", publishedContentVersion.getItemId());
					row.put("dataPublicacao", dateFormat(publishedContentVersion.getLastModifiedDateTime()));

 

Por Rodolfo

Em 28/10/20 15:53

Acompanhar pergunta

1 resposta(s):

Ordenar por:

Chamada do método para preencher a categoria:

row.put("categoria", returnCategory(publishedContentVersion.getContentAssociations(), locale));

Método para pegar a informação da categoria dos posts:

private String returnCategory(Collection<ContentAssociation> collection, Locale locale) throws PortalException {
		Collection<ContentAssociation> contentAssociations = collection;
		
		List<String> directCategoriesIds = new ArrayList<>();
		List<String> directCategoriesNames = new ArrayList<>();

		List<String> fullCategoriesIds = new ArrayList<>();
		List<String> fullCategoriesNames = new ArrayList<>();
		
		for (ContentAssociation contentAssociation : contentAssociations)
		{
			if (ContentAssociation.TYPE_CATEGORIZATION_TERM.equals(contentAssociation.getType()))
			{

				String categoryId = contentAssociation.getAssociatedContent().getId();
				directCategoriesIds.add(categoryId);
				directCategoriesNames.add(CategorizationUtil.getBestTermName(categoryId, locale));

				List<String> categoryPathIds = CategorizationUtil.getTermPathContentIds(categoryId);
				for(String curCategoryId : categoryPathIds)
				{
					fullCategoriesIds.add(curCategoryId);
					fullCategoriesNames.add(CategorizationUtil.getBestTermName(curCategoryId, locale));
				}
			}
		}
		
		String categoria = fullCategoriesNames.get(0);
		
		return categoria;
		
	}

Em directCategoriesIds os identificadores das categorias diretas (não recursivas).

Em directCategoriesNames, vai ter os nomes das categorias diretas.

Em fullCategoriesIds e fullCategoriesNames, vão estar os ids e os nomes, respectivamente, das categorias recursivas.

Por Rodolfo

Em 28/10/20 16:01

Entrar

Interaja com a comunidade e tenha acesso a conteúdos exclusivos.

Houve algum erro ao acessar o banco de dados. Tente novamente mais tarde.