로그인 팝업 열기 또는 버튼 클릭 시 이벤트 트리거

sign-up-button 클래스가 있는 버튼처럼 간단한 방법이 있습니다.

클릭하면 등록 팝업이 열립니다. a: href is a signup을 사용하는 대신 이렇게 하는 거죠.


api.decorateWidget ('post: after', helper를 사용했습니다.

하지만 NAME:LOCATION은 기사 끝에 코드 스니펫을 삽입하는 데 고유합니다.

또는 NAME: LOCATION을 찾을 수 있는 위치가 궁금합니다.

post:after는 게시글 하단에 새로운 요소를 추가하려는 경우 작동해야 합니다. post:와 after 사이에 공백이 하나 있다는 점에 유의하세요.

이것은 당신이 하려는 것과 관련이 있을 것 같습니다.

여전히 문제가 있다면, 사용하고 있는 나머지 코드를 게시해 주세요.

도움 주셔서 감사합니다 (특히 초보자에게는 더 그렇고요)
아래는 전체 코드입니다

<script type="text/discourse-plugin" version="0.8.25">
    const user = api.getCurrentUser();
    if (!user) {
    api.decorateWidget('post:after', helper => {
		let h = helper.h, attrs = helper.attrs;
		// console.log(attrs);
		return helper.h('div.fixed-bottom-bar.d-none.d-lg-block',
			[
			    helper.h('div.wrapper',
			        [
			        	helper.h('div.logo',
				        	helper.h('img', {
			                    src: 'https://thuvienmuasam.com/uploads/default/original/1X/776142524c0d5c0430a603fde63a8bad2f77b267.svg',
			                    alt: 'ThuVienMuaSam'
			                })
			        	),
			            helper.h('div.content.d-flex.justify-content-between.ml-1',
			            	[

				        		helper.h('div.float-left',
				         		[
				        			helper.h('span.title','Chào mừng đến với Thư Viện Mua Sắm!'),
									helper.h('br'),
									helper.h('span.text',
				         			[
				         				helper.h('span','Bắt đầu '),
										helper.h('a.text-primary.cursor-pointer.sign-up-button',{ href: '/signup'},
											helper.h('strong','đăng ký tài khoản TVMS')
										),
										helper.h('span',' để có được nhiều bài viết thú vị hơn từ '),
										helper.h('a',{ href: '/u/'+helper.attrs.username },
											helper.h('strong',""+helper.attrs.username),
										),
									])
								]),
								helper.h('div.float-right.d-flex.align-items-center',
									helper.h('button.btn-primary.btn',{type:'button'},
										helper.h('a', { href: '/signup'},
											helper.h('span.d-button-label','Tham Gia')
										),
									)

								),
							]
				        ),
			        ]
			    )
			]
		);
    });
}
</script>

**helper.h(‘a’, { href: ‘/signup’}**을 사용했는데 버튼을 클릭하면 즉시 가입 프레임이 표시되는 대신 페이지가 새로고침됩니다

코드를 공유해 주셔서 감사합니다 :+1:

로그인/가입 모달이 바로 표시되도록 하려면 내장된 showLogin과 showCreateAccont 액션을 사용해야 합니다.

즉, 이 코드

helper.h(
  "button.btn-primary.btn",
  { type: "button" },
  helper.h(
    "a",
    { href: "/signup" },
    helper.h("span.d-button-label", "Tham Gia")
  )
)

대신 가입 모달에는 다음과 같은 코드를 사용하는 것이 좋습니다.

helper.attach("button", {
  label: "sign_up",
  className: "btn-primary btn-small sign-up-button",
  action: "showCreateAccount"
})

또는 로그인 모달을 원한다면 이 코드를 사용하세요.

helper.attach("button", {
  label: "log_in",
  className: "btn-primary btn-small login-button",
  action: "showLogin",
  icon: "user"
})

또한, 비로그인 사용자를 위해 모든 게시물 아래에 가입/로그인 버튼이 포함된 배너를 추가하는 것은 사용자 경험에 해롭다고 생각하며, 이를 권장하지 않습니다. 다만, 여기서는 사용 사례에 대해 자세히 알지 못합니다. 모든 게시물에 추가하는 대신 사이트 상단에 배너/이미지를 추가하는 것을 고려해 보셨나요?

다시 돌아와서 모든 질문을 해결해 주셔서 감사합니다 :smile:

이제 신규 사용자 경험을 개선해야 하므로 조치가 필요합니다.
현재 PC에서만 작동합니다.
사용자가 숨기기를 클릭했을 때 쿠키를 숨기거나 표시할 수 있도록 쿠키 관련 기사를 살펴보고 있습니다.

이 코드를 마인트 테마의 어디에 배치해야 하나요?

새로운 Theme 컴포넌트를 생성하여 테마에 연결할 수 있습니다.

  • Admin → Customize로 이동하세요.

  • Install 버튼을 클릭하세요.
    image

  • 그런 다음 테마에 연결하고 Edit CSS/HTML 버튼을 클릭하세요.

  • Head 섹션에 코드를 추가하세요:

도움이 되길 바랍니다. :+1:

민트 테마에서 이 코드를 어디에 배치해야 하나요?

@Arkshine 님이 제공한 단계를 시도해 보셨나요?
원격 테마를 수정할 수 없으므로, 직접 테마 컴포넌트를 만든 후 mint 테마에 추가하는 것이 가장 좋습니다.

console.error(“API or showLogin function are not available.”); 오류가 발생합니다.

단계를 따라 진행했지만 로그인 페이지에 도달했을 때 모델이 자동으로 열리지 않습니다.

<script type="text/discourse-plugin" version="0.8.25">
    // 현재 페이지가 로그인 페이지인지 확인하는 함수
    function isLoginPage() {
        return window.location.pathname === "/login";
    }

    // 페이지 로드 시 로그인 동작을 트리거
    document.addEventListener("DOMContentLoaded", function() {
        console.log("DOMContentLoaded 이벤트가 발생했습니다.");
        
        // 현재 페이지가 로그인 페이지인지 확인
        if (isLoginPage()) {
            console.log("현재 페이지는 로그인 페이지입니다.");
            
            // 로그인 동작 트리거
            if (typeof api !== "undefined" && typeof api.showLogin === "function") {
                console.log("API 및 showLogin 함수가 사용 가능합니다.");
                api.showLogin();
            } else {
                console.error("API 또는 showLogin 함수가 사용 불가능합니다.");
            }
        } else {
            console.log("현재 페이지는 로그인 페이지가 아닙니다.");
        }
        
        // 로그인 버튼 요소 가져오기
        const loginButton = document.getElementById("loginButton");

        // 로그인 모달을 열기 위해 로그인 버튼에 클릭 이벤트 트리거
        if (loginButton) {
            loginButton.click();
        }
    });
</script>

콘솔에 console.error(“API 또는 showLogin 함수가 사용 불가능합니다.”) 메시지가 표시됩니다.