WPTheme Java JavaScript…Yeah~!

wordpress

Mar 18

有人喜欢把首页做成奇形怪状,不正常地显示新近文章,正如一个CMS。或者有人想专门做一个页面用来像首页那样显示新近文章的列表,如http://guitarbean.com/blog-updates,就不显示文章分类列表,而正如正常的博客首页那样显示最新文章。为了这个效果,这里有一个令人兴奋的解决方案

一个错误的方案:

1、把archive.php或index.php当成页面,在新建页面中把“Page Template”指向它。可惜这样做的结果等同与指向page.php,所建立的页面只会显示单个页面内容。

一些不错的解决方案(均需建立页面):

1、alexking.org的articles插件。有了这个插件,你可以显示一个漂亮的article list。这个列表有文章归类,但显示的不是全部文章,因为需要给文章添加一个额外的key=article和value=1。这不是正常的首页效果,算是半个site map吧。

2、使用Rob Marsh, SJRecent Posts 插件,类似的还有中文 WordPress 工具箱 。放一个recent post到某个页面中……之后的不说自明了吧,只是所显示的也只是文章标题而已。

3、wordpress.org.cn上找到的一个帖子 ,不过得把代码改改:

<?php
/*
Template Name: guid
*/
?>
<?php get_header(); ?>
<div id="content" class="widecolumn">
<?php $posts = get_posts( "numberposts=10" ); ?>
<?php if( $posts ) : ?>
<?php foreach( $posts as $post ) : setup_postdata( $post ); ?>
<div class="post">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<small><?php the_time('F jS, Y'); ?></small>
<div class="entry">
<?php the_content(); ?>
</div>
<p class="postmetadata">Posted in <?php the_category(', '); ?></p>
</div>
<?php endforeach; ?>
<?php endif; ?>
</div>
<?php get_footer(); ?>

这样再把页面指向它(guid)就可以了。不过经我测试发现,使用这个方法得到的文章不是以时间的新到旧排序的,而是以旧到新排序的,得到的列表很不合意。在codex.wordpress.org上查get_posts,说默认是以时间新到旧排序的,可是我再怎么添加修改参数也实现不了,可能因为我的本地机是wordpress 2.3.3吧。不管怎么说,这个方法离目标只有一步之遥,只要再改正时间排序问题和可以使用像pagebar这样能进行分页就成功了。

一个令人兴奋的解决方案——query_posts & The_Loop

这里,只要在合适地地方添加一句:<?php query_posts(”paged=$paged”); ?>

步骤:

1、拷贝一个index.php(或archieves.php)并改名为其它名,如list_post.php;

2、找到<?php while (have_posts()) : the_post(); ?>,在之前加这行 <?php query_posts(”paged=$paged”); ?>,如
<?php query_posts("paged=$paged"); ?>//取得posts
<?php while (have_posts()) : the_post(); ?>

3、在页面最顶部添加
<?php
/*
Template Name: List Posts
*/
?>

以把这个文件标识为List Posts。注意,这代码最好紧跟<?php get_header(); ?>,不要有空行,最好如:

<?php
/*
Template Name: List Posts
*/
?><?php get_header(); ?>

4、新建一个页面,如blog-updates,把Page Template指向它,什么内容也不用写,就OK了!

原理:为了能显示Wordpress的文章列表,最好的是使用The Loop ,在The Loop中就可以使用像the_title()啊,the_content()之类的Template_Tags和分页信息了。而在index.php和archves.php中,都有一个默认的全局魔术变量,这个魔术变量常常变器法地变化着自身:在首页中,是一个默认的最新文章列表,在存档中是当前分类或日期的文章列表,而在单个post或者page中就是单个文章了。而使用query_posts正好能更改这个魔术变量成为想要的。如query_posts(”paged=$paged”)就是把它变为当前页的文章列表。

参考文献:

[1]http://codex.wordpress.org/The_Loop

[2]http://codex.wordpress.org/User:JamesVL/query_posts

[3]http://codex.wordpress.org/Category:Template_Tags

[4]http://wordpress.org.cn/viewthread.php?tid=7143&page=1&fromuid=15469#pid33133

Aug 25

  主题标志:

style-theme

(more…)

Aug 22

  Update:已更正一处无关皮毛的JS小BUG,但也请点击下载最新的文件哦!
  主题标志:

style-theme

(more…)

Jun 12

  网友们提供了很多显示在Flickr上储存的图片的方法,如:”还我 Flickr! 拯救 Flickr 大行动“。

  让Flickr显示的最好方法是替换IP的方法,因为稳定。其替换的内容如下:

http://farm1.static.flickr.com/ 换为 http://68.142.232.116/

http://farm2.static.flickr.com/ 换为 http://69.147.123.56/

  其中为Wordpress而做的花儿写的脚本就用这个方法,实现方法是在输出时替换IP。这样做的好处是不影响原有的数据,等Flickr解禁时,只要把花儿写的脚本去掉就可以了,嘿嘿。

  但在yo2上可用不了,因为无法安装插件,而且无法把插件直接放到主题文件中。估计是Yo2对下面这个语句实行了禁令:

add_filter('the_content', 'filter');

  我在做Wordpress主题时总是Hack很多,因为原有的Wordpress template tag满足不了复杂的主题结构,所以用别名的方法写了实现花儿写的脚本同样功能的函数。但这样做就只能用于博客的页面显示了,没有能像花儿写的脚本那样全面。于是我就干脆写个JS,把Flickr的IMG地址全部换成相应的IP。代码如下:

<script type="text/javascript">
function filckr_ip_replace(){
 var _images_inblog=document.getElementsByTagName("img");
 var _Regex=["http://farm1.static.flickr.com/","http://farm2.static.flickr.com/"];
 var _RepIP=["http://68.142.232.116/","http://69.147.123.56/"];
 if(!_images_inblog.length) return;
  for(var i=0;i<_images_inblog.length; i++){
  for(var n=0;n<_Regex.length;n++){
  if(_images_inblog[i] && _images_inblog[i].src && _images_inblog[i].src.indexOf(_Regex[n])>-1)
  _images_inblog[i].src= _images_inblog[i].src.replace(_Regex[n],_RepIP[n]);
  }
 }
}
filckr_ip_replace();
</script>

  Yo2用户只要把上面的代码放在footer.php中相应的位置即可。如果在footer.php中还有其它如google分析等其它外接的脚本的话,那最好把上面代码放在最前面。

  我这个blog就是用这个方法显示Flickr图片的。

  Update:推荐使用花儿写的脚本

  yo2上还有很多有用的插件,总之想方法把代码放到最后(相对的靠后)就行了。

Update:已经可以把花儿写的脚本放在header.php中,最好是<body>标签前面。但我认为花儿写的脚本中没必要把the_excerpt()也应用上去,因为the_excerpt()生成的是纯文字的文摘的形式,也没有什么图片内容了。详看codex上的the_excerpt()说明。

  PS:太久没写JavaScript,有点生疏了。

Jun 07

  这是一个Wordpress Theme (version 1.5-? )。主题的名字:Basic2Col Modified released。顾名思义,就是从Basic2Col改过来的。改了什么呢?

  1. 为sidebar和内容之间加了一条从渐现开始到底部footer的分隔线,改变了链接和普通字体样式等以我个人喜好而作的外观;
  2. 对非主页的列表页,把列表改为原文输出。原来的列表使用the_excerpt()过滤,将文章处理成摘要的形式。但这个函数并不能有效地处理HTML,在某些内容下(如<br/>)会对HTML截取错误,现象是整个页面结构错位等;
  3. 在CSS上为适合中文显示做了一些小修小改,但并未作汉化;
  4. 未做结构上的大修改;
  5. 实际效果可能会与预览图有所区别;
  6. 可以直接上传到yo2中使用。

点击下载basic2col20_modified.zip (也可以从My Shares中找到下载)&yo2bryo2&Basic2Col Modified Screen shoot

点击下载basic2col20_modified.zip (也可以从My Shares中找到下载)

Have fun!

May 25

  写post slug(中文又称”文章缩略名”)几乎成了众多blog writer的良好习惯,关于此问题,可以到这里看看,在此不作论证。

  写post slug是件麻烦事,总让人不省心,更不省力。我喜欢写英文的post slug,但写的英文post slug与中文的标题不对应,更多时候像是用快译译出的。我也想用拼音写,但偶用的是五笔,所以拼音能力弱……真是件麻烦的事情呀- -!! 何不用五笔码来写?算吧。

  写post slug更是用离线博客编辑器的麻烦事,有人说写用英文为作标题,发布后post slug就成形了,然后修改标题为中文,post slug也不会改变。这样不好,有次我刚发上去,feedburner就抓过去了,不爽。

  写post slug,又想用离线编辑器?这里有个解决方法,问题是修改这些东西,不保险,也不能定说改就改的,特别是用BSP的人,而且这个方法使文章标题的文字有所局限了。

  写个post slug插件可以解决此问题,问问Google有没有。没有,但有这个讨论:http://groups.google.bs/group/WordPressCN/browse_thread/thread/b9226ef98c2e2a04

  写post slug就是为了文章的URL统一,其内容不太重要,所以我认为写个post slug插件把标题的中文转为汉语拼音这个方法不错。我昨天在注册域名的时候看到人家就做了一个,把我用中文写的地址转为汉语拼音,省了我不少事。

  但是没人写,我想去写,但不是现在。我想,如果是一位有威信的人写的话,BSP才可能会用的,但关键还是这个插件的实用性。这样的插件实用吗?有人去写吗?

May 19

  单列,浅蓝色基调,取名为SimpleLife Sky Dream

  此主题基于SimpleLife 1.1,我只是在CSS上对它进行改头换面,算是二次创作吧。

  点击下载SimpleLife Sky Dream

  这是在下第一次发布主题,希望原作者不会生气:)

  目前没有Demo可看,如果哪位用上了请告诉在下一声,好把Demo链到贵页面上。

simplelife-Sky-Dream

  点击下载SimpleLife Sky Dream