go_ahead
(go ahead)
9월 18, 2023, 6:29오전
1
제목과 같이, 포럼에서 검색해 보았지만 카테고리 보안 설정을 변경하는 방법만 찾을 수 있었습니다. 하지만 이렇게 하면 모든 카테고리가 비공개로 설정되어 제가 원하는 기능이 아닙니다.
제 사용 상황은 다음과 같습니다. 미가입 사용자는 일부 게시글 내용을 볼 수 있고, 일부 내용은 로그인해야만 볼 수 있도록 하는 것입니다. 또는 가입 사용자의 경우, 게시글에 답변을 해야 내용을 볼 수 있도록 하는 것입니다.
이는 가입을 유도하는 수단이자, 대부분의 무임승차자를 방지하기 위한 목적입니다.
아래와 유사한 형태입니다.
go_ahead
(go ahead)
9월 18, 2023, 6:36오전
2
콘텐츠 열람을 위해 로그인하는 기능을 구현하는 방법, 사용자가 가입하도록 유도하기 위한 전략
질문에서 언급했듯이 포럼에서 검색해 보았지만 카테고리 변경에 따른 보안 설정만 찾을 수 있었습니다. 하지만 이는 모든 카테고리를 숨기는 것일 뿐, 제가 원하는 기능이 아닙니다.
제 사용 시나리오는 다음과 같습니다: 미가입 사용자는 게시글 콘텐츠의 일부만 열람할 수 있고, 숨겨진 콘텐츠는 로그인해야만 볼 수 있게 하는 것입니다. 또는 사용자로 가입한 후 게시글에 답글을 작성해야만 콘텐츠를 열람할 수 있게 하는 방식도 가능합니다.
이것은 가입을 유도하는 수단이자, 대다수의 스팸이나 불필요한 접근을 방지하는 방법이기도 합니다.
비슷한 예시:
simon
9월 18, 2023, 6:59오전
3
질문하신 내용이 많은 신문사가 하는 방식과 비슷한가요? 예를 들어, 익명 사용자로 뉴욕 타임스(New York Times)의 1면과 카테고리 페이지를 볼 수 있습니다:
그런 다음 기사를 방문하려고 하면 다음과 같은 화면이 표시됩니다:
이렇게 묻는 이유는 이 아이디어가 이 포럼에서 몇 번 언급된 것 같기 때문입니다. 저는 이 아이디어가 좋습니다. 구독 기반 출판사가 사용자를 구독으로 유도하는 일반적인 방법임을 보여주는 데 유용할 수 있습니다. 이 아이디어는 일부 Discourse 사이트, 특히 유료 구독자를 유치하려는 사이트에서 유용할 수 있습니다 ."}
Lilly
(Lillian )
9월 18, 2023, 7:02오전
4
이 테마 컴포넌트가 원하시는 것을 수행하나요?
go_ahead
(go ahead)
9월 18, 2023, 7:27오전
5
simon:
이 아이디어가 좋습니다.
네, simon 씨, 제 웹사이트에는 소프트웨어 다운로드 링크가 많이 있을 텐데, 미등록 사용자들이 이를 보고 클릭하는 것을 원하지 않습니다. 답변해 주셔서 감사합니다!
스포일러 모드처럼 작동하면 정말 좋겠습니다. —> 다운로드 링크 미등록 사용자가 클릭하면 가입 팝업 창이나 결제 팝업 창이 나타나면 매우 세련된 느낌이 들 것입니다.
“답변 없이 콘텐츠를 볼 수 없음” – 활성 사용자는 자기 자신의 지식을 이타적으로 공유하며, 자신의 게시물에 더 많은 응답을 원합니다. 이는 또한 포럼 운영자가 원하는 바이기도 합니다. 이 기능이 포럼의 발전에 도움이 된다고 생각합니다.
이 플러그인을 사용해 보겠습니다. 감사합니다, lilly 씨!
Lilly
(Lillian )
9월 18, 2023, 7:32오전
6
별말씀을요, 잘 작동하길 바랍니다. 참고로 이것은 플러그인이 아니라 테마 컴포넌트이므로 관리자 UI에서 설치할 수 있습니다.
Don
9월 18, 2023, 10:01오전
7
Gated Topics in Category 테마 컴포넌트가 동일한 작업을 수행하고 있다고 생각합니다.
Lhc_fl
(Linca)
9월 18, 2023, 11:16오전
8
이건 쉽게 할 수 있습니다. 토픽 모델(topic model)에는 이미 답글을 남겼는지 여부를 보여주는 속성이 하나 있는데, 이름은 posted입니다. 이전에 제가 작성한 컴포넌트( Composer tip under specific tag topics )에서 답글 여부를 판별하는 로직을 구현해 두었습니다. 코딩 기초가 있다면 제가 작성한 코드를 참고해 보세요. API의 decorateCookedElement 메서드와 결합하면 답글을 남기지 않은 경우 콘텐츠를 숨기는 기능을 구현할 수 있습니다.
구체적인 코드는 최근 너무 바빠서 작성하기가 귀찮습니다.
<script type="text/discourse-plugin" version="1.6.0">
const user = api.getCurrentUser();
const I18n = require("I18n");
const pid = "post_hider"
const tl4_css = `
.d-editor-preview [data-theme-hide] {
background: var(--tertiary);
color: var(--secondary);
border-top: 2px solid var(--secondary);
position: sticky;
top: 0;
height: 30px;
display: flex;
align-items: center;
justify-content: center;
}
.d-editor-preview [data-theme-hide]::before {
content: "本帖子被设为隐藏";
}
`
api.addPostClassesCallback((attrs) => {
if (attrs?.cooked?.includes(`<div data-theme-hide="true">`)) {
return ["hiddened"]; // css 추가용, 이후 css 작성은 알아서 하세요
} else {
return [];
}
});
if (!user) {
api.decorateCookedElement((el, helper) => {
function hide_post() {
setTimeout( () => {
try {
// document.querySelector(`[data-post-id="${helper?.widget?.attrs?.id}"]`)?.parentElement?.remove();
} catch (err) {
console.log(el);
console.log(err);
}
}, 1000);
}
if (el?.querySelector(`[data-theme-hide="true"]`)) {
el.innerHTML = `<p>帖子已被社区隐藏</p>`; // 이 줄을 수정하세요
hide_post();
}
}, {
id: pid,
afterAdopt: true,
onlyStream: true,
});
}
</script>
갑자기 떠올랐는데, 이전에 로그인하지 않은 사용자에게 전체 게시물 을 숨기려고 사용했던 코드가 하나 있습니다. 참고용으로 사용하세요.