1

주제: 센터_최신 댓글 플러그인 수정 질문입니다.

태터툴즈가 1.1로 업데이트 하면서(?) 예전에 사용했던 유진아비님의 최신 댓글에서 답변글 제외 플러그인이 작동하지 않아서 J.Parker님에게 플러그인을 의뢰했었지만 결자해지로 직접 삽질 중입니다.

센터의 최근 댓글 플러그인을 수정해서 만들려고 하는데, 프로그래밍이나 코딩 쪽과는 거리가 멀고 예전 클래식 수정할 때의 삽질실력으로 이리저리 수정했는데 막히는게 있어서 질문드립니다.

먼저 수정한 코드를 보여 드리겠습니다.

function _getRecentComments($owner) {
    global $skinSetting, $database, $configVal, $pluginURL;
    $data = fetchConfigVal($configVal);
    $comments = array();
    $repliesChk = ($data['repliesChk'] == 1)?"":" AND replier is NULL ";
    $limitLine = ($data['repliesList'])?$data['repliesList']:$skinSetting['commentsOnRecent'];
    $sql = "SELECT * FROM {$database['prefix']}Comments WHERE owner = {$owner} AND entry>0 AND isFiltered = 0 {$repliesChk} ORDER BY written DESC LIMIT {$limitLine}";
    if ($result = mysql_query($sql)) {
        while ($comment = mysql_fetch_array($result)) {
            if ($data['repliesChk'] == 2) {
                $row = DBQuery::queryCell("select count(*) from {$database['prefix']}Comments where owner = $owner AND parent = ".$comment['id']);
                $comment['replier'] = ($row)?"":"";
            }else{$comment['replier'] = "";}
            $comment['secret'] = ($comment['secret'] == 1)?"<img src=\"{$pluginURL}/secret.gif\" width=\"9\" height=\"11\" style=\"margin-left:2px;\"/>":"";
            array_push($comments, $comment);
        }
    }
    return $comments;
}

// lib/view/view.php : 906 line
function _getRecentCommentsView($comments, $template) {
    requireComponent("Eolin.PHP.Core");
    requireComponent("Tattertools.Function.misc");
    global $blogURL, $skinSetting;
    ob_start();
    foreach ($comments as $comment) {
        $view = "$template";
        misc::dress('rctrp_rep_link', "$blogURL/{$comment['entry']}#comment{$comment['id']}", $view);
        misc::dress('rctrp_rep_desc', htmlspecialchars(UTF8::lessenAsEm($comment['comment'], 30)), $view);
        misc::dress('rctrp_rep_time', fireEvent('ViewRecentCommentDate', Timestamp::formatTime($comment['written'])), $view);
        misc::dress('rctrp_rep_name', htmlspecialchars(UTF8::lessenAsEm($comment['name'],10)).$comment['secret'].$comment['replier'], $view);
        print $view;
    }
    $view = ob_get_contents();
    ob_end_clean();
    return $view;
}

// lib/piece/blog/end.php : 48 line
function RecentRP($target) {
    global $owner;

    $target .= '<ol>'.CRLF;
    $target .= _getRecentCommentsView(_getRecentComments($owner),'    <li><a href="[##_rctrp_rep_link_##]">[##_rctrp_rep_desc_##]</a><br /><div class="info"><span class="name">[##_rctrp_rep_name_##]</span> - <span class="date">[##_rctrp_rep_time_##]</span></div></li>'.CRLF);
    $target .= '                                        </ol>'.CRLF;

    return $target;
}

function RecentRP_DataSet($DATA){
    requireComponent('Tattertools.Function.misc');
    $cfg = misc::fetchConfigVal($DATA);
    return true;
}

조금씩만 수정했습니다만, 왠만큼 기본틀은 나오는데 원래 관리자 플러그인이어서 그런지 비밀댓글도 그냥 출력해 버리는 문제가 있으며, 댓글 앞의 숫자를 없애는 방법을 모르겠습니다. 많은 도움 부탁 드립니다. big_smile

DARKLiCH (2007-02-20 19:36:36)에 의해 마지막으로 수정

Pain past is pleasure

2

답글: 센터_최신 댓글 플러그인 수정 질문입니다.

태터 기본 최신댓글을 참고해보세요. 그리고, 목록의 숫자는 <ol>태그의 속성을 스타일에서 변경해주시면 됩니다.

    $sql=doesHaveOwnership()?"SELECT * FROM 
            {$database['prefix']}Comments 
        WHERE 
            owner = $owner AND entry>0 AND isFiltered = 0 
        ORDER BY 
            written 
        DESC LIMIT 
            {$skinSetting['commentsOnRecent']}":"SELECT r.* FROM 
            {$database['prefix']}Comments r
            LEFT JOIN {$database['prefix']}Entries e ON r.owner = e.owner AND r.entry = e.id
            LEFT JOIN {$database['prefix']}Categories c ON e.owner = c.owner AND e.category = c.id
        WHERE 
            r.owner = $owner AND e.draft = 0 AND e.visibility >= 2 AND (c.visibility > 1 OR e.category = 0) AND entry > 0 AND isFiltered = 0 
        ORDER BY 
            r.written 
        DESC LIMIT 
            {$skinSetting['commentsOnRecent']}";
    if($result=DBQuery::query($sql)){
        while($comment=mysql_fetch_array($result)){
            if(($comment['secret']==1)&&!doesHaveOwnership()){
                $comment['name']='';
                $comment['homepage']='';
                $comment['comment']=_text('관리자만 볼 수 있는 댓글입니다.');
            }
            array_push($comments,$comment);
        }
    }
ol,
ol li,
ul,
ul li
{
    list-style-type                  : none;
}
당신의 삶속에 매화꽃 향기처럼 늘 아름다운 향기로 가득하길...
# J.Parker

3

답글: 센터_최신 댓글 플러그인 수정 질문입니다.

J. Parker 작성:

태터 기본 최신댓글을 참고해보세요. 그리고, 목록의 숫자는 <ol>태그의 속성을 스타일에서 변경해주시면 됩니다.

제가 워낙에 실력이 미진해서 J.Parker님이 보여주신 코드를 참고해도 이 정도 밖에 나오지 않습니다. OTL..

function _getRecentComments($owner) {
    global $skinSetting, $database, $configVal, $pluginURL;
    $data = fetchConfigVal($configVal);
    $comments = array();
    $repliesChk = ($data['repliesChk'] == 1)?"":" AND replier is NULL ";
    $limitLine = ($data['repliesList'])?$data['repliesList']:$skinSetting['commentsOnRecent'];
    $sql = "SELECT * FROM {$database['prefix']}Comments WHERE owner = {$owner} AND entry>0 AND isFiltered = 0 {$repliesChk} ORDER BY written DESC LIMIT {$limitLine}";
    if ($result = mysql_query($sql)) {
        while ($comment = mysql_fetch_array($result)) {
            if ($data['repliesChk'] == 2) {
                $row = DBQuery::queryCell("select count(*) from {$database['prefix']}Comments where owner = $owner AND parent = ".$comment['id']);
                $comment['replier'] = ($row)?"":"";
            }else{$comment['replier'] = "";}
            if ($comment['secret'] = ($comment['secret']==1)&&!doesHaveOwnership()){
                $comment['name']='';
                $comment['homepage']='';
                $comment['comment']=_text('관리자만 볼 수 있는 댓글입니다.');
            }
            array_push($comments,$comment);
        }
    }
    return $comments;
}

// lib/view/view.php : 906 line
function _getRecentCommentsView($comments, $template) {
    requireComponent("Eolin.PHP.Core");
    requireComponent("Tattertools.Function.misc");
    global $blogURL, $skinSetting;
    ob_start();
    foreach ($comments as $comment) {
        $view = "$template";
        misc::dress('rctrp_rep_link', "$blogURL/{$comment['entry']}#comment{$comment['id']}", $view);
        misc::dress('rctrp_rep_desc', htmlspecialchars(UTF8::lessenAsEm($comment['comment'], 30)), $view);
        misc::dress('rctrp_rep_time', fireEvent('ViewRecentCommentDate', Timestamp::formatTime($comment['written'])), $view);
        misc::dress('rctrp_rep_name', htmlspecialchars(UTF8::lessenAsEm($comment['name'],10)).$comment['secret'].$comment['replier'], $view);
        print $view;
    }
    $view = ob_get_contents();
    ob_end_clean();
    return $view;
}

// lib/piece/blog/end.php : 48 line
function RecentRP($target) {
    global $owner;

    $target .= '<li>'.CRLF;
    $target .= _getRecentCommentsView(_getRecentComments($owner),'    <li><a href="[##_rctrp_rep_link_##]">[##_rctrp_rep_desc_##]</a><br /><div class="info"><span class="name">[##_rctrp_rep_name_##]</span> - <span class="date">[##_rctrp_rep_time_##]</span></div></li>'.CRLF);
    $target .= '</li>'.CRLF;

    return $target;
}

function RecentRP_DataSet($DATA){
    requireComponent('Tattertools.Function.misc');
    $cfg = misc::fetchConfigVal($DATA);
    return true;
}
?>

댓글 앞의 숫자는 oi를 li로 바꾸는 걸로 해결했고, 비밀댓글문제도 해결되었고 대부분 해결되었습니다. 소스 대충 테스트 해보고 공개하겠습니다;;  smile

DARKLiCH (2007-02-20 23:07:47)에 의해 마지막으로 수정

Pain past is pleasure