这标题就是图片做的,虽然我们可以直接用文字和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)系统中,处理底层字段,一般来说有两种方法:
- function
- 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}