如何给Typecho博客Joe主题添加打赏功能

如何给Typecho博客Joe主题添加打赏功能

小菜狗
2023-05-25 / 1 评论 / 313 阅读 / 正在检测是否收录...

成品展示

教程步骤

  1. 新增一个php文件,用于以后新增自定义设置,文件名: custom.php ;文件路径: usr/themes/Joe-master/public添加代码:

    <?php 
    
     // 收款设置
     $ZNPaySet = new Typecho_Widget_Helper_Form_Element_Select(
         'ZNPaySet',
         array(
             'on' => '开启(默认)',
             'off' => '关闭',
         ),
         'on',
         '是否启用小菜狗打赏功能',
         '介绍:开启后,文章底部展示打赏功能 <br>
         详情可查看 <a href="https://www.hixcg.com/archives/96/">https://www.hixcg.com/archives/96/</a>
         '
     );
     $ZNPaySet->setAttribute('class', 'joe_content joe_custom');
     $form->addInput($ZNPaySet->multiMode());
     
     $ZNAlipay = new Typecho_Widget_Helper_Form_Element_Text(
         'ZNAlipay',
         NULL,
         NULL,
         '支付宝收款码',
         '介绍:填写此处,打赏界面展示支付宝收款码,图片地址 <br />'
     );
     $ZNAlipay->setAttribute('class', 'joe_content joe_custom');
     $form->addInput($ZNAlipay->multiMode());
     
     $ZNWeChat = new Typecho_Widget_Helper_Form_Element_Text(
         'ZNWeChat',
         NULL,
         NULL,
         '微信收款码',
         '介绍:填写此处,微信界面展示微信收款码,图片地址 <br />'
     );
     $ZNWeChat->setAttribute('class', 'joe_content joe_custom');
     $form->addInput($ZNWeChat->multiMode());
     
     $ZNQqPay = new Typecho_Widget_Helper_Form_Element_Text(
         'ZNQqPay',
         NULL,
         NULL,
         'QQ收款码',
         '介绍:填写此处,QQ界面展示QQ收款码,图片地址 <br />'
     );
     $ZNQqPay->setAttribute('class', 'joe_content joe_custom');
     $form->addInput($ZNQqPay->multiMode());
    ?>
  2. 修改 handle.php 文件,底部新增代码,放在最后一行上面,文件路径: usr/themes/Joe-master/public

    <style>
     /*弹出*/
     .footer_flex { width: 42px; height: 42px; background-color: #f56c6c; border-radius: 50%; cursor: pointer; position: relative; z-index: 10; display: flex; justify-content: center; align-items: center; color:#909399; font-size:12px}
     .footer_flex:hover { background-color: #409eff; }
     /*top*/
     .footer_flex:hover .flex-footer { display: block; }
     .footer_flex .flex-footer { box-shadow: 0px 0px 5px 0px #409eff; border-radius: 8px; width: 156px; height: 166px; position: absolute; left: -52px; top: -175px; text-align: center; padding-top: 15px; background: #fff; display: none; }
     .flex-footer input{vertical-align:middle; margin-bottom:3px; *margin-bottom:3px;}
     </style>
     <script language="javascript" type="text/javascript">
     function zfb(){
      var obj=document.getElementById("ewm");
      obj.src=`<?php $this->options->ZNAlipay() ?>`;
     };
     function wx(){
      var obj=document.getElementById("ewm");
      obj.src=`<?php $this->options->ZNWeChat() ?>`;
     };
     function qq(){
      var obj=document.getElementById("ewm");
      obj.src=`<?php $this->options->ZNQqPay() ?>`;
     };
     </script> 
     <div style="text-align: center; margin-left:30px; <?php if(Helper::options()->ZNPaySet !== 'on') echo 'display:none;' ?>">
         <div class="footer_flex">
             <img src="https://cdn.jsdelivr.net/gh/aill66/cdn/shang.png" width="20px" height="20px">
             <div class="flex-footer">
             <img id="ewm" src="<?php $this->options->ZNAlipay() ?>" width="120px" height="120px">
             <div style="margin-top:5px;">
             <label><input name="pay" type="radio" value="wx" checked="checked" onclick="wx()">微信</label>
             <label style="margin-left:3px; display:block-inline"><input name="pay" type="radio" value="zfb" onclick="zfb()" checked>支付宝</label>
             <label style="margin-left:3px;"><input name="pay" type="radio" value="qq" onclick="qq()">QQ</label>
             </div>
             <div style="height:40px; background:rgba(0,0,0,0);"></div>
             </div>
         </div>
         <p style="margin-top:5px; color:#909399; font-size:12px">打赏</p>
     </div>
  3. 修改 functions.php 文件,加入打赏设置菜单和底部引入新建的php文件,文件路径: usr/themes/Joe-master

    <li class="item" data-current="joe_custom">自定义设置</li>
    // 收款设置
    require_once("public/custom.php");


  4. 为打赏按钮增加跳动特效,将以下代码放在主题的全局设置-自定义CSS里面

    .footer_flex {
     animation: star 0.5s ease-in-out infinite alternate;
    }
    @keyframes star {
     from {
         transform: scale(1);
     }
     to {
         transform: scale(1.1);
     }
    }
23

打赏

评论 (1)

取消
  1. 头像
    大千
    Windows 10 · Google Chrome

    打赏的二维码是怎么固定住的?我选择微信后,图片就不见了,还需要我再一次把鼠标移到打赏的位置上,微信二维码图片才能再次出现

    回复