안녕하세요, 아래 질문에 이어지는 질문입니다. 

https://xetown.com/questions/1231500

 

댓글에 있는 방법들을 해보고있는데요..

 

 

다크모드를 추가로 옵션을 넣으려고 하는데, 그냥 레이아웃에서 쿠키를 사용해서 하는 방법은 테스트해보니 가능하더라구요

그런데 회원 가입자만 설정을 할 수 있도록 하려고 하니, 회원정보에 필드 추가해서 하는 방법이 좋은것 같아서 

다시 테스트 해보고 있는 중입니다. 

 

회원가입 부분에서 사용자정의로 다크모드 필드를 추가했습니다. 

스크린샷 2019-06-20 오전 10.16.25.png

 

그런데 체크했을때와 체크하지 않았을때의 css를 어떻게 변경하는지 모르겠네요..

 

<!--@if($다크모드 사용함 체크)-->

다크모드.css 

<!--@else-->

기본.css

<!--@end-->

 

이런식으로 하면 될것같은데..

다크모드 사용 체크하는 걸 어떻게 확인하는지 궁금합니다.

 

 

레이아웃같은경우 info.xml 이 있었던것같은데, 회원정보는 못찾겠네요 ㅠ

 

 

 

 

 

 

  • profile

    쿠키로 하세요. 회원정보로 한다면
    장점 이자 단점: 모든 디바이스에 일괄적으로 적용이 가능하다. / 개별 디바이스별로 적용이 어렵다.
    단점 : 회원만 이용이 가능하다. 회원정보 수정을 통해 모드를 변경해야 한다 ?

    반대로 쿠키로 한다면
    장점 : 회원 비회원 구분없이 모든 접속자에게 적용이 가능하다.
    장점이자 단점 : 접속하는 단말기마다 다르게 할 수 있다. / 모든 디바이스를 일괄 설정을 원하는 경우는 단점으로 보일 수 있다.

    회원정보에서 설정하는 득이 별로 없어보입니다.
    다크모드 한번 변경하려고 회원정보 수정을 하려면 불편하겠죠. 이를 극복하려면 회원정보 수정이 아닌 다른 곳에 버튼으로 이 회원정보의 체크를 변경하는 작업까지 추가해 주지 않으면 아무도 안쓰는 기능이 될 겁니다.

     

     

    "회원 가입자에게만 제공 하고 싶다면 쿠키가 생성되는 버튼을 회원에게만 노출하시면 됩니다."

  • profile ?
    웹지기님 정리 감사합니다.
    디바이스별로 변경되는건 생각 못해봤는데, 개별 디바이스별로 적용이 다르게 할 수 있겠네요.

    그리고 설정에서 모드 변경하는게 저는 일반적이라고 생각을 했습니다. 사이트는 아니지만, mac os 에서도 다크모드를 변경하려면 설정으로 들어가야 하니까요. 다크모드를 원하는 사람들이 있다면, 그정도 귀찮음은 감수 할꺼라고 생각했습니다. 모든 회원보다는 이런 귀찮음을 감수하면서까지 다크모드를 원하는 사람들만이라도 사용하면 좋을것 같았습니다.

    저는 이렇게 귀찮지만 해주는 회원들이 고맙더라구요 ㅎ

    그리고 제 욕심으로 일단은 가능한 방법들을 이것 저것 제가 한번 해보고, 괜찮은 방법으로 설정을 해보려고 하려다보니, 이것저것 궁금한게 생겼습니다. ^^ 항상 자세한 코멘트 고맙습니다.

    웹지기님 댓글처럼 회원에게만 버튼을 노출시켜도 될것같아요!
  • ? profile

    반박을 하려는 것 같아서 적지 않으려고 했는데요.
    운영자님 마인드와 이용자의 마인드는 다릅니다. 밤에 침대에 누워 버튼 한번으로 나이트모드로 전환이 되는게 일반적인데 운영하시는 사이트만 회원정보수정 -> 비밀번호확인 -> 나이트모드 -> 회원정보수정 저장 이걸 해야 변경되는 것을 요구 한다면 ... 저라면 운영자를 조금 이상하게 생각하게 될 것 같습니다.

    사이트에서 제공하는 기능 중 과연 회원정보의 수정까지 해가면서 이 모드를 변환해 줘야 하는지 저는 생각이 다르구요.

    일반적인 회원정보의 저장된 값을 이용하는 경우는 최소 이 설정이 변함없이 유지 되거나 혹은 그 기간이 비교적 긴 장시간 이용될때 사용합니다. 그렇지 않은 경우 쿠키를 사용하는게 회원을 덜 괴롭히게 되는 것이죠.

    주간,야간 수시로 바꿔야 하는 것에 회원정보 설정을 이용하는건 저로서는 말리고 싶습니다.

     

    저희는 비슷한 것을 회원정보에 거주지역을 입력받아 스킨등에서 출력하는 등에 이용하고 있습니다. 이 경우 거주지역 변경이 매일 일어나지 않는 케이스로 부담이 없는 방식이죠.

  • profile ?
    반박이라고 생각안하구요. 너무 좋은 의견입니다^^. (이런 이야기를 할 사람이 여기뿐이라서..너무 좋아요..ㅎ)
    무슨말씀이신지 충분히 이해했습니다.

    아 그리고 제가 생각못한 단계.."비밀번호 확인"이 있었군요..ㅠ

    그리고 제가 처음 다크모드라고 설명한게 어쩌면 잘못된 어휘선택일수도 있을것같습니다.
    눈의 피로감이나 저전력을 위한 다크모드보다는, 단순히 완성도 높은 어두운 레이아웃 디자인에 가깝습니다.

    그래서 기능적인 측면보다는 취향에 따라서 쓸수 있는 걸로 생각을 했습니다.
    수시로 바꿔서 사용한다기보다는 자신의 취향에 맞게 사용할 수 있다" 정도의 선택지 하나 더 추가한정도라고 생각했었어요..

    거주지역으로 스킨출력하는것도 재미있겠네요!!

    좋은 의견 너무 감사드립니다!
    많이 배워갑니다.
  • profile

    확장변수 이름이 nightmode라고 할 때

    <!--@if($logged_info->nightmode == '켜져 있음을 의미하는 값')-->

     

    켜져 있음을 의미하는 값은 확장변수를 어떤 식으로 만들었는지에 따라 다릅니다.

    (예/아니오, 사용/미사용, Y/N 등)

  • profile ?
    고맙습니다!! 테스트 해보겠습니다!
  • profile ?

    스크린샷 2019-06-20 오후 1.10.16.png

    이렇게 설정했는데..


    <!--@if($logged_info->darkmode == '사용함')-->

    이게 맞을까요?

     

     

  • ? profile
    맞을껄요? 이런거 테스트는 직접 해보시면 됩니다.
    레이아웃에
    <!--@if($logged_info->darkmode == '사용함')-->
    맞나?
    <!--@end-->

    라고 아무데나 넣으시고. 로그인하시는 계정에 회원정보에 반영해 보시면 됩니다.
  • profile ?
    해봤는데 안돼서..제가 뭘 잘못했는지..
  • ? profile

    그럼 윗줄에서
    {@ $logged_info = Context::get('logged_info');}

    이렇게 한번 로그인 정보를 가져와서 담아보세요.

  • profile ?
    {@ $logged_info = Context::get('logged_info');}
    <!--@if($logged_info->darkmode == '사용함')-->
    맞나?
    <!--@end-->

    이렇게 맞나요?
    왜 안나오는지 모르겠네요..
  • ? profile
    그렇다면 뭔가 다른 실수를 하시거나 하는 듯 합니다. {@ $logged_info = Context::get('logged_info');} 자체가 필요 없을 수 있구요.

    계정의 회원정보에 반영이 안되어 있거나 등...
    여러가지 테스트를 해보셔야 할 것 같습니다.

    {print_r($logged_info)}

    이렇게 하시면 로그인정보에 담긴게 무엇 무엇인지 출력이 될 겁니다.
  • profile ?
    뭐가 문제인지 모르겠네요..
    {print_r($logged_info)} 이렇게 했더니..

    다크모드 내용은 이부분 인거 같은데요..
    [darkmode] => Array ( [0] => 사용함 ) ) 1


    이렇게 했더니..되네요~!
    문제는 없는건가요?
    <!--@if($logged_info->darkmode)-->
    맞나?
    <!--@end-->
  • ? profile

    이렇게 하면 사용함,사용안함 등 여러가지 일 경우 조건 비교가 안될 거에요. 들어있는 값 사용함이 매칭되도록 해야 할 것 입니다. 저는 비슷한 것을 사용하긴 하지만 단일선택에 선택할 수 있는게 저희는 하나가 아니고 여러개라는 차이가 있긴 합니다.

     

    여러개를 선택해야 할 상황이 아니니 단일선택으로 바꿔보세요.

    아마도 다중선택일 경우 배열에 항목이 포함되어 있는지의 조건문으로 바꿔야 하니 복잡해질 것 같으니 그냥 단일선택으로....

  • profile ?
    아..이렇게 하니 되네요..

    사용자정의 추가할때, 다중선택으로 해서 배열이 나왔나봐요.

    단일선택 라디오버튼으로 바꾸니
    <!--@if($logged_info->darkmode == '사용함')-->
    맞나?
    <!--@end-->
    이게 정상적으로 작동하네요

    로그인 정보에도 이렇게 나오네요~
    [darkmode] => 사용함
  • ? profile

    네. 배열은 배열안에 내가 체크하고 싶은 값이 포함인지 조건문을 사용해야 합니다.

  • profile ?
    답답했던 부분 친절하게 설명해주시고,
    시간내주셔서 고맙습니다.
  • ? profile
    아 그리고 선택항목에 사용안함을 추가해주지 않으시면 아마도 수정해서 체크를 해제하지 못할 수 있습니다. 이럴 경우 선택항목을 하나만 제시하고 선택/해제를 하려면 다중선택으로 해야 할 것입니다.

    한번 더 눌렀을때 체크해제가 되지 않는다면 사용안함 도 선택할 수 있게 추가해주세요.
  • profile ?
    네~ 사용안함을 추가했어요~

    이 방법도 괜찮은것 같은데,

    쿠키로 할지 고민되네요~ㅎ
  • ? profile
    불편합니다. 아마도 꽤 많은 사람이 기능 추가에도 불구하고 불만을 가지는 분이 많을 겁니다. 회원정보까지 들어가서 옵션을 바꿔야 한다는 것 자체가 귀찮은 일이죠. 물론 다크모드 성격이 아닌 한번 지정한 것을 몇개월씩 유지하며 사용한다면 굳이 쿠키를 쓰지 않고 여기서 설정값을 적용해도 되겠지만요....
  • profile
    한가지 팁을 드리면.
    방문자가 직접 주.야간 모드 변경은 버튼으로 쿠키생성/쿠키삭제 등으로 즉시 전환하게 해주시고.

    말씀 하신 회원정보의 입력을 받는 것은

    "주.야간모드 자동변경 사용" 기능으로 이용해보세요.
    자동모드 이용을 선택한 회원에게는

    레이아웃에서 버튼을 누르지 않아도 자동으로 시간에 따라 주간,야간 CSS가 불러오지도록 구현하시면 될 것입니다.

    이렇게 할 경우 회원정보 수정에서 바꿀 경우는 맘이 바뀌었을 경우이니 빈도도 많지 않고 자동으로 변환하는 기능을 사용할지 결정할 수 있습니다.
  • profile ?
    네! 주야간 자동변경같은것도 고려해봐야겠어요!! 좋은팁 고맙습니다!
  • ? ?
    웹지기님 의견에 동감합니다 회원정보에서 넣는 것 보다 레이아웃에서 쿠키나 로컬 스토리지로 받는 것이 접근성은 더 나은 편입니다. 저도 현재 로컬스토리지에서 쿠키를 이용한 다크 모드를 구현하고 있는데요 누구나 쉽게 접근 가능한 방식이다 보니 사용자 편의에 맞게 라이트/다크 모드를 사용할 수 있으니 불편과 관련된 문의도 없고.. 더구나 클릭 한 번으로 쿠키 지울 때까지 유지되니.. 편한건 편한거죠 ^^ 어차피 해당 css prefix 추가 하느냐 빼느냐를 구현하는 것 뿐이니까요