我知道如何使用theme_pager()创建自己的自定义分页程序,但是如何在不同页面上拥有不同样式/配置的页面呢?
例如。
首页样式:前1 3下一页>
内页:<上一页2 4
视图:<< 1 3 5>
注意:
第一个寻呼机是默认寻呼机
第2页没有第一个/最后一个按钮
第3页使用图像作为按钮,并具有不同数量的可见页面链接
我最初的想法是测试theme_pager()中的路径,以确定要呈现的样式。
我觉得不太对劲,有没有更好的办法?
发布于 2011-04-22 13:48:49
我建议进行你所说的修改的最简单的方法是使用CSS。由于您没有更改页面导航列表中的项目数,因此这三种页面导航样式的标记可能是相同的。
User firebug检查主题中的现有分页程序,以发现在css中对分页程序的样式进行编码的位置。如果你的主题已经为它们编写了代码,那么只需修改现有的代码。如果代码只是从drupal核心提取的,那么您可以通过在主题中声明一个新的css文件来覆盖整个css文件,或者只是将css规则的新副本放入主题的css文件中。
为了制作不同版本的寻呼机,您必须确定一些方法来隔离您想要以不同主题为主题的寻呼机。这可以使用大多数drupal主题都有的body类来完成,或者使用视图/块的class/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属性,或根据需要进行其他调整等。
如果视图样式的分页程序是最常见的,您可能希望将其设置为默认的分页程序样式,但请注意,如果您这样做,那么您的更具体的样式将必须取消设置为此自定义分页程序样式设置的所有其他属性。
祝你好运。
https://stackoverflow.com/questions/5733147
复制相似问题