[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) && 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://' && substr($img_link,0,8) != 'https://' && 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();
}
}
?-->