89 lines
3.7 KiB
JavaScript
89 lines
3.7 KiB
JavaScript
import Image from "next/image";
|
||
import Link from "next/link";
|
||
|
||
/**
|
||
* 列表页模板组件
|
||
* @param {Object[]} items - 列表数据,需包含 title, image, content, slug 字段
|
||
* @param {string} basePath - 详情页基础路径
|
||
* @param {number} columns - 每行显示的列数,默认4
|
||
*/
|
||
export default function ListPageTemplate({ items, basePath = "", columns = 4 }) {
|
||
// 静态映射,避免 Tailwind JIT 无法识别动态类名
|
||
const colClass = {
|
||
1: "lg:grid-cols-1",
|
||
2: "lg:grid-cols-2",
|
||
3: "lg:grid-cols-3",
|
||
4: "lg:grid-cols-4",
|
||
5: "lg:grid-cols-5",
|
||
6: "lg:grid-cols-6",
|
||
}[columns] || "lg:grid-cols-4";
|
||
|
||
// 摘要函数,兼容中英文
|
||
function getSummary(text, maxLen = 58) {
|
||
if (!text) return "";
|
||
if (/[ |