可点击的话题

:discourse2: 摘要 可点击主题 使 topic-list-item 的整个区域可点击,而不仅仅是主题标题。
:eyeglasses: 预览 在 Discourse 主题创建器中预览
:hammer_and_wrench: 仓库链接 https://github.com/discourse/discourse-clickable-topic
:open_book: 初次接触 Discourse 主题? Discourse 主题使用入门指南

安装此主题组件

功能特性

preview

:discourse2: 由我们托管? 主题组件可在我们的标准版、商业版和企业版计划中使用。

46 个赞

非常感谢,这正是我们迫切需要的!:heart:

4 个赞

这是一个非常有用的组件!从用户体验的角度来看,它本应内置于 Discourse 中,但这只是我的个人意见。

不管怎样,我在尝试为“分类”实现相同的逻辑时遇到了困难。我本想使用 api.modifyClass 来完成,但似乎遗漏了关键部分。您能帮忙吗?

我的桌面页面有如下设置:
image

基本上,左侧的红框应该是可点击的:

或者,为了更直观地展示我想要实现的效果:复刻暴雪论坛的设计风格,因为我非常喜欢它:

非常感谢您的任何帮助。

在等待回复的同时,我也找到了这里的组件页面:
https://github.com/discourse/discourse/tree/master/app/assets/javascripts/discourse/app/components
并尝试了各种思路,但似乎我的钩子甚至都不可用?还是我漏掉了什么?!:slight_smile:

很高兴你喜欢这个组件!

感谢你的建议 :grinning_face_with_smiling_eyes:

目前,该组件仅设计用于主题列表中的 Topics

1 个赞

如果您想尝试并分叉此组件,我们非常欢迎!:+1:

作为让分类可点击的起点,建议您查看本组件中通过修改 Discourse 核心中的 topic-list-item 组件来实现该功能的代码。

您可以尝试在同一文件夹中创建一个新文件,针对我们组件中包含的多种分类布局类型之一,并确保针对您在论坛上选择的相同分类页面样式。

以下是一些示例及其位置:

app/assets/javascripts/discourse/app/components/categories-and-latest-topics.js
app/assets/javascripts/discourse/app/components/categories-and-top-topics.js
app/assets/javascripts/discourse/app/components/categories-boxes-topic.js
app/assets/javascripts/discourse/app/components/categories-boxes-with-topics.js
app/assets/javascripts/discourse/app/components/categories-boxes.js
app/assets/javascripts/discourse/app/components/categories-only.js
app/assets/javascripts/discourse/app/components/category-list-item.js

3 个赞

预览不再起作用

2 个赞

我觉得现在应该没问题了。:slightly_smiling_face::+1:

2 个赞

现在已损坏。

我们曾依赖此组件来使“分类 + 最新”视图(在我们的情况下为默认视图)的主题卡片可点击。自今天更新到最新的 3.1.0beta8(现在显示为 3.2.0.beta1-dev)以来,该组件已停止正常工作。

现在光标的活动状态仍然是可点击的,但主题区域不可点击。打开浏览器的控制台会显示一个错误,这可能有助于开发人员识别问题:

未捕获的 TypeError: this.router is undefined

function navigateToTopic(topic, href) {
    if (this.siteSettings.page_loading_indicator !== "slider") {
      // With the slider, it feels nicer for the header to update once the rest of the topic content loads,
      // so skip setting it early.
      this.appEvents.trigger("header:update-topic", topic);
    }
    this.session.set("lastTopicIdViewed", {
      topicId: topic.id,
      historyUuid: this.router.location.getState?.().uuid
    });
    _url.default.routeTo(href || topic.get("url"));
    return false;
  }

抛出错误的行:

historyUuid: this.router.location.getState?.().uuid

这是否与核心中计划/正在进行的 Ember 升级有关?

您好 @kinetiksoft - 我无法在我的端重现此问题。该主题组件似乎与最新版本的 Discourse 配合良好。此处 OP 中的“在主题创建者上预览”链接似乎也能正常工作。

您能否分享一个出现问题的网站链接?也许是与其他主题/插件发生了冲突。

2 个赞

谢谢!我已私信您一个相关社区的链接。不适合在此公开分享。

1 个赞

感谢 @kinetiksoft!看起来问题发生在当主题组件与“分类 + 最新”视图(您已将其配置为主页)一起使用时。

我已提交一个 PR,应该可以解决该问题。

合并后我将在此处发布,然后您需要将论坛更新到最新版本的 Discourse 核心。

3 个赞

谢谢你,大卫!很高兴我们能帮助识别出完美运行组件中的问题。

2 个赞

全部完成 - 因此,下次您更新到最新版本的 Discourse 时,它应该会生效

1 个赞

我们将在本周晚些时候进行更新尝试,我一定会回到这个话题来汇报一切进展情况。再次感谢!

1 个赞

我们确认问题已修复。再次感谢!:heart:

1 个赞

您好,如何修改此组件以支持 Docs 插件?

我正在运行最新的 Discourse 3.4.0.beta2-dev。


我不确定是我对这个主题组件的设置有什么问题,还是其他原因,但卡片上主题的所有正文都无法点击。如果你点击文本末尾的任意一行,你就可以激活卡片并打开主题。

你认为可能是什么原因造成的?

提前感谢你的所有帮助和建议。:slight_smile:

4 个赞

您好,感谢您的 TC,但似乎有一个区域仍然无法点击?

我正在管理的网站上间歇性地看到此错误:

正在运行 Discourse 52ab90911Clickable Topic 37f0aa135fe

1 个赞