Extra Form
PHP PHP 7.0
CMS XpressEngine

현재 베스트 게시판을 타임라인으로 운영하고 있습니다.

그러다보니 타임라인으로 만들어진 베스트게시판에 등록된 글이나 댓글은 위젯에서 가져오지 못하구요

 

그래서 생각한 것이 컨텐츠 확장 위젯에서 컨텐츠 조건 설정을 사용하여 일반게시판에서 베스트게시판 타임라인으로 가져가는 것과 동일한 조건(추천수 N개 이상)을 적용해서 위젯에서 불러왔으면 하는데, 게시글의 경우엔 적용이 되지만 댓글의 경우 조건을 주면 게시된 글에 조건이 적용되는게 아니라 댓글 추천수를 기준으로 (당연한겁니다만) 불러오더라구요.

(얼결에 최근 베댓 위젯 생성... @_@)

 

그래서 댓글을 불러오지만, 조건은 게시글에 걸어주려고 340행쯤의 

$oComment 를 $oDocument 로 바꿔봤지만, 여전히 댓글 추천수를 기준으로 잡아오네요.

// 컨텐츠 조건범위 확인
                        if ($args->use_limit == 'voted_count_upper' && $oDocument->get('voted_count') < $args->limit_number) continue;
                        else if ($args->use_limit == 'voted_count_lower' && $oDocument->get('voted_count') > $args->limit_number) continue;
                        else if ($args->use_limit == 'readed_count_upper' && $oDocument->get('readed_count') < $args->limit_number) continue;
                        else if ($args->use_limit == 'readed_count_lower' && $oDocument->get('readed_count') > $args->limit_number) continue;
 
 

 

그래서 좀 더 살펴보다가 410행 정도에서 요론게 있길래 이것도  $oComment 를 $oDocument 로 바꿨더니 뻑! 홈피 먹통 ㅋㅋ (코알못 꺼져라고 외치시는 홈피님)

$content_item->setVotedCount($oDocument->get('voted_count'));
 

 

 

제가 생각하는 것이 구현이 가능은 할까요?

추천수 N개 이상인 게시글에 달린 최근댓글을 위젯에서 불러오기..... 

 

 

저렇게 간단하게는 안 되는 것 같고, 댓글에 해당하는 문서를 끌고와서 조건을 입혀야하는데 코알못의 실력으로는 그냥 포기해야할까요? ㅠ 지푸라기라도 잡는 심정으로 그냥 포기하라는 말이라도 듣고 싶어서 끄적여봅니다 ㅠㅠㅠㅠㅠ

  • profile

    기존 위젯에 새 기능을 추가하는 것보다 새 위젯을 제작하는 게 덜 복잡할 것 같습니다.
    아니면 타임라인 모듈 전용 위젯을 만들든가요;; (호오.. 이거 꽤 매력적)

    뭐 그래서 누가 만들거냐, 라면 또르르... 입니다만ㅜㅜ

     

    아, 그리고 제시하신 코드 정보만으로는 조언을 얻으시기가 제한적일 거 같네요;;

  • profile ?

    타임라인용 위젯이 절실한 상황입니다. 하지만 저는 코알못 ㅠ

    지금 살펴보니 타임라인으로 끌려간 글은 문서번호는 동일하지만 앞에 게시판? 주소만 다르네요
    이걸 기준으로 게시판은 무시하고 문서번호만으로 불러오는 위젯이 있다면 타임라인도 적용이 되지 않을까요?!!

     

    아 하지만 타임라인 게시판의 공개 형태가 다른 상황인 경우가 있어 권한 문제가 있을 수 있어서 

    게시판을 무시하는게 아니라 어느 게시판에 등록된 글이던, 게시판 url이 타임라인 게시판 url로 변경되면서 동일한 문서번호를 끌고 올 수 있다면 일단 저희 홈에서는 대박입니다.

  • ? profile

    잠이 안 와서 살짝 시험해봤습니다.

    컨텐츠 위젯 스킨에서 깔짝거려봤는데요ㅎㅎ

    (위젯 설정 > 추출 대상 > 대상 페이지 멀티셀렉트 메뉴에서 타임라인 모듈이 적용된 게시판 1개만 설정됐다는 전제 하에)

     

    $oTimelineModel = getModel('timeline');
    $target_module_srl = array_values($widget_info->modules_info)[0]->module_srl;
    $timeline_info = $oTimelineModel->getTimelineInfo($target_module_srl);
    $args = new stdClass();
    $args->module_srl = implode(',', $timeline_info->attach_info);
    $doc_list = $oTimelineModel->getDocumentList($args);

     

    이렇게 하니까 $doc_list에 타임라인 모듈(이 작동하는 mid)의 게시물만 주르륵 뜨네요ㅋ

     

    암튼 요런 거에 맞춰서 (1) (위의 코드는 스킨 기준이니까) $target_module_srl 잘 설정하고, (2) list_count, page_count 잡아준 뒤, (3) 그 결과를 (위젯 변수에 맞춰) 위젯에 뿌려주면 될 것 같은 예감입니다.

    원하시는 것처럼, (4) 타임라인 모듈에서 취합된 게시글에 한해 최신 댓글을 수집하는 건 그 이후에 소스를 더 추가하면 되겠구요.