前段时间有人问我mo-twitter里面的相册页面怎么弄的,我说看主题说明,但是结果是比较繁琐,本来我考虑用短代码形式来实现,但是发现也比较繁琐,最后还是发现用页面模板来实现比较简单。
一般添加图片我们会通过WP的媒体库添加,这个模板就是针对这种方法添加后通过代码替换方法来实现。
由于相册的CSS原来都已经定义好了,所以这里只需要在原来的page模板基础上增加一段替换代码就好了。因为老莫不懂PHP,所以我直接用的插件曾经用过的preg_replace,代码如下:
<?php
function addgallery_replace ($content)
{
$pattern = “/<a(.*?)><img(.*?)title=(‘|\”)(.*?)(‘|\”)(.*?)src=(‘|\”)(.*?)(‘|\”)(.*?)><\/a>/i”;
$replacement = ‘<li><a$1><img$2 src=”$8″ title=”$4″ $10></a><span>$4</span></li>’;
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
add_filter(‘the_content’, ‘addgallery_replace’);
?>
function addgallery_replace ($content)
{
$pattern = “/<a(.*?)><img(.*?)title=(‘|\”)(.*?)(‘|\”)(.*?)src=(‘|\”)(.*?)(‘|\”)(.*?)><\/a>/i”;
$replacement = ‘<li><a$1><img$2 src=”$8″ title=”$4″ $10></a><span>$4</span></li>’;
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
add_filter(‘the_content’, ‘addgallery_replace’);
?>
在制作过程中发现有时WP会自动给添加一个<br/>,导致最后列表样式出错,于是老莫又加了一段替换代码,把自动添加的<br/>删除掉:
<?php
function addgallerybr_replace ($content)
{
$brpattern = “/<li><a(.*?)>(.*?)<\/a><span(.*?)>(.*?)<\/span><\/li><br \/>/i”;
$brreplacement = ‘<li><a$1>$2</a><span$3>$4</span></li>’;
$brcontent = preg_replace($brpattern, $brreplacement, $content);
return $brcontent;
}
add_filter(‘the_content’, ‘addgallerybr_replace’);
?>
function addgallerybr_replace ($content)
{
$brpattern = “/<li><a(.*?)>(.*?)<\/a><span(.*?)>(.*?)<\/span><\/li><br \/>/i”;
$brreplacement = ‘<li><a$1>$2</a><span$3>$4</span></li>’;
$brcontent = preg_replace($brpattern, $brreplacement, $content);
return $brcontent;
}
add_filter(‘the_content’, ‘addgallerybr_replace’);
?>
这样发表相册页面的时候直接选择这个模板就能自动生成相册内容页了。因为老莫水平有限,目前只能做到这样,应该有其他方法,待慢慢研究。
用法
直接通过后台媒体库将图片插入到文章,如果手动添加,注意好格式,可以如主题后台控制面板一样一行行添加,或者直接添加类似代码:<a href=”大图地址”><img title=”xzxm_life_diary030″ src=”http://t.mo1984.com/wp-content/uploads/2011/06/xzxm_life_diary030-150×150.jpg” alt=”" width=”150″ height=”150″ /></a>
相册内容页面模板gallery.php下载:
好作品,下去用用。谢谢啦!