WHMCS模版直接掉调用产品数据

function可以丢header.tpl里面

{php}
function getProducts($gid) {
    // 定义要发送的请求数据
    $postData = array('gid' => $gid);
    // 发送请求并获取结果
    $results = localAPI('GetProducts', $postData, 'admin');
    // 初始化一个数组,用于存储产品信息
    $products = array();
    // 遍历结果,提取所需信息并存储到数组中
    foreach ($results['products']['product'] as $product) {
        $description = $product['description'];
        $products[] = array(
            'stockcontrol' =>  $product['stockcontrol'],
            'stocklevel' => $product['stocklevel'],
            'name' => $product['name'],
            'url' => $product['product_url'],
            'pid' => $product['pid'],
            'desc' => $description,
            'prefix' => $product['pricing']['USD']['prefix'],
            'price' => $product['pricing']['USD']['monthly'],
            'yprice' => $product['pricing']['USD']['annually'],
        );
    }
    // 返回产品信息数组
    return $products;
}

// 调用函数获取产品信息,并传递变量gid作为参数
$getProducts= getProducts("1");
$_smarty_tpl->assign('getProducts', $getProducts);
{/php}

{foreach $Getproduct as $value }
                                <tr>
                                {$value.desc}
                                    <td><span class="price">{$value.prefix}{$value.price}<span>/MRC</span></span> </td>
                                    <td>
{if  isset($value.stocklevel)  &&   $value.stocklevel < 1  }
                                        <button type="button" class="btn btn-warning">Sold Out</button>
{else}
                                        <a href="/cart.php?a=add&pid={$value.pid}" class="btn btn-success">Order</a>
{/if}
                                    </td>
</tr>
{/foreach}

[重写]whmcs nginx rewrite规则

之前发的太拉胯了, 重新写了一份.

针对后台文件夹更名后, 用try_files判断,免去写白名单验证了, 官方爱咋折腾出了问题再说了.

CUSTOMADMINPATH为匹配后台自定义admin目录

location ~ [^/]\.php(/|$) { YOUR php-fpm configure in HERE }
location ~  ^/{ try_files $uri $uri/ /index.php?rp=$uri; }
location ~  ^/(admin|CUSTOMADMINPATH_1|CUSTOMADMINPATH_2)/ { try_files $uri $uri/ index.php?rp=$uri; }

 

原始的弃用了:

location ~ /templates/.*\.tpl$ { return 404; }
location ^~ /vendor/ { return 404; }
location ~  ^/(images/em|invoice|login|password|account|store|download|knowledgebase|announcements|clientarea/ssl-certificates|user/(verification|accounts|profile|password|security|verify)|cart/(domain/renew)|domain/pricing|cart/order|images/kb)/?(.*)$  {  rewrite (.*)  /index.php?rp=$uri last; }
location ~  ^/(.*)/(client|client!\.php|client/(.*)|table/(.*)|search!\.php|search/(.*)|apps|billing|setup|user|services|addons|domains|utilitiesemailmarketer!\.php|utilities/(.*)|logs|help!\.php|help/license|modules|image/(recent|upload)|validation_com/(.*))/?(.*)$ {  try_files $uri $uri/ /$1/index.php?rp=$uri;  }

如果whmcs放在二级目录下则小改一下.

把uri改成rewrite 的正则匹配.

whmcs程序压缩包下载地址

https://s3.amazonaws.com/releases.whmcs.com/v2/pkgs/whmcs-8.4.1-release.1.zip

whmcs的nginx伪静态规则

  location ~ /(announcements|knowledgebase|download|store|password|cart|account|subscription)(.*) { rewrite (.*) /index.php; }
  location ~ /(.*)/(addons|apps|search|domains|help|services|setup|utilities|clients)(.*) { rewrite (.*) /admin/index.php;}

方案一:

if (!-f $request_filename){ rewrite (.*) /index.php;  }

方案二:

 rewrite ^/(announcements|knowledgebase|download|store|password|cart|account|subscription)(.*)$ /index.php;

其他设置:

  location ~* \.(tpl|inc|cfg)$ {  deny all; }
  location ^~ /vendor/ { deny all; }


方案一主要匹配本地没有的就丢index.php上去,  也可以用try_files

方案二主要是直接进行rewrite.


其他配置主要是隐藏一些目录和文件不让访问.


 总的来说用 location来匹配稍微稳妥一些, 例如 /admin/clientsservices.php 会被为静态匹配到, 还是得运用if来判断匹配.

WHMCS投诉报告转发工单模版

流程之一, 模版格式化解决繁琐操作.

你好, [NAME] 

请尽快处理我们收到的以下滥用投诉报告,谢谢。
我们收到了来自您订单的投诉报告。我们要求您尽快调查此事。完成调查后,请回复以下问题的答复:
1)问题的根源是什么?
2)您采取了哪些步骤解决此问题?
3)你采取了哪些措施来防止这种情况再次发生?

由于此活动违反了我们的服务条款,因此我们要求您在接下来的12小时内回复。
如果我们在这段时间内没有收到回复,我们可能会暂时中断您的服务,以防止进一步的恶意活动。

=========== COMPLAINT STARTS HERE ============

投诉内容(模版里面去掉此处)
投诉内容(模版里面去掉此处)
投诉内容(模版里面去掉此处)

=========== COMPLAINT ENDS HERE ==============

在此过程中,请继续保持我们的状态更新,如果您有任何问题,请告知我们。

Kind Regards,
公司名 Support