在安装完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. 用nginx正向代理,让内网主机通过外网主机访问外网

    需求1:某几个ip的代理 server { listen 9000; # 监听端口 server_name localhost; set $url "proxy_server_doman_o ...

  2. 问题解决:windows主机开机不插屏幕不能自动进入桌面

    操作系统一般都有这种设定,不论是windows还是Linux系统,那就是主机开机不插屏幕不能自动进入桌面操作系统一般都有这种设定,不论是windows还是Linux系统,那就是主机开机不插屏幕不能自动 ...

  3. 利用Catalina快速重新指定tomcat的代码路径

    思路: 在/tomcat/conf/Catalina/localhost目录下,建立对应的xml文件,来定义. 方法: 比如:想在 Http://localhost/test-api 显示,且代码放在 ...

  4. docker安装cas

    直接docker pull apereo/cas ,docker run的时候各种报错: standard_init_linux.go:178: exec user process caused &q ...

  5. 理解 ASP.NET Core: Host

    dotnet core 非常好用,代码也及其精炼,但是,你真的搞懂了每一行代码背后的含义了吗? 本文希望能够深入浅出地梳理一下它的脉络,把它从神秘变成水晶一般透明. 本文关注于分析 Pragram.c ...

  6. MySQL的 安装、配置、卸载

    Mysql的安装配置(基于Centos7) 安装mysql数据库 [root@master ~]# wget https://dev.mysql.com/get/mysql57-community-r ...

  7. 【MyBatis】学习笔记09:动态设置表名

    [Mybatis]学习笔记01:连接数据库,实现增删改 [Mybatis]学习笔记02:实现简单的查 [MyBatis]学习笔记03:配置文件进一步解读(非常重要) [MyBatis]学习笔记04:配 ...

  8. Redis 中 scan 命令踩坑

    原本以为自己对redis命令还蛮熟悉的,各种数据模型各种基于redis的骚操作.但是最近在使用redis的scan的命令式却踩了一个坑,顿时发觉自己原来对redis的游标理解的很有限.所以记录下这个踩 ...

  9. Transmission安装及更换官方UI

    相关链接地址: Transmission镜像地址 Transmission 浏览器管理界面:Transmission Web Control UI. 创建容器 docker-compose.yaml ...

  10. MySQL数据库驱动mysql-connector-java与数据库版本的匹配

    jar包的下载地址:https://dev.mysql.com/downloads/file/?id=477058 之前我的MySQL数据库驱动mysql-connector-java版本号为5.1. ...