Home页面流程图
- hybrid_head()
- wp_haed()
- body
- hybrid_before_html()—action,默认没有被hook
- div#body-container
- hybrid_before_header()—action,默认没有被hook
- div#header-container
- div#header
- hybrid_header()
- end#header
- end#header-container
- hybrid_after_header()
- div#container
- hybrid_before_container()—action,默认没有被hook
- div#content
- hybrid_before_content()
- /*wp loop begin*/
- div.hybrid_post_class()
- h2.post-title inline
- p.byline inline
- div.entry-content inline
- p.entry-meta inline
- end.hybrid_post_class()
- /*end wp loop*/
- hybrid_after_content()
- end#content
- hybrid_after_container()
- end#container
- div#footer-container
- hybrid_before_footer()
- div#footer
- hybrid_footer()
- wp_footer()
- end#footer
- hybrid_after_footer()—action,默认没有被hook
- end#footer-container
- end#body-container
- /body
hook到hybrid_head()的函数列表
- hybrid_meta_content_type()
- hybrid_meta_robots()
- hybrid_meta_author()
- hybrid_meta_copyright()
- hybrid_meta_revised()
- hybrid_meta_abstract()
- hybrid_meta_description()
- hybrid_meta_keywords()
- hybrid_meta_template()
- wp_generator()
- hybrid_favicon()
- hybrid_head_feeds()
- hybrid_head_pingback()
- hybrid_head_breadcrumb()
hook到hybrid_header()的函数列表
- hybrid_site_title() —提供同名filter,参数为标题包括其html tag,没有被hook
- hybrid_site_description() —提供同名filter,参数为站点描述,包括其html tag,没有被hook
hook到hybrid_after_header()的函数列表
- hybrid_page_nav() —启动两个action,并提供一个同名filter,参数为导航条包括其html tag,没有被hook
hook到hybrid_before_content()的函数列表
- hybrid_breadcrumb() —提供一个同名filter和一个名为hybrid_breadcrumb_args的filter
- hybrid_get_utility_before_content() —该函数打印位于Content之前的Sidebar,在Hybrid中被赋予一个名称为Utility
hook到hybrid_after_content()的函数列表
- hybrid_get_utility_after_content() —该函数打印位于Content之后的Sidebar
- hybrid_navigation_links() —该函数打印WP自带的简单页面导航Prev和Next
hook到hybrid_after_container()的函数列表
- hybrid_get_primary() —该函数首先提供一个filter,名为hybrid_primary_var,参数sidebar_id,如果传入false可以关闭侧边栏,该函数打印主侧边栏,并在此之前和之后分别触发一个action
- hybrid_get_secondary() —原理基本上和上一个相同,提供的filter名字为hybrid_secondary_var
- hybrid_insert() —提供一个同名filter,参数为要打印出来的内容,默认为false,这是专门给用户用来添加sidebar的hook
hook到hybrid_before_footer()的函数列表
hook到hybrid_footer()的函数列表
由hybrid_page_nav()触发的action
由hybrid_get_primary()和hybrid_get_secondary()和hybrid_get_subsidiary() 触发的action
- hybrid_before_primary() —action,默认没有被hook
- hybrid_after_primary() —action,默认没有被hook
- hybrid_before_secondary() —action,默认没有被hook
- hybrid_after_secondary() —action,默认没有被hook
- hybrid_before_subsidiary() —action,默认没有被hook
- hybrid_after_subsidiary() —action,默认没有被hook

谢谢鼓励。请教一个关于action的问题,应该跟这个帖子有关了。
按照你提供的页面流程图,footer(31-36),就是div#footer 包含的内容,位于container (13-29),也就是div#container之后。我想请教用什么add_action将footer添加到container之前(不是container里面的开始位置),用什么remove_action将footer从默认加载到末尾的状态改为不加载呢?
我自己尝试着移动了page_nav、cat_nav以及widget的位置,但是找不到footer和container的操作方法。
你的这些资料是哪里来的?莫非只有hybrid的付费用户才能看到?我在hybrid里可得到的资料少得可怜,support里基本上所有的有用信息只有付费用户才能看到。
footer一般都位于container的后面的,换了位置就不叫footer了。
我写在这里的资料是我读源代码的笔记。源代码之内没有秘密。
软件免费,代码免费,使用免费,但是需要提供额外服务,就要收费,这就是开源能用的盈利方式了吧……
Charles 你好!
我找到了一个笨一些但简单的实现方法,与你分享。
下面这个插件可以让你自定义输出的页面的链接的a元素的title:
http://www.stuffbysarah.net/wordpress-plugins/page-menu-editor/
我修改了一下其代码,改为为其增加一个class属性。
后面的工作就是比较麻烦点,自己要手动为每个页面链接添加class并修改CSS和配备图片了。但毕竟不需要我编写代码了。我试了,应该是兼容hybrid的主题框架的。
十分感谢你的帮助。
赞!!自己动手,丰衣足食~大家向这位同学学习~
收费可以呀,耽误您的时间,应该给予补偿。
我只是懂一点点编程知识,思路大概找到了,也看了您的代码,但是真正的问题是,具体编码实现对我很困难。
您有时间帮我编一个函数,实现我的想法吗?收费多少你先说说。
汗,难道我的表达能力真是如此差劲吗?
页面导航,就比如你的网站,当前这个页面,最上面不是有一行吗?
比如:Home、 Contact、 Archives、Down、 About
这个就是我说的页面的导航,列出的是页面。使用wp_list_pages可以调用页面列表(2.7中新增了wp_page_menu),并且会自动为每个列表元素([li])添加一个 class属性page_item,且会为当前页面动态增加一个class属性current_page_item。
比如我们现在不在about页面,那么输出的对应about页面的链接代码如下:
[li class="page_item page-item-5"]
[a title="About" href="http://sexywp.com/about"]
[span]About[/span]
[/a]
[/li]
我的想法是:
1、用about.gif这个图片来代替文字about表示的链接,如能够替换 [span]About[/span],替换为[img src=xxxx/about.gif]about[/img]。对于其他页面的链接,如用home.gif代替home的文字链接……
2、支持鼠标活动,默认是一个图片,鼠标移动上去激活(为hover状态时)换一张图片。由于IE6仅仅支持a元素的hover状态,所以需要为a元素添加一个class或者id属性,用CSS来实现这一点。
3、出于更多的需求,我想把这个导航涉及到的所有的元素如li、a、span以及我想增加的img都添加一个class或id属性。class或id的值要与页面的ID或者页面名对应起来,这样我手动添加CSS代码和图片时,用ID或者页面名来对应这些元素,就能实现不同的页面导航链接显示的是不同的图片了。
4、我想让这种功能稍微智能一点,即,如果我不手动添加CSS代码或图片的话,那么还是按照老样子继续输出现在的这种文字导航,主要是不用图片替换现在的文字。所以需要在输出我想要的图片的导航链接前,先判断一下是否某个图片存在。
5、我还想更智能一点,我只想对一级页面做这种修改,二级页面还想保持文字格式的链接。所以,输出前最好能判断一下是否是一级页面。
我大概看了以下wp_list_pages这个函数,上面关于about的代码是它的默认输出。我目前找到的解决办法就是在它输出后,用str_replace函数来替换相应的代码,这或许是比较笨蛋的一个办法。另外,我的PHP和WORDPRESS以及正则表达式的能力和经验都很差劲,即使是这样笨而浅显的方法,对我来说实现起来也很困难。
所以希望得到你的帮助。
更正一下,[img src=xxxx/about.gif]about[/img]写错了,应该是[img src=xxxx/about.gif][/img]。
给你添麻烦了。:)
呵呵,想不到你这么认真哈,我其实想说,你的表达还可以,症结在于太多,没重点,我一般看到这么长的问题,直接就吓跑了,明白吧?最好只有两行字,看上去亲切点。
你补充的这一条,img的语法仍旧是错误的,其实不需要关闭的,img不是成对的标签。
我不推荐你用img代替文字,为什么不用CSS背景图片?img有很多弊端,不想多解释,你可以自己google。
我的tab bar的html结构不是默认的,就是用你说的replace方法,硬是从默认的html中替换成现在这样的。我在今天放出了这个主题的源代码,你可以看看我是怎么替换的,使用同样的原理,你可以替换成任何你想要的格式。参见 http://code.google.com/p/verygoogle/source/browse/trunk/functions.php 第80行开始的一个函数。
不知道给你的帮助是否足够?不够的话,再进一步要收费咯~~
Charles 你好!有个问题看看您能不能帮上忙?
我想对页面导航做一些修改,主要目的是用图标代替页面的title文字做导航,并且用CSS做显示控制。
在循环输出全部页面名称和链接等元素建立导航过程中,在对每一个页面处理时:
1、判断主题下图标目录里是否有某个文件,如about.gif
2、如果没有,则输出文字导航,就像现在常见的页面的导航一样
3、如果有,则输出类似这样的代码:
[li class="page_item" id="mynav-about"][a href="#" class="mynav-about"][img src="icons_dir/about.gif"][/a][/li]
要实现这样的功能,需要去研究哪些函数?有没有参考的代码?
谢谢了。
我修改了hybrid/library/functions/hook-filters.php中的hybrid_page_nav(),修改的地方如下:
$nav = str_replace( ‘<div class=”‘, ‘<div id=”page-nav” class=”‘, $nav );
$nav = str_replace( ‘<a’,'<a id=”mypage-nav” class=”aaa”‘, $nav);//增加的一行代码
$nav = preg_replace( ‘//’, ”, $nav, 1 );
当然,还没达到目的,比如第二行增加的那行代码,如何才能用页面的英文名称或ID替换掉aaa呢?
当然,这应该是基础的PHP的问题,我这个不懂。
另外,直接改hybrid的函数也不太好,能不能在自定义的主题里实现这样的修改呢?
$nav = str_replace( ‘[div class="', '[div id="page-nav" class="', $nav );
$nav = str_replace( '[a','[a id="mypage-nav" class="aaa"', $nav);//增加代码
$nav = preg_replace( '/[ul]/’, ‘[ul class="menu sf-menu"]‘, $nav, 1 );
没有别的修改,只是插入了一行代码。因为你的留言功能过滤了HTML标签,我只好用[代替<了。
不好意思,我看不大懂你的问题……
刚在hybrid0.5看见你的评论,主要是博主那头像太个性了一眼就看到了熟悉的海贼王,我英文很烂,只会看领会个大概意思,要叫我写就完全没招了。
不知道伟大的独一无二的无比正确的博主试用0.5这个版本没
我现在用的Hybrid News 0.1这个主题,但是遇到几个小问题
1、在页面导航中怎么排除一些页面,由于hybrid不是直接用的wp_list_pages函数,搞的我很惆怅
2、我想通过函数加入“最新日志”到侧边栏,有什么好的办法么?
3、在error_log,发现都是同一个错误,能力有限无法解决,还望指点迷津
[23-Mar-2009 01:04:40] PHP Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in /home/frozens/public_html/wp-content/themes/hybrid/library/functions/dynamic-classes.php on line 166[23-Mar-2009 01:04:40] PHP Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in /home/frozens/public_html/wp-content/themes/hybrid/library/functions/dynamic-classes.php on line 172
[23-Mar-2009 01:04:40] PHP Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in /home/frozens/public_html/wp-content/themes/hybrid/library/functions/dynamic-classes.php on line 178
[23-Mar-2009 01:04:40] PHP Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in /home/frozens/public_html/wp-content/themes/hybrid/library/functions/dynamic-classes.php on line 184
[23-Mar-2009 01:04:40] PHP Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in /home/frozens/public_html/wp-content/themes/hybrid/library/functions/dynamic-classes.php on line 190
兄弟,说话不必这么谄媚……看着累。
第一个问题,我已经解决过一次了,写成插件了,不过没来得及发布。你先用个普通的版本吧。http://code.google.com/p/verygoogle/source/browse/trunk/functions.php把第一段代码写到你模板的functions.php里。
第二个问题呢,方法肯定是有的,但是我没现成的代码给你看。
第三个问题,我不知道原因啊。既然只是个warning,就别理睬它了。
能多放一点hybrid的使用技巧么?现在真的无从下手啊
我确实是打算介绍的,不过呢,真的需要动动脑子的,不太好说这个问题……
呃。。。看了这个文章基本上可以找到header定义函数的地方,但关键问题是还不会自己写,O(∩_∩)O哈哈~~~
什么时候讲到自己定义sidebar的代码!!
我不知道你为什么不喜欢用widget。你实在要改的话,把代码写在hybrid_get_primary()里面就可以了。
widget虽然是可以解决大部分的侧栏,但定制性却不怎么好。。
如果要通过widget来放入函数的话就要多安装插件。不想安装太多的插件了。。
嗯,确实,对于有能力自己写代码的同学来说,要费劲心神地去找widget,确实很劳神。我现在正在致力于开发我现在这个模板的Hybrid子主题,到时候我会放出来,给大家做个参考,你们看了我写的代码,就会明白,应该怎么去定制Hybrid了,希望能达到这样的效果。