Our Work

Overriding Core JSP file using Liferay 7 Hook

Updated 17 days ago

There are few scenarios that you might want to modify the JSPs to override which are no longer in Liferay’s core and you can do core JSP customizations to a specific site.

portal-web/docroot/html

As you can see, the above screen represents before you begin crafting a module to override core JSPs. In the below example you can restrict global vocabularies and categories with in site scope and it was achieved by implementing hook in Liferay 7 environment. If you’re overriding,

In the below example you can restrict global vocabularies and categories with in site scope and it was achieved by implementing hook in Liferay 7 environment.

If you’re overriding,

\html\taglib\ui\asset_categories_selector\page.jsp

put the overridden JSP in this folder of your module: to achieve it.

long[] groupIds = (long[]) request.getAttribute("liferay-ui:asset-categories-selector:groupIds");
if (ArrayUtil.isEmpty(groupIds)) {
groupIds = PortalUtil.getCurrentAndAncestorSiteGroupIds(scopeGroupId);
} else {
groupIds = PortalUtil.getCurrentAndAncestorSiteGroupIds(groupIds);
}
long grpId = GetterUtil.getLong(PropsUtil.get("extranet.groupid"));
if (grpId == scopeGroupId) {
long globalGrpId = GetterUtil.getLong(PropsUtil.get("global.groupid"));
groupIds = ArrayUtil.remove(groupIds, globalGrpId);
}
List < AssetVocabulary > vocabularies = AssetVocabularyServiceUtil.getGroupVocabularies(groupIds); <
aui: script use = "liferay-asset-categories-selector" >
new Liferay.AssetCategoriesSelector({
  className: '<%= className %>',
  contentBox: '#<%= namespace + randomNamespace %>assetCategoriesSelector_<%= vocabulary.getVocabularyId() %>',
  curEntries: '<%= HtmlUtil.escapeJS(categoryIdsTitles[1]) %>',
  curEntryIds: '<%= categoryIdsTitles[0] %>',
  hiddenInput: '#<%= namespace + hiddenInput + StringPool.UNDERLINE + vocabulary.getVocabularyId() %>',
  instanceVar: '<%= namespace + randomNamespace %>',
  labelNode: '#<%= namespace %>assetCategoriesLabel_<%= vocabulary.getVocabularyId() %>',
  maxEntries: <%= maxEntries %>,
  moreResultsLabel: '<%= UnicodeLanguageUtil.get(resourceBundle, "load-more-results") %>',
  portalModelResource: <%= Validator.isNotNull(className) && (ResourceActionsUtil.isPortalModelResource(className) || className.equals(Group.class.getName())) %>,
  singleSelect: <%= !vocabulary.isMultiValued() %>,
  title: '<%= UnicodeLanguageUtil.format(request, "select-x", vocabulary.getTitle(locale), false) %>',
  vocabularyGroupIds: '<%= StringUtil.merge(groupIds) %>',
  vocabularyIds: '<%= String.valueOf(vocabulary.getVocabularyId()) %>'
}).render(); <
/aui:script>

You should see the below screen once you have modify the JSPs.

KTree is one of top most Liferay Development company from India which specializes in developing Liferay Portlets using Liferay 6.x / 7 CE / DXP.
KTree is a best offshore Liferay development company with extensive experience in Liferay Portal Development services along with Upgrade & Migration. Hire Liferay developers or Liferay development services from Liferay developer.