在安装完Typecho之后,第一件事应该就是想着如何去折腾了。对于个人博客而言,不希望自己辛辛苦苦写的文章,被别人转载或无脑采集,还不留原地址,所以就需要在文章的末尾地方放上一个版权声明,来提醒下转载者和无脑采集的人,也为网站增加一个流量渠道。为文章增加一个版权声明,实现的渠道有三种,手动添加,使用插件,修改主题文件(免插件)。

1.手动添加版权声明

手动添加版权声明指的是在每篇文章的末尾部分或者中间人为的主动的添加版权声明,如:

> **本文作者**:季春二九
> **本文链接**:Typecho 免插件实现版权声明 - https://blog.jichun29.cn/435.html
> **版权声明**:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 季春二九 所有,未经允许不得转载!

实现效果:

本文作者:季春二九
本文链接:Typecho 免插件实现版权声明 - https://blog.jichun29.cn/435.html
版权声明:如无特别声明,本文即为原创文章,仅代表个人观点,版权归 季春二九 所有,未经允许不得转载!

优缺点:

手动添加的好处是随时随地都可以添加,并且完全自动化,坏处就是需要手动进行添加,难免会有遗漏的时候,显得略有麻烦。

2.插件

Copyright for Typecho
Yves X 写过一个插件 Copyright for Typecho,这是一个 Typecho 插件,通过自定义字段功能灵活的在文章或独立页面尾部显示版权小尾巴,就像这样:

版权属于:Yves X
原文链接: https://github.com/Yves-X/Copyright-for-Typecho
转载时须注明出处及本声明

安装与使用

下载安装插件:下载插件,将文件解压到 Typecho 根目录 /usr/plugins下,并将目录重命名为 Copyright
启用:登入 Typecho 后台,控制台 - 插件 - 启用
设置:在插件管理中看到的设置项为全局设置,你也可以通过自定义字段,对单个文章/独立页面进行特定设置。当然,特定设置的优先级始终高于全局设置。

更加详细的设置见 Github 主页。

下载地址

插件下载:点此下载

优缺点

使用插件的方式的优点是使用方便,可以自定义;缺点是只能显示的文章末尾,插件过多可能会影响页面加载速度。

3.免插件实现

其实,我们完全可以不用插件,通过在主题文件里加上一段代码就可以实现版权小尾巴。

定位

首先,我们要定位到需要修改的文件,Typecho 主题文件的 post.phppage.php分别对应文章模板和页面模板,所以根据需要决定改哪一个文件或者都改,我的建议是只在文章里添加版权小尾巴,即只修改 post.php

其次,我们要定位到需要修改的位置:文章输出的末尾,即在 Content 输出之后,一般放在 </article> 之前即可。在 Handsome 主题里,是在 Content::postContent 之后,其他主题模板也是类似

代码与实现

最后,奉上代码:

    <blockquote>
<strong>本文作者:</strong><a target="_blank" href="https://www.jichun29.cn">季春二九</a>
<br><br>
<strong>本文链接:</strong><a target="_blank" href="<?php $this->permalink() ?>"><?php $this->title() ?> - <?php $this->permalink() ?></a>
<br><br>
<strong>版权声明:</strong>如无特别声明,本文即为原创文章,仅代表个人观点,版权归 <a href="<?php $this->options->siteUrl(); ?>" target="_blank"><?$this->options->title();?></a> 所有,未经允许不得转载!
</blockquote>

效果见本文最后,其中几个关键参数是:<?php $this->permalink() ?></a> 输出文章永久链接;<?php $this->title() ?> 输出文章标题,其他的格式以及参数都可以自定义。

优缺点

这种实现的版权声明的方式简单粗暴,基本上是被写死的,灵活性相对差一些,只能在文章开头或末尾展现。当然,也可以通过自定义字段的形式对每篇文章的版权声明内容进行设置,这里就不过多展开,有需要的可以自行尝试。

Typecho实现版权声明的三种方式的更多相关文章

  1. JavaScript声明全局变量三种方式的异同

    JavaScript中声明变量很简单var(关键字)+变量名(标识符). 方式1 1 2 var test; var test = 5; 需注意的是该句不能包含在function内,否则是局部变量.这 ...

  2. js函数声明的三种方式

    1.直接声明 function box(num1,num2){ return num1+num2;}alert(box(1,2)); 2.使用变量初始化 var box2 = function(num ...

  3. JavaScript声明全局变量的三种方式

    JavaScript声明全局变量的三种方式   JS中声明全局变量主要分为显式声明或者隐式声明下面分别介绍. 声明方式一: 使用var(关键字)+变量名(标识符)的方式在function外部声明,即为 ...

  4. js声明变量的三种方式

    JS 声明变量的三种方式 (1)使用变量步骤:a.声明-->b.赋值-->3.调用 正确用法: <script type="text/javascript"> ...

  5. FastAPI中声明参数为必需的三种方式

    前提 有时候我们定义一些参数的时候,需要声明这个参数为必需,请求者必须传递该参数.FatstAPI中声明参数为必需的方式有三种,分别为:不设默认值.  "..." 和 " ...

  6. Linux就这个范儿 第18章 这里也是鼓乐笙箫 Linux读写内存数据的三种方式

    Linux就这个范儿 第18章  这里也是鼓乐笙箫  Linux读写内存数据的三种方式 P703 Linux读写内存数据的三种方式 1.read  ,write方式会在用户空间和内核空间不断拷贝数据, ...

  7. 于Unity3D动态创建对象和创建Prefab三种方式的原型对象

    于Unity3D动态创建对象和创建Prefab三种方式的原型对象 u3d在动态创建的对象,需要使用prefab 和创建时 MonoBehaviour.Instantiate( GameObject o ...

  8. 三种方式上传文件-Java

    前言:负责,因为该项目他(jetty嵌入式开始SpringMvc)实现文件上传的必要性,并拥有java文件上传这一块还没有被曝光.并 Http 更多晦涩协议.因此,这种渐进的方式来学习和实践上载文件的 ...

  9. SSH深度历险记(八) 剖析SSH核心原则+Spring依赖注入的三种方式

           于java发育.一类程序猿必须依靠类的其他方法,它是通常new依赖类的方法,然后调用类的实例,这样的发展问题new良好的班统一管理的例子.spring提出了依赖注入的思想,即依赖类不由程 ...

  10. ios学习网络------4 UIWebView以三种方式中的本地数据

    UIWebView这是IOS内置的浏览器.能够浏览网页,打开文档  html/htm  pdf   docx  txt等待格文档类型. safari浏览器是通过UIWebView制作. server将 ...

随机推荐

  1. Shiro简单入门+个人理解(3)

    最后一天,对shiro框架的应用也到此为至了,可能不是太全,但相对于一般的项目,它的作用已经使用了很多了 Shiro的授权: 授权:对用户资源访问的授权(是否允许用户访问此资源) 用户访问系统资源时的 ...

  2. ng-alain: delon/abc/sc 简化容器

    简化表单HTML模板的高阶组件,并进一步优化了一些细节: 更友好的表单校验状态 自动化响应式布局 自动维护表单 id 它由 se-container 容器(指令)和 se 组件来表示一个表单,一个简单 ...

  3. django模型层(orm相关知识点)

    目录 一.模型层之前期准备 模型层的了解 模型 模型层的前置知识点 二.ORM常用关键字 三.ORM执行SQL语句 四.神奇的双下划线查询 五.ORM外键字段的创建 复习MySQL外键关系 外键字段的 ...

  4. Spirng Data JPA 之Specification中and、or的使用

    项目中,有的地方存值以逗号分隔的方式来存储,但查询的时候是需要满足单个值或者多个值条件查询,因此用到Specification中and.or组合使用,此文用来记录,以防后用. 描述:parentCod ...

  5. 开源for Huawei,Beam适配GaussDB实践案例分享

    沃土云创开源开发者专项计划是华为给开源开发者提供专属激励资源,鼓励开发者积极参与开源 for Huawei适配,践行"让优秀开发者支持更优秀开发者"的理念. 之前我们介绍了fake ...

  6. Qt编写机器码秘钥控制/日期防篡改/离线使用/硬件标识/运行时间/数量控制/批量更新秘钥

    一.前言说明 搞软件开发一直追求精益求精的目标,从第一版的秘钥生成器到今天这个版本,经历了十年的时间,最初的版本做的非常简陋,就是搞了个异或加密,控制运行时间,后面又增加设备数量的控制,然后就是到期时 ...

  7. Qt开发经验小技巧266-270

    从Qt6.4版本开始多媒体模块提供了ffmpeg作为后端解码使用(6.5版本默认就是ffmpeg),可以通过设置环境变量来更改使用哪种后端解码,在main函数的第一行 qputenv("QT ...

  8. Qt编写地图综合应用24-miniblink内核

    一.前言 用Qt做项目过程中,遇到需要用到浏览器控件的项目,可能都会绕不开一个问题,那就是从Qt5.6版本开始mingw编译器的Qt构建套件,不再提供浏览器控件了,之前还可以用webkit控件,这下很 ...

  9. Qt编写的项目作品32-定制化安装包工具(雨田哥作品)

    一.功能特点 纯Qt编写,跨平台. 支持自定义安装目录等. 安装和卸载界面可自定义. 一键式脚本build.bat,生成安装包EXE. 兼容XP系统. 支持配置文件填充安装包信息. 指定应用程序中文名 ...

  10. 如何使用图片的exif信息计算相机焦距

    135胶卷源于35mm高度的打孔电影胶片,1913年,德国人奥斯卡·巴纳克将其用于他发明的徕卡(Leica)牌小型照相机上,由此形成标准.35mm电影胶卷,35mm指的是胶卷的高度为35mm,由于上下 ...