wordpress 父类和子类调用不同模板
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wordpress 父类和子类调用不同模板相关的知识,希望对你有一定的参考价值。
父类调用默认的category.php,而所有新增子类调用自定义的category-child.php。求实现!
WordPress 2.9 以后的版本可以可以为不同的分类指定不同的模板样式的。有WP自带的方法和自己编写函数实现的方法,如果是CMS主题的话使用自己编写函数的方法更为灵活和可配置。
方案一:wp自带方式
先查看分类ID,例如是:12.然后复制一个category.php(也就是一个通用的分类模板,不想的话 可以自己新写一个)到主题根目录,改名为category-12.php. 这样分类ID为12的分类调用的分类模板就是category-12.php的模板!
如果使用特殊模板样式的分类的别名,如product.则复制一个category.php到主题根目录,改名为category-product.php.
方案二:
<?phpif ( in_category('1') || post_is_in_descendant_category( 1) )
include(TEMPLATEPATH .'/category-1.php');
elseif( in_category('2') || post_is_in_descendant_category( 2 ) )
include(TEMPLATEPATH . '/category-2.php');
else
include(TEMPLATEPATH . '/category-3.php');
?>
一般情况用方案一就OK了,不过要制作CMS主题,可以用方案二配置传值栏目ID,灵活配置。
追问复制粘贴谢谢。早用过了,不行。
参考技术A很简单
catrgory.php
<?php/* 功能:
* 判断是否为分类目录别名,如果不是,则使用category-all.php 分类目录模板
* 如果是,则使用对应的分类目录模板
*/
if ( is_category('wordpress') )
include(TEMPLATEPATH . '/category-pic.php');
// elseif 结束
else
include(TEMPLATEPATH . '/category-default.php');
?>
详细演示地址请看 http://www.cnsecer.com/jianzhan/wordpress追问
你好,兄台,试了,不行。用category-default.php,父类和子类都变成了默认index页面,不要default,就提示连分类页面都找不到了。
追答cnsecer.com符合你的要求吗?符合的话我把代码给你打包
追问比如你的网站导航条上的经验、咨询等等栏目,这是用分类目录的父类做的吗?其实我想要的差不多就是你那种效果,只是多了一个子目录。
比如你的网站是这样:首页》经验:然后进入经验页面后就是文章列表。
但我想要的是这样:首页》经验:进入经验页面后不是文章列表,而是子目录列表。
相当于这样个意思:首页》父类:进入父类页面列出该父类下所有一级子类。点击一级子类,进入一级子类页面才是文章列表。
下面是代码
Java中的继承:父类和子类的关系
一、父类引用指向子类对象时
1、若子类覆盖了某方法,则父类引用调用子类重新定义的新方法
2、若子类未覆盖某方法,则父类引用调用父类本身的旧方法
3、若子类覆盖了某属性,但父类引用仍调用父类本身的旧属性
4、若子类未覆盖某属性,则父类引用调用父类本身的旧属性
5、父类引用不能访问子类新定义的方法
二、子类引用指向自身对象时
1、若子类覆盖了某方法,则子类引用调用子类重新定义的新方法
2、若子类未覆盖某方法,则子类引用调用父类本身的旧方法
3、若子类覆盖了某属性,则子类引用调用子类重新定义的新属性
4、若子类未覆盖某属性,则子类引用调用父类本身的旧属性
5、子类引用可以访问子类新定义的方法
三、示例代码
- public class B {
- int a = 1;
- int b = 2;
- void f1() {
- System.out.println("B.f1()");
- }
- void f2() {
- System.out.println("B.f2()");
- }
- }
C.java
- public class C extends B {
- int a = 3;
- @Override
- void f1() {
- System.out.println("C.f1()");
- }
- void f3() {
- System.out.println("C.f3()");
- }
- public static void main(String[] args) {
- B b = new C();// 父类引用指向子类对象
- b.f1();// 子类覆盖了该方法,所以父类引用调用新方法
- b.f2();// 子类未覆盖该方法,所以父类引用调用旧方法
- // b.f3();此行去掉注释会报错,父类引用不能访问子类新定义方法
- System.out.println(b.a);// 子类覆盖了该属性,但父类引用仍旧访问旧属性
- System.out.println(b.b);// 子类未覆盖该属性,父类访问旧属性
- System.out.println();
- C c = new C();// 子类引用指向自身对象
- c.f1();// 子类覆盖了父类方法,所以调用新方法
- c.f2();// 子类未覆盖父类方法,所以调用旧方法
- c.f3();// 子类调用自己新定义的方法
- System.out.println(c.a);// 子类覆盖了该属性,所以访问新属性
- System.out.println(c.b);// 子类未覆盖该属性,所以访问旧属性
- }
- }
输出:
- C.f1()
- B.f2()
- 1
- 2
- C.f1()
- B.f2()
- C.f3()
- 3
- 2
以上是关于wordpress 父类和子类调用不同模板的主要内容,如果未能解决你的问题,请参考以下文章