我了解如何使用theme_pager()创建自己的自定义寻呼机,但我如何在不同的页面上设置不同的页面样式/配置。
例如。
主页样式:[首先] [<上一页] [1] [2] [3] [4] [下一页>] [上一页>]
内页:[<上一页] [1] [2] [3] [4] [下一页>]
观点:[<<] [<] [1] [2] [3] [4] [5] [6] [>] [>>]
注意:
1st pager是默认的寻呼机
第二个寻呼机没有第一个/最后一个按钮
第3页寻呼机使用图像作为按钮,并具有不同数量的可见页面链接
我最初的想法是测试theme_pager()中的路径以确定要渲染的样式。
这对我来说感觉不对,有更好的方法吗?
答案 0 :(得分:0)
我建议您进行修改的最简单方法是使用CSS。由于您没有更改寻呼机列表中的项目数,因此这三种寻呼机样式的标记可能完全相同。
用户firebug检查主题中的现有寻呼机,以发现css中寻呼机样式的编码位置。如果您的主题已经为它们编码,那么只需修改现有代码即可。如果代码只是从drupal核心中提取,那么你可以通过在主题中声明一个新的css文件或者只是在你主题的css文件中放入css规则的新副本来覆盖整个css文件。
为了制作寻呼机的不同版本,您必须找到一些方法来隔离您想要主题的寻呼机。这可以使用大多数drupal主题所具有的正文类来完成,或者使用您尝试更改寻呼机的视图/块的类/ id。如果您有大量需要应用此分页器样式的视图,则可以使用skinr定义分页器样式,并将规则附加到相应的视图/块。
主页样式看起来像默认的drupal东西。 内页:您只需要为第一个和最后一个链接添加display:none。 视图:为此,您将需要使用css图像替换,如下所示:
/* set up defaults for all buttons */
.pager .next,
.pager .previous,
.pager .first,
.pager .last {
text-indent:-9999px; /* hide text on the link */
text-align:left;
overflow:none;
height:20px;
width:20px;
line-height:20px;
dislay:block;
background: transparent url(../images/pager-sprite.png) no-repeat 0px 0px; /* set a background image */
}
/* for each button, offset the position of the background sprite image */
.pager .previous {
background-position: 20px 0px;
}
/* note that your sprite can also contain hover states for the images */
.pager .previous:hover {
background-position: 20px 20px;
}
.pager .next:hover {
background-position: 0px 20px;
}
.pager .first {
background-position: 40px 0px;
}
.pager .first:hover {
background-position: 40px 20px;
}
.pager .last {
background-position: 60px 0px;
}
.pager .last:hover {
background-position: 40px 20px;
}
**注意:此代码不能正常工作......这只是一个概念的大致轮廓,您将不得不调整它以使其适用于寻呼机。你应该将你的css选择器基于你在drupal核心或主题中找到的选择器。此外,您可能需要浮动寻呼机列表项或删除display:block属性,或根据您的需要进行其他调整等。
如果视图样式分页器是最常见的,您可能希望将其设置为默认分页器样式,但请注意,如果您这样做,那么您更具体的样式将不得不取消设置已设置的所有其他属性这种自定义的寻呼机风格。
祝你好运......