在织梦CMS中,将缩略图和文章内容图片自动转化为带域名的绝对路径是一个常见的需求,特别是在PC端和手机端使用不同服务器的情况下,以下是实现这一功能的具体步骤和代码示例:
修改文件及添加代码
1、修改dede/article_add.php和dede/article_edit.php
打开dede/article_add.php和dede/article_edit.php文件。
搜索以下代码:if(preg_match("#j#", $flag)) $ismake = 1;
。
在该代码的上面加入以下代码:
“`php
if($litpic!=” && !checkstr($litpic,$cfg_basehost)){
$litpic=$cfg_basehost.$litpic;
}
“`
2、在include的一个PHP文件中添加函数checkstr
打开任意一个include目录下的PHP文件(例如customfields.func.php)。
添加以下代码:
“`php
function checkstr($str,$str1){
//判断是否包含$str1这个字符
$tmparray = explode($str1,$str);
if(count($tmparray)>1){
return true;
} else{
return false;
}
}
“`
3、修改includedialogselect_images_post.php
打开includedialogselect_images_post.php文件。
找到第108行左右的代码:$fileurl = $activepath.'/'.$filename;
。
将其改为:
“`php
$fileurl = $cfg_basehost.$activepath.’/’.$filename;
“`
4、修改/dede/inc/inc_archives_functions.php
打开/dede/inc/inc_archives_functions.php文件。
找到第436行左右的代码:
“`php
global $cuserLogin,$cfg_ddimg_width,$cfg_ddimg_height,$cfg_basedir,$ddcfg_image_dir,$cfg_addon_savetype;
“`
将其改为:
“`php
global $cfg_basehost,$cuserLogin,$cfg_ddimg_width,$cfg_ddimg_height,$cfg_basedir,$ddcfg_image_dir,$cfg_addon_savetype;
“`
找到第481行左右的代码:
“`php
if($isremote==1 && preg_match("#^http://#i", $picname))
“`
将其改为:
“`php
if(($isremote==1 && preg_match("#^http://#i", $picname)) && !checkstr($picname,$cfg_basehost))
“`
找到第502行左右的代码:
“`php
if(($litpic==’ddfirst’ && !preg_match("#^http://#i", $picname))
“`
将其改为:
“`php
if(($litpic==’ddfirst’ && !preg_match("#^http://#i", $picname)) || ($litpic==’ddfirst’ && checkstr($picname,$cfg_basehost)))
“`
在503行左右添加:
“`php
$oldpic = $cfg_basedir.$picname;
$picname = str_replace($cfg_basehost,”,$picname);
“`
FAQs
Q1: 为什么需要将缩略图和文章内容图片转换为带域名的绝对路径?
A1: 当PC端和手机端使用同一个数据库但不同的服务器时,如果不加绝对路径,其中一端的服务器可能无法显示图片,通过将图片路径转换为带域名的绝对路径,可以确保在不同服务器上的图片都能正确显示,从而提升用户体验。
Q2: 如何验证修改后的功能是否正常工作?
A2: 在完成上述修改后,可以通过在后台添加或编辑文章来测试功能是否正常,上传一张图片并查看其URL是否已转换为带域名的绝对路径,如果URL正确转换,则说明功能正常工作;否则,需检查代码修改是否正确,可以在PC端和手机端分别预览文章,确保图片在两端都能正常显示。
织梦CMS缩略图和文章内容图片自动转化为带域名的绝对路径
1. 背景介绍
在织梦CMS(Discuz! X系列)中,上传的图片默认情况下使用相对路径,当网站部署到不同服务器或域名时,图片路径可能无法正确显示,导致图片无法正常显示,为了解决这个问题,我们需要将图片路径转换为带域名的绝对路径。
2. 解决方法
2.1 使用织梦CMS内置函数
织梦CMS提供了一些内置函数,可以帮助我们将图片路径转换为绝对路径。
2.1.1 imgurl函数
<img src="{imgurl(image)}" alt="图片描述">
这里的{imgurl(image)}
会将图片的相对路径转换为绝对路径。
2.1.2 softimage函数
<img src="{softimage(image)}" alt="图片描述">
与imgurl
类似,softimage
函数也会将图片路径转换为绝对路径。
2.2 修改模板文件
如果需要批量处理所有图片路径,可以手动修改模板文件。
2.2.1 查找图片路径
在模板文件中搜索所有图片路径,通常是以<img src="
开头的标签。
2.2.2 替换图片路径
使用以下正则表达式查找并替换图片路径:
<img src="(.*?)" alt=".*?">
替换为:
<img src="http://www.yourdomain.com{$1}" alt="图片描述">
这里http://www.yourdomain.com
需要替换为你的实际域名。
2.3 使用插件或钩子
织梦CMS支持插件和钩子系统,可以通过编写自定义插件或钩子来自动转换图片路径。
2.3.1 编写插件
创建一个新的插件文件,例如auto_convert_images.php
,并在其中添加以下代码:
class auto_convert_images { function __construct() { // 添加钩子 $this>add_hook('template_parse_content', 'convert_images'); } function convert_images($content) { // 使用正则表达式查找图片路径 $content = preg_replace_callback('/<imgs+src="([^"]+)"/i', function($matches) { // 转换为绝对路径 return '<img src="http://www.yourdomain.com/' . $matches[1] . '"'; }, $content); return $content; } } // 实例化插件 $auto_convert_images = new auto_convert_images();
确保将http://www.yourdomain.com
替换为你的实际域名。
2.3.2 编写钩子
创建一个新的钩子文件,例如convert_images.php
,并在其中添加以下代码:
function convert_images($content) { // 使用正则表达式查找图片路径 $content = preg_replace_callback('/<imgs+src="([^"]+)"/i', function($matches) { // 转换为绝对路径 return '<img src="http://www.yourdomain.com/' . $matches[1] . '"'; }, $content); return $content; }
同样,确保将http://www.yourdomain.com
替换为你的实际域名。
3. 归纳
通过以上方法,你可以将织梦CMS中的缩略图和文章内容图片自动转换为带域名的绝对路径,确保图片在不同服务器或域名下都能正常显示。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1131855.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复