在安装完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. electron项目icon显示异常

    前情 公司有个桌面端项目是基于Electron开发的. 坑 构建打包好的项目在桌面和任务栏上图标显示正常,但是在任务栏弹框上左上角的图标确不显示 Why? 经过反复搜索,网上有文章说如果ico图标过大 ...

  2. C++ builder 10.2 x64程序使用typeid获取vcl类名时异常

    C++ builder 10.2 x64程序使用typeid获取vcl类名时异常 比如: const std::type_info &t= typeid(TForm1); 那么t的name() ...

  3. ProcessExplorer 多功能任务管理器软件-中文绿色单文件版

    今天我和大家分享一款系统监控工具--ProcessExplorer.一个比Windows自带的任务管理器更强大的工具.感觉最实用的是他的搜索功能,可以搜到系统任务管理器里面无法显示的应用, 大家可以网 ...

  4. 07C++选择结构(1)——教学

    一.基础知识 1.关系运算符 因为我们要对条件进行判断,必然会用到关系运算符: 名称 大于 大于等于 小于 小于等于 等于 不等于 符号 > >= < <= == != 关系表 ...

  5. ES6 面试题

    新增了哪些属性? 新增块级作用域:let.const 新增数据类型:Symbol 表示独一无二的值 新增数据结构: Set,类似数组,所有数据是唯一的: Map,键值对的结合,传统的 Object 只 ...

  6. NATS: 请求-响应消息

    请求-回复消息 https://docs.nats.io/nats-concepts/core-nats/reqreply 请求-回复 在分布式系统中,请求-回复是一种常见的模式.发送请求之后,应用程 ...

  7. 【NAS】绿联NAS+alist+lsky+natfrp 实现图床服务

    alist 安装与配置 值得一提的就是,映射的data是配置相关的,让绿联直接默认路径就行,不需要手动设置 但是文件保存位置的映射的话,为了方便,可以单独映射到一个方便访问的文件夹,(但是要注意下权限 ...

  8. 【Vue】前端直接显示MySQL Datatime时间,显示为英文如何处理

    问题如图 想让时间显示为自己想要的格式,可以自己编写一个函数 const formatDate= (timestamp)=> { const date = new Date(timestamp) ...

  9. Qt编写地图综合应用36-覆盖物折线

    一.前言 折线图目前应用最广的也是用来绘制各种轨迹,折线图其实就是后面动态轨迹图.飞机航线图的前身,公用的一个方法addPolyline,折线图可以设置颜色.粗细.透明度等属性,如果开启了悬浮绘图工具 ...

  10. Qt音视频开发40-人脸识别离线版

    一.前言 上一篇文章写了在线调用人脸识别api进行处理,其实很多的客户需求是要求离线使用的,尤其是一些事业单位,严禁这些刷脸数据外泄上传到服务器,尽管各个厂家号称严格保密这些数据,但要阻止这些担心,唯 ...