[PHP] 티스토리 스킨 텍스트큐브에 적용하기

[PHP] 티스토리 스킨 텍스트큐브에 적용하기

티스토리용 스킨이 마음에 드는것이 있어서 가져와서 적용을해보니 되지 않는 부분이 너무 많았습니다.
스킨파일이 HTML 파일에 대해서는 적절하게 수정을 하면은 사용을 할 수 있지만은 치환자에 대해서는 어떻게 손쓸 방법이 없어서… 결국은 PHP 파일을 수정하게 되었습니다.

해당위치에 파일의 원본을 최대한 보전하면서, 스킨의 기능을 이용하기 위해서 수정한것입니다.
그래서인지 속도는 다소 느려지는 편입니다.

파일 위치 : interface/common/blog/list.php

<!--?php 
/// Copyright (c) 2004-2016, Needlworks / Tatter Network Foundation
/// All rights reserved. Licensed under the GPL.
/// See the GNU General Public License for more details. (/documents/LICENSE, /documents/COPYRIGHT)
 
 
if (!empty($listView)) {
    dress('list', $listView, $view);
} else if (isset($list) &amp;&amp; isset($skin)) {
    // 블로그 ID 가져오기
    $blog_id = $context->getProperty('blog.id');
 
    $listView = $skin->list;
    $itemsView = '';
    foreach ($list['items'] as $item) { 
 
        // 각 글의 페이지 정보를 획득 하도록 함.
        list($entries, $paging) = getEntryWithPaging($blogid, $item['id']);
        $content = $entries[0][9];
 
        $img_link = ''; // image src를 비워 놓고 시작 하면 됨.
        if(preg_match('/\[##_(1R|1L|1C|2C|3C|iMazing|Gallery)\|([^|]*)\.(gif|jpg|jpeg|png|bmp)\|.*_##\]/i', $content, $matches)) {
            // 첫 그림이 치환자로 들어간 것일 때
            $img_link = $serviceURL.'/attach/'.$blogid.'/'.$matches[2].'.'.$matches[3];
        } else if(preg_match('/\<img[^>]+?src=("(.*?)"|\'(.*?)\').*\>/i', $content, $matches)) {
            // 첫 그림이 <img> 태그로 들어간 것일 때
            $img_link = $matches[2];
            if(substr($img_link,0,7) != 'http://' &amp;&amp; substr($img_link,0,8) != 'https://' &amp;&amp; substr($img_link,0,2) == '//') {
                $img_link = $serviceURL.(subsur($img_link,0,1) == '/' ? '' : '/').$img_link;
            }
        }
 
        // 기본 이미지 정해주기
        if( empty($img_link) == true) {
            $img_link = '/textcube.gif';
        }
 
        // Html 태그 제거하여서 순수 글자만 남겨 놓도록 함.
        $content = htmlspecialchars($content);
        $content = strip_tags($content);
 
        $author = User::getName($item['userid']);
         
        /*
         * 추가된 부분 :
         * 1. '[##_list_rep_summary_##]',
           * 2. '[##_list_rep_thumbnail_url_##]'
         *
          * 1-1. mb_substr($content, 0, 250, 'UTF-8'),
         * 1-2. $img_link
         *
         */
        $itemsView .= str_replace(
            array(
                '[##_list_rep_regdate_##]',
                '[##_list_rep_name_##]',
                '[##_list_rep_author_##]',
                '[##_list_rep_link_##]',
                '[##_list_rep_title_##]',
                '[##_list_rep_rp_cnt_##]',
                '[##_list_rep_summary_##]',
                '[##_list_rep_thumbnail_url_##]'
 
            ),
            array(
                fireEvent('ViewListDate', Timestamp::formatDate($item['published']), $item['published']),
                fireEvent('ViewListName', htmlspecialchars($author)),
                fireEvent('ViewListName', htmlspecialchars($author)),
                ((!empty($skinSetting['showListWithTotalEntries'])) ? "#entry_".$item['id'] :
                "$blogURL/" . ($blog['useSloganOnPost'] ? 'entry/' . URL::encode($item['slogan'],$service['useEncodedURL']) : $item['id'])).(isset($list['category']) ? '?category='.$list['category'] : ''),
                fireEvent('ViewListTitle', htmlspecialchars($item['title'])),
                ($item['comments'] > 0) ? "{$item['comments']}" : '',
                mb_substr($content, 0, 250, 'UTF-8'),
                $img_link
            ),
            $skin->listItem
        );
    }
    dress('list_rep', $itemsView, $listView);
    dress('list_conform', fireEvent('ViewListHeadTitle', htmlspecialchars($list['title']) ), $listView);
    dress('list_count', isset($list['count']) ? $list['count'] : '0', $listView);
    dress('list_rss_url', $context->getProperty('uri.default').'/rss/'.$listFeedURL, $listView);
    dress('list_atom_url', $context->getProperty('uri.default').'/atom/'.$listFeedURL, $listView);
    $listView = fireEvent('ViewList', $listView, $list);
    if(empty($entries)) $listView = $listView.CRLF.'[##_paging_list_##]';
 
    dress('list', $listView, $view);
    if(isset($cache)) { 
        $cache->contents = $listView;
        $cache->dbContents = $paging;
    $cache->update();
    }
}
?-->