Foren

way to discover pages a portlet is on

thumbnail
Jack Bakker, geändert vor 11 Jahren.

way to discover pages a portlet is on

Liferay Master Beiträge: 978 Beitrittsdatum: 03.01.10 Neueste Beiträge
looking for a way to list pages a custom portlet might be on
thumbnail
jelmer kuperus, geändert vor 11 Jahren.

RE: way to discover pages a portlet is on

Liferay Legend Beiträge: 1191 Beitrittsdatum: 10.03.10 Neueste Beiträge
Maybe this post is of use to you
thumbnail
Victor Zorin, geändert vor 11 Jahren.

RE: way to discover pages a portlet is on

Liferay Legend Beiträge: 1228 Beitrittsdatum: 14.04.08 Neueste Beiträge
This is how we count instances of a specific portlet . You should be able to use similar approach to find out urls from layouts. I suppose you should not be really making such calls every time. Only when you would like to know.

	public int countInstances(PortletConfig config, java.util.ArrayList<long> links) throws NoLicenseInfoException {
		try {
			int totalCount = PortletPreferencesLocalServiceUtil
					.getPortletPreferencesesCount();
			int currentIndex = 0;
			int instanceCount = 0;
			while (currentIndex &lt;= totalCount) {
				int toIndex = currentIndex + 10;
				if (toIndex &gt; totalCount) {
					toIndex = totalCount;
				}
				if (toIndex &lt;= currentIndex) {
					break;
				}
				java.util.List<com.liferay.portal.model.portletpreferences> list = PortletPreferencesLocalServiceUtil
						.getPortletPreferenceses(currentIndex, toIndex);
				
				java.util.Iterator<com.liferay.portal.model.portletpreferences> it = list
						.iterator();
				while (it.hasNext()) {
					com.liferay.portal.model.PortletPreferences pref = it
							.next();
					if (pref.getPortletId().startsWith(config.getPortletName())) {
						String settings = LayoutLocalServiceUtil.getLayout(pref.getPlid()).getTypeSettings();
						// max contain portlet Id to be counted
						if(settings.contains(config.getPortletName()))
						{
							if(links != null)
							{
								links.add(pref.getPlid());
							}
							instanceCount++;
						} 
					}
					currentIndex++;
				}
			}
			return instanceCount;
		} catch (Exception e) {
			throw new NoLicenseInfoException();
		}
	}
</com.liferay.portal.model.portletpreferences></com.liferay.portal.model.portletpreferences></long>
thumbnail
Vitaliy Koshelenko, geändert vor 11 Jahren.

RE: way to discover pages a portlet is on

Expert Beiträge: 319 Beitrittsdatum: 25.03.11 Neueste Beiträge
Hi, Jack.
I have done it in a way like this:

	    String PORTLET_ID = "customPortlet";

            //Iterate over layouts
            List<layout> layouts = LayoutLocalServiceUtil.getLayouts(groupId, false);
            for (Layout layout : layouts) {

                if (layout.getLayoutType() != null) {

                    //Iterate over all Slider portlets
                    DynamicQuery portletDynamicQuery = DynamicQueryFactoryUtil.forClass(Portlet.class, classLoader).add(PropertyFactoryUtil.forName("portletId").like(PORTLET_ID + "%"));
                    List<portlet> portlets = PortletLocalServiceUtil.dynamicQuery(portletDynamicQuery);
                    for (Portlet portlet : portlets) {

                        //Get layout properties - in order to obtain full portletId
                        HashMap<string, string> layoutPropertiesMap = layout.getTypeSettingsProperties();

                        for (String layoutValue : layoutPropertiesMap.values()) {

                            if (layoutValue.startsWith(PORTLET_ID)) {

                                // the portletId is the initial part before first "," if extra info is present
                                String portletId = layoutValue.contains(StringPool.COMMA) ?
                                        layoutValue.substring(0, layoutValue.indexOf(StringPool.COMMA)) :
                                        layoutValue;

				//your porlet with this portletId is on this layout in this case
				//...
			
			    }
			}
		     }
	           }
		}</string,></portlet></layout>
thumbnail
Jack Bakker, geändert vor 11 Jahren.

RE: way to discover pages a portlet is on

Liferay Master Beiträge: 978 Beitrittsdatum: 03.01.10 Neueste Beiträge
thanks guys