你是否经常看到一些大门户网站的漂亮的头条图片标题呢?就像下面人民网这个: 这标题就是图片做的,虽然我们可以直接用文字和css做,但有时我们需要要一些字体特效,可不是每个人的电脑都安装有这些字体的
dede怎么生成这样的标题呢?其实很简单的: 一、实现方法 1)标题图片字体定义 首先上传字体文件上传到include/data/fonts/下,并命名为 STXINGKA.TTF (字体下载),这个是用于生成标题图片的字体的。当然,你也可以自己定义更漂亮的字体,但字体必须命名为STXINGKA.TTF。 2)标题图片函数文件 打开include/extend.func.php (注意:本文件为自定义函数接口,如果你没有这个文件,请自己创建一个),在最后面的?>的前面以上开始插入以下代码:
class DeDeTitle { var $text = '暂无标题'; var $bg = '#F0F0F0'; var $color = '#30F'; var $width = 500; var $height = 50; var $size = 30; var $font; var $path; function __construct($t) { if($t) { $this->text = $t; } $this->font = DEDEINC.'/data/fonts/STXINGKA.TTF'; } function DeDeTitle($t) { $this->__construct($t); } function TextConv() { global $cfg_soft_lang; if($cfg_soft_lang!='utf-8') { return gb2utf8($this->text); } return $this->text; } function C($color,$rgb) { if(strlen($color)==4) { for($i=1;$i<4;$i++) { $str .= str_repeat($color[$i],2); } $color = '#'.$str; } switch($rgb) { case 'R': return hexdec(substr($color, 1, 2)); case 'B': return hexdec(substr($color, 3, 2)); case 'G': return hexdec(substr($color, 5, 2)); } } function Titlepath() { global $cfg_medias_dir; $name = GetPinyin($this->text).'.gif'; $path = $cfg_medias_dir.'/title/'; if(!is_dir($path)) { CreateDir($path); } return $path.$name; } function Show() { if(!file_exists(DEDEROOT.$this->Titlepath())) { $this->Make(); } global $cfg_cmsurl; return '<img src="'.$cfg_cmsurl.$this-/>Titlepath().'"/>'; } function Make() { $image = imagecreatetruecolor($this->width,$this->height); $bg = ImageColorAllocate($image,$this->C($this->bg,'R'),$this->C($this->bg,'B'),$this->C($this->bg,'G')); $color = ImageColorAllocate($image,$this->C($this->color,'R'),$this->C($this->color,'B'),$this->C($this->color,'G')); ImageFilledRectangle($image,0,0,$this->width,$this->height,$bg); imagettftext($image,$this->size, 0, $this->size/2, ($this->height+$this->size)/2, $color, $this->font,$this->TextConv()); imagegif($image,DEDEROOT.$this->Titlepath()); imagedestroy($image); } }
3)调用方法简单说明 实际上我们知道,在织梦(DedeCMS)系统中,处理底层字段,一般来说有两种方法:
1.function 2.runphp
这两种方法的知识不在本教程讲解的重点,大家可查阅相关资料了解! 我们这里的标题图片,运用的就是第二种runphp来处理的,调用方法为: 在arclist标签中:
[field:title runphp='yes'] $title = new DeDeTitle(@me);//使用DedeTile类 $title->bg = '#F0F0F0';//标题图片背静颜色 $title->color = '#30F';//标题图片字体颜色 $title->width = 350;//标题图片的宽度 $title->height = 50;//标题图片的高度 $title->size = 25;//标题图片的字体大小 @me=$title->Show();//显示图片 [/field:title]
如果在是内容页运用,只需要将[field:title/]换成 {dede:field.title/}即可,例如:
{dede:field.title runphp='yes'} $title = new DeDeTitle(@me);//使用DedeTile类 $title->bg = '#F0F0F0';//标题图片背静颜色 $title->color = '#30F';//标题图片字体颜色 $title->width = 350;//标题图片的宽度 $title->height = 50;//标题图片的高度 $title->size = 25;//标题图片的字体大小 @me=$title->Show();//显示图片 {/dede:field.title/}
二、效果预览 我们在后台的【模板】——[全局标记测试]中输入以下代码:
{dede:arclist row='1' typeid=''} <a href="[field:arcurl/]">[field:title runphp='yes'] $title = new DeDeTitle(@me); $title->bg = '#F0F0F0'; $title->color = '#30F'; $title->width = 350; $title->height = 50; $title->size = 25; @me=$title->Show(); [/field:title]</a> {/dede:arclist}
三、其它说明 这里的这个是一个现成的库,他不仅仅可以生成标题图片,也可以生成一些其它的内容。只要你会使用本函数中所介绍的几个参数即可。 本文转自:DEDECMS 再次对原作者贾金鹏表示感谢,来源:http://www.16blog.cn/dedecms-call-header-image.htm
其他方法来自DEDE论坛
1、直接用字体实现
http://bbs.dedecms.com/220350.html
[code]INDEX.HTM 文件的代码
</head>
<body class="index">
{dede:include filename="head.htm"/}
<!– /header –>
<div class="w960 center clear mt1">
<div class="pleft">
<div class="picnews">
<!–头条–>
<div class="onenews">
{dede:arclist titlelen=’40’ flag=’h’ limit=’0,1′ infolen=’230′}
<h2 align="center"><font size="6" face="黑体"><strong><a href="[field:arcurl/]">[field:title/]</a></strong></font></h2>
{/dede:arclist}
</div>
<!– /onenews –>
<!–/头条–>
</div> [/code]
2、和第一种方式差不多的,http://bbs.dedecms.com/read.php?tid=279978&keyword=%CD%B7%CC%F5