我是Liferay 6.1的新手。我需要一个导航portlet,它可以使用hover
或onmouseover
方法显示子链接和孙链接。我在6.1中使用默认的导航portlet,但无法弄清楚如何将其配置为在悬停时也显示grahdchild链接。
像这样的任务需要自定义导航portlet吗?或者提供的默认portlet是可配置的?
假设我有一个很像下面的网站结构:
- 主页
- 客厅
- 沙发
- 电视
- 厨房
- 客厅
导航portlet的标题将是Home,其中Living Room和Kitchen是显示的子项。在客厅上方悬停时,沙发和电视将出现。
我试过创造一个钩子,很像这里看到的那个,但没有用。
与用于3 Javascript的方法有些相似>3.1 jQuery如所示
更新
我就我遇到的这个问题向Liferay下了罚单。由于页面在父页面/选项卡被选中后才显示嵌套(二级)导航,从而使其具有"打开所选"选择器。如果这个二级导航是在HTML中生成的,则悬停css选择器将通过";高级造型";。将随分辨率更新。参见以下示例:
视觉表示见下文:注:在这种情况下,有两个FIRST_LEVEL_OBJECT和一个SECOND_LEVEL_OBJECT。
选择第二个FIRST_LEVEL_OBJECT的实例
<li class="">
<a class="" href="/group/ssc/ssc-hr-contact-list">FIRST_LEVEL_OBJECT</a>
</li>
<li id="aui_3_4_0_1_2072" class="selected ">
<a id="aui_3_4_0_1_2071" class="selected " href="/group/ssc/something-referral-program">FIRST_LEVEL_OBJECT</a>
</li>
选择第一个first_LEVEL_OBJECT并显示子SECOND_LEVEL_OJECT的实例
<li id="aui_3_4_0_1_2166" class="open selected ">
<a id="aui_3_4_0_1_2165" class="open selected " href="/group/ssc/ssc-hr-contact-list"> FIRST_LEVEL_OBJECT</a>
<ul class="layouts level-2">
<li class="">
<a class="" href="/group/ssc/test-gc-1">SECOND_LEVEL_OBJECT</a>
</li>
</ul>
</li>
<li class="">
<a class="" href="/group/ssc/something-referral-program">FIRST_LEVEL_OBJECT</a>
</li>
以下是提供功能的方法。
- 将子页面添加到portlet上显示的父页面
- 选择
Options
- 选择
Configuration
- 找到为
All
配置的included-layouts
并保存-这使"layouts level-2"类能够在HTML中呈现,而无需首先进行选择 - 步骤2
- 选择
Look and Feel
- 导航到
Advanced Styling
- 添加以下CSS:
li.open ul.level-2 a {
border: none;
background: #E1E1E1;
text-indent: 15px;
}
li.open:hover ul.level-2 {
display: block;
}
如果页面上有多个导航portlet,则此实现将影响所有导航portlet。隔离1个portlet以启用此功能的唯一方法是:
- 选择
Options
- 选择
Configuration
- 找到为
Arrows
配置的Bullet Style
(默认值应为Dots
)并保存-这将把HTML类从nav-menu-style-dots
更改为nav-menu-style-arrows
返回高级样式,在li前面添加导航菜单样式箭头。打开:悬停ul.level-2,如下所示:
.nav-menu-style-arrows li.open:hover ul.level-2 {
display: block;
}
注意:我知道高级样式下的Add a CSS rule for just this portlet
,在这种情况下似乎没有什么不同。我认为这是一个潜在的问题,即每个导航Portlet的Portlet ID都是相同的。
您现在已经将悬停CSS选择器添加到默认导航portlet中