# LcLinks **Repository Path**: lczld/LcLinks ## Basic Information - **Project Name**: LcLinks - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: https://www.lcbk.cn/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-10-13 - **Last Updated**: 2026-10-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: Typecho, 插件, 友情链接插件 ## README # LcLinks · Typecho 友情链接插件 > 开发者:就是老陈 | 主页: | 适用:Typecho release v1.3.0 一款干净、无上限、可高度定制的 Typecho 友情链接插件,支持独立数据表、函数与短代码两种输出方式、三种输出模式、拖拽排序、邮箱头像解析与自定义字段。 --- ## 一、功能特性 1. **独立数据表**:自建 `lclinks` / `lclinks_category` 两张表,表名带插件名前缀,避免与其他友链 / 导航类插件抢占通用表名,干净无上限地添加友链与分类。 2. **两种输出方式** - **函数方式**:在主题模板(侧边栏、页脚等位置)直接调用 ``。 - **HTML 标签 / 短代码方式**:在独立页面或文章编辑内容中写入 `[links]` 即可在前台渲染。 3. **三种输出模式**:文字友链 / 图片友链 / 图文混合。内置三套默认模板,并支持在插件配置中自定义每套模板。 4. **管理面板**:分类管理、拖拽排序、启用 / 离线 / 禁用,直观高效。 5. **失效检测(v1.0.1)**:一键「检测失效友链」自动探测可达性,把无法访问的友链标记为「离线」——**后台状态显示「离线」,前台变灰并标注「离线」**,恢复可访问后再次检测会自动还原为「启用」。 5. **邮箱头像解析** - 数字 **QQ 邮箱**:优先解析「无 QQ 号头像链接」(`q1.qlogo.cn/g?b=qq&nk=号码`),失败时自动回退「有 QQ 号链接」(`q2.qlogo.cn/headimg_dl?dst_uin=号码`)。 - 其他邮箱:解析 **Gravatar** 头像。 - 也可手动填写头像地址,留空时按邮箱自动解析。 6. **自定义字段**:可为每条友链增加任意键值字段,输出模板中用 `{field:键名}` 调用,方便个性扩展。 --- ## 二、安装 ### 方式一:下载 ZIP 安装(推荐,适合所有人) 1. **下载**:打开仓库首页 ,点右上角「**克隆/下载**」→「**下载 ZIP**」,得到 `LcLinks-master.zip`。 2. **解压**:解压后得到一个名为 `LcLinks-master` 的文件夹。 3. **改名(关键步骤,别跳过)**:把文件夹 `LcLinks-master` 重命名为 **`LcLinks`**。 > Typecho 是按 `usr/plugins/` 下的**目录名**识别插件的,目录名必须与插件名一致。忘记改名或改错,后台插件列表里就看不到本插件。 4. **上传**:将整个 `LcLinks` 文件夹上传到站点的 `usr/plugins/` 目录下(FTP、宝塔面板、服务器文件管理器均可),最终结构应为: ``` usr/plugins/LcLinks/ ├── Plugin.php ← 插件入口文件,必须有 ├── Action.php ├── admin/ ← 后台面板 ├── assets/ ← 前台样式与图标 └── README.md ``` > 路径自检:浏览器访问 `https://你的域名/usr/plugins/LcLinks/Plugin.php`,能看到 PHP 源码(或提示文本)即路径正确。 5. **启用**:登录 Typecho 后台 → **控制台 → 插件**,找到 **LcLinks 友情链接**,点「启用」。 6. **完成**:后台左侧菜单出现「**友链**」,进入即可添加友链。 ### 方式二:Git 克隆(适合有 git 环境的服务器) ```bash cd /path/to/typecho/usr/plugins git clone https://gitee.com/lczld/LcLinks.git ``` 克隆下来的目录名就是 `LcLinks`,**无需改名**;不想要 `.git` 目录可自行删除,不影响插件运行。其余步骤同方式一第 5 步。 ### 常见问题 - **插件列表里找不到 LcLinks** → 九成是目录名没改(方式一第 3 步),确认是 `usr/plugins/LcLinks/` 而不是 `usr/plugins/LcLinks-master/`。 - **启用报错 / 提示无法使用** → 本插件适配 **Typecho 1.3.0(命名空间版)**,不支持 1.1/1.2 旧版;PHP 需 7.2+。详见文末「适配说明」。 > 兼容 PHP 7.2+ 与 Typecho v1.3.0(数据库支持 MySQL / MariaDB,使用 utf8mb4 + InnoDB)。 --- ## 三、使用说明 ### 1. 添加友情链接 进入「友链 → 友链管理 → + 添加新链接」: - **名称 / 链接**:必填。 - **描述**:可选。 - **邮箱**:用于解析头像;数字 QQ 邮箱解析 QQ 头像,其他解析 Gravatar。 - **头像**:留空即按邮箱自动解析;也可手动填写图片地址。 - **上传头像**(v1.1.7 新增):选择本地图片直接上传,支持 JPG / PNG / GIF / WebP / ICO,不超过 1MB;**优先级高于**手动填写与邮箱解析。上传的文件存放在 `usr/uploads/lclinks/`(插件目录外,在线更新不会丢)。 - **RSS 地址**(v1.1.7 新增):该站的订阅地址,可留空;配 `{rss}` 模板占位符使用。 - **RSS 状态**(v1.1.7 新增):启用 / 禁用;禁用后前台不输出该地址。 - **分类**:选择一个已有分类,或在「或在此填写新分类名称」处直接输入,保存时自动创建。 - **状态**:启用(前台显示)/ 禁用(前台隐藏)。 - **自定义字段**:点击「+ 添加自定义字段」,填写「字段名 / 字段值」,用于个性扩展。 ### 2. 管理友情链接 - **编辑 / 删除**:在列表中点击对应操作(删除会弹窗确认)。 - **启用 / 禁用**:一键切换前台是否显示。 - **检测失效友链**:点「检测失效友链」按钮,插件会逐个探测友链可达性(每条上限 4 秒),把无法访问的标记为「离线」;原本离线的若恢复可访问,会自动还原为「启用」。友链较多时检测会耗时,请耐心等待。 - **离线(失效)友链**:状态为「离线」时,后台状态列显示「离线」,前台仍展示但会**变灰并标注「离线」**,方便保留记录又不误导访客。也可在编辑页手动把状态设为「离线」。 - **拖拽排序**:拖动每行左侧 `⠿` 手柄调整顺序,松手后自动保存。 - **分类管理**:切换到「分类管理」选项卡,可新建、编辑、删除分类(删除分类后,该分类下友链自动归为「未分类」)。 ### 3. 输出友情链接 #### 方式 A:函数方式(主题模板) 在主题模板文件(如 `friends.php`、侧边栏 `sidebar.php`、页脚等)需要显示友链的位置加入: ```php // 默认 mixed 模式,输出全部友链 // 文字友链 // 图片友链 // 仅输出分类 ID=2 的友链 {name}'); ?> // 临时自定义模板 ``` > `links()` 直接输出(echo);需要拿到 HTML 字符串再加工时,用 `Plugin::output()`。 类静态调用等价写法: ```php ``` > 插件通过 `index.php` 的 `begin` 钩子做早期引导,主题模板在任意位置调用 `links()` 都不会出现「函数未定义」。 #### 方式 B:HTML 标签 / 短代码方式(文章或独立页面内容) 在编辑器中直接写入: ``` [links] // 默认模式,全部友链 [links mode="image"] // 图片模式 [links cid="2"] // 指定分类 [links mode="text" cid="1"] // 文字模式 + 指定分类 ``` > **v1.0.4 起**:属性**顺序任意**、**单引号 / 无引号**都能识别, > `[links cid="2" mode="text"]`、`` [links cid='2'] ``、`[links cid=2]` 写法均有效。 > 另支持 `tpl="..."` 指定单条模板,例如 `[links cid="2" tpl="
  • {name}
  • "]`。 --- ## 四、输出模板与占位符 插件配置面板可分别编辑 `文字 / 图片 / 图文混合` 三套模板,支持以下占位符: | 占位符 | 含义 | | --- | --- | | `{name}` | 网站名称 | | `{url}` | 网站链接 | | `{description}` | 描述 | | `{email}` | 邮箱 | | `{avatar}` | 头像地址 | | `{avatar_onerror}` | 头像加载失败兜底属性(QQ 回退有号链接 / 其余隐藏) | | `{offline}` | 该友链为「离线」时输出「离线」徽标,正常时为空白(v1.0.1 新增) | | `{rss}` | 该站的 RSS 订阅地址;未填写或 RSS 状态为「禁用」时输出空串(v1.1.7 新增) | | `{field:键名}` | 自定义字段值 | 默认图文混合模板示例: ```html ``` --- ## 五、失效友链检测与代理设置 插件「友链 → 检测失效友链」会主动探测**每个未停用友链**的可达性,并重新核实其状态:能打开的自动恢复(取消离线标记),打不开的标记离线。后台会列出每条被标记离线的友链及**可读的离线原因**(超时 / DNS 失败 / 端口拒 / SSL 失败 / HTTP 5xx 等),并统计总数、新标记数、恢复数、仍离线数。刚离线的、几天前离线的、很久以前离线的,一律按当下真实情况重新判定。 若服务器装了代理软件(如本地正向 / 透明代理)或主机预设了 `http_proxy` / `https_proxy` 环境变量,探测会**默认被继承而改走代理**,而这类代理往往没配好,可能把明明能打开的站点整批误判成离线(典型表现:能打开也被标离线,且反复检测依旧离线)。 为此插件设置中新增「**检测失效友链时的网络代理**」: - `不使用代理(推荐)`:忽略系统代理,直连目标站点(默认)。 - `使用服务器系统代理`:仅当服务器**必须**走代理(如本地正向 / 透明代理)才能访问互联网时再选。 > 一般用户保持默认「不使用代理」即可,不要因为看到「离线」就去改这项——先确认目标站在你的服务器上是否真的能直接打开。 --- ## 六、卸载设置 插件配置中的「卸载设置」可选择: - **禁用时保留数据表**(默认,推荐):重新启用即可恢复数据。 - **禁用时删除数据表**:禁用将清空全部友链与分类数据,且不可恢复。 > 说明:删除时只会清理本插件自己的 `lclinks` / `lclinks_category` 表,不会碰任何其他数据表。 --- ## 七、目录结构 ``` LcLinks/ ├── Plugin.php # 主文件:建表、钩子、输出、头像解析、配置 ├── Action.php # AJAX:拖拽排序保存、邮箱头像解析 ├── admin/ │ ├── manage.php # 后台管理面板(列表/增删改/分类/自定义字段) │ └── assets/ │ ├── admin.css # 后台样式 │ └── admin.js # 拖拽排序、自定义字段增删、头像预览 ├── assets/ │ └── front.css # 前台默认样式(可被主题覆盖) └── README.md ``` --- ## 八、Typecho 1.3.0 适配说明 本插件按 **Typecho release v1.3.0(命名空间版)** 的 API 编写,与 1.1 / 1.2 旧版 API **不通用**。若在 1.3.0 上「启用了插件却无法使用」,通常是旧版写法导致。关键差异: | 项目 | 旧版(1.1/1.2) | 本插件(1.3.0) | | --- | --- | --- | | 命名空间 | 全局 `LcLinks_Plugin` | `namespace TypechoPlugin\LcLinks;` | | 插件接口 | `Typecho_Plugin_Interface` | `\Typecho\Plugin\PluginInterface` | | 配置方法 | `config(Typecho_Widget_Helper_Form $form)` | `config(\Typecho\Widget\Helper\Form $form): void` | | 后台菜单 | `Helper::addPanel(1, ...)`(索引 1 无效) | `Helper::addMenu('友链')` 取有效索引后再挂面板 | | AJAX 动作 | 普通 Widget | `Action extends \Widget\Base implements \Widget\ActionInterface` | | 响应对象 | `Helper::response()` | `new \Typecho\Widget\Response(Request::getInstance(), Response::getInstance())` | | 前台样式注入 | `return ''`(返回值被丢弃) | 在 `Widget\Archive::header` 钩子中直接 `echo` | | 主题函数 | `LcLinks()` | `\TypechoPlugin\LcLinks\links()` | 其他注意点: - `admin/manage.php` 需自行 `include 'header.php'` / `'menu.php'` / `'copyright.php'` 等后台框架文件。 - `admin/extending.php` 只做 `require_once`,面板文件路径要用 `dirname(__DIR__)` 定位插件根目录。 - 短代码输出会被 Typecho 的 `autoP` 包进 `

    `,插件已做拆包处理,输出为合法 HTML。 --- © 就是老陈 · https://www.lcbk.cn/