在不同类别中展示不同的广告

我有三个广告 A、B、C 和三个类别 a、b、c。如何使广告 A 显示在类别 a 上,广告 B 显示在类别 b 上,广告 C 显示在类别 c 上?我在广告插件设置中找不到相关选项。有什么建议吗?谢谢。

我所做的是使用包含全部三个广告的房屋广告,并通过 CSS 将其应用于各个类别,从而隐藏其他类别中的广告。

谢谢 @pfaffman。我不太理解您的解决方案。您指的是:

  1. 创建三个具有不同类名(.first-ad、.second-ad、.third-ad)的广告,并将它们在所有三个分类中设置为可见。
  2. 自定义分类的 CSS 样式(我不确定具体如何操作),以便根据类名隐藏某些广告(如果我不想在分类 A 中显示第二个广告,我会在 CSS 样式中添加 .second-ad {disable: none})。

是的,差不多。我想我默认将其隐藏了,然后在它应该显示的类别中进行了覆盖。我对 CSS 不够精通,无法更优雅地描述这一点,但看来你的理解现在非常接近我的想法,甚至更好。

谢谢。我稍后会尝试一下。

参考

在特定分类中添加自定义 CSS

你或许“更适合”使用 JavaScript 来实现这一点,或者如果你喜欢的话,也可以使用 jQuery。

例如,主题中的类会像下面的示例一样显示分类名称:

<span class="category-name">UNIX 初学者问题</span>

因此,在主题页面的脚本中,你可以选择类名为 “category-name” 的文本,然后根据分类文本将广告标签注入到你选择的 div 元素中。

在我看来,这是一种比仅基于 CSS 隐藏和显示广告代码标签的 div 元素更好的方法。

对于任何具备基本 JavaScript 或 jQuery 技能的人来说,这也非常容易实现。

你可以根据分类 span 的类选择 span 元素的内部文本。然后,将该内部文本与你的分类列表进行匹配,并根据分类将广告代码插入到该页面中你选择的 DOM 元素中。

对于任何具备基本 JavaScript 技能的人来说,编写这段代码都非常简单,而且这可能是实现你所想要功能的最优方法。@Windsooon

感谢您的建议,这非常有帮助 @neounix。我确实有一些 JavaScript 经验。不过,在用 CSS 设置广告后,我不知道该把 JavaScript 代码放在哪里。我应该:

  1. 将其放在服务器上(修改 Discourse 代码库中的代码)
  2. 放在管理面板的某个位置
  3. 使用额外的插件或主题组件。

谢谢

@Windsooon

您可以在主题的页脚(或结束 body 标签之前)添加您的代码,或者在主题组件中添加该代码并将其应用到您的主题中。选择权在您。

根据您展示广告的不同页面,DOM 选择器会有所不同。

实际上,您应该将大部分代码保留在您喜欢的网站中,只需添加链接以在您的主题或主题组件中加载 JavaScript,至少我通常都是这样做的。

就我个人而言,我发现 jQuery 在主题中进行 DOM 选择时效果更好,但这可能是因为我使用 jQuery 选择器的经验比使用原生 JavaScript 选择器的经验更丰富。

我明白了!非常感谢。

欢迎 @Windsooon

这正是 JavaScript 被设计用来完成的任务:操作 DOM,包括向 DOM 中插入元素,所以你的方向是对的! :slight_smile:

尽情享受吧!!!

有没有人愿意收费帮我把这个设置好?我需要为大约 9 个类别分别配置广告。

马克,你好:

你在这方面有进展吗?我必须说实话,我对 CSS 和 Java 的理解非常有限,我们主要依靠可用的自定义主题组件来开展工作。

我们也想使用“AD 功能”来简单地为我们的类别添加自定义文本,但找不到只将其显示在特定类别上的方法。

如果您想在类别中添加一些文本作为标题而不是显示广告,我们有一个名为 Category Banners 的主题组件,听起来可能很有用?