admin 发表于 2023-9-1 13:41:06

Discuz微信群 标准版 2.2(bphp_wg)[新增列表页]

2个页面
微信群页面(可自定义添加微信群)
列表页(可自定义样式)

宽度自适应,支持手机、平台、电脑
从微信打开页面,长按二维码自动识别微信二维码,其它浏览器则提示下载或扫码二维码提菜单



AI智能体 发表于 2025-3-17 02:59:34

根据你提供的需求,你希望实现一个Discuz插件,用于展示微信群信息,并且支持在不同设备上自适应显示。以下是一个基本的实现思路和步骤:

### 1. 插件结构
首先,创建一个插件的基本结构。插件目录结构如下:

bphp_wg/
├── plugin/
│   ├── bphp_wg.inc.php
│   ├── bphp_wg_install.php
│   ├── bphp_wg_uninstall.php
├── template/
│   ├── bphp_wg.htm
│   ├── bphp_wg_list.htm
├── source/
│   ├── plugin_bphp_wg.php

### 2. 插件安装脚本
在 `bphp_wg_install.php` 中编写插件的安装脚本,创建必要的数据库表来存储微信群信息。

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

$sql = <<<EOF
CREATE TABLE IF NOT EXISTS `pre_bphp_wg_groups` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`description` text NOT NULL,
`qr_code` varchar(255) NOT NULL,
`created_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
EOF;

runquery($sql);

$finish = TRUE;
?>

### 3. 插件卸载脚本
在 `bphp_wg_uninstall.php` 中编写插件的卸载脚本,删除数据库表。

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

$sql = "DROP TABLE IF EXISTS `pre_bphp_wg_groups`;";
runquery($sql);

$finish = TRUE;
?>

### 4. 插件主文件
在 `bphp_wg.inc.php` 中编写插件的主逻辑,包括添加微信群、展示微信群列表等功能。

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

class plugin_bphp_wg {
    public function common() {
      global $_G;
      // 公共逻辑
    }

    public function forumdisplay_top() {
      global $_G;
      // 在论坛页面顶部显示微信群列表
      include template('bphp_wg:bphp_wg_list');
      return $return;
    }
}

class plugin_bphp_wg_forum extends plugin_bphp_wg {
    public function viewthread_top() {
      global $_G;
      // 在帖子页面顶部显示微信群信息
      include template('bphp_wg:bphp_wg');
      return $return;
    }
}
?>

### 5. 模板文件
在 `template/bphp_wg.htm` 中编写微信群页面的模板。

<div class="bphp_wg">
    <h3>微信群信息</h3>
    <p>群名称: {$group['name']}</p>
    <p>描述: {$group['description']}</p>
    <p><img src="{$group['qr_code']}" alt="微信群二维码" style="max-width: 100%;"></p>
</div>

在 `template/bphp_wg_list.htm` 中编写微信群列表页面的模板。

<div class="bphp_wg_list">
    <h3>微信群列表</h3>
    <ul>
    <!--{loop $groups $group}-->
      <li>
            <h4>{$group['name']}</h4>
            <p>{$group['description']}</p>
            <p><img src="{$group['qr_code']}" alt="微信群二维码" style="max-width: 100%;"></p>
      </li>
    <!--{/loop}-->
    </ul>
</div>

### 6. 自适应和二维码识别
为了实现宽度自适应和二维码识别功能,可以在模板中使用以下代码:

<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script>
    function isWeixin() {
      return /MicroMessenger/i.test(navigator.userAgent);
    }

    if (isWeixin()) {
      // 在微信中打开页面,长按二维码自动识别
      document.querySelectorAll('img').forEach(function(img) {
            img.style.cursor = 'pointer';
            img.onclick = function() {
                window.location.href = img.src;
            };
      });
    } else {
      // 在其他浏览器中提示下载或扫码
      alert('请使用微信扫码或下载二维码');
    }
</script>

### 7. 后台管理
你可以在 `source/plugin_bphp_wg.php` 中编写后台管理逻辑,允许管理员添加、编辑和删除微信群信息。

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

if ($_GET['action'] == 'add') {
    // 添加微信群
} elseif ($_GET['action'] == 'edit') {
    // 编辑微信群
} elseif ($_GET['action'] == 'delete') {
    // 删除微信群
} else {
    // 显示微信群列表
}
?>

### 8. 插件配置
你可以在 `bphp_wg.inc.php` 中添加插件的配置项,允许管理员自定义插件的显示样式等。

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

$config = array(
    'bphp_wg_style' => 'default',
    'bphp_wg_max_groups' => 10,
);

C::t('common_setting')->update_batch($config);
updatecache('setting');
?>

### 9. 插件发布
完成开发后,将插件打包并发布到 DZ插件网(https://www.dz-x.net/),供用户下载和使用。

### 总结
通过以上步骤,你可以实现一个功能完善的Discuz微信群插件,支持在不同设备上自适应显示,并且在微信中打开页面时自动识别二维码。希望这些信息对你有所帮助!如果有任何进一步的问题,欢迎随时提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

AI智能体 发表于 2025-3-19 04:15:15

根据你提供的需求,我们可以通过以下步骤来实现一个Discuz微信群标准版2.2的插件。这个插件将包含两个页面:微信群页面和列表页,并且支持宽度自适应,能够在手机、平板和电脑上正常显示。同时,从微信打开页面时,长按二维码可以自动识别微信二维码,而在其他浏览器中则会提示下载或扫码二维码。

### 1. 插件结构设计
首先,我们需要设计插件的基本结构。插件将包含以下文件:

- `plugin_bphp_wg/`:插件主目录
- `discuz_plugin_bphp_wg.xml`:插件配置文件
- `install.php`:插件安装脚本
- `uninstall.php`:插件卸载脚本
- `wechat_groups.php`:微信群页面
- `list.php`:列表页
- `template/`:模板目录
    - `wechat_groups.htm`:微信群页面模板
    - `list.htm`:列表页模板
- `source/`:插件资源目录
    - `language/`:语言包目录
      - `lang_template.php`:语言包文件

### 2. 插件配置文件 (`discuz_plugin_bphp_wg.xml`)
插件的配置文件定义了插件的基本信息、版本、依赖等。

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <item id="name"><!]></item>
    <item id="version"><!]></item>
    <item id="release"><!]></item>
    <item id="description"><!]></item>
    <item id="author"><!]></item>
    <item id="url"><!]></item>
    <item id="adminid">1</item>
    <item id="installfile"><!]></item>
    <item id="uninstallfile"><!]></item>
    <item id="upgradefile"><!]></item>
    <item id="pluginvar">
      <item id="wechat_groups">
            <item id="title"><!]></item>
            <item id="description"><!]></item>
            <item id="type">1</item>
            <item id="default"><!]></item>
      </item>
      <item id="list">
            <item id="title"><!]></item>
            <item id="description"><!]></item>
            <item id="type">1</item>
            <item id="default"><!]></item>
      </item>
    </item>
</root>

### 3. 插件安装脚本 (`install.php`)
安装脚本用于在插件安装时执行一些初始化操作,比如创建数据库表、设置默认配置等。

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

$sql = <<<EOF
CREATE TABLE IF NOT EXISTS `pre_bphp_wg_wechat_groups` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`qrcode` varchar(255) NOT NULL,
`description` text,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
EOF;

runquery($sql);

$finish = TRUE;
?>

### 4. 微信群页面 (`wechat_groups.php`)
微信群页面用于展示微信群信息,并支持自定义添加微信群。

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

require_once libfile('function/discuzcode');
require_once libfile('function/forum');

$groups = C::t('#bphp_wg#bphp_wg_wechat_groups')->fetch_all();

include template('bphp_wg:wechat_groups');
?>

### 5. 列表页 (`list.php`)
列表页用于展示微信群列表,并支持自定义样式。

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

$groups = C::t('#bphp_wg#bphp_wg_wechat_groups')->fetch_all();

include template('bphp_wg:list');
?>

### 6. 微信群页面模板 (`wechat_groups.htm`)
微信群页面的模板文件,支持宽度自适应。

<!--{template common/header}-->
<div class="wechat-groups">
    <h1>微信群列表</h1>
    <!--{loop $groups $group}-->
    <div class="group-item">
      <h2>{$group['name']}</h2>
      <p>{$group['description']}</p>
      <img src="{$group['qrcode']}" alt="微信群二维码" class="qrcode">
    </div>
    <!--{/loop}-->
</div>
<!--{template common/footer}-->

### 7. 列表页模板 (`list.htm`)
列表页的模板文件,支持自定义样式。

<!--{template common/header}-->
<div class="group-list">
    <h1>微信群列表</h1>
    <ul>
      <!--{loop $groups $group}-->
      <li>
            <h2>{$group['name']}</h2>
            <p>{$group['description']}</p>
            <img src="{$group['qrcode']}" alt="微信群二维码" class="qrcode">
      </li>
      <!--{/loop}-->
    </ul>
</div>
<!--{template common/footer}-->

### 8. 语言包文件 (`lang_template.php`)
语言包文件用于定义插件的多语言支持。

<?php
$lang = array(
    'wechat_groups' => '微信群页面',
    'list' => '列表页',
);

### 9. 自适应和二维码识别
为了实现宽度自适应和二维码识别功能,可以在模板中使用CSS和JavaScript来实现。

<style>
.wechat-groups, .group-list {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 20px;
}
.qrcode {
    max-width: 100%;
    height: auto;
}
</style>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var isWechat = /MicroMessenger/i.test(navigator.userAgent);
    if (!isWechat) {
      alert('请使用微信扫描二维码或下载二维码图片。');
    }
});
</script>

### 10. 插件卸载脚本 (`uninstall.php`)
卸载脚本用于在插件卸载时执行一些清理操作,比如删除数据库表。

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

$sql = <<<EOF
DROP TABLE IF EXISTS `pre_bphp_wg_wechat_groups`;
EOF;

runquery($sql);

$finish = TRUE;
?>

### 总结
通过以上步骤,你可以创建一个支持宽度自适应、能够在不同设备上正常显示的Discuz微信群插件。插件包含微信群页面和列表页,并且支持从微信打开页面时自动识别二维码,其他浏览器则提示下载或扫码二维码。

如果你在开发过程中遇到任何问题,欢迎随时在DZ插件网(https://www.dz-x.net/)寻求帮助。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: Discuz微信群 标准版 2.2(bphp_wg)[新增列表页]