哥斯拉 发表于 2024-1-11 16:57:48

有没有公共淘帖功能 New

就是站长创建如,美女,风景,帅哥 ,吃喝玩乐,挂羊头,5个淘帖专辑,所有人都可以通过帖子添加到这些专辑里面。










我知道答案 回答被采纳将会获得1 贡献 已有1人回答

拾光 发表于 2024-1-11 16:58:09

没公共淘帖感觉这个功能没啥用,无利可图基本没啥人发淘帖,个人也就心情好发1~2个,估计像番茄小说社区,这样子才能玩得动这个 功能

AI智能体 发表于 2025-3-20 00:38:56

要实现站长创建淘帖专辑,并允许所有用户将帖子添加到这些专辑的功能,可以通过以下步骤来实现:

### 1. 创建淘帖专辑
站长可以通过后台创建淘帖专辑。具体步骤如下:
- 登录Discuz后台,进入“门户” -> “淘专辑管理”。
- 点击“添加淘专辑”,填写专辑名称(如“美女”、“风景”、“帅哥”等),并设置专辑的封面、描述等信息。
- 保存后,这些专辑就会在前台显示。

### 2. 允许用户添加帖子到专辑
默认情况下,Discuz的淘帖功能是允许用户创建自己的专辑,并将帖子添加到自己的专辑中。如果要实现所有用户都可以将帖子添加到站长创建的专辑中,可以通过以下方式实现:

#### 方法一:修改权限设置
- 进入后台,找到“用户” -> “用户组” -> “编辑用户组”。
- 在“论坛相关” -> “淘专辑相关权限”中,设置“允许添加帖子到淘专辑”为“是”。
- 这样,用户就可以将帖子添加到任何公开的淘专辑中,包括站长创建的专辑。

#### 方法二:自定义插件
如果默认功能无法满足需求,可以通过开发自定义插件来实现更复杂的功能。以下是一个简单的插件开发思路:

1. **创建插件**:
   - 在`source/plugin/`目录下创建一个新的插件目录,例如`common_taotie`。
   - 创建`plugin.xml`文件,定义插件的基本信息。

2. **添加钩子**:
   - 在帖子页面添加一个“添加到淘专辑”的按钮,用户点击后可以选择站长创建的专辑。
   - 使用Discuz的钩子机制,在帖子页面嵌入自定义的HTML和JavaScript代码。

3. **处理提交**:
   - 当用户选择专辑并提交时,通过AJAX将帖子ID和专辑ID提交到后台。
   - 在后台处理逻辑,将帖子添加到指定的专辑中。

4. **权限控制**:
   - 在插件中实现权限控制,确保只有登录用户才能将帖子添加到专辑中。

### 3. 示例代码
以下是一个简单的插件示例代码:

#### `plugin.xml`
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <item id="common_taotie">
      <name>公共淘帖功能</name>
      <version>1.0</version>
      <description>允许用户将帖子添加到站长创建的淘专辑中</description>
      <author>DZ-X</author>
      <url>https://www.dz-x.net</url>
      <install>install.php</install>
      <uninstall>uninstall.php</uninstall>
      <upgrade>upgrade.php</upgrade>
    </item>
</root>

#### `source/plugin/common_taotie/hook.class.php`
<?php
if (!defined('IN_DISCUZ')) {
    exit('Access Denied');
}

class plugin_common_taotie {
    public function viewthread_postbottom_output() {
      global $_G;
      $taotie_albums = C::t('#common_taotie#common_taotie_albums')->fetch_all();
      $html = '<div class="taotie-add-to-album">';
      $html .= '<select id="taotie-album-select">';
      foreach ($taotie_albums as $album) {
            $html .= '<option value="' . $album['id'] . '">' . $album['name'] . '</option>';
      }
      $html .= '</select>';
      $html .= '<button onclick="addToAlbum(' . $_G['tid'] . ')">添加到专辑</button>';
      $html .= '</div>';
      return $html;
    }
}

class plugin_common_taotie_forum extends plugin_common_taotie {
}

#### `source/plugin/common_taotie/template/taotie.js`
function addToAlbum(tid) {
    var albumId = document.getElementById('taotie-album-select').value;
    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'plugin.php?id=common_taotie:add_to_album', true);
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.onload = function() {
      if (xhr.status === 200) {
            alert('帖子已成功添加到专辑!');
      } else {
            alert('添加失败,请重试。');
      }
    };
    xhr.send('tid=' + tid + '&album_id=' + albumId);
}

#### `source/plugin/common_taotie/add_to_album.php`
<?php
if (!defined('IN_DISCUZ')) {
    exit('Access Denied');
}

$tid = intval($_POST['tid']);
$album_id = intval($_POST['album_id']);

if ($tid && $album_id) {
    C::t('#common_taotie#common_taotie_posts')->insert(array(
      'tid' => $tid,
      'album_id' => $album_id,
      'dateline' => TIMESTAMP,
    ));
    echo json_encode(array('success' => true));
} else {
    echo json_encode(array('success' => false));
}

### 4. 数据库表
你还需要创建相应的数据库表来存储专辑和帖子的关系:

CREATE TABLE `pre_common_taotie_albums` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(255) NOT NULL,
    `description` TEXT,
    PRIMARY KEY (`id`)
) ENGINE=MyISAM;

CREATE TABLE `pre_common_taotie_posts` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `tid` INT(10) UNSIGNED NOT NULL,
    `album_id` INT(10) UNSIGNED NOT NULL,
    `dateline` INT(10) UNSIGNED NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=MyISAM;

### 5. 安装和卸载脚本
你还需要编写插件的安装和卸载脚本,以便在启用或禁用插件时自动创建或删除数据库表。

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

$sql = <<<EOF
CREATE TABLE IF NOT EXISTS `pre_common_taotie_albums` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(255) NOT NULL,
    `description` TEXT,
    PRIMARY KEY (`id`)
) ENGINE=MyISAM;

CREATE TABLE IF NOT EXISTS `pre_common_taotie_posts` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `tid` INT(10) UNSIGNED NOT NULL,
    `album_id` INT(10) UNSIGNED NOT NULL,
    `dateline` INT(10) UNSIGNED NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=MyISAM;
EOF;

runquery($sql);

$finish = TRUE;

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

$sql = <<<EOF
DROP TABLE IF EXISTS `pre_common_taotie_albums`;
DROP TABLE IF EXISTS `pre_common_taotie_posts`;
EOF;

runquery($sql);

$finish = TRUE;

### 总结
通过以上步骤,你可以实现站长创建淘帖专辑,并允许所有用户将帖子添加到这些专辑的功能。如果需要更复杂的功能,可以进一步扩展插件的功能。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 有没有公共淘帖功能 New