Loading [MathJax]/jax/output/CommonHTML/fonts/TeX/AMS-Regular.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何在 vuePress中添加博客导流公众号-即输入验证码解锁全站文章

如何在 vuePress中添加博客导流公众号-即输入验证码解锁全站文章

作者头像
itclanCoder
发布于 2020-12-14 09:03:06
发布于 2020-12-14 09:03:06
3.6K00
代码可运行
举报
文章被收录于专栏:itclanCoderitclanCoder
运行总次数:0
代码可运行

虽互不曾谋面,但希望能和您成为笔尖下的朋友

以读书,技术,生活为主,偶尔撒点鸡汤

不作,不敷衍,意在真诚吐露,用心分享

点击左上方,可关注本刊

标星公众号(ID:itclanCoder)

如果不知道如何操作

点击这里,标星不迷路

如果您觉得读文章理解起来有难度,希望以下视频能给你带来一些帮助

前言

如今,打开一些网站,发现阅读文章前,先要关注公众号,获取验证码,才能解锁文章,这波操作虽然有点“流氓”,但是白嫖的适当付出一点也没有什么,毕竟写文章输出是真的费时间,尊重作者的劳动成果.

况且赏杯咖啡,我觉得也是一种激励.

不信,自己去践行下就知道了的

在互联网时代,有流量,一切皆有可能,在如今竞争激烈的情况下,尽管微信公众号阅读量日渐下滑,但不得不承认,它仍然是一个非常强劲有生命力的产品

其价值重视程度不言而喻,凡是离用户有多近的东西都值得深耕细作

现如今一些自媒体大佬,很多在公众号里赚了不少,论当今自媒体平台,公众号的商业价值是最大的

很少有听到抖音,快手等独立的个体融资的,但公众号就有,依靠它活得洒脱,而凭借它实现融资的还真不少. 自己不行,不代表别人也不行,贫穷会限制想象.

今天跟大家分享一下在vuepress中怎么进行配置实现导流到公众号,实现自动增粉,让每一个阅读转化为粉丝,与用户做朋友,从此在也不用互推了的,只需专心做好内容创作.

至于Hexo,wordpress网上一搜也能搜到,npm仓库也有相对应的包,可自行查阅

01

使用 openWrite 导流工具

这里借用openWrite 导流工具(https://openwrite.cn/)

⒈ 进入 openWrite 网站,找到导航菜单栏下的免费涨粉神器,添加博客列表

输入博客信息以及微信公众号信息,保存即可

如下所示:

⒉ 返回博客列表中,点击使用

⒊ 阅读使用文档

这里就不搬运了的,直接读文档就好,下面的介绍才是重点

注意

文档中需要注意最后一句:

其中id中设置的container需要用户根据文章页面中的文章容器来调整,或者直接将文章最外面的容器设置为该 id

文档中的readmore.js用 openWrite 的链接也行,直接下载到本地,在头部全局方式引入也可以

02

博客设置

任选自己的一篇md文档,在文档末尾增加如下一段js代码

不要问为什么能在md中还能写js,甚至写Vue,React都可以,因为vuepress牛逼~

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script src="https://my.openwrite.cn/js/readmore.js" type="text/javascript"></script>
<script>
    const btw = new BTWPlugin();  // 实例化btw插件对象
    btw.init({                    // 初始化设置,接收一些参数
        id: 'container',          // 文章最外层的id
        blogId: 'xxxx你自己的博客ID', // 博客网站的id,openWrite会自动生成
        name: 'itclanCoder',         // 博客的名称
        qrcode: '你自己的公众号二维码xxx.jpg', // 二维码
        keyword: '验证码',                    // 设置的解锁关键字
    });
</script>

当你插入这段代码后,发现控制台报错了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ReferenceError: BTWPlugin is not defined

解决办法

你需要在外面用window.onload包裹起来,必须等待 DOM 网页中所有内容加载完毕后执行这段代码,用(document).ready(function(){})是不行的

前者是等网页中的所有 DOM 包扩图片加载完毕后执行,而后者是所有 DOM 结构绘制完毕后,边加载边执行,可能 DOM 元素关联的东西并没有加载完

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
window.onload = function() {
  const btw = new BTWPlugin();
  btw.init({
    id: 'container',
    blogId: 'xxxx你自己的博客ID',
    name: 'itclanCoder',
    qrcode: '你自己的公众号二维码xxx.jpg',
    keyword: '验证码',
  });
};

解决完报错后,文章依旧没有隐藏起来,根据 openWrite 文章中最后一句设置文章容器的id属性container

现在就是要给文章容器添加 id 属性了,可以用原生 js,也可以使用 JQ动态的添加属性

提示

直接在md中用div将想要隐藏的部分包裹起来,并在div上添加id="container"难道不行么

这种方式我有试过,但不靠谱,实现不了:joy:,即使能实现,每篇文章都要手动的添加 id,那不是一个懒的程序员应该做的事情

可以在控制台中审查元素,找到文章最外层的那个容器,实在不知道,你找个已经实现了解锁文章的博客作为参照:例如itclanCoder 网站

没有添加解锁文章的博客,是没有那个id="container"属性的

下面我使用 jQ 查找元素,给页面最外层的容器添加 id 属性,为啥不用原生 js,因为 jQ 写得更少,做得更多哈

此刻,不要动不动满口的vue,React,Angular...JQ 真香,小弟还停留在 JQ 时代,其实 JQ 也很牛逼的,也没有它实现不了的,只是现在,有负往日盛景,风水轮流转嘛

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
window.onload = function() {
  themeDefaultContent = $(
    '#app > .theme-container>.page > .theme-default-content' // 获取最外层的元素
  );

  themeDefaultContent.attr('id', 'container'); // 设置id属性,就是这么牛逼,搞定
  const btw = new BTWPlugin();
  btw.init({
    id: 'container',
    blogId: 'xxxx你自己的博客ID',
    name: 'itclanCoder',
    qrcode: '你自己的公众号二维码xxx.jpg',
    keyword: '验证码',
  });
};

但经自己测试,发现无论是使用 vue 的写法,将上面的代码放到 monted 中,或使用this.$nextTick,发现不是报btw is not defined就是BTWPlugin is not defined

但是页面中的id="container"确实已经加上去了的,但就是隐藏不了文章,经过排查,查看了一下readmore.js源码,里面使用了document.querySelectorAll以及window等一些方法,当然里面也用了jQ,估计是这个脚本加载顺序有问题

如果有知道怎么解决的同学,可以告知一下,显然按照文档中的直接在文章底下写那段代码是实现不了文章隐藏的功能的

解决办法:

把上面的代码单独成一个js,放到.vuepress中公共 js 目录下,/.vuepress/public/js/btwplugin.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
window.onload = function() {
  themeDefaultContent = $(
    '#app > .theme-container>.page > .theme-default-content'
  );

  themeDefaultContent.attr('id', 'container');
  btw = new BTWPlugin(); // 注意btw需要是个全局变量,把const去掉
  btw.init({
    id: 'container',
    blogId: 'xxxx你自己的博客ID',
    name: 'itclanCoder',
    qrcode: '你自己的公众号二维码xxx.jpg',
    keyword: '验证码',
  });
};

而把readmore.js添加到头部head中,以script方式全局注入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = {
  head: [
    [
      'script',
      { charset: 'utf-8', src: 'https://my.openwrite.cn/js/readmore.js' },
    ],
  ],
};

然后在.vuepress自定义组件出./vuepress/components/HideArticle.vue

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<template>
  <div>

  </div>
</template>

<script>

  export default {
    name: 'HideArticle',
    data() {
      return {

      }
    },

    mounted() {

     import('../../public/js/btwplugin')  // 引入那段代码脚本,直接把那段代码写到这里不行?还真不行,依旧会报btw is not defined
     // 或者使用require('../../public/js/btwplugin');当然最好是在上面定义,monted里面调用

    }
  }
</script>

<style lang="scss" scoped>

</style>

然后在md文档中以组件的方式在文章末尾引入<HideArticle />组件

整个过程没有几行代码

果然成功了...

注意事项

  1. btwplugin.js中的btw需要是个全局变量,去掉const,那直接new BTWPlugin().init({})不是更好么,还真不行,依旧会报btw is not defined尽管这个bug挺奇葩的
  2. 在btwplugin.js这段代码中,需要使用window.onload包裹,等待所有页面加载完执行这段脚本,不能不包裹,而且也无法使用(document).ready(function() {}),行不行,试一试就知道了的
  3. 如果自定义的组件HideArticle.vue,外面多了一层文件夹例如:./vuepress/components/global/HideArticle.vue,在md引入组件时需要<global-HideArticle />这种方式引入组件,否则依旧不会生效
  4. HideArticle.vue组件内中的monted需要使用import('相对路径')相对路径的方式导入脚本,或者使用require('相对路径')的方式引入,这里用绝对路径不行,如下所示
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const btwPlugin = require('../../public/js/btwplugin');
export default {
  name: 'HideArticle',
  data() {
    return {};
  },

  mounted() {
    btwPlugin(); // 直接调用
  },
};

以上就实现了单篇文章的隐藏,如下所示

那博客里有很多文章,每篇md文件末尾都引入该组件,挺麻烦的

vuepress中提供了全局注入组件,这里介绍两种方式全局注入组件的,一种是以插件的形式注入,另一种是在enhanceApp.js中全局注入

方式 1-以插件形式全局注入组件

/.vuepress/中的config.js配置插件中,以插件的方式全局引入的,具体插件的引入可以见文档vuepress 使用插件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = {
  plugins: [
    [
      {
        name: 'page-plugin',
        globalUIComponents: ['global-HideArticle组件的名称'],
      },
    ],
  ],
};

通过上面的方式,就可以实现在博客中所有文章都实现隐藏了

方式 2-在 enhanceApp.js 中注入组件

vuepress中的enhanceApp.js,这个文件是需要自己手动创建的,它可以对 VuePress 应用进行拓展配置,这个文件应当 export default 一个钩子函数,并接受一个包含了一些应用级别属性的对象作为参数

你可以使用这个钩子来安装一些附加的 Vue 插件注册全局组件,或者增加额外的路由钩子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import ElementUI from 'element-ui';

// 使用异步函数也是可以的
export default ({
  Vue, // VuePress 正在使用的 Vue 构造函数
  options, // 附加到根实例的一些选项
  router, // 当前应用的路由实例
  siteData, // 站点元数据
  isServer, // 当前应用配置是处于 服务端渲染 或 客户端
}) => {
  // ...做一些其他的应用级别的优化
  // 全局注入组件
  Vue.use(ElementUI);
  Vue.mixin({
    // 混合注入,加载全局文件
    mounted() {
      import('./public/js/btwplugin');
    },
  });
};

你也可以通过跟上面一样,require的方式引入,在monted中调用,这里不再重复多余,这里借用了Vue.mixin()全局注册使用混入,Vue.mixin 的介绍

以上同样能够全局注入,实现全站文章的隐藏

03

怎么实现某单篇文章不隐藏

其实上面第一种方式,实现单篇文章的隐藏,那实现指定某一篇文章的不隐藏,同样也很简单,只需要去除id="container"这个属性就可以了的

你可以在md下面直接写js,找那个最外层的元素,直接去掉id属性即可

你也可以封装成一个组件,在全站中哪一篇不想要隐藏,直接调用该组件即可,这里就不重复了的,直接提供核心代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
window.onload = function() {
  const themeDefaultContent = $(
    '#app > .theme-container>.page > .theme-default-content'
  );
  themeDefaultContent.removeAttr('id'); // 移除掉id属性,就是这么简单,JQ牛逼~
};

上面的代码就是使用jq移除元素上的某个属性,就实现了文章的不隐藏

04

可能会遇到的问题

本地运行没问题但打包不通过

本地npm run dev没有问题,但是构建打包出现window is not defined或者document is not defined

这是因为使用vuepress所生成的静态HTML时,都需要通过Node.js服务端渲染,而在服务端Node.js的坏境中是没有document以及window对象,这时候访问浏览器/DOM 中的 API,它就会报错

如果你按照以上的步骤无论是通过import的方式还是通过Vue.mixin的方式,在打包过程中就不会此类问题

之所以介绍两种方式,那是我踩坑之后,才发现的,本地运行好好的,一打包就出错.算是一个小坑,我的itclanCoder 博客里使用的是Vue.mixin()这种方式全局注入组件实现全站文章隐藏的

你也可以查看如何解决 vuepress 编译打包失败即 window/document is not defined 问题

二维码不显示问题

当实现了文章的隐藏后,发现弹出框内的二维码不正常显示,这个时候,你需要查看openWrite博客设置的二维码是否正确的

注意

图片的链接:需要是http://xxxxgg.jpg网络地止,jpg/png/..图片后缀形式的,直接将图片转换成链接插入是不行的

你可以选择某一个图片存储服务器,只要能拿到图片地止就行,我使用的是又拍云的,当然它的免费的空间资源有限

05

额外拓展-不使用插件怎么实现文章部分隐藏

通过这个openWrite插件,可以看得出,它只是给最外层添加了一个固定的高度,把超出部分给隐藏了的

视觉上出现隐藏(css 实现的),通过浏览器审查元素就可以看得出,这并非真正的隐藏,对于前端同学,实现元素的隐藏并不陌生

不用插件,没有后端服务,也同样可以做到导流到公众号,可以在公众号后台自动回复里添加设置一个固定的值

vuepress中同样编写全局组件的方式,获取最外层的元素,然后如同 openWrite 的,提交时,需要输入从公众号后台菜单栏拿到的固定的值,输入正确的值才能解锁文章

甚至解锁体验还可以优化得更好,给一些用户提示之类的

在前端代码中,给一个固定的值与用户输入的值做比较,就可以了的,可以把这个输入的值存入sessionStorage中的

一样可以实现文章的全站部分隐藏,输入验证码解锁文章,只是这个操作有一定的局限,验证码就不能是动态了的

虽然这种方式是不安全的,但依旧可以达到公众号引流的目的

想必通过关注个公众号回复一个验证码,就能解锁文章,比自己查看源码的方式拿到验证码,要快得多吧

对于不熟悉后台,仅仅就是为了实现导流这个目的,这种方式完全是可以实现的,而openWrite这种方式动态实现文章的解锁

需要自己部署服务器,处理前端请求等一些问题.还得写后端代码,对于后端是一片沙漠的同学,是有一些复杂的.

如果你不想用openWrite这种插件方式,可以自行一试的,但话说回来,既然有这么好的工具,那就用吧,虽然配置过程中难免会遇到一些坑,但总有人会给你填啊

腾出这个精力,解决下个人问题,多陪陪女朋友,不是更好?哈哈哈哈....

结语

至此,在vuepress中结合openWrite的博客导流工具到公众号,实现全栈文章部分隐藏,以及解锁文章就完美实现了的,实现起来非常简单粗暴

当然我不知道其他类似用vuepress搭建的博客,实现文章的隐藏是怎么实现的,虽然这个很简单,但是在实现的过程或多或少,会踩到一些坑,如果熟悉vue相关技术栈的,解决也不难

但基本上应该大同小异,都要先获取最外层元素,然后动态的添加 id 属性

如果您在实现博客文章部分隐藏功能遇到问题,欢迎提出问题,下方留言,一起讨论

相关文档

  • openWrite 博客导流工具(https://openwrite.cn/)
  • 又拍云图片存储
  • https://www.upyun.com/
  • 原文出处:http://coder.itclan.cn/fontend/tools/add-blog-guide/
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 itclanCoder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
gitbook 入门教程之还在搞公众号互推涨粉?gitbook 集成导流工具,轻轻松松躺增粉丝!
相信大多数博客作者都或多或少有过这样想法: 现在各种平台这么多,想要实现全平台发布就要到处复制粘贴,等我有空一定做统一平台一次性全部解决!
雪之梦技术驿站
2019/10/01
6620
给博客添加一个安全跳转页面
更新记录:本次更新了在twikoo评论区中添加网页跳转的功能点击跳转更新内容最近更新
柳神
2024/05/30
1760
给博客添加一个安全跳转页面
vuepress2.0踩坑记录
最近将公众号的文章进行了整理,用vuepress搭建了一个在线文档版的公众号文章笔记,整体来说vuepress在线文档不管pc端还是移动端阅读体验是相当可以,我的在线文档是用vuepress2.0构建(vuepress2.0是vite打包),无论本地打包还是本地服务是相当的快,本文是从vuepress1.0到2.0升级过程遇到的一些问题,做了一些记录。
Maic
2022/08/29
1.8K0
vuepress2.0踩坑记录
绕过某博客查看文章验证码,关注公众号得验证码
之前也写过一篇,当时使用Burpsuite抓包,改包,有点杀鸡用牛刀了。 虽然我挺支持为知识那啥的,但是吧要我去关注公众号太麻烦了 绕过查看文章需要验证码 其实就是改一个返回的字段,既然后端也是改,那我前端改也一样,就不用开其他软件。 打开这个网址,尝试输入错误的验证码
SingYi
2023/08/23
2430
绕过某博客查看文章验证码,关注公众号得验证码
我写了个 Chrome 插件,一键下载 PornHub 视频!
小詹有个读者叫 zgao,他之前写过一篇博客,爬取了 PornHub(下面全部简称 P 站)上的视频,代码很简单,关键还好用!当时小詹就 P 站上爬取了一些考研数学视频,虽然我用不上,但是我热爱技术啊!
GitHubDaily
2019/11/28
60.8K14
牛掰!我是这么把博客粉丝转到公众号的
纯洁的微笑推荐了一篇文章,题目没有任何特色,叫做《我是怎么把博客粉丝转到公众号的》,但读完后,我震惊了——原来还有这种骚操作啊!
沉默王二
2019/09/24
4440
牛掰!我是这么把博客粉丝转到公众号的
纯代码实现WordPress文章设置隐藏内容公众号可见
网上找了一圈找到了龙笑天下博主写的一篇文章:WordPress 文章部分内容关注微信公众号后可见
AlexTao
2019/07/22
1.4K0
纯代码实现WordPress文章设置隐藏内容公众号可见
借助 VuePress 和 GitBook ,10 分钟即可免费部署你的静态博客网站
因为自己平时经常写博客,也有博客网站,所以 Leader 叫我做一个 CMS 的帮助中心的技术选型,CMS 的帮助中心的功能:是通过文章来教用户如何使用我们的项目。
夜尽天明
2019/12/19
2.1K0
借助 VuePress 和 GitBook ,10 分钟即可免费部署你的静态博客网站
vitepress搭建markdown文档博客
VitePress 是 VuePress 的下一代框架 ,是支持vue 3.0 的 web 网站框架。
周陆军博客
2023/06/06
1.8K0
Typecho微信公众号验证码涨粉丝插件(美化版)-星泽V社
一款利于微信公众号涨粉的Typecho插件 访客必须关注 公众号 获取验证码,然后输入验证码才能看到内容
星泽V社
2022/03/02
1.2K0
Typecho微信公众号验证码涨粉丝插件(美化版)-星泽V社
基于TechGrow实现Hexo引流微信公众号
浏览器访问 TechGrow (opens new window) 的官网 ,注册并登录账号后,进入博客的后台管理页面。首先点击左侧的菜单 博客注册,然后点击 新增 按钮,添加自己博客的信息。博客注册成功后,记录下 博客 ID,后面的步骤会使用到
程序员朱永胜
2023/08/26
2530
基于TechGrow实现Hexo引流微信公众号
WordPress关注公众号可见内容插件(公众号引流工具)
我们肯定不少的网友站长看到有些网站、博客隐藏的内容是可以通过回复评论、会员VIP才可见的,也有是需要扫码关注公众号获取到验证码输入激活才可以显示的。但是之前老蒋看到的一个这类WordPress插件是在插件设置一个固定的验证码,然后配合微信公众号自动回复的方式来进行提示用户。
老蒋
2021/12/27
3.5K1
WordPress关注公众号可见内容插件(公众号引流工具)
我是怎么把博客粉丝转到公众号的
我大约在 2014 年底开了自己的个人博客,当时就是想自己记录点学习总结,一个是方便查阅,二是锻炼一下自己写总结或者文章的能力,最初就是记录一些日常生活、编程学习的小知识点什么的。
用户1564362
2019/09/17
7060
我是怎么把博客粉丝转到公众号的
第一个博客搭建之Vuepress
感谢 vuepress-theme-reco主题与一篇博客使用文章使用 vuepress 构建个人博客
愧怍
2022/12/27
8610
第一个博客搭建之Vuepress
如何快速搭建好看的个人博客(完整配置与源码)
博客地址 程序员成长指北(http://www.inode.club/) 可以先体验下。
coder_koala
2020/06/11
1.5K0
如何快速搭建好看的个人博客(完整配置与源码)
WordPress 首页文章如何使用分类过滤?
这是我碰到最多的需求了,博客首页的文章如何使用分类进行过滤,有些用户只想某几个分类的文章,而有些用户则不想显示某几个分类的文章。
Denis
2023/04/13
1.8K0
WordPress 首页文章如何使用分类过滤?
Hexo博客框架初识入门到进阶.md
[TOC] 1.Hexo介绍 Q:什么是 Hexo? A:Hexo 是一个快速、简洁且高效的博客框架,Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网
全栈工程师修炼指南
2020/10/23
1.5K0
Hexo博客框架初识入门到进阶.md
【验证码逆向专栏】最新某验四代动态参数逆向详解
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
K哥爬虫
2025/02/05
2140
【验证码逆向专栏】最新某验四代动态参数逆向详解
用个人博客打造一个酷酷的工作流!
每个前端都应该拥有一个自己的博客、因为它不仅仅是一个博客、更是属于自己的一个工作流、如何来理解这个问题呢、这也就是我要开发一个博客的初衷。
Snine
2022/02/11
8320
用个人博客打造一个酷酷的工作流!
手把手带你在集成SpringSecurity的SpringBoot应用中添加短信验证码登录认证功能
在上一篇文章一文理清SpringSecurity中基于用于名密码的登录认证流程中笔者有详细地介绍了Spring Security登录认证的流程,也为我们在工作中面需要实现自定义的登录认证如手机号+短信验证码、邮箱地址+邮箱验证码以及第三方登录认证等方式的扩展做好了准备。那么本文,笔者就手把手带大家实现在集成了Spring Security的SpringBoot项目中如何增加一种手机号+短信验证码的方式实现登录认证。
用户3587585
2022/04/14
2.3K0
手把手带你在集成SpringSecurity的SpringBoot应用中添加短信验证码登录认证功能
推荐阅读
相关推荐
gitbook 入门教程之还在搞公众号互推涨粉?gitbook 集成导流工具,轻轻松松躺增粉丝!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验