组织结构是生产力。诚然。。。

如何优雅的学习WHMCS主题


  1. WHMCS 简介
  2. WHMCS 模板目录文件说明
  3. 扒下别人的 WHMCS 主题
    1. 开始工作
    2. wget 脚本
    3. css, js和其他
    4. 查缺补漏
  4. 扒下别人的 WHMCS 购物车主题
  5. 扒皮原理描述
  6. 参考模板

WHMCS 简介

WHMCS 是一套国外流行的域名主机管理软件,跟国内众所周知的 IDCSystem 一样,主要在用户管理、财务管理、域名接口、服务器管理面板接口等方面设计的非常人性化。全面支持域名注册管理解析,主机开通管理,VPS 开通管理和服务器管理的一站式管理软件,是IDC行业主机商所钟爱的财务系统之一,目前已经被越来越多的中国站长们所熟悉和了解。

这段时间有机会接触 WHMCS,本以为很麻烦,但当你熟练掌握了一套程序模板的制作方法后,再看其他程序一下就可以抓住本质。WHMCS 模板同 WordPress 模板制作,最重要的就是模板标签调用,这些标签不需要记,每次使用都可以像查字典一样去找对应的即可,然后把标签放置在静态页面中替换删减。

WHMCS 程序是收费程序,国内代理一般200多元就可以购买,但 IDC 行业一般主机商不会省这个钱。当然国人的力量是无穷的!现在百度搜 x版的 WHMCS 也可以拿来练手。

WHMCS 模板目录文件说明

下面是WHMCS程序常用到的模板文件,这里记录下来以备使用:

常规模板(/templates/目录):

  • header.tpl – 公用头部
  • footer.tpl – 公用页脚
  • homepage.tpl – 网站首页
  • announcements.tpl – 公告中心
  • viewannouncement.tpl – 公告内容页
  • knowledgebase.tpl – 帮助中心首页
  • knowledgebasecat.tpl – 帮助分类页
  • knowledgebasearticle.tpl – 帮助文章页
  • downloads.tpl – 资源中心页面,列出资源分类
  • downloadscat.tpl – 资源分类页面,列出资源
  • serverstatus.tpl – 服务器状态
  • domainchecker.tpl – 域名注册(单个域名搜索)
  • bulkdomainchecker.tpl – 批量域名搜索
  • bulkdomaintransfer.tpl – 批量域名转入
  • clientregister.tpl – 会员注册
  • login.tpl – 登录页面,包括会员中心页面
  • logout.tpl – 注销页面
  • pwreset.tpl – 重置密码页面
  • pwresetvalidation.tpl – 重置密码验证页面
  • clientareahome.tpl – 会员中心登录后首页
  • clientareadetails.tpl – 我的资料
  • clientareacontacts.tpl – 联系人子账户
  • clientareaaddcontact.tpl – 新增联系人
  • clientareachangepw.tpl – 修改密码
  • clientareaproducts.tpl – 我的产品页面
  • clientareaproductdetails.tpl – 产品详情页面
  • upgrade.tpl – 产品升级页面
  • upgradesummary.tpl – 产品升级页面2
  • clientareadomains.tpl – 我的域名界面
  • clientareadomaindetails.tpl – 域名详情页
  • clientareadomaindns.tpl – 域名解析界面
  • clientareadomaincontactinfo.tpl – 域名注册人信息
  • clientareadomainregisterns.tpl – 注册域名服务器
  • clientareadomainrenew.tpl – 域名续费
  • clientareainvoices.tpl – 账单列表
  • viewinvoice.tpl – 查看账单详情
  • supportticketslist.tpl – 支持单列表
  • supportticketsubmit-stepone.tpl – 支持单部门选择
  • supportticketsubmit-steptwo.tpl – 提交支持单页面
  • supportticketsubmit-confirm.tpl – 支持单提交成功
  • viewticket.tpl -查看TK
  • affiliatessignup.tpl – 推介赚钱激活帐号页面
  • affiliates.tpl – 推介赚钱页面
  • banned.tpl – IP被禁止之后的警告页面
  • forwardpage.tpl – 选择支付方式之后付款跳转页面
  • masspay.tpl – 批量付款页面
  • clientareaaddfunds.tpl – 账户充值页面

订单模板(/templates/orderforms/目录):

  • products.tpl- 列出产品分类和产品
  • adddomain.tpl –域名注册订单的第一步
  • addons.tpl – 列出用户可以在登陆时为现有的主机方案订购的插件
  • domainrenewals.tpl – 列出客户账户中的域名,允许提前订购备件部分。
  • configureproductdomain.tpl – 产品的域名选择
  • domainoptions.tpl –模板用来显示域名可用性检查结果。
  • configproduct.tpl – 产品添加到购物车之前设置产品的账单周期、可设置选项、客户区域
  • configuredomains.tpl – 选择域名插件,完成客户区域的要求和客户域名服务器
  • ordersummary.tpl – 用于在订购过程中显示购物车目录和产品总结
  • viewcart.tpl – 显示购物车目录和结账过程
  • login.tpl – 用于现有用户的登陆
  • complete.tpl – 此页面在结账过程的最后出现

有了这些文件目录,再研究几个模板标签,或者去 WHMCS官网 看下教程,就距离WHMCS模板制作的高手不远了。

扒下别人的 WHMCS 主题

开始工作

首先,建议使用 Chrome 来辅助你的工作,因为 Chrome 查看源码十分方便。 假设一个网站叫 www.fuckwhmcs.com ,打开 Chrome 查看目标网站的源码,或在网站前加上 view-source: 然后找到类似这样的css或者js。

1
2
3
<link href="/templates/NeWorld-New/assets/css/all.min.css?4d3362" rel="stylesheet">
<link href="/templates/NeWorld-New/assets/css/main.css?1" rel="stylesheet">
<link href="/templates/NeWorld-New/assets/css/custom.css?70" rel="stylesheet">

通过解析这段可以知道这个 WHMCS 使用的模版名字叫 NeWorld-New 。

需要确认对方的网站有没有做防护,如果目标网站没有使用 CloudFlare 你就可以愉快的祭出脚本了。

wget 脚本

我们假设要扒的主题叫 Sample (请注意,网站应该是类似 www.fuckwhmcs.com/templates/Sample 最后斜杠必须去除。 )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/bin/bash
read -p "请输入网站: " website
echo -e "\n"
echo "网站为: $website"
wget "$website/3dsecure.tpl"
wget "$website/affiliates.tpl"
wget "$website/affiliatessignup.tpl"
wget "$website/announcements.tpl"
wget "$website/banned.tpl"
wget "$website/bulkdomainmanagement.tpl"
wget "$website/clientareaaddcontact.tpl"
wget "$website/clientareaaddfunds.tpl"
wget "$website/clientareacancelrequest.tpl"
wget "$website/clientareachangepw.tpl"
wget "$website/clientareacontacts.tpl"
wget "$website/clientareacreditcard.tpl"
wget "$website/clientareadetails.tpl"
wget "$website/clientareadomainaddons.tpl"
wget "$website/clientareadomaincontactinfo.tpl"
wget "$website/clientareadomaindetails.tpl"
wget "$website/clientareadomaindns.tpl"
wget "$website/clientareadomainemailforwarding.tpl"
wget "$website/clientareadomaingetepp.tpl"
wget "$website/clientareadomainregisterns.tpl"
wget "$website/clientareadomains.tpl"
wget "$website/clientareaemails.tpl"
wget "$website/clientareahome.tpl"
wget "$website/clientareainvoices.tpl"
wget "$website/clientareaproductdetails.tpl"
wget "$website/clientareaproducts.tpl"
wget "$website/clientareaquotes.tpl"
wget "$website/clientareasecurity.tpl"
wget "$website/clientregister.tpl"
wget "$website/configuressl-complete.tpl"
wget "$website/configuressl-stepone.tpl"
wget "$website/configuressl-steptwo.tpl"
wget "$website/contact.tpl"
wget "$website/contactaccessdenied.tpl"
wget "$website/creditcard.tpl"
wget "$website/downloaddenied.tpl"
wget "$website/downloads.tpl"
wget "$website/downloadscat.tpl"
wget "$website/footer.tpl"
wget "$website/forwardpage.tpl"
wget "$website/header.tpl"
wget "$website/homepage.tpl"
wget "$website/index.php"
wget "$website/invoicepdf.tpl"
wget "$website/knowledgebase.tpl"
wget "$website/knowledgebasearticle.tpl"
wget "$website/knowledgebasecat.tpl"
wget "$website/login.tpl"
wget "$website/logintwofa.tpl"
wget "$website/logout.tpl"
wget "$website/managessl.tpl"
wget "$website/markdown-guide.tpl"
wget "$website/masspay.tpl"
wget "$website/pwreset.tpl"
wget "$website/pwresetvalidation.tpl"
wget "$website/quotepdf.tpl"
wget "$website/serverstatus.tpl"
wget "$website/supportticketslist.tpl"
wget "$website/supportticketsubmit-confirm.tpl"
wget "$website/supportticketsubmit-customfields.tpl"
wget "$website/supportticketsubmit-kbsuggestions.tpl"
wget "$website/supportticketsubmit-stepone.tpl"
wget "$website/supportticketsubmit-steptwo.tpl"
wget "$website/theme.yaml"
wget "$website/ticketfeedback.tpl"
wget "$website/twitterfeed.tpl"
wget "$website/unsubscribe.tpl"
wget "$website/upgrade.tpl"
wget "$website/upgradesummary.tpl"
wget "$website/viewannouncement.tpl"
wget "$website/viewemail.tpl"
wget "$website/viewinvoice.tpl"
wget "$website/viewquote.tpl"
wget "$website/viewticket.tpl"
wget "$website/whois.tpl"
echo "主文件下载完毕,开始下载其他文件。"
mkdir includes
cd includes
wget "$website/includes/alert.tpl"
wget "$website/includes/breadcrumb.tpl"
wget "$website/includes/captcha.tpl"
wget "$website/includes/head.tpl"
wget "$website/includes/index.php"
wget "$website/includes/linkedaccounts.tpl"
wget "$website/includes/modal.tpl"
wget "$website/includes/navbar.tpl"
wget "$website/includes/pageheader.tpl"
wget "$website/includes/panel.tpl"
wget "$website/includes/pwstrength.tpl"
wget "$website/includes/sidebar.tpl"
wget "$website/includes/subheader.tpl"
wget "$website/includes/tablelist.tpl"
wget "$website/includes/verifyemail.tpl"
echo "全部下载完毕。"

下载脚本:备用网盘下载

新建一个文件夹将 wget 脚本放进文件夹里,然后 sh Whmcs.sh 运行脚本。脚本跑完后,你会惊喜的发现,文件出现在了文件夹里面。接下来就要开始进行css和js的查错以及文件的查缺补漏了。

css, js和其他

在Chrome中直接将网页另存为到电脑可以减少很多的工作。将扒到的主题上传到网站,然后打开Chrome的开发者工具。

1
2
Failed to load resource: the server responded with a status of 404 (Not Found)
Scripts.min.js

找到类似这样的404错误,可以看见文件的路径。将你另存为的网页中的对应内容上传即可。 如果没有,打开原网站的对应路径下载即可。

查缺补漏

测试你所有能打开的链接,如果出现了异常,前往WHMCS的后台查看错误日志。如果是tpl缺失,比如includes/faindex/faindex.tpl,那么就前往 www.fuckwhmcs.com/templates/Sample/includes/faindex/faindex.tpl 不出意外文件会自动下载下来,之后上传到对应路径即可。

到此主题基本就扒完了。虽然这不是好行为,但是确实很多站长疏于防护。在此建议还是一定要做好主题的防护,不然花好多钱买的主题就这样被别人扒走总是心疼的啊(((

扒下别人的 WHMCS 购物车主题

过程同上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash
read -p "请输入网站: " website
echo -e "\n"
echo "网站为: $website"
wget "$website/adddomain.tpl"
wget "$website/addons.tpl"
wget "$website/checkout.tpl"
wget "$website/common.tpl"
wget "$website/complete.tpl"
wget "$website/configuredomains.tpl"
wget "$website/configureproduct.tpl"
wget "$website/configureproductdomain.tpl"
wget "$website/domainoptions.tpl"
wget "$website/domainregister.tpl"
wget "$website/domainrenewals.tpl"
wget "$website/domaintransfer.tpl"
wget "$website/error.tpl"
wget "$website/fraudcheck.tpl"
wget "$website/index.php"
wget "$website/linkedaccounts.tpl"
wget "$website/ordersummary.tpl"
wget "$website/products.tpl"
wget "$website/sidebar-categories.tpl"
wget "$website/sidebar-categories-collapsed.tpl"
wget "$website/theme.yaml"
wget "$website/thumbnail.gif"
wget "$website/viewcart.tpl"
echo "全部下载完毕。"

扒皮原理描述

tpl 文件,是用 smarty 和 html 编写的模板主文件。

WHMCS 的主题有个优点也是死穴,是任何一个模版拿到的值一样。这也就说明,任何一个模版,都是基于 WHMCS 本身的值来的,就算 hook 也一样。那么既然都基于 WHMCS 本身的值,那就带来一个突破点,可以通过模版的输出反推出模版的tpl文件。所有主题都逃不开 header 和 footer ,产品列表什么的也逃不开 tablelist ,验证邮件逃不开 verifyemail。而在反推过程中最难的不过也就这两个。通过阅读网页源码,找出明显是遍历得到的部分,即可反推出如何遍历进而得到整个模版。

参考模板

附上几个 WHMCS 模板作为学习参考:

https://app.box.com/s/56akq63xn03dk1tsa4ls7dvz4fult890

页阅读量:  ・  站访问量:  ・  站访客数: