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;
|