阻止移动设备自动识别页面上的电话号码、email地址

这个问题主要发生在iOS的浏览器上,他们有时候会有一些“自作聪明”,自动把页面上的一串数字识别成电话号码,这样用户不小心点击这串数字,就拨号了。所以我们习惯给那些要在手机上访问的响应式页面增加一串meta标签,以阻止移动端浏览器的这些自动行为。

1
2
3
4
<meta name="format-detection" content="telephone=no" />
<meta name="format-detection" content="email=no" />
<meta name="format-detection" content="address=no" />
<meta name="format-detection" content="date=no" />

其实之所以iOS的浏览器会自动识别页面上的数字为电话号码,就是因为它默认的format-detection中有一条telephone=yes。人为把它设置成no就阻止了这个功能。那么在我们需要真的实现点击链接播电话的时候,只要在link上用标准的“tel:”写法就可以了:

1
<a href="tel:8602188888888">+86 021 88888888</a>

查看详细 »

我的云主机使用经验 – 三家云主机服务商(包括阿里云)的对比

从2013年开始,各家主机供应商都推出了云主机服务。什么是云主机?简单来说就是一台你“看不见,摸得着”的主机。“看不见”指如果你跑去机房,你是找不到自己的那台实体主机的。“摸得着”指你可以像登录实体主机一样远程登录你的云主机,并且进行几乎任何实体主机一样的操作。而最最重要的,是云主机的费用一般只有实体主机的10%。而且你完全不用担心云主机的性能问题,和实体主机一样,用程序探针可以看到自己主机的配置,不用担心主机商骗你。

那么问题是,现在网络上的云主机供应商已经多如牛毛,我要怎么选?
各家都会找一些枪手,写一些软文,发一些广告,究竟孰优孰劣,和我一样,你也一定迷惑过。 查看详细 »

IIS服务器无法播放MP4/FLV/3GP等媒体格式的问题

这个问题其实和之前遇到过的IIS服务器上无法识别svg/woff/woff2字体一样,都是IIS没有注册MIME类型导致的。解决方法也一样,先确认文件已经上传并且路径配置正确,然后远程登录主机,打开IIS,找到网站,右键属性,打开“HTTP头”,找到右下角的“MIME类型…”,添加对应的MIME类型即可:

.3gp 3gp video/3gpp
.flv application/octet-stream
.mp4 application/octet-stream

IIS服务器无法播放MP4/FLV/3GP等格式的问题 查看详细 »

CentOS6.5裸机安装WordPress建站环境详细流程

之前的Win主机上挂了十几个WordPress网站,客户普遍反映后台操作已经慢到不行。于是我租了一台新的云主机,这次下决心要搞定Linux主机了,同样的配置,Linux跑WordPress肯定要快不少,而且也不会碰到Win主机下的各种怪问题。花了两天时间折腾,终于搞定建站环境,把第一个WordPress网站给搬了过去,也踩了不少的坑,这里记录一下过程,以做备忘。

Linux小白的我先用了CentOS6.4安装建站环境,不过第一次安装就碰到了无法解决的问题,索性换成CentOS6.5重装,最后总算折腾出来了。以下记录的是CentOS6.5下安装建站环境的步骤:

1. 在云主机系统的后台先设个root密码;

2. 下载putty登录工具,登录云主机。此时先输入root账号,接下来会提示输入密码,这个密码要一次性输入完毕,屏幕上不会显示任何*号提示。一旦输错就按回车重新输。 查看详细 »

给网站添加两套以上谷歌分析代码

今天接到一个奇怪的需求,要给一个网站添加两套谷歌分析代码。按照个人对JS的感觉,直接复制粘帖两段谷歌分析给出的官方代码,会牵涉到对象的不规范重复调用,即使页面不报错,也一定会影响分析数据。既然是谷歌的问题,自然只能到谷歌去找答案。结果倒是也很快找到了。

首先,谷歌官方系统生成的统计代码是这样的,其中UA-×××××××-×是你自己的谷歌分析账号:

1
2
3
4
5
6
7
8
9
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
 
  ga('create', 'UA-×××××××-×', 'auto');
  ga('send', 'pageview');
</script>

查看详细 »

WordPress后台定制-通用字段option的添加和调用

在WordPress构建的网站上我们经常要定义一些全站通用的数据,比如联系方式、公司简介等,这些数据可能会在网站的任何地方被调用,比如首页、相关内页、每个页面的头部和底部等。个人喜欢称这样的数据为通用字段。既然叫通用字段,顾名思义就是存在于数据库里的一条可以被随处调用的数据,WordPress的options表提供了这样的便利。需要注意的是通用字段和自定义字段的概念区别,前者保存在options表中,而自定义字段则保存在postmeta表中。options表一般用来保存一些网站全局设置和插件设置,而保存自定义字段的postmeta表则保存的是用于和文章、页面、菜单等关联的字段。

WordPress封装好的操作options表最重要的函数就是 update_option ,本文通过一个最简单的实例介绍通用字段的操作。

首先看下我要定制的这个后台功能截图:
WordPress后台定制-通用字段option的添加和调用 查看详细 »

Gravity Forms表单使用WPML和qTranslate的多语言解决方案

Gravity Forms在国外是一款非常流行的收费表单插件,它的强大之处一两句话是概括不完的,要体会这款插件,可以去他的Demo演示站(demo.gravityforms.com)体会。这个插件帮我不知道省了多少开发时间,所以忍不住再次强力推荐。这样一款优秀插件,本身却并未提供多语言功能。在应用了WPML或qTranslate的多语言网站上,我们可以选择两款“第四方”插件,使多语言插件分别支持Gravity Forms。

首先来说个简单的 – 免费的Qtranslate。原作者停止更新qTranslate后,我们就用qTranslate-X代替。qTranslate是通过这样的语言标签:“<!–en:–><!–:–>”,来实现多语言的。在Gravity Forms表单中使用这样的语言标签,在前台会把这些标签当作文本一起输出。通过插件“qTranslate support for GravityForms”,可以直接让qTranslate-X支持Gravity Forms中填写的语言标签,在前端输出正确的语言文本。 查看详细 »

qTranslate停止更新后,多语言WordPress网站的升级策略

qTranslate是一款很不错的多语言插件,我曾经在很多项目中采用它,还写过博客整理了一些经验(点这里)。但可惜的是作者已停止更新这款插件,在WordPress主程序升级到3.9以及以后版本时,强行继续使用这款插件,会导致编辑器的可视化与文本之间无法正常切换,JS报错。如果你的WP网站离不开qTranslate,那就不能随便升级主程序了。

是时候更换插件了,我把我的十几个还在使用中的多语言WordPress网站项目分为两类,对于商业需求大,自定义文章类型多、自定义字段多的网站,我改用了WPML这款收费插件。其他的自定义文章类型、自定义字段少的网站,我把qTranslate替换成qTranslate-x – 一款后继者在继续开发和维护的qTranslate插件。 查看详细 »

第 4 页,共 10 页« 最新...23456...10...最旧 »