立即注册 登录
彼岸网 返回首页

天香公主的个人空间 http://www.bian-wang.com/discuz/?10005 [收藏] [复制] [分享] [RSS] txgz999@yahoo.com

日志

网址二维码和分享到微信

热度 6已有 670 次阅读2017-6-3 12:30 AM |个人分类:Discuz

小虫姐问及分享日志到微信的问题,所以学习下有关的知识。

二维码 (QRcode) http://en.m.wikipedia.org/wiki/QRcode 起源于日本,盛行于东亚,是对传统的条形码 (Barcode) 的一种发展,比条形码能储存更多的信息。比如网页的地址 (URL)就可以显示成一个二维码,即这个二维码图像就成了网页地址的一个图像表示。有多种可以在手机上和iPad上扫描二维码读出它所代表的信息的软件,微信 (Wechat)就是其中之一,它在读出二维码所代表的网页地址后在内置浏览器里显示该网页,用户进而可以在微信里将它收藏,发送给朋友圈,发成邮件等。

美中网和贝克村等网站在文章和日志等网页上都提供了分享到微信的功能,就是基于这样的机制。看了看大致有三类生成网址二维码图像的做法。

1。调用第三方的生成二维码的算法,将网址直接转换成二维码图像
这是美中网的做法。生成二维码的算法并不复杂,比如这里就提供了用javascript实现这种算法的程序。从那里下载了后放进网站的文件夹 static/js 后,我们就可以用下面这样一段代码来在网页上显示该网页的二维码表示: <div id="qrcode" /> <script src="{$_G[setting][jspath]}qrcode.min.js"></script> <script type="text/javascript"> new QRCode(document.getElementById("qrcode"), { text: document.location.href, width: 128, height: 128 }); </script> 上面的代码将网页二维码图像直接显示在网页上了。另一种显示方法是在网页上显示一个'分享到微信'按钮,点击后才在弹窗里显示二维码。Discuz提供的showWindow函数能让我们很容易就实现这种做法。

2。利用第三方网站提供的在线生成二维码的服务,将要转换的网址提交给该网站,由它们返回二维码图像再显示在网页上
这是贝壳村的做法。它们利用了谷歌的在线制表工具 (链接) <img id="qrcode" /> <script type="text/javascript"> document.getElementById("qrcode").title = document.location.href; document.getElementById("qrcode").src = "http://chart.apis.google.com/chart?chs=128x128&cht=qr&chld=L|0&chl=" + encodeURIComponent(document.location.href); </script>
3。利用第三方公司提供的插件
网上有些公司提供了将上述机制合成到Discuz软件造的网站的插件。例如美中网用的是百度分享按钮插件(链接),而贝壳村用的则是jiathis公司提供了分享按钮插件(链接)。站长要想在网页的何处以何种方式显示分享功能都可以在插件设置里选择。或者我们也可以不用插件,而直接将他们提供的显示分享代码加到网站代码内。以jiathis为例,按这里(链接)的介绍,我们只需加入下面这段代码: <div class="jiathis_style_32x32"> <a class="jiathis_button_weixin"></a> </div> <script type="text/javascript" src="http://v3.jiathis.com/code/jia.js"></script> 观察下它生成二维码的过程发现其实用的就是上述第二种办法,即jiathis网站提供了生成二维码的在线服务,第二种办法中的例子里将谷歌在线服务网址换成jiathis在线服务网址也同样能将二维码直接显示在网页里: <img id="qrcode" /> <script type="text/javascript"> document.getElementById("qrcode").title = document.location.href; document.getElementById("qrcode").src = "http://s.jiathis.com/qrcode.php?url=" + encodeURIComponent(document.location.href); </script>
有了这样一个分享功能后,如何使用呢? 我觉得如果博主是要用下面的步骤来把自己的博文分享到微信里去那是太麻烦了:
1)在电脑上找到要分享网页的二维码(在美中网和贝壳村通过点击网页上的'分享到微信'按钮后出现)
2)在手机或iPad上打开微信,点击底部的'发现',进入使用'扫一扫'
3)这时将手机或iPad对准电脑上显示的二维码,手机或iPad就会自动开始扫描这个二维码,并将相应的网页内容显示在微信里
4)在微信里点击右上角有三个小点的图标时,会出现多种操作选择,分享至朋友圈就是其中之一
因为要扫描就要有手机或iPad,那还不如在那里直接用手机或iPad提供的分享网页到微信的功能。下面是在iPhone和iPad上的操作图示。
如果说还要更方便的话,那就是在网页上最好给手机和iPad用户添加一个'在微信中打开'的按钮,点击后这个网页就显示在微信内置的浏览器里了,然后用户在那里再决定是要发在微信里,还是发在朋友圈里,还是自己收藏。这种办法过去可行,用个href=“weixin://dl/businessWebview/link/...”的做法,上面提到的jiathis就是这么做的。当你点击它的分享图标后,它会根据你是电脑用户还是手机iPad用户来显示不同的内容。对电脑用户它显示二维码,对手机iPad用户它显示一个“Open WeChat"按钮。但现在微信不允许这样做了(链接),这应该不是个因技术原因做出的决定。

那么,何时网站上加的分享功能有用呢?我只能想出两种情形:
1)你在电脑上浏览到别人的网页或日志,那时没法将该页的url直接拷贝到手机上去,那用手机扫一扫还挺方便的
2)如果你是要提供给别人其它扫一扫的途径,比如将网页打印出来贴在公共场合,让别人扫一扫

但是即便有这样的在电脑上显示网页二维码的需要,让各个网站来提供这样的功能也不是最恰当的。这种在任何网页上都有可能需要的有普遍意义的功能应该在浏览器层面上提供。的确 Firefox(链接)和 Chrome(链接)都有这样的扩展功能:

发表评论 评论 (37 个评论)

回复 天香公主粉丝 2017-6-20 09:55 AM
天香公主:           你这用户名太辣眼睛了,能不能换一个?

我大概是六年前去美国中文网参于那里的讨论的,不过那时从没注意过那个网站是怎么造出来的。 ...
   好吧,我换个用户名好了!
原来如此,我要加油了。。。。。。。。。。。。。
回复 天香公主粉丝 2017-6-20 09:55 AM
天香公主:           你这用户名太辣眼睛了,能不能换一个?

我大概是六年前去美国中文网参于那里的讨论的,不过那时从没注意过那个网站是怎么造出来的。 ...
   好吧,我换个用户名好了!
原来如此,我要加油了。。。。。。。。。。。。。
回复 天香公主 2017-6-20 09:08 AM
天香公主粉丝: 我有点好奇,想请问,若能达到您的境界,像我这样的菜鸟要学几年呢、。?
     你这用户名太辣眼睛了,能不能换一个?

我大概是六年前去美国中文网参于那里的讨论的,不过那时从没注意过那个网站是怎么造出来的。过了两年那里认识的几位网民自己建了网站,而且那些网站和美国中文网的布局和用法都类同,所以才知道有Discuz这个建站软件。看到它的源码是公开的,就学习了下
回复 天香公主粉丝 2017-6-20 03:55 AM
天香公主: 在Firefox里显示吗?你不在中国大陆吧?

要不在 parseflv 的近结尾处找到mobileplayer(),将其换成1,即

$enablemobile = $iframe ? '1 ? &quot;<iframe heig ...
我有点好奇,想请问,若能达到您的境界,像我这样的菜鸟要学几年呢、。?
回复 carry0987 2017-6-16 06:35 AM
天香公主: 现学现卖,没有遗笑方家吧?
膜拜都來不及了,何笑之有?
回复 天香公主粉丝 2017-6-11 12:40 PM
天香公主: 在Firefox里显示吗?你不在中国大陆吧?

要不在 parseflv 的近结尾处找到mobileplayer(),将其换成1,即

$enablemobile = $iframe ? '1 ? &quot;<iframe heig ...
Firefox我没有安装,我不在中国大陆。
$enablemobile = $iframe ? '1 ? 这个我曾经看过你写的代码,曾经也试过,的确是可以的,不过在开发者模式下,有报错问题,
http://www.bian-wang.com/discuz/data/attachment/album/201706/11/124330lnpieiglqneleagn.jpg
我在研究看看,谢谢了~~
回复 天香公主 2017-6-11 12:26 PM
天香公主粉丝: 我的谷歌浏览器版本:版本 46.0.2490.86 m,咦?我的版本好像低了很多耶,难道是版本的问题?我又测了下360浏览器8.1,youtube还是不显示,搞不清楚是什么问题了 ...
在Firefox里显示吗?你不在中国大陆吧?

要不在 parseflv 的近结尾处找到mobileplayer(),将其换成1,即

$enablemobile = $iframe ? '1 ? "<iframe height=\''.$height.'\' width=\''.$width.'\' src=\''.$iframe.'\' frameborder=0 allowfullscreen></iframe>" : ' : '';

这样你就用iframe了,试试看?
回复 天香公主粉丝 2017-6-11 11:48 AM
天香公主: embed在我的Chrome Version 58.0.3029.110 (64-bit)上没问题,无论是否block了flash。
http://www.bian-wang.com/discuz/data/attachment/album/201706/11/11365 ...
我的谷歌浏览器版本:版本 46.0.2490.86 m,咦?我的版本好像低了很多耶,难道是版本的问题?我又测了下360浏览器8.1,youtube还是不显示,搞不清楚是什么问题了~~
以下帖子发出之前和之后截图
http://www.bian-wang.com/discuz/data/attachment/album/201706/11/120830ckhphbkhhh8hhkx6.jpg
http://www.bian-wang.com/discuz/data/attachment/album/201706/11/114647fnqnvebqos4ddyb5.jpg
回复 天香公主 2017-6-11 11:38 AM
天香公主粉丝: 电脑,谷歌浏览器,优酷测试正常
就youtube的不可以,

开发者模式下,查看源代码如下所示
<embed width=&quot;500&quot; height=&quot;375&quot; allownetworki ...
embed在我的Chrome Version 58.0.3029.110 (64-bit)上没问题,无论是否block了flash。
http://www.bian-wang.com/discuz/data/attachment/album/201706/11/113659h88pccu31iifoh9y.png
不知你的版本是多少。不管怎么说,我等会改成iframe你再试试
回复 天香公主粉丝 2017-6-11 11:11 AM
添加代码的截图
http://www.bian-wang.com/discuz/data/attachment/album/201706/11/111023p6jeqhurzzrbea9b.jpg

我刚用手机浏览进入电脑版的页面,youtube可以正常看的
用电脑看就不行
回复 天香公主粉丝 2017-6-11 11:03 AM
天香公主: 你在哪试的?手机上吗?用同样方式加的优酷,酷6视频你能看到吗?

我写的那段在电脑上的三个浏览器都试过没问题 ...
电脑,谷歌浏览器,优酷测试正常
就youtube的不可以,

开发者模式下,查看源代码如下所示
<embed width="500" height="375" allownetworking="internal" allowscriptaccess="never" src="http://www.youtube.com/v/Xvjnoagk6GU&amp;hl=zh_CN&amp;fs=1" quality="high" bgcolor="#ffffff" wmode="transparent" allowfullscreen="true" type="application/x-shockwave-flash">
回复 天香公主 2017-6-11 10:54 AM
天香公主粉丝: 这些都试过了,不行的,
经研究后发现这些代码以前是支持youtube的,
但是已经失效了,这些代码执行之后是用<embed标签输出,
可是youtube好像不再支持<embed标 ...
你在哪试的?手机上吗?用同样方式加的优酷,酷6视频你能看到吗?

我写的那段在电脑上的三个浏览器都试过没问题
回复 天香公主粉丝 2017-6-11 10:41 AM
天香公主: 我看了下source/function/function_discuzcode.php 里的函数parseflv中有对油管的支持,但仅限于你的第一种形式,而且只支持http。要想支持你的那两个例子,可以 ...
这些都试过了,不行的,
经研究后发现这些代码以前是支持youtube的,
但是已经失效了,这些代码执行之后是用<embed标签输出,
可是youtube好像不再支持<embed标签了呢,应该是不再支持flash了
回复 天香公主 2017-6-11 10:14 AM
天香公主粉丝: 网上的,之前基本都试过了,都已失效了呢
我看了下source/function/function_discuzcode.php 里的函数parseflv中有对油管的支持,但仅限于你的第一种形式,而且只支持http。要想支持你的那两个例子,可以将其中关于油管的那一段代码改成:
} elseif(strpos($lowerurl, 'www.youtube.com/watch?') !== FALSE) {
  if(preg_match("/^https?:\/\/www\.youtube\.com\/watch\?v=([^\/&]+)&?/i", $url, $matches)) {
    $flv = 'http://www.youtube.com/v/'.$matches[1].'&hl=zh_CN&fs=1';
    $iframe = 'http://www.youtube.com/embed/'.$matches[1];
    if(!$width && !$height) {
      $str = file_get_contents($url, false, $ctx);
      if(!empty($str) && preg_match("/'VIDEO_HQ_THUMB':\s'(.+?)'/i", $str, $image)) {
        $url = substr($image[1], 0, strrpos($image[1], '/')+1);
        $filename = substr($image[1], strrpos($image[1], '/')+3);
        $imgurl = $url.$filename;
      }
    }
  }
} elseif(strpos($lowerurl, 'youtu.be/') !== FALSE) {
  if(preg_match("/^https?:\/\/youtu\.be\/([^\/&]+)/i", $url, $matches)) {
    $flv = 'http://www.youtube.com/v/'.$matches[1].'&hl=zh_CN&fs=1';
    $iframe = 'http://www.youtube.com/embed/'.$matches[1];
    if(!$width && !$height) {
      $str = file_get_contents($url, false, $ctx);
      if(!empty($str) && preg_match("/'VIDEO_HQ_THUMB':\s'(.+?)'/i", $str, $image)) {
        $url = substr($image[1], 0, strrpos($image[1], '/')+1);
        $filename = substr($image[1], strrpos($image[1], '/')+3);
        $imgurl = $url.$filename;
      }
    }
  }
回复 天香公主粉丝 2017-6-11 08:47 AM
网上的,之前基本都试过了,都已失效了呢
回复 天香公主 2017-6-11 08:14 AM
天香公主粉丝: 天香公主!我又来了。。。。
DZ3.3的youtube视频好像失效了耶,插入后什么都不显示
帖子页[media]标签下
https://www.youtube.com/watch?v=Xvjnoagk6GU
...
试试 http://www.discuz.net/thread-2958914-1-1.html
回复 天香公主粉丝 2017-6-11 01:30 AM
天香公主!我又来了。。。。
DZ3.3的youtube视频好像失效了耶,插入后什么都不显示
帖子页[media]标签下
https://www.youtube.com/watch?v=Xvjnoagk6GU
https://youtu.be/Xvjnoagk6GU
这俩地址都无效,我还试了试了\source\function\function_discuzcode.php
修改正则,但还是不行,请问这个有办法解决么?
回复 天香公主粉丝 2017-6-9 11:25 PM
天香公主: 把template/default/forum/guide_list_row.htm里那个显示回复数的 $thread[replies] 改成
<!--{echo $thread[replies]+$thread[comments]}-->
然后更新缓存后应 ...
万分感谢!!!解决了^^
回复 天香公主 2017-6-9 04:46 PM
天香公主粉丝: 公主,
导读页forum.php?mod=guide&view=new,
有个变量的BUG有办法修复么?
就是导读页的一个回复总数的变量路径\template\forum\guide_list_row.htm
$thread[a ...
把template/default/forum/guide_list_row.htm里那个显示回复数的 $thread[replies] 改成
<!--{echo $thread[replies]+$thread[comments]}-->
然后更新缓存后应该就可以了
回复 天香公主 2017-6-9 08:24 AM
天香公主粉丝: 疑问:
1)里指的那条
我在guide.php大约在160行找到是
foreach($_G['cache']['forums'] as $fid => $forum) {

没有找到你给的
foreach($_G['cache']['forumsgr ...
你说的对,这是我之前的一个修改尝试,忘了改回来了。
12下一页

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 立即注册

小黑屋|Archiver|彼岸网  

Powered by Discuz! X3.1 © 2001-2014 Comsenz Inc.
GMT-4, 2017-9-25 07:42 AM , Processed in 0.068065 second(s), 21 queries.

返回顶部