semh0086 发表于 2022-6-21 04:40:34

求购[1314]分享到微信分享带图片

如题主要是看中他通过微信分享之后别人阅读文章有积分。

插件需要公众号分享接口权限,插件中设置AppID和AppSecret
帖内增加一个分享帖子到微信的功能,点击二维码或下边的“使用教程”会弹出分享到微信的操作方法,引导会员将帖子分享到微信朋友圈。
会员通过微信分享帖子后,会进行加统计和奖励机制,微信首次打开帖子时有引导分享的温馨提示
支持分享带图标,分享标题为帖子标题,描述为帖子内容截取

临时测试地址:http://www.discuz.1314study.com/t/129450.html

主要设置:
二维码展示位置
使用的板块
二维码接口选择
开启奖励模式
被多少人浏览后给予奖励
奖励的积分类型
奖励的积分数量
每日 *** 多奖励次数
只统计会员
奖励后停止统计
帮助页面说明文字
短网址中转

相关说明:


[*]AppID 和 AppSecret 在微信公众号->基本配置中获取
[*]JS接口安全域名 在微信公众号->公众号设置->功能设置(域名需备案)
[*]你的模板或者其他插件带了微信分享功能,需要关闭,由我们插件接管微信分享功能


shangjin 发表于 2023-5-20 23:24:12

感谢分享,正需要

Discuz智能体 发表于 2025-3-17 06:05:09

要实现你描述的功能,可以通过开发一个自定义的Discuz插件来实现。以下是一个基本的开发思路和步骤:

### 1. 插件基本结构
首先,创建一个插件的基本结构,包括插件的目录、配置文件、语言包等。

/source/plugin/wechat_share/
├── plugin_wechat_share.xml
├── wechat_share.class.php
├── template/
│   ├── wechat_share.htm
├── language/
│   ├── lang_wechat_share.php

### 2. 插件配置文件
在 `plugin_wechat_share.xml` 中定义插件的基本信息、设置项等。

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <item id="name"><!]></item>
    <item id="version"><!]></item>
    <item id="description"><!]></item>
    <item id="author"><!]></item>
    <item id="url"><!]></item>
    <item id="settings">
      <item id="appid"><!]></item>
      <item id="appsecret"><!]></item>
      <item id="reward_enabled"><!]></item>
      <item id="reward_points"><!]></item>
      <item id="reward_max"><!]></item>
    </item>
</root>

### 3. 插件主逻辑
在 `wechat_share.class.php` 中编写插件的主要逻辑,包括微信分享接口的调用、奖励机制的实现等。

<?php

if (!defined('IN_DISCUZ')) {
    exit('Access Denied');
}

class plugin_wechat_share {

    public function viewthread_postbottom_output() {
      global $_G;

      // 获取插件配置
      $appid = $_G['setting']['wechat_share_appid'];
      $appsecret = $_G['setting']['wechat_share_appsecret'];

      // 生成微信分享的二维码
      $qrcode_url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" . $this->getAccessToken($appid, $appsecret);
      $post_data = array(
            'action_name' => 'QR_LIMIT_SCENE',
            'action_info' => array(
                'scene' => array(
                  'scene_id' => $_G['tid']
                )
            )
      );
      $qrcode_result = $this->httpRequest($qrcode_url, json_encode($post_data));
      $ticket = json_decode($qrcode_result, true)['ticket'];
      $qrcode_image_url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" . urlencode($ticket);

      // 输出分享按钮和二维码
      $template = template('wechat_share:wechat_share');
      $template->assign('qrcode_image_url', $qrcode_image_url);
      return $template->fetch('wechat_share/wechat_share');
    }

    private function getAccessToken($appid, $appsecret) {
      $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $appsecret;
      $result = $this->httpRequest($url);
      return json_decode($result, true)['access_token'];
    }

    private function httpRequest($url, $data = null) {
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
      curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
      if (!empty($data)) {
            curl_setopt($curl, CURLOPT_POST, 1);
            curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
      }
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
      $output = curl_exec($curl);
      curl_close($curl);
      return $output;
    }
}

### 4. 模板文件
在 `template/wechat_share.htm` 中定义分享按钮和二维码的展示方式。

<div class="wechat_share">
    <p>分享到微信:</p>
    <img src="{$qrcode_image_url}" alt="微信分享二维码">
    <p>使用教程:点击二维码,长按识别后分享到朋友圈。</p>
</div>

### 5. 奖励机制
在插件中实现奖励机制,可以通过在用户分享后记录分享次数,并在用户访问帖子时给予积分奖励。

public function viewthread_postbottom_output() {
    global $_G;

    // 检查是否已经分享过
    if (!isset($_G['cookie']['wechat_shared_' . $_G['tid']])) {
      // 给予积分奖励
      $reward_points = $_G['setting']['wechat_share_reward_points'];
      updatecreditbyaction('wechat_share', $_G['uid'], array(), '', $reward_points);

      // 设置cookie,防止重复奖励
      dsetcookie('wechat_shared_' . $_G['tid'], 1, 86400);
    }

    // 其他逻辑...
}

### 6. 插件安装与配置
在Discuz后台安装插件后,进入插件设置页面,填写微信公众号的 `AppID` 和 `AppSecret`,并配置奖励机制的相关参数。

### 7. 测试与调试
在测试环境中测试插件的功能,确保分享、二维码生成、奖励机制等功能正常工作。

### 8. 发布与维护
将插件打包发布到DZ插件网(https://www.dz-x.net/),并根据用户反馈进行维护和更新。

### 注意事项
- 确保微信公众号的 `JS接口安全域名` 已经正确配置。
- 如果网站使用了其他微信分享插件,需要关闭或卸载这些插件,以避免冲突。
- 插件的开发和测试过程中,建议在本地或测试环境中进行,避免影响线上网站的正常运行。

通过以上步骤,你可以实现一个功能完善的微信分享插件,满足用户分享帖子到微信并获取积分奖励的需求。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 求购[1314]分享到微信分享带图片