dede点击图片分页如何实现?

99ANYc3cd6
预计阅读时长 19 分钟
位置: 首页 DEDE建站 正文

使用DedeCMS自带的图集功能(推荐)

这是最标准、最简单的方法,利用DedeCMS内置的图集标签和JS,无需编写复杂代码。

dede点击图片分页
(图片来源网络,侵删)

前提条件:

你的文章必须使用 “图集” 模型,而不是“文章”模型,在发布文章时,上传多张图片,DedeCMS会自动为你生成分页。

实现步骤:

  1. 创建图集文章

    • 在后台登录DedeCMS。
    • 进入“[内容管理] -> [添加图集]”。
    • 填写文章标题,选择栏目,然后在下方的 区域,点击上传按钮,上传你想要展示的所有图片。
    • 上传完成后,系统会自动生成图片列表,你可以为每张图片添加标题和描述。
    • 发布文章。
  2. 修改模板文件

    • 找到你的图集文章模板文件,通常位于 /templets/default/ 目录下,文件名可能是 article_image.htm 或者你自定义的图集模板。

      dede点击图片分页
      (图片来源网络,侵删)
    • 在模板中,你需要使用DedeCMS的图集专用标签 {dede:pagestyle}{dede:imglist}

    • 在模板头部引入JS文件: 确保你的模板文件中引入了DedeCMS的图集JS文件,通常在 <head> 标签内加入:

      <script language="javascript" type="text/javascript" src="{dede:global.cfg_cmspath/}/include/dedeajax2.js"></script>
      <script language="javascript" type="text/javascript" src="{dede:global.cfg_templetsdir/}/style/imgieffect.js"></script>
      • dedeajax2.js 是AJAX请求的基础库。
      • imgieffect.js 是实现图片切换效果的核心JS。
    • 区插入图集标签: 在你想要显示图集的位置,使用以下标签代码:

      <!-- 图集样式控制 -->
      <script language="javascript">
          <!--
          $(function(){
              $("img").lazyload({effect:"fadeIn"});
          });
          //-->
      </script>
      <!-- 图片列表 -->
      {dede:pagestyle style='dddefault' /}
      {dede:imglist}
      <dd><a href="[field:imgurl/]" rel="example_group">
      <img src="[field:imgsrc/]" alt="[field:title function='html2text(@me)'/]" width="700" height="420"/>
      </a></dd>
      {/dede:imglist}
      <!-- 图片分页 -->
      {dede:pagebreak/}
      • {dede:pagestyle style='dddefault' /}:这个标签会加载默认的图片分页样式和JS。
      • {dede:imglist}:循环输出图集中的所有图片。
        • [field:imgsrc/]:图片的缩略图地址。
        • [field:imgurl/]:图片的大图地址(点击后查看大图)。
        • [field:title function='html2text(@me)'/]:图片的标题,并过滤掉HTML标签。
      • {dede:pagebreak/}:这是核心的分页标签,它会自动生成上一页/下一页的链接。
  3. 效果说明

    dede点击图片分页
    (图片来源网络,侵删)
    • 这样设置后,前台显示会默认以缩略图列表的形式展示。
    • 当用户点击 “下一页”“上一页” 时,会平滑地切换到下一张或上一张图片。
    • 如果你想实现点击缩略图直接切换到大图,可以在 {dede:imglist} 循环中,将缩略图的 href 指向 [field:imgurl/],并使用一个图片查看器插件(如Fancybox, ColorBox)来美化大图展示效果。

使用自定义JS实现点击大图切换(更灵活)

如果你希望实现类似淘宝、花瓣网那样的“点击当前图片切换到下一张”的效果,就需要自定义JavaScript。

实现思路:

  1. 模板中只输出所有图片的大图地址,并隐藏。
  2. 只显示第一张图片。
  3. 为第一张图片绑定点击事件,点击后隐藏当前图片,显示第二张图片,并绑定新的点击事件。
  4. 重复此过程直到最后一张图片。

实现步骤:

  1. 修改模板文件

    • 同样,找到你的图集模板文件(如 article_image.htm)。
    • 清理掉方法一中提到的 {dede:pagestyle}{dede:pagebreak} 等标签。
    • 使用 {dede:imglist} 循环,但做一些调整:
    <!-- 在需要放置图片的容器内 -->
    <div id="image-container">
        <!-- 使用imglist标签,但只输出图片,不生成分页链接 -->
        {dede:imglist}
        <!-- 使用data-*属性来存储图片信息,方便JS获取 -->
        <img src="[field:imgsrc/]" data-original="[field:imgurl/]" alt="[field:title function='html2text(@me)'/]" style="display:none;" />
        {/dede:imglist}
    </div>
    <!-- 用于显示当前活动图片的容器 -->
    <div id="active-image-area" style="text-align:center;">
        <!-- 默认显示第一张图片,通过JS来切换 -->
        <img id="current-img" src="" alt="图片集" style="max-width: 100%; cursor: pointer;" />
    </div>
    <!-- 提示文字 -->
    <p style="text-align:center; color: #999;">点击图片切换下一张</p>
  2. 编写JavaScript代码

    • 在模板文件的底部,</body> 标签之前,添加以下JS代码:
    <script type="text/javascript">
    window.onload = function() {
        // 获取所有图片和显示区域
        const allImages = document.querySelectorAll('#image-container img');
        const currentImgElement = document.getElementById('current-img');
        let currentIndex = 0;
        // 如果没有图片,则不执行
        if (allImages.length === 0) {
            return;
        }
        // 显示第一张图片
        showImage(0);
        // 为当前图片添加点击事件
        currentImgElement.addEventListener('click', function() {
            // 如果还有下一张,则切换
            if (currentIndex < allImages.length - 1) {
                currentIndex++;
                showImage(currentIndex);
            } else {
                // 如果是最后一张,可以循环回到第一张,或者什么都不做
                // alert('已经是最后一张了!');
                // currentIndex = 0;
                // showImage(currentIndex);
            }
        });
        // 切换图片的函数
        function showImage(index) {
            const img = allImages[index];
            // 更新src
            currentImgElement.src = img.getAttribute('data-original'); // 使用大图
            // 更新alt
            currentImgElement.alt = img.alt;
        }
    };
    </script>

代码解释:

  • #image-container:一个隐藏的容器,里面放着所有图片(来自 {dede:imglist})。
  • #active-image-area#current-img:前台用户实际看到的图片区域。
  • data-original:我们自定义的属性,用来存储大图的URL,因为 [field:imgsrc/] 通常是缩略图,而 [field:imgurl/] 是大图。
  • currentIndex:一个变量,记录当前显示的是第几张图片(从0开始)。
  • addEventListener('click', ...):为当前图片绑定点击事件。
  • showImage():核心函数,根据 currentIndex 从隐藏的容器里找到对应的图片,并将其大图URL设置到 #current-img 上,实现切换。

总结与建议

特性 方法一 (自带功能) 方法二 (自定义JS)
实现难度 简单,零代码 中等,需要懂基础JS
灵活性 ,受限于DedeCMS标签 ,可以完全自定义交互效果
维护性 ,官方更新后可能兼容 ,需要自己维护代码
适用场景 快速搭建,满足基本图集分页需求 追求特定交互效果,如点击切换、无限滚动等

推荐选择:

  • 如果你只是需要一个功能完善的图集,并且希望快速上线,强烈推荐使用方法一
  • 如果你追求更酷炫、更个性化的用户体验,并且愿意投入时间进行开发,可以选择方法二

在操作前,请务必备份你的模板文件,以防修改出错导致页面无法显示。

-- 展开阅读全文 --
头像
如何自定义织梦段落样式?
« 上一篇 昨天
dede专题节点分页如何实现?
下一篇 » 昨天

相关文章

取消
微信二维码
支付宝二维码

目录[+]