首先,我们需要明确的是,DEDE的LOOP标签虽然强大,但并不直接支持嵌套标签的动态解析。因此,要实现动态查询和输出,需要结合PHP代码或自定义函数来完成。以下是具体步骤:
{dede:field name='zhuyan' runphp='yes'}
$actors = explode(',', @me); // 将主演字段按逗号分割成数组
$result = '';
foreach ($actors as $actor) {
$actor = trim($actor); // 去除空格
if (!empty($actor)) {
// 查询该演员主演的其他影片
$sql = "SELECT title FROM `dede_addondianying`, `dede_dianying`
WHERE dede_addondianying.aid=dede_dianying.ID
AND dede_addondianying.zhuyan LIKE '%{$actor}%'";
$dsql = new DedeSql(false);
$dsql->SetQuery($sql);
$dsql->Execute();
$movies = [];
while ($row = $dsql->GetArray()) {
$movies[] = $row['title'];
}
$result .= "{$actor}:".implode(' ', $movies)."
";
}
}
@me = $result; // 输出结果
{/dede:field}
上述代码实现了以下功能: 1. 使用`runphp='yes'`属性,允许在DEDE标签中执行PHP代码。 2. 将`{dede:field name='zhuyan'/}`字段按逗号分割为数组。 3. 遍历每个演员名称,构造SQL查询语句,获取该演员主演的其他影片。 4. 将查询结果以“演员名:影片1 影片2”的格式输出。
接下来,我们来看一个具体的例子。假设当前页面是影片介绍页面`mov.html`,页面内容如下:
影片名称:红番区 {dede:field name='title'/}
主演:{dede:field name='zhuyan'/}
如果`{dede:field name='zhuyan'/}`字段值为“成龙,林青霞”,那么经过上述代码处理后,输出结果将是:
成龙:红番区 片名 片名
林青霞:片名 片名
需要注意的是,此方法依赖于DEDE的数据库结构。确保你的数据库表名和字段名与示例代码一致,否则需要根据实际情况调整SQL语句。
此外,为了提升用户体验,可以为主演和地区添加超链接,指向专门的搜索页面。例如:
这样,用户点击链接后可以直接进入搜索结果页面,查看该演员或地区相关的所有影片。
总结来说,通过结合DEDE的`runphp`属性和SQL查询,我们可以轻松实现模型数据之间的互相调用,满足复杂的展示需求。这种方法不仅适用于电影模型,还可以扩展到其他类型的网站内容管理中。