在Dedecms CMS的开发过程中,我们有时需要对图集中的每张图片单独输出并自定义样式。如果使用Dedecms CMS自带的`dede:productimagelist`标签调用,可能会遇到一定的难度。本文将详细介绍如何通过修改类文件来解决这个问题。
方法1:找到以下路径下的文件:
\\\\include\\\\taglib\\\\productimagelist.lib.php
在这个文件中,找到如下内容:

foreach($images as $row)
{
    // 中间省略...
}
    
将其修改为以下代码:

$GLOBALS['autoindex'] = 1;
foreach($images as $row)
{
    $row['autoindex'] = $GLOBALS['autoindex'];
    foreach($ctp->CTags as $tagid=>$ctag)
    {
        if($ctag->GetName()=='array')
        {
            $ctp->Assign($tagid,$row);
        }
        else
        {
            if(isset($row[$ctag->GetName()])){ $ctp->Assign($tagid,$row[$ctag->GetName()]); }
        }
    }
    $revalue .= $ctp->GetResult();
    $GLOBALS['autoindex']++;
}
    
完成上述修改后,在内容页图集标签中的调用方法如下:

{dede:productimagelist}
[field:array runphp=yes]
if(@me['autoindex'] == 1)
{
    @me = "{@me['autoindex']} –  \\n";
}
elseif(@me['autoindex'] == 2)
{
    @me = "

{@me['autoindex']} –

\\n"; } elseif(@me['autoindex'] == 3) { @me = "{@me['autoindex']} – \\n"; } else { @me = "
{@me['autoindex']} –
\\n"; } [/field:array] {/dede:productimagelist}
这种方法通过`array runphp`的方式,让第一张图片两边加``标签,第二张加`

`标签,第三张加``标签,第四张加`

`标签。
方法2:同样找到以下路径下的文件:
\\\\include\\\\taglib\\\\productimagelist.lib.php
在这个文件中,找到如下内容:

$GLOBALS['autoindex'] = 0;
    
在此代码下边添加如下代码:

$GLOBALS['autoindex']++;
    
接着,找到以下代码:

$revalue .= $ctp->GetResult();
    
在其下方加入如下代码:

$GLOBALS['autoindex']++;
    
此方法的原理与方法1相同,都是让`productimagelist.php`这个文件支持`autoindex`,然后通过判断`autoindex`的值分别调用。例如,当`autoindex`为0时调用第一张图,依次类推。写法不再赘述,喜欢研究的朋友可以分别验证这两种方法。 通过以上两种方法,我们可以更加灵活地对Dedecms图集进行自定义样式输出,从而满足不同的设计需求。