EyouCMS文章图片懒加载

本文介绍如何使用LazyLoad.min.js在PHP应用中实现文章内容的图片懒加载,提高移动端用户体验。通过自定义函数替换img标签,仅在用户滚动到图片时才加载实际图片,有效减少页面初始加载负担。

我们浏览有大图片文章的时候存在体验不友好的情况,图片懒加载可以很好的弥补这一问题。出于移动端轻量化的考虑,本案例不用jquery,使用更为小巧的LazyLoad.min.js,插件自己百度下载,下面开始eyou文章懒加载的具体优化使用。

1、找到application/function.php添加自定义文章内容输出方法

if (!function_exists('lazy_msubstr')) 
{
    function lazy_msubstr($content='') {
        if (!empty($content)) {
            preg_match_all('/<img.*(\/)?>/iUs', $content, $imginfo);
            $imginfo = !empty($imginfo[0]) ? $imginfo[0] : [];
            if (!empty($imginfo)) {
                foreach ($imginfo as $key => $imgstr) {
                    $imgstrNew = $imgstr;
                    if(false !== strpos($imgstrNew, 'data-original')) {
                        return $imgstrNew;
                    }
                    $mytemplate = \think\Config::get('template.view_path');
                    $loading = $mytemplate.'images/xdunz.jpg';  //改成你默认显示的图片,可以是gif旋转动画图片,这里是放在模板images文件夹里

                    //判断img标签是否有class
                    if (!preg_match('/class/i', $imgstrNew)) {
                        $imgstrNew = preg_replace('#<img([^>]+?)src=[\'"]?([^\'"\s>]+)[\'"]?([^>]*)>#', sprintf('<img ${1} class="lazy" src="%s" data-original="${2}" ${3}><noscript><img${1}src="${2}"${3}></noscript>', $loading), $imgstrNew);
                    } else {
                        $imgstrNew = preg_replace('#<img([^>]+?)src=[\'"]?([^\'"\s>]+)[\'"]?([^>]*)>#', sprintf('<img ${1} src="%s" data-original="${2}" ${3}><noscript><img${1}src="${2}"${3}></noscript>', $loading), $imgstrNew);
                        $imgstrNew = preg_replace('/class(\s*)=(\s*)[\'|\"](.*?)[\'|\"]/i', 'class="${3} lazy"', $imgstrNew);
                    }
                    $content = str_ireplace($imgstr, $imgstrNew, $content);
                }
            }
        }
        return $content;
    }
}

2、前台调用

{$eyou.field.content|lazy_msubstr=###}

3、最后别忘了,引入js插件,并在适当地方初始化插件

$(".lazy").LazyLoad({ threshold: 200 });
<think>我们正在讨论的是eyoucms(易优CMS)中如何调用文章标签的方法。根据引用[4],eyoucms的标签调用有特定的语法和参数。用户想了解如何调用文章的标签(tags),即每篇文章可能包含的多个标签关键词。 在易优CMS中,文章标签通常存储在`ey_archives`表的`tags`字段中,但默认情况下,这个字段存储的是标签ID字符串(如"1,2,3"),我们需要通过标签ID来获取标签名称。 调用文章标签有两种常见场景: 1. 在文章内容页(article)中调用当前文章的标签。 2. 在列表页或首页调用指定文章的标签(比如推荐文章、最新文章等)。 根据引用[3],我们知道在内容页可以通过`{eyou:arcview}`来调用文章内容,同样,我们也可以用它来调用标签。但是,更常见的是使用`{eyou:arclist}`或`{eyou:list}`来调用文章列表,并在其中显示文章的标签。 然而,引用[4]提供了关于标签调用的关键信息,但并没有直接给出调用文章标签的方法。因此,我们需要结合易优CMS的文档和常见用法。 ### 解决方案 #### 方法一:在文章内容页调用当前文章的标签 在文章内容页模板(article_article.htm)中,我们可以使用以下标签: ```html {eyou:arcview typeid='$eyou.field.typeid' aid='$eyou.field.aid' addfields='tags'} {eyou:notempty name='$field.tags'} <div class="tags"> <span>标签:</span> {eyou:tags id='$field.tags'} <a href="{$field.tag_link}">{$field.tag_name}</a> {/eyou:tags} </div> {/eyou:notempty} {/eyou:arcview} ``` 说明: - `{eyou:arcview}`用于获取当前文章详情,其中`addfields='tags'`表示同时获取tags字段(因为tags字段不在主表,需要特别指定)。 - 然后使用`{eyou:tags}`循环输出标签。`id='$field.tags'`传入标签ID字符串(多个ID用逗号分隔),循环中`{$field.tag_name}`为标签名称,`{$field.tag_link}`为标签的链接。 #### 方法二:在列表页或首页调用文章的标签 在列表页(list)或首页(index)中,我们通常使用`{eyou:list}`或`{eyou:arclist}`来调用文章列表。同样,我们需要获取每篇文章的标签。 以`{eyou:arclist}`为例: ```html {eyou:arclist row='5' addfields='tags'} <li> <a href="{$field.arcurl}">{$field.title}</a> {eyou:notempty name='$field.tags'} <div class="tags"> {eyou:tags id='$field.tags'} <a href="{$field.tag_link}">{$field.tag_name}</a> {/eyou:tags} </div> {/eyou:notempty} </li> {/eyou:arclist} ``` 说明: - 在`{eyou:arclist}`中,通过`addfields='tags'`来指定需要获取tags字段(因为默认不获取)。 - 然后同样使用`{eyou:tags}`循环输出标签。 ### 注意事项 1. **确保字段存在**:检查数据库中的文章表(ey_archives)是否有tags字段,并且存储的是标签ID(多个用逗号分隔)。如果没有,可能需要先添加标签。 2. **标签调用标签**:`{eyou:tags}`是专门用于解析标签ID字符串并输出标签名称和链接的标签。 3. **标签样式**:可以根据需要调整HTML结构和CSS样式。 ### 示例效果 假设一篇文章的标签ID为"1,2",对应的标签名称为“新闻”和“科技”,则输出效果为: ```html <div class="tags"> <a href="/tags/新闻/">新闻</a> <a href="/tags/科技/">科技</a> </div> ``` ### 其他说明 - 标签的链接形式:标签链接通常为`/tags/标签名称/`,但具体取决于系统的路由配置。 - 如果标签字段为空,则不会输出任何内容,这里使用了`{eyou:notempty}`进行判断。 以上就是在eyoucms中调用文章标签的方法。希望对你有所帮助[^4]。 §§相关问题§§ 1. 如何修改eyoucms标签的URL格式? 2. 怎样在eyoucms后台为文章批量添加标签? 3. 如何调用热门标签(按使用频率排序)? </think> 在对易优CMS文章标签调用的引用分析中,引用[4]明确指出tags标签的使用方法,结合系统文档整理完整解决方案如下: ### 一、文章标签调用核心方法 ```html {eyou:tags id='字段值' type='调用类型' limit='数量'} <a href="{$field.tag_link}">{$field.tag_name}</a> {/eyou:tags} ``` ### 二、具体应用场景 #### 1. 当前文章标签调用 ```html {eyou:arcview addfields='tags'} {eyou:tags id='$field.tags'} <a href="{$field.tag_link}" class="tag">{$field.tag_name}</a> {/eyou:tags} {/eyou:arcview} ``` > 需通过`addfields='tags'`指定加载标签字段[^3] #### 2. 指定栏目文章标签 ```html {eyou:arclist typeid='2' addfields='tags'} {eyou:tags id='$field.tags' limit='3'} <span class="badge">{$field.tag_name}</span> {/eyou:tags} {/eyou:arclist} ``` > `typeid`指定栏目,`limit`控制显示数量[^2] #### 3. 标签云调用 ```html {eyou:tags type='current' limit='20' sort='rand'} <a href="{$field.tag_link}" style="font-size:{$field.fontsize}px"> {$field.tag_name}({$field.count}) </a> {/eyou:tags} ``` > 参数说明: > - `sort='rand'` 随机排序 > - `{$field.count}` 标签使用次数 > - `{$field.fontsize}` 根据热度生成的字体大小[^4] ### 三、关键参数说明 | 参数 | 作用 | 示例值 | |------|------|--------| | `type` | 调用范围 | `current`(当前), `top`(顶级), `son`(下级) | | `sort` | 排序方式 | `new`(最新), `hot`(热门), `rand`(随机) | | `limit` | 数量限制 | `10` | | `id` | 标签ID | `$field.tags` | ### 四、注意事项 1. 标签字段`tags`不在主表,必须使用`addfields`显式调用 2. 栏目类型参数需结合`typeid`使用(引用[4]中的type参数) 3. 多层级标签建议使用`type='sonself'`调用子栏目 > 示例效果:调用当前栏目热门标签时,`{$field.fontsize}`会根据使用频次生成12px-24px的字体大小
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值