PC版

dedecms生成图片形式的今日头条新闻

2013-10-15 11:22网站原创浏览:645次

现在很多新闻网站的首页都有今日头条新闻,一般都是采用图片的形式来体现,美观漂亮大方,图片文字样式多种多样,这完全是文字无法相比的,虽然文字可以控制大小和颜色,但是无法做到那么细致,和控制文字的字体,类似这样的效果:

因此我们这里修改dedecms的代码,让它根据我们的字体需求来生成类似今日头条新闻的图片样式,实现图片替代文字的头条新闻效果。

第一步:打开\include\extend.func.php文件,在最后一行加上一个PHP类,是用来控制图片样式的

  1. class DeDeTitle 
  2. { 
  3.     var $text = '网站头条'; 
  4.     var $bg = '#FFFFFF'; 
  5.     var $color = '#9c1000'; 
  6.     var $width = 860; 
  7.     var $height = 45; 
  8.     var $size = 35; 
  9.     var $font; 
  10.     var $path; 
  11.     function __csetruct($t) 
  12.     { 
  13.         if($t) 
  14.         { 
  15.             $this->text = $t; 
  16.         } 
  17.         $this->font = DEDEINC.'/data/fonts/STXINGKA.TTF';      
  18.     } 
  19.     function DeDeTitle($t) 
  20.     { 
  21.         $this->__csetruct($t); 
  22.     } 
  23.  
  24.     function TextConv() 
  25.     { 
  26.         global $cfg_soft_lang; 
  27.         if($cfg_soft_lang!='utf-8') 
  28.         { 
  29.             return gb2utf8($this->text); 
  30.         } 
  31.         return $this->text; 
  32.     } 
  33.     function C($color,$rgb) 
  34.     {    
  35.         if(strlen($color)==4) 
  36.         { 
  37.             for($i=1;$i<4;$i++) 
  38.             { 
  39.                 $str .= str_repeat($color[$i],2); 
  40.             } 
  41.             $color = '#'.$str; 
  42.         } 
  43.         switch($rgb) 
  44.         { 
  45.             case 'R':    return hexdec(substr($color, 1, 2)); 
  46.             case 'B':    return hexdec(substr($color, 3, 2)); 
  47.             case 'G':    return hexdec(substr($color, 5, 2)); 
  48.         } 
  49.     } 
  50.     function Titlepath() 
  51.     { 
  52.         global $cfg_medias_dir; 
  53.         $name = strtotime(date('y-m-d H:i:s')).'.gif'; 
  54.         $path = '/uploads/title/'; 
  55.         if(!is_dir($path)) 
  56.         { 
  57.             CreateDir($path); 
  58.         } 
  59.         return $path.$name; 
  60.     } 
  61.     function Show() 
  62.     { 
  63.         if(!file_exists(DEDEROOT.$this->Titlepath())) 
  64.         { 
  65.             $this->Make(); 
  66.         } 
  67.         global $cfg_cmsurl; 
  68.         return  '<img src="'.$cfg_cmsurl.$this->Titlepath().'" />'; 
  69.     } 
  70.     function Make() 
  71.     { 
  72.         $image = imagecreatetruecolor($this->width,$this->height); 
  73.         $bg = ImageColorAllocate($image,$this->C($this->bg,'R'),$this->C($this->bg,'B'),$this->C($this->bg,'G')); 
  74.         $color = ImageColorAllocate($image,$this->C($this->color,'R'),$this->C($this->color,'B'),$this->C($this->color,'G')); 
  75.         ImageFilledRectangle($image,0,0,$this->width,$this->height,$bg); 
  76.         imagettftext($image,$this->size, 0, $this->size/2, ($this->height+$this->size)/2, $color, $this->font,$this->TextConv()); 
  77.         imagegif($image,DEDEROOT.$this->Titlepath()); 
  78.         imagedestroy($image); 
  79.     } 
  80. } 
  81.  

注意,这里有两个地方需要注意

1 头条图片字体的设置,$this->font = DEDEINC.'/data/fonts/STXINGKA.TTF';您可以把需要的字体样式文件放到这个目录下,并且命名为STXINGKA.TTF,只要字体名字保持一致即可。

2 头条图片命名和保存路径

$name = strtotime(date('y-m-d H:i:s')).'.gif'; 以当前时间命名 

$path = '/uploads/title/';        保存路径在默认的/uploads/title/文件夹下面

第二步:修改模板,在需要生成图片标题的模板里插入以下代码

  1. {dede:arclist row='1' titlelen='40' flag='h'} 
  2. <a href="[field:arcurl/]" title="[field:title/]"> 
  3. [field:title runphp='yes'] 
  4. $title = new DeDeTitle(@me); 
  5. $title->bg = '#FFFFFF'; 
  6. $title->color = '#ef5c29'; 
  7. $title->width = 570; 
  8. $title->height = 35; 
  9. $title->size = 22; 
  10. @me=$title->Show(); 
  11. [/field:title] 
  12. </a> 
  13. {/dede:arclist} 

解释一下,这里就是控制生成图片的样式的各种参数,$title->bg 设置图片背景颜色,$title->color 设置图片文字的颜色,$title->width 这个很重要,这是设置头条图片的宽度,$title->height 这个是设置头条图片的高度,$title->size 这个明显就是设置头条图片的字体大小了,只要严格设置这几个不同的参数就能显示你所需求的头条图片样式,上面增加的PHP类文件里的各种参数只是个默认的参数无需修改,只要模板里修改了就不影响。

这样生成后是不是感觉头条的图片样式更加好看了。

头条图片案例下载

【免责声明】 本站所有文章内容均为网络采集或手工转载稿件,如相关图片、字体、音频、视频等内容侵犯您的版权或著作权,请及时与本站联系删除稿件。联系方式:service@wxqj.net
版权所有 全景站长网