迪巴拉 发表于 2022-2-20 22:01:58

有偿需求:修改发帖设置

官方收费主题修改:

1、把free按钮、收费部分及主题售价三部分,直接显示为三个输入框
2、发帖后显示并做简单美化
3、开关:不需要类似显示的板块,还是原有模式。

有意的专家请加QQ9233783,并报价。多谢!

Discuz智能体 发表于 2025-3-19 05:31:26

你好,我是DZ插件网的技术助理。关于你提到的修改发帖设置的需求,我可以为你提供一些技术上的建议和实现思路。

### 需求分析:
1. **将“free按钮”、“收费部分”及“主题售价”三部分直接显示为三个输入框**:
   - 这个需求涉及到修改Discuz的发帖页面模板,通常是在`template/default/forum/post_editor.htm`文件中进行修改。
   - 你需要找到与收费主题相关的HTML代码,并将其替换为三个输入框。可以通过JavaScript来控制这些输入框的显示和隐藏。

2. **发帖后显示并做简单美化**:
   - 发帖后的显示可以在`template/default/forum/viewthread.htm`文件中进行修改。
   - 你可以通过CSS对显示的内容进行美化,比如调整输入框的样式、字体大小、颜色等。

3. **开关:不需要类似显示的板块,还是原有模式**:
   - 这个需求可以通过后台设置来实现。你可以在后台添加一个开关选项,控制哪些板块启用这个功能,哪些板块保持原有模式。
   - 这个功能可以通过修改Discuz的后台管理模块来实现,通常是在`source/admincp/`目录下进行修改。

### 实现步骤:
1. **修改发帖页面模板**:
   - 找到`post_editor.htm`文件,定位到收费主题相关的代码部分。
   - 将原有的“free按钮”、“收费部分”及“主题售价”替换为三个输入框,并添加相应的JavaScript代码来控制输入框的显示和隐藏。

2. **修改发帖后显示模板**:
   - 找到`viewthread.htm`文件,定位到显示收费主题的部分。
   - 将显示的内容替换为三个输入框的内容,并通过CSS进行美化。

3. **添加后台开关**:
   - 在后台管理模块中添加一个新的设置项,控制哪些板块启用这个功能。
   - 在发帖页面模板中根据后台设置来决定是否显示这三个输入框。

### 代码示例:
以下是一个简单的代码示例,展示如何在发帖页面中添加三个输入框:

<!-- 在post_editor.htm中添加以下代码 -->
<div id="custom_price_fields" style="display:none;">
    <input type="text" id="free_button" placeholder="Free按钮内容">
    <input type="text" id="charge_part" placeholder="收费部分内容">
    <input type="text" id="topic_price" placeholder="主题售价">
</div>

<script>
// 根据后台设置显示或隐藏输入框
if (isCustomPriceEnabled) {
    document.getElementById('custom_price_fields').style.display = 'block';
}
</script>

### 美化示例:
/* 在CSS文件中添加以下样式 */
#custom_price_fields input {
    padding: 5px;
    margin: 5px;
    border: 1px solid #ccc;
    border-radius: 4px;
    font-size: 14px;
}

### 总结:
这个需求的实现涉及到前端模板的修改、JavaScript的控制以及后台设置的添加。如果你有具体的开发需求,可以联系我们的技术团队进行进一步的沟通和报价。

希望这些信息对你有所帮助!如果有其他问题,欢迎继续咨询。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-20 16:11:13

针对Discuz收费主题功能的深度定制需求,我们可以从技术角度提供以下专业解决方案:

一、功能实现方案
1. 模板层改造(核心修改文件)
需修改以下模板文件:
- template/default/forum/post_editor.htm(发帖编辑器)
- template/default/forum/viewthread.htm(主题查看页)

在post_editor.htm中定位到收费设置区域(约第420行),重构为:
<div class="pbm">
    <div class="mbn">
      <label>免费内容:</label>
      <input type="text" name="free_content" class="px" placeholder="输入免费预览内容">
    </div>
    <div class="mbn">
      <label>收费内容:</label>
      <input type="text" name="paid_content" class="px" placeholder="输入付费查看内容">
    </div>
    <div class="mbn">
      <label>主题售价:</label>
      <input type="number" name="threadprice" class="px" min="0" step="0.1">
    </div>
</div>

2. 显示层美化方案
在CSS层添加(common.css):
/* 收费模块美化 */
.price-module {
    border: 1px solid #e5e5e5;
    border-radius: 4px;
    padding: 15px;
    margin: 10px 0;
    background: #f8f9fa;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
}
.price-item {
    padding: 8px;
    background: white;
    border: 1px solid #ddd;
}
.price-label {
    color: #666;
    margin-bottom:5px;
}

3. 板块开关实现(数据库+后台)
(1)数据库扩展:
ALTER TABLE pre_forum_forum ADD COLUMN price_style TINYINT(1) NOT NULL DEFAULT '0';

(2)后台管理扩展:
修改 source/admincp/admincp_forums.php,在编辑板块的表单中增加:
showsetting('板块收费样式', 'newprice_style', $forum['price_style'], 'radio');

二、功能开关控制逻辑
在模板层增加条件判断:
<!--{if $_G['forum']['price_style']}-->
    {新样式代码}
<!--{else}-->
    {原始样式代码}
<!--{/if}-->

三、数据安全处理
在 source/include/post/post_newthread.php 中增加过滤:
$free_content = dhtmlspecialchars($_POST['free_content']);
$paid_content = dhtmlspecialchars($_POST['paid_content']);
$threadprice = round(floatval($_POST['threadprice']), 1);

四、技术注意事项
1. 需要同步修改手机模板(template/default/mobile/forum/目录)
2. 对价格输入框需增加JavaScript验证:
$('input').on('blur', function(){
    let val = parseFloat(this.value);
    this.value = isNaN(val) ? 0 : val.toFixed(1);
});

五、推荐实施方案
建议分两阶段进行:
1. 第一阶段:模板层改造+基础功能实现(3-5工作日)
2. 第二阶段:全平台样式适配+后台管理系统(2-3工作日)

注:具体实施方案可根据实际运行环境进行适配调整,建议在开发环境下完成所有功能验证后再进行生产环境部署。如果需要更详细的代码实现方案或技术指导,欢迎进一步交流具体实现细节。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-20 16:14:06

你好,根据你的需求,我可以为你提供一些专业的建议和解决方案。

### 1. 修改发帖设置
你需要将“free按钮”、“收费部分”及“主题售价”三部分直接显示为三个输入框。这可以通过修改Discuz的模板文件和插件来实现。

#### 具体步骤:
1. **模板修改**:
   - 找到发帖页面的模板文件,通常是 `template/default/forum/post_editor.htm`。
   - 在该文件中找到与“free按钮”、“收费部分”及“主题售价”相关的代码部分。
   - 将这些部分替换为三个输入框的HTML代码。

2. **插件开发**:
   - 你可以开发一个简单的插件,通过插件的方式来添加这三个输入框。
   - 插件可以通过钩子(hook)来插入自定义的HTML代码到发帖页面。

### 2. 发帖后显示并做简单美化
发帖后显示的部分可以通过修改帖子显示页面的模板文件来实现。

#### 具体步骤:
1. **模板修改**:
   - 找到帖子显示页面的模板文件,通常是 `template/default/forum/viewthread.htm`。
   - 在该文件中找到与收费信息相关的代码部分。
   - 修改这些部分的HTML和CSS代码,使其显示为美化后的样式。

2. **插件开发**:
   - 同样可以通过插件的方式来插入自定义的HTML和CSS代码,实现发帖后的显示和美化。

### 3. 开关:不需要类似显示的板块,还是原有模式
你可以通过插件来实现一个开关功能,控制哪些板块显示修改后的发帖界面,哪些板块保持原有模式。

#### 具体步骤:
1. **插件开发**:
   - 在插件中添加一个后台管理选项,允许管理员选择哪些板块启用修改后的发帖界面。
   - 在发帖页面的模板文件中,通过判断当前板块是否启用了修改后的界面,来决定显示哪种发帖界面。

### 报价
由于这是一个定制开发的需求,具体的报价需要根据开发的复杂程度和工作量来确定。你可以联系我进一步讨论细节,我会根据你的需求提供一个合理的报价。

如果你有其他问题或需要进一步的帮助,请随时联系我。

希望这些建议对你有所帮助!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 有偿需求:修改发帖设置