Fma965
(Fma965)
5월 7, 2022, 5:02오후
1
여러분 안녕하세요,
최근 포럼을 일부 재구성하면서 태그를 사용하기 시작했습니다.
제가 어려움을 겪고 있는 부분은 다음과 같습니다(네이티브 기능은 아니지만, 간단한 플러그인이 있을까요?). 새 토픽이 “sync1”, “sync2”, “sync3” 또는 “sync4” 태그와 함께 생성되면 “apim” 태그도 자동으로 추가되도록 해야 합니다. 이 방법을 아시는 분이 있을까요?
아쉽게도 제 Ruby 실력이 부족합니다.
다음 두 자료를 확인해 보았지만,
# frozen_string_literal: true
# name: discourse-unhandled-tagger
# about: Add an "unhandled" tag to every topic where non-staff post
# version: 0.1
# authors: Sam Saffron
after_initialize do
on(:post_created) do |post, _, user|
next if SiteSetting.unhandled_tag.blank?
next if user.staff?
next if post.topic.private_message?
tag = Tag.find_or_create_by!(name: SiteSetting.unhandled_tag)
topic = post.topic
unless topic.tags.exists?(id: tag.id)
topic.tags << tag
if SiteSetting.verbose_discourse_unhandled_tagger_logging
Rails.logger.warn(
This file has been truncated. show original
그리고
You can create a plugin with the below simple code. But the difficulty level is fully depends upon your auto tagging logic/requirement.
DiscourseEvent.on(:topic_created) do |topic|
guardian = Guardian.new(Discourse.system_user)
DiscourseTagging.tag_topic_by_names(topic, guardian, ["bug"], append: true) if topic.title.match(/bug/)
end
이 예제들이 현재 수행하는 검사 대신, 해당 4개의 태그 중 아무거나 토픽에 존재하는지만 확인하도록 어떻게 수정해야 할지 확실하지 않습니다.
결국, 분홍색으로 표시된 태그 중 하나라도 토픽에 존재하면, 초록색으로 표시된 태그가 자동으로 추가되어야 합니다.
DiscourseEvent.on(:topic_created) do |topic|
guardian = Guardian.new(Discourse.system_user)
required_tag_names = [”sync1”, “sync2”, “sync3”, “sync4”]
DiscourseTagging.tag_topic_by_names(topic, guardian, ["apim"], append: true) if topic.tags.exists?(name: required_tag_names)
end
위 코드가 필요합니다.
수정: 태그 그룹을 추가하고 "apim"을 부모 태그로 설정하여 이를 강제할 수도 있습니다. 이 경우, 사용자는 부모 태그 "apim"을 선택한 후에만 “sync” 태그를 선택할 수 있습니다.
사용자가 자식 태그를 먼저 선택할 수 있도록 하고, 부모 태그는 자동으로 추가하는 방식이 더 유용할 것 같습니다 대부분의 일반 사용자는 부모 태그 요구 사항을 알지 못하기 때문입니다.
Fma965
(Fma965)
5월 7, 2022, 6:46오후
3
훌륭합니다. 보통 이런 것들은 제가 직접 알아내곤 하지만, Ruby는 제 전문 분야가 아니어서 누군가 몇 분 안에 예제를 보여줄 것 같은 기분이었거든요
이제 플러그인에 이를 추가하는 방법만 알아내면 되는데, 꽤 간단할 것 같네요.
때로는 자식 태그를 선택하면 부모 태그가 추가되는 것이 더 바람직한 결과일 수 있다는 데 동의합니다.
도와주셔서 감사합니다.
수정: 플러그인을 만들고 의도대로 작동하게 했습니다. 정말 많은 도움을 주셔서 감사합니다!
Simple plugin that appends the apim tag to sync1,sync2,sync3,sync4 tagged topics