Extra Form
PHP PHP 7.4
CMS Rhymix 2.1

Content 확장 위젯의 경우 

추천 순 조회순 인기순 정렬 등 워낙 기능이 많다보니 12년이 지난 지금까지 사용 중에 있습니다.

 

근데 아무래도 오래되다보니 비밀글이 최신글에 노출된다거나 

대기상태의 글이 노출되는 경우도 발생되고 있습니다.

 

그래서

 

https://xe1.xpressengine.com/index.php?mid=download&package_id=19088419

이 오래된 자료에 

 

 

 

        if($args->show_secret == 'Y')
        {
            $obj->statusList = array('PUBLIC', 'SECRET');
        }
        else
        {
            $obj->statusList = array('PUBLIC');
        }

 

이 부분을 추가 해주고 싶습니다.

 

형식이 완전히 달라 조금 애를 먹고 있는데




 

                        // 해당 문서가 비밀글일 경우 권한이 있는지 확인, 없으면 continue
                        if ($args->view_secret_document == 'use_permission' || $args->view_secret_document == 'not_show') {
                            if ($args->view_secret_document == 'use_permission' && $oComment->isSecret() && !$oComment->isGranted()) continue;
                            else if ($args->view_secret_document == 'not_show' && $oComment->isSecret()) continue;
                            
                            if ($args->comment_document_secret == 'Y') {
                                $doobj = null;
                                $doobj->document_srl = $oComment->get('document_srl');
                                $output = executeQuery('widgets.contentextended.getDocument', $doobj);
                                $oDocument = new documentItem();
                                $oDocument->setAttribute($output->data, false);
                                if ($oDocument->isSecret()) continue;
                            }
                        }

 

여기 어디 추가하면 좋을것 같은데 관련하여 도움 부탁드립니다.

 

감사합니다.

  • Lv19

    인용하신 소스는 왠지 비밀글일 때 댓글 수집을 제어하는 것 같은데요.
    정확한 판독인지는 모르겠지만, 위젯에서 비밀 댓글을 보여주는 것으로 설정했더라도 문서가 비밀글이면 그냥 통과하는 거 아닌가요?

    getNewestDocuments 쿼리 자체를 손봐야 할 것 같아요.
    getNewestDocuments.xml을 보면 문서의 status(PUBLIC, SECRET, EMBARGO 등등) 구분 없이 다 수집하는 것 같거든요.

  • Lv19 Lv12

    답변감사합니다.

     

    ㄴ.PNG

    저런식으로 뜨다보니 작년 겨울에도 해보다가 포기 했는데

    이번에 다시보니 비밀글 비밀댓글은 출력이 안되게 설정이 되네요(당시 파도위젯은 안되어서 포기했는데)

     

    엠바고 내용만 추가 해주면 될것같네요.

     

                // 비밀글 표시 방법
                if (!$args->view_secret_document) $args->view_secret_document = 'all_user';

     

    이런 방식인데 이거 

     

    info.xml에 우선 엠바고를 추가하고 몇몇개 더 테스트 해봐야겠네요.

  • Lv12 Lv19
    - '최신 글 추출'에서는 문서 목록 db 쿼리를 할 때 status가 PUBLIC 또는 SECRET인 경우를 조건으로 부여하는 것
    - '최신 댓글 추출' 등 (댓글이나 이미지와 같이) 기타 콘텐츠를 수집할 때 해당 콘텐츠가 소속된 문서의 비밀글 여부를 체크하는 것으로 보이는데, 이때 문서 status가 EMBARGO인 경우도 필터링을 해줘야 하는 것(아예 넘어가거나 아니면 '발행 대기 중인 글에 달린 댓글입니다' 같은 문구를 출력)
    등이 포인트가 될 것 같아요.
  • Lv12
    엠바고 글은 공개, 비밀 글이 아니라서 확장 위젯에서는 무조건 불러와지네요

    https://xetown.com/download/1721679#comment_1724628 도 보고 해보고
    이래저래 안돼서 또 다시 보류 해두어야겠습니다.
  • Lv12 Lv19
    네, 그게 제가 여기 맨 위의 댓글에서 드렸던 말씀이에요.
  • Lv19

    이게 다시 보니 (위젯 설정에 따라 문서 목록을 만드는 게 아니라) 애초부터 문서를 모두 다 가져온 다음에 위젯 설정에 따라 목록을 필터링하는 방식이네요. (불가피한 이유가 있을 것 같긴 한데 암튼 저같은 선무당이 봐도 비효율적이에요ㅠㅠ)

    위젯 클래스 php 파일 472행 쯤에 아래 문구를 넣어보시겠어요?
    // 해당 문서가 발행 대기 상태일 경우 continue
    if ($oDocument->getStatus() === 'EMBARGO') continue;

    isAccessible() 메소드로 하면 더 좋을 것 같긴 한데, 말씀하셨던 것처럼 문서 권한이 해제되는 경우가 있어서 위와 같은 방식으로 확인을 하면서 필터링을 해야 할 것 같아요.

  • Lv19 Lv12
    답변 감사합니다. 아주 잘숨겨짐을 확인하였습니다!!