多插件绑定二级域名 商业版 1.0(tpgao_pluginbddomain)
插件绑定二级域名是一款可以将插件的默认访问地址:plugin.php?id=xxx:xxx地址绑定到二级域名上xxx.yyy.com,成功绑定后,可以使用xxx.yyy.com这样的域名,直接访问绑定插件的插件,这样做的好处是,可以有效的缩短域名,提升形象,同时,可以有利于SEO;比如:我站点的http://wsq.dxtm.net/plugin.php?id=tpgao_yaoyiyaorace:qrcode插件,绑定后,通过http://t.jianpanke.com就可以访问了,这对于SEO及用户体验来说,都是非常有价值的;
使用条件:
1、待绑定的二级域名,必须能访问您的社区;
插件特点
1、后台设置绑定域名,可设置多个;
2、每个插件均可对应一个二级域名;
3、利用缓存信息,将插件绑定到二级域名,加快站点访问速度;
4、无须作rewrite规则等操作;
5、其它功能,可以使用体会!
要实现多插件绑定二级域名的功能,您可以使用Discuz的插件机制来实现。以下是一个基本的实现思路和步骤:
### 1. 创建插件
首先,您需要创建一个新的插件。在Discuz的插件目录下创建一个新的文件夹,例如`tpgao_pluginbddomain`,并在其中创建以下文件:
- `plugin_tpgao_pluginbddomain.php`:插件的主文件。
- `discuz_plugin_tpgao_pluginbddomain.xml`:插件的配置文件。
### 2. 编写插件配置文件
在`discuz_plugin_tpgao_pluginbddomain.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="adminid">1</item>
<item id="installfile"><!]></item>
<item id="uninstallfile"><!]></item>
</root>
### 3. 编写插件主文件
在`plugin_tpgao_pluginbddomain.php`中编写插件的主要逻辑:
<?php
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
class plugin_tpgao_pluginbddomain {
public function global_header() {
global $_G;
$domain = $_SERVER['HTTP_HOST'];
$plugin_id = 'tpgao_yaoyiyaorace:qrcode'; // 示例插件ID
// 获取绑定的二级域名
$bind_domain = C::t('common_setting')->fetch('tpgao_pluginbddomain_' . $plugin_id);
if ($bind_domain && $domain == $bind_domain) {
// 重定向到插件的实际URL
$url = $_G['siteurl'] . 'plugin.php?id=' . $plugin_id;
header("Location: $url");
exit;
}
}
}
class plugin_tpgao_pluginbddomain_admin extends plugin_tpgao_pluginbddomain {
public function config() {
global $_G;
if (submitcheck('submit')) {
$plugin_id = $_GET['id'];
$bind_domain = $_POST['bind_domain'];
// 保存绑定的二级域名
C::t('common_setting')->update('tpgao_pluginbddomain_' . $plugin_id, $bind_domain);
updatecache('setting');
cpmsg('setting_update_success', 'action=plugins&operation=config&identifier=tpgao_pluginbddomain&pmod=config', 'succeed');
}
$plugin_id = $_GET['id'];
$bind_domain = C::t('common_setting')->fetch('tpgao_pluginbddomain_' . $plugin_id);
include template('tpgao_pluginbddomain:config');
}
}
### 4. 编写插件模板文件
在`template`目录下创建一个新的文件夹`tpgao_pluginbddomain`,并在其中创建`config.htm`文件:
<form method="post" action="admin.php?action=plugins&operation=config&identifier=tpgao_pluginbddomain&pmod=config">
<input type="hidden" name="formhash" value="{FORMHASH}">
<table class="tb tb2">
<tr>
<th colspan="2" class="partition">绑定二级域名</th>
</tr>
<tr>
<td class="td27">插件ID</td>
<td><input type="text" name="plugin_id" value="{$_GET['id']}" readonly></td>
</tr>
<tr>
<td class="td27">绑定域名</td>
<td><input type="text" name="bind_domain" value="{$bind_domain}"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" value="提交" class="btn"></td>
</tr>
</table>
</form>
### 5. 安装和卸载脚本
在插件目录下创建`install.php`和`uninstall.php`文件,用于插件的安装和卸载:
`install.php`:
<?php
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
$sql = <<<EOF
CREATE TABLE IF NOT EXISTS `pre_tpgao_pluginbddomain` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`plugin_id` varchar(255) NOT NULL,
`bind_domain` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
EOF;
runquery($sql);
$finish = TRUE;
`uninstall.php`:
<?php
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
$sql = <<<EOF
DROP TABLE IF EXISTS `pre_tpgao_pluginbddomain`;
EOF;
runquery($sql);
$finish = TRUE;
### 6. 使用插件
安装插件后,您可以在Discuz后台的插件管理页面中找到该插件,并配置每个插件对应的二级域名。配置完成后,访问绑定的二级域名将会自动重定向到对应的插件页面。
### 7. 注意事项
- 确保绑定的二级域名已经正确解析到您的站点。
- 如果需要绑定多个插件,可以在后台为每个插件分别设置绑定的二级域名。
- 该插件使用了缓存机制来加快访问速度,因此在修改绑定域名后,可能需要清除缓存才能生效。
通过以上步骤,您可以实现多插件绑定二级域名的功能,从而提升站点的SEO效果和用户体验。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 要实现多插件绑定二级域名的功能,您可以使用Discuz的插件开发机制来实现。以下是一个基本的实现思路和步骤:
### 1. 创建插件
首先,您需要创建一个新的插件。在Discuz的插件目录下创建一个新的文件夹,例如 `tpgao_pluginbddomain`,并在其中创建 `plugin.xml` 文件来定义插件的基本信息。
<?xml version="1.0" encoding="UTF-8"?>
<root>
<item id="tpgao_pluginbddomain">
<name>多插件绑定二级域名</name>
<version>1.0</version>
<description>将插件的默认访问地址绑定到二级域名上</description>
<author>tpgao</author>
<url>https://www.dz-x.net/</url>
<install><!]></install>
<uninstall><!]></uninstall>
<upgrade><!]></upgrade>
</item>
</root>
### 2. 创建插件主文件
在插件目录下创建 `plugin_tpgao_pluginbddomain.php` 文件,这是插件的主文件。
<?php
if(!defined('IN_DISCUZ')) {
exit('Access Denied');
}
class plugin_tpgao_pluginbddomain {
public function global_header() {
global $_G;
$domain = $_SERVER['HTTP_HOST'];
$plugin_id = 'tpgao_yaoyiyaorace:qrcode'; // 示例插件ID
$bind_domain = 't.jianpanke.com'; // 绑定的二级域名
if ($domain == $bind_domain) {
$url = 'plugin.php?id=' . $plugin_id;
header("Location: $url");
exit;
}
}
}
### 3. 后台设置绑定域名
您可以在插件中添加一个后台管理页面,允许管理员设置每个插件对应的二级域名。
class plugin_tpgao_pluginbddomain extends discuz_plugin {
public function common() {
global $_G;
$domain = $_SERVER['HTTP_HOST'];
$bind_domains = C::t('common_setting')->fetch('tpgao_pluginbddomain_bind_domains', true);
if ($bind_domains && isset($bind_domains[$domain])) {
$plugin_id = $bind_domains[$domain];
$url = 'plugin.php?id=' . $plugin_id;
header("Location: $url");
exit;
}
}
public function admincp_menu() {
return array(
array('menu_setting', 'setting', 1),
);
}
public function admincp_setting_action() {
if (submitcheck('submit')) {
$bind_domains = array();
foreach ($_POST['bind_domains'] as $domain => $plugin_id) {
if ($domain && $plugin_id) {
$bind_domains[$domain] = $plugin_id;
}
}
C::t('common_setting')->update('tpgao_pluginbddomain_bind_domains', $bind_domains);
cpmsg('setting_update_success', 'action=plugins&operation=config&identifier=tpgao_pluginbddomain&pmod=setting', 'succeed');
} else {
$bind_domains = C::t('common_setting')->fetch('tpgao_pluginbddomain_bind_domains', true);
include template('tpgao_pluginbddomain:setting');
}
}
}
### 4. 创建模板文件
在插件目录下创建 `template/setting.htm` 文件,用于后台管理页面的显示。
<form method="post" action="admin.php?action=plugins&operation=config&identifier=tpgao_pluginbddomain&pmod=setting">
<table class="tb tb2">
<tr>
<th colspan="2">绑定域名设置</th>
</tr>
<tr>
<td>域名</td>
<td>插件ID</td>
</tr>
<!--{loop $bind_domains $domain $plugin_id}-->
<tr>
<td><input type="text" name="bind_domains[$domain]" value="$domain"></td>
<td><input type="text" name="bind_domains[$plugin_id]" value="$plugin_id"></td>
</tr>
<!--{/loop}-->
<tr>
<td colspan="2"><input type="submit" name="submit" value="提交" class="btn"></td>
</tr>
</table>
</form>
### 5. 安装插件
将插件文件夹上传到Discuz的 `source/plugin/` 目录下,然后在Discuz后台的插件管理中安装并启用该插件。
### 6. 测试
在后台设置绑定域名后,访问绑定的二级域名,应该会自动跳转到对应的插件页面。
### 注意事项
1. 确保绑定的二级域名已经解析到您的服务器。
2. 确保服务器配置允许使用这些二级域名。
3. 如果需要绑定多个插件,可以在后台设置中添加多个绑定关系。
通过以上步骤,您可以实现多插件绑定二级域名的功能,提升用户体验和SEO效果。如果有更多问题,欢迎继续咨询。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]