@김햄C님께 대댓글 달려다가 내용이 길어져서 별도 게시물로 작성합니다.

현재 해당 위젯 스킨은 날짜 구현이 문서 등록일로 되어 있는데요, 이를 특정 날짜로 수정해서 사이트나 운영 단체의 연혁으로 활용할 수 있도록 하는 팁입니다.

 

1. 확장변수를 불러오기 위해 루트/widgets/content/content.class.php 수정: 순정 파일 기준 933행과 934행 사이에 다음을 추가

function getExtraVars()
{
  $oDocumentModel = &getModel('document');
  return $oDocumentModel->getExtraVars($this->get('module_srl'), $this->get('document_srl'));
}
function getExtraEidValue($eid)
{
  $extra_vars = $this->getExtraVars();
  foreach($extra_vars as $idx => $key)
  {
    $extra_eid[$key->eid] = $key;
  }
  return $extra_eid[$eid]->value;
}


2. 불러오고자 하는 게시판에 '일자(연월일) 형식'의 사용자 정의가 있는지 확인하고 없으면 추가. 여기선 해당 확장변수의 번호는 1번이고, 사용자 정의 이름은 event_date라고 가정하겠습니다.

 

3. 루트/widgets/content/skins/vertical-timeline/_history.html 를 열고 9행의 <li loop="$widget_info->content_items=>$key,$item" class="cd-timeline-block" style="display:none"|cond="$_idx >= $widget_info->list_count"> 끝 부분에 다음과 같이 조건식 추가: <li loop="$widget_info->content_items=>$key,$item" class="cd-timeline-block" style="display:none"|cond="$_idx >= $widget_info->list_count" cond="$item->getExtraEidValue('event_date')">

 

4. 같은 파일 14행의 {$item->getRegdate("Y.m.d")} 을 다음과 같이 수정: {zdate($item->getExtraEidValue('event_date'),'Y.m.d')} 또는 {zdate($item->getExtraVars()[1]->value,'Y.m.d')}

 

- 그 외에 뽀너스로 해당 게시물을 확장변수에 따라 정렬하는 방법도 알아보면 좋을 텐데요. 그건 지금 밥 먹으러 나가야 해서;;;; 그럼 이만 줄입니다. 도움이 됐으면 좋겠습니다.

 

...

 

5. (밥 먹고 옴ㅋ) 확장변수에 따른 위젯 정렬 방법: _hisotory.html 6행 쯤에 다음의 내용을 삽입.

<!--@foreach($widget_info->content_items as $key => $item)-->
{@ $new_sort[$key] = $item->getExtraEidValue('event_date'); }
<!--@end-->
{@ array_multisort($new_sort,SORT_DESC,$widget_info->content_items); }

- 여기서도 $item->getExtraEidValue('event_date') 대신 $item->getExtraVars()[1]->value 를 사용해도 무방합니다.
- 오래된 날짜부터 정렬하고 싶으면 SORT_DESC 대신 SORT_ASC 를 사용하면 됩니다.

윤삼

profile
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
  • profile
    너무 친절하셔서 ㅠㅠㅠ 몸둘 바를 모르겠...OTL
    정말 감사합니다! 저 같은 사람한테는 진짜 도움되는 글이에요 ㅠㅠㅠㅠㅠㅠ 나중에 혹시 디자인적으로 뭔가 생기시면 저도 도와드리고 싶...OTL 능력이 요것밖에 안되네요. 무튼, 정말 정말 감사합니다! 이따가 시도해봐야겠어요 +ㅅ+
  • profile profile
    우왓, 그럼 염치 불구하고 sos 칠 날을 고대하겠습니다 ^^/ 물론 결례가 되지 않는 한에서요 :)
  • profile
    날짜정렬팁 필요했는데 감사합니다 ^^
  • profile profile

    저도 공홈에 있는 팁 참고한 거여서 사실 별 거 없어요 헤헷

  • ?
    베리 베리 감사합니다. ^^
  • profile
    서버 오류 ParseError #0 "syntax error, unexpected end of file" in widgets/content/skins/vertical-timeline/_history.html on line 82 혹시 이 에러가 뜨는데 이유를 알수 있을까요?
  • profile profile
    _communication.html 파일과 _history.html 파일 내에

    <img src="{$item->getThumbnail($widget_info->thumbnail_width,$widget_info->thumbnail_height,$widget_info->thumbnail_type)}" /> 이라는 부분이 있을 텐데요.

    이거를
    <img src="{$item->getThumbnail()}" />로 바꿔보세요.
  • profile profile

    감사합니다. 참고로 위에 서버오류는 제가 contents.class.php에 잘못 가져다 붙여서 생긴 문제였어요.  썸네일 안나오는건 말씀하신데로 바꾸니까 잘 나옵니다. 정말 감사합니다. 너무 좋은 자료에요

  • profile
    저는 루트/widgets/content/content.class.php 수정: 순정 파일 기준 924행이 끝인데 어디에 넣어야 할까요? Rhymix 2.1.13 버전입니다;;;
  • profile profile

    바로 아래에 있는 adlib님 댓글을 참고해보세요.

     

    덧. 아, 설치 의뢰하셨군요. 그게 가장 빠르고 안전한 길일 수 있겠어요. 그리고 가능하시다면 위의 팁은 코어를 수정하는 것이니 가급적 하지 마시고, 위젯 스킨 자체적으로 확장변수를 구현하게끔 의뢰해보세요. 그게 좀 더 안정적일 겁니다.

  • profile profile
    네 알겠습니다. 위젯 스킨을 수정해달라고 부탁드려보겠습니다. 감사합니다. 즐거운 설 연휴되시길 바라겠습니다. ^^
  • profile profile
    의뢰했는데 개발자분이 위젯스킨 수정은 어려워하셔서.. 의뢰가 불발되었습니다;;;
  • profile profile

    스킨에서 바로 연혁 구현할 수 있는 방법을 정리해볼게요.

    (참고로 저는 스킨 파일을 유실해서 직접 테스트는 못해봤어요)

     

    1. 불러오고자 하는 게시판에 '일자(연월일) 형식'의 사용자 정의가 있는지 확인하고 없으면 추가. 여기선 해당 확장변수의 번호를 1번이라고 가정하겠습니다.


    2. 루트/widgets/content/skins/vertical-timeline/_history.html 6행 쯤에 다음의 내용을 삽입.

    <!--@foreach($widget_info->content_items as $key => $item)-->
        {@
            $extra_vars = DocumentModel::getExtraVars($item->getModuleSrl(), $item->get('document_srl'));
            $primary_sort[$key] = !empty($extra_vars) ? $extra_vars[1]->value : '';
            $secondary_sort[$key] = $item->get('list_order');
        }
    <!--@end-->
    {@ array_multisort($primary_sort, SORT_DESC, $secondary_sort, SORT_ASC, $widget_info->content_items); }

     

    3. 루트/widgets/content/skins/vertical-timeline/_history.html 수정

    <li loop="$widget_info->content_items=>$key,$item" class="cd-timeline-block" style="display:none"|cond="$_idx >= $widget_info->list_count">
    (중략)
    </li>

     

    이 부분을 다음과 같이 바꿔줍니다.

    <!--@foreach($widget_info->content_items as $key => $item)-->
        {@
            $extra_vars = DocumentModel::getExtraVars($item->getModuleSrl(), $item->get('document_srl'));
            $event_date = !empty($extra_vars) ? $extra_vars[1]->value : '';
        }
    <li class="cd-timeline-block" style="display:none"|cond="$_idx >= $widget_info->list_count" cond="$event_date">
    (중략)
    </li>
    <!--@endforeach-->

     


    4. 같은 파일에서 {$item->getRegdate("Y.m.d")} 을 찾아 다음과 같이 수정:

        {zdate($event_date, 'Y.m.d')}

    로 수정

  • profile profile

     

    우선 상세한 답글 너무 감사드립니다. 알려주신대로 해보니 타임라인이 생성되는데 성공했습니다. ^^

    단, 타임라인에 표시되는 순서가 같은 날짜일 경우, 정렬을 오름,내림차순과 상관없이 무조건 내림차순으로 표시되는군요.

    게시판에는 아래처럼 번호순으로 글을 등록하였고, 날짜는 1.2.3번은 동일한 날짜로 했습니다만 타임라인에서는 등록순이 아니라 

    마지막에 등록한 역순으로 표기됩니다.

     

    스크린샷 2024-02-09 213447.png

     

    스크린샷 2024-02-09 213717.png

     

    썸네일도 안되는데, 썸네일은 어디를 수정하면 될까요?

    수정된 타임라인 파일은 윤삼님께서 원본파일 없으시다고 해서 첨부하였습니다.

    Atachment
    첨부
  • profile profile
    위의 팁 댓글에서 2번 항목을 좀 수정해봤습니다. 한번 테스트해보세요.
    썸네일은 https://xetown.com/tips/292144#comment_1272943 의 댓글처럼 해보시면 어떨까 싶네요.
    그리고 원본 파일 감사합니다 :D
  • profile profile

    오... 완벽해진거 같습니다. 타임라인 정렬도 잘되고 썸네일도 잘 나옵니다. 즐거운 설연휴 되십시요. 다시한번 감사드립니다.

  • profile profile
    네, 잘 된다니 다행이네요. 남은 연휴 즐겁게 보내세요!
  • profile

    위의 파일 맨 아래줄 } 위에 아래 코드를 삽입 하시면 됩니다. (923과 924 사이)

    function getExtraVars()
    {
    $oDocumentModel = &getModel('document');
    return $oDocumentModel->getExtraVars($this->get('module_srl'), $this->get('document_srl'));
    }
    function getExtraEidValue($eid)
    {
    $extra_vars = $this->getExtraVars();
    foreach($extra_vars as $idx => $key)
    {
    $extra_eid[$key->eid] = $key;
    }
    return $extra_eid[$eid]->value;
    }

  • profile profile

    스크린샷 2024-02-09 143329.png

            {
                return $this->get('thumbnail_x' . intval($source_size));
            }
        }
        function getMemberSrl()
        {
            return $this->get('member_srl');
        }
    }
    /* End of file content.class.php */
    /* Location: ./widgets/content/content.class.php */
     

    여기 어디에 넣어야 하는걸까요? 몇번째 줄에 넣어야 하는건지 감이 안옵니다;; ㅎ

    920행

      요기에..

    921행

     

    맞을까요?

  • profile
    네 920과 921행 사이에 넣으시면 됩니다.