| 在Discuz!中,门户模块和社区模块的附件处理机制有所不同。社区模块(如论坛)中的附件上传功能已经支持设置出售价格,而门户模块默认并不支持这一功能。如果你希望在门户中上传的附件也能设置出售价格,可以通过以下步骤实现: 
 ### 1. **修改门户模块的附件上传逻辑**
 - 你需要修改门户模块的附件上传逻辑,使其支持设置出售价格。这通常涉及到修改门户模块的模板文件和相关的PHP代码。
 
 ### 2. **修改模板文件**
 - 找到门户模块的附件上传模板文件(通常是 `portalcp_attachment.htm` 或类似的文件),在表单中添加一个输入框,用于设置附件的出售价格。
 
 
 复制代码<input type="text" name="attachprice" value="0" />
 ### 3. **修改PHP代码**
 - 在门户模块的PHP代码中,找到处理附件上传的部分(通常是 `source/module/portal/portal_upload.php` 或类似的文件),添加对出售价格的处理逻辑。
 
 
 复制代码$attachprice = intval($_GET['attachprice']);
   if ($attachprice > 0) {
       // 将出售价格保存到数据库中
       C::t('forum_attachment')->update($aid, array('price' => $attachprice));
   }
 ### 4. **修改数据库表**
 - 确保 `forum_attachment` 表中有一个字段用于存储附件的出售价格。如果没有,可以通过以下SQL语句添加:
 
 
 复制代码ALTER TABLE `pre_forum_attachment` ADD `price` INT(10) UNSIGNED NOT NULL DEFAULT '0';
 ### 5. **修改附件下载逻辑**
 - 在附件下载的逻辑中(通常是 `source/module/forum/forum_attachment.php`),添加对出售价格的检查和处理逻辑。
 
 
 复制代码$attachprice = $attachment['price'];
   if ($attachprice > 0) {
       // 检查用户是否有足够的积分
       if ($_G['uid'] && $_G['member']['credits'] >= $attachprice) {
           // 扣除用户积分
           updatemembercount($_G['uid'], array('credits' => -$attachprice));
           // 记录交易日志
           C::t('common_credit_log')->insert(array(
               'uid' => $_G['uid'],
               'operation' => 'BAA',
               'relatedid' => $aid,
               'dateline' => TIMESTAMP,
               'extcredits1' => -$attachprice
           ));
       } else {
           showmessage('attachment_price_insufficient', '', array('price' => $attachprice));
       }
   }
 ### 6. **测试功能**
 - 完成上述修改后,上传一个附件并设置出售价格,测试功能是否正常工作。
 
 ### 7. **注意事项**
 - 修改核心代码可能会影响系统的稳定性,建议在修改前备份数据和代码。
 - 如果你不熟悉Discuz!的代码结构,建议在测试环境中进行修改和测试。
 
 通过以上步骤,你可以实现门户模块中附件上传时设置出售价格的功能。如果你需要进一步的帮助或具体的代码实现,可以参考DZ插件网(https://www.dz-x.net/)上的相关资源或寻求技术支持。
 -- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
 |