在 PHPCMS 二次開發中,經常需要將現成的 JavaScript 幻燈片組件(如 Slide.js、Swiper 等)整合進模板。這類組件通常要求數據格式為「標題|圖片|鏈接」以「|」分隔的字符串,例如:
var titles = '標題1|標題2|標題3';
var imgs = '/path/img1.jpg|/path/img2.jpg|/path/img3.jpg';
var urls = 'https://a.com|https://b.com|https://c.com';
但 PHPCMS 標籤 {pc:content} 循環輸出的是數組結構,無法直接生成上述格式。本文提供一種通用的「模板標籤循環 + JS 字符串拼接」方案,無需修改核心代碼即可實現無縫對接。
<script type="text/javascript">
var title = new Array();
var img = new Array();
var url = new Array();
{pc:content action="position" posid="1" order="listorder DESC" thumb="1" num="5"}
{php $a = 1;}
{loop $data $r}
title[{$a}] = "{$r['title']}";
img[{$a}] = "{thumb($r['thumb'], 295, 225)}";
url[{$a}] = "{$r['url']}";
{php $a++;}
{/loop}
{/pc}
var files = "", links = "", texts = "";
for (var i = 1; i < img.length; i++) {
if (files === "") files = img[i];
else files += "|" + img[i];
}
for (var i = 1; i < url.length; i++) {
if (links === "") links = url[i];
else links += "|" + url[i];
}
for (var i = 1; i < title.length; i++) {
if (texts === "") texts = title[i];
else texts += "|" + title[i];
}
var titles = texts;
var imgs = files;
var urls = links;
// 此處可直接初始化幻燈片組件,如 new Slide({titles, imgs, urls});
</script>
| 現象 | 可能原因 | 解決方法 |
|---|---|---|
| imgs 為空 | 推薦位未勾選「縮略圖」或文章無圖 | 後台編輯推薦位開啟 thumb,文章上傳圖片 |
| 前端報 JS 語法錯誤 | 標題含單引號導致字符串截斷 | PHP 輸出前 addslashes($r['title']) 或改用 JSON 格式 |
| 圖片 404 | thumb 函數生成路徑與實際存儲不符 | 檢查 phpcms/libs/functions/global.func.php 中 thumb 函數配置 |
通過「PHPCMS 標籤循環 + JS 字符串拼接」的輕量級方案,可快速將任意 JavaScript 幻燈片組件接入 PHPCMS,無需修改核心代碼,適配性強、維護成本低。新專案建議採用 JSON 數據接口 + 前端框架(Vue/React)渲染,進一步提升開發體驗與性能。