首先,如果不真正入侵 Liferay,您就无法摆脱 /-/,这是您不想做的(这会导致更多的问题而不是好处)。你可以摆脱的只是一个“博客”,以/web/standorman/-/blogs/application-development-in-liferay 之类的 URL 结尾——这对我来说似乎足够接近了。
以下是您可以使用 yannicuLar 建议的 https://github.com/DevJonny/Liferay-6-Friendlier-Friendly-URL-Mapper/ 来执行此操作的方法。
他的建议对您不起作用,因为您正试图更改嵌入在 Liferay 本身中的开箱即用 Liferay portlet。要改变这样的事情,必须使用 EXT 插件。所以这正是你应该做的。
第 1 步 - 在 Plugins SDK 中创建一个 EXT 插件(通过在插件 SDK“ext”子文件夹中运行 create.bat 或 create.sh)。
第 2 步 - 进入创建的 ext 插件文件夹,在 /docroot/WEB-INF/ext-impl/src 中删除文件 portal-ext.properties,然后将此文件 - https://github.com/DevJonny/Liferay-6-Friendlier-Friendly-URL-Mapper/blob/master/docroot/WEB-INF/src/com/mysmallcornerstudios/friendlierurlmapping/portlet/FriendlierFriendlyURLMapper.java 放入其中以使其位于路径中
/docroot/WEB-INF/ext-impl/src/com/mysmallcornerstudios/friendlierurlmapping/portlet/FriendlierFriendlyURLMappe r.java
第 3 步 - 打开文件 docroot/WEB-INF/ext-web/docroot/WEB-INF/liferay-portlet-ext.xml
用这样的内容填充它:
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.1.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_1_0.dtd">
<liferay-portlet-app>
<portlet>
<portlet-name>33</portlet-name>
<icon>/html/icons/blogs.png</icon>
<struts-path>blogs</struts-path>
<configuration-action-class>com.liferay.portlet.blogs.action.ConfigurationActionImpl</configuration-action-class>
<indexer-class>com.liferay.portlet.blogs.util.BlogsIndexer</indexer-class>
<open-search-class>com.liferay.portlet.blogs.util.BlogsOpenSearchImpl</open-search-class>
<scheduler-entry>
<scheduler-event-listener-class>com.liferay.portlet.blogs.messaging.CheckEntryMessageListener</scheduler-event-listener-class>
<trigger>
<simple>
<property-key>blogs.entry.check.interval</property-key>
<time-unit>minute</time-unit>
</simple>
</trigger>
</scheduler-entry>
<scheduler-entry>
<scheduler-event-listener-class>com.liferay.portlet.blogs.messaging.LinkbackMessageListener</scheduler-event-listener-class>
<trigger>
<simple>
<property-key>blogs.linkback.job.interval</property-key>
<time-unit>minute</time-unit>
</simple>
</trigger>
</scheduler-entry>
<friendly-url-mapper-class>com.mysmallcornerstudios.friendlierurlmapping.portlet.FriendlierFriendlyURLMapper</friendly-url-mapper-class>
<friendly-url-mapping>blogs</friendly-url-mapping>
<friendly-url-routes>com/liferay/portlet/blogs/blogs-friendly-url-routes.xml</friendly-url-routes>
<preferences-unique-per-layout>false</preferences-unique-per-layout>
<preferences-owned-by-group>true</preferences-owned-by-group>
<use-default-template>false</use-default-template>
<scopeable>true</scopeable>
<private-request-attributes>false</private-request-attributes>
<private-session-attributes>false</private-session-attributes>
<render-weight>50</render-weight>
<header-portlet-css>/html/portlet/blogs/css/main.css</header-portlet-css>
<css-class-wrapper>portlet-blogs</css-class-wrapper>
<add-default-resource>true</add-default-resource>
</portlet>
</liferay-portlet-app>
此内容对于我的 Liferay 版本是正确的。对于您的版本,您可能需要执行此操作以生成类似的内容:
- 在您的 Liferay 发行版中找到文件 liferay-portlet.xml(对于 Tomcat 捆绑发行版,应该位于 webapps/ROOT/WEB-INF 中,但可能在其他位置以防其他问题 - 只需搜索即可)
- 在该文件中找到
<portlet>...</portlet> 包含 <portlet-name>33</portlet-name> 的部分
- 将
<liferay-portlet-app><!-- copied text goes here --></liferay-portlet-app> 中的整个部分复制到您的EXT 插件中的上述文件docroot/WEB-INF/ext-web/docroot/WEB-INF/liferay-portlet-ext.xml。
- 将
<friendly-url-mapper-class>...</friendly-url-mapper-class> 行替换为<friendly-url-mapper-class>com.mysmallcornerstudios.friendlierurlmapping.portlet.FriendlierFriendlyURLMapper</friendly-url-mapper-class>
- 删除行
``
<portlet-data-handler-class>com.liferay.portlet.blogs.lar.BlogsPortletDataHandlerImpl</portlet-data-handler-class>
<social-activity-interpreter-class>com.liferay.portlet.blogs.social.BlogsActivityInterpreter</social-activity-interpreter-class>
<xml-rpc-method-class>com.liferay.portlet.blogs.util.PingbackMethodImpl</xml-rpc-method-class>
<asset-renderer-factory>com.liferay.portlet.blogs.asset.BlogsEntryAssetRendererFactory</asset-renderer-factory>
<atom-collection-adapter>com.liferay.portlet.blogs.atom.BlogsEntryAtomCollectionAdapter</atom-collection-adapter>
<custom-attributes-display>com.liferay.portlet.blogs.BlogsEntryCustomAttributesDisplay</custom-attributes-display>
<workflow-handler>com.liferay.portlet.blogs.workflow.BlogsEntryWorkflowHandler</workflow-handler>
第 4 步 - 部署你的 ext 插件(在它的文件夹中运行 ant 来构建它,转到 Plugins SDK 中的子文件夹“dist”,找到你的插件的 .war 文件 - 将该 .war 文件复制到 Liferay在 Liferay 发行版中“部署”文件夹)并重新启动 Liferay。
应该可以的。