jiuhecai谈谈帝国cms7.2中,辛辛苦苦发了一大堆信息,各种原因没有设置标题图片。
需要把内容中的第一张图片设置为标题图片,使用帝国cms批量王,可以这样操作:
第一步,新建一个自定义页面模板,标题为---[批量王]提取内容图片到标题,内容如下:
if(!$r[titlepic]){ $newstext=stripslashes($r['newstext']); $pattern = '/<img(?=s).*?(?<=s)src="(.+?)"/i'; preg_match($pattern, $newstext, $matches); if($matches){ $r[titlepic]= $matches[1];//返回第一张图片地址 if(!strstr($r[titlepic],'://')){$r[titlepic]=$_SERVER[HTTP_ORIGIN].'/'.ltrim($r[titlepic],'/'); } } } $listtemp='titlepic';
第二步,打开批量王,选择出这模板,执行就可以了。如图所示:
附注:使用mysql语句完成本任务的方法
执行以下脚本的时候请 先备份数据库!文本存放的新闻正文字段不可用! 新闻正文字段作为主表的情况用以下语句: update phome_ecms_news set titlepic =concat(replace(SUBSTRING_INDEX(SUBSTRING_INDEX(newstext, 'src=', -1),'.gif',1),'"',''),'.gif') where newstext like '%.gif%' and titlepic=''; update phome_ecms_news set titlepic =concat(replace(SUBSTRING_INDEX(SUBSTRING_INDEX(newstext, 'src=', -1),'.jpg',1),'"',''),'.gif') where newstext like '%.jpg%' and titlepic=''; update phome_ecms_news set titlepic =concat(replace(SUBSTRING_INDEX(SUBSTRING_INDEX(newstext, 'src=', -1),'.png',1),'"',''),'.png') where newstext like '%.png%' and titlepic=''; 新闻正文字段作为副表的情况用以下语句: update [!db.pre!]ecms_news_data_1 a, [!db.pre!]ecms_news b set b.titlepic=concat(replace(SUBSTRING_INDEX(SUBSTRING_INDEX(a.newstext, 'src=', -1),'.gif',1),'"',''),'.gif') where a.newstext like '%.gif%' and b.titlepic='' and a.id=b.id; update [!db.pre!]ecms_news_data_1 a, [!db.pre!]ecms_news b set b.titlepic=concat(replace(SUBSTRING_INDEX(SUBSTRING_INDEX(a.newstext, 'src=', -1),'.jpg',1),'"',''),'.jpg') where a.newstext like '%.jpg%' and b.titlepic='' and a.id=b.id; update [!db.pre!]ecms_news_data_1 a, [!db.pre!]ecms_news b set b.titlepic=concat(replace(SUBSTRING_INDEX(SUBSTRING_INDEX(a.newstext, 'src=', -1),'.png',1),'"',''),'.png') where a.newstext like '%.png%' and b.titlepic='' and a.id=b.id;