Mellow Apricot
post-img
Read more →
post-img
Read more →
Read more →
Read more →
entry-thumbnail

| 특정 글만 색깔 넣는 기능 

 

위 사진처럼 특정 글만 색상이 변하게 하는 기능 추가하기 (별 거 없음)

해당 글의 주소만 있으면 됩니다.

 

※ 단, 관리자 화면에서 포스트 주소를 숫자로 설정해 주세요.
| 설정

관리자 화면 > 관리 > 블로그 > 주소 설정 > 포스트 주소를 []로 설정합니다.

 

 

 

1. 카테고리 페이지에서 변경하기

/* a태그 1개 */
<a href="/218" class="list-item">
	<div class="list-info">
		<div class="list-title">
			티스토리 스킨 (4. Grayscale Line Skin) 유료 배포
		</div>
		<div class="list-date">
			2023.08.13
		</div>
		<div class="list-sum">
			스킨 수정 가능 | 재배포, 재판매 금지 | 카피라이트 삭제 금지...
		</div>
	</div>
</a>

이게 대충의 레이아웃인데요 필요한 부분은 a href="/218" 부분입니다. 

 

.list-item[href="/218"] { color:red; }

이런 식으로 a태그에 [href="/218"](글 번호) 속성을 넣어서 color를 지정하면 됩니다.

응용 가능, font-weight, background 등등 

 

/* a태그 여러개 */
<div class="list-info">
	<a href="/218" class="list-title">
		티스토리 스킨 (4. Grayscale Line Skin) 유료 배포
	</a>
	<a class="list-date">
		2023.08.13
	</a>
	<a class="list-sum">
		스킨 수정 가능 | 재배포, 재판매 금지 | 카피라이트 삭제 금지
	</a>
</div>
:where(.list-title, .list-date, .list-sum)[href="/218"] { color:red; }

a태그가 여러 개라면 이런 식으로 작성해 주시면 됩니다.

 

https://developer.mozilla.org/en-US/docs/Web/CSS/:where

 

:where() - CSS: Cascading Style Sheets | MDN

The :where() CSS pseudo-class function takes a selector list as its argument, and selects any element that can be selected by one of the selectors in that list.

developer.mozilla.org

 

 

2. 본문 페이지에서 변경하기

<div class="info-item">
	<h1 class="article-title">
		티스토리 스킨 (4. Grayscale Line Skin) 유료 배포
	</h1>
</div>
<script>
const wlp = decodeURI(window.location.pathname);
document.addEventListener("DOMContentLoaded", function() {
	if ( wlp === "/218" ) {
	// 여러개면 wlp === "/218" || wlp === "/219" ,,,
		const articleTitle = document.querySelector(".article-title");
		if ( articleTitle ) {
			articleTitle.classList.add("parti"); 
			//article-title에 "parti" class 추가 생성
		}
	} //f8b878
});
</script>

wlp 부분에는 글 주소를 적어주시면 됩니다.

window.location.pathname은 /부터 문자열이 시작되므로 슬래쉬 꼭 넣어주셔야 함!

.article-title.parti { color:red; }

 

 

 

| 특정 카테고리에 class 추가하기

 

1. 특정 카테고리 페이지에서 body에 class 추가하기

<script>
const wlp = decodeURI(window.location.pathname);
document.addEventListener("DOMContentLoaded", function() {
	const bodyCategory = document.querySelector("#tt-body-category");
	if (bodyCategory && wlp === "/category/카테고리이름") {
		bodyCategory.classList.add("name") //알맞게 변경
	} //f8b878
});
</script>

 

 

2. 본문 페이지에서 자동으로 body에 카테고리class 추가하기

<script>
document.addEventListener("DOMContentLoaded", function() {
	function checkCategory() {
		const bodyPage = document.querySelector("#tt-body-page");
		const categoryElement = document.querySelector(".article-cate a"); //치환자를 포함한 태그명, 알맞게 변경
		if (categoryElement) {
			const category = categoryElement.textContent.trim();
			const categoryParts = category.split("/");
			let categoryName = categoryParts[categoryParts.length - 1];
			if (categoryParts.length === 1) {
				categoryName = categoryParts[0];
			}
			if (bodyPage && categoryName) {
				bodyPage.classList.add(categoryName);
			}
		}
	}
	checkCategory(); //f8b878
});
</script>

 

- 하위 카테고리가 있으면 상위 카테고리는 생략된 채 하위 카테고리가 네임으로 추가됩니다.

ex. https://~.tistory.com/category/wow/jjang => jjang   

 

(응용해서 카테고리별 본문 디자인 다르게 적용 가능함, 목록 구성 - 내용만 보기:인덱스/태그/검색 화면 제외)

 

[☆##_article_rep_category_##] 해당 치환자가 스킨 html 내부에 존재해야 합니다.

(참고) https://tistory.github.io/document-tistory-skin/contents/post.html 

※ 사용 중인 스킨에 없다면 <s_article_rep>을 찾아서 <s_article_rep> 바로 밑에 <div stlye="display:none" class="article-cate"><a>[☆##_article_rep_category_##]</a></div> 추가하면 됨. (☆은 삭제)

 

모든 스크립트를 넣으실 거면
document.addEventListener("DOMContentLoaded", function() { ~ }) 하나의 리스너 안에 밀어 넣고
const wlp = decodeURI(window.location.pathname);은 하나의 전역변수로 설정하세요

 

entry-thumbnail

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use

https://developer.mozilla.org/en-US/docs/Web/SVG/Element/symbol

(참고하면 좋은 사이트)

 

SVG는 아이콘으로 사용하기 매우 편리한 태그지만, 가독성은 좋지 않습니다.

 

(예시)

출처 : https://remixicon.com/icon/arrow-drop-right-line

 

출처 : https://www.svgrepo.com/svg/499684/arrow-right?edit=true 

 

네, 이제 첫 번째 같은 간결한 svg는 괜찮지만 path가 여러개라던가, 저렇게 g같은 괴상한 태그가 추가되면 이제 보기만 해도 아찔해지며 대가리를 빡빡 치고 싶은… 더군다나 티스토리는 자동 줄바꿈을 안해줘서 더 킹받습니다

 

 

 

스킨 배포 겸, 아이콘 수정 문의가 있을 것 같아 업로드합니다. 

 

이 SVG를, HTML에 예쁘게 넣어줄 거예요.

 

<div class="notice-like">
	<svg class="like-icon" viewBox="0 0 24 24">
		<use href="#heart" />
	</svg>
</div>
/* 살구 스킨#2 중에서 */

이렇게 바꿔줍니다.

HTML에 이렇게 간결하게 적어주기만 하면 됩니다.

 

우리에겐 이제 필요한 정보만 있습니다.

1) SVG의 클래스 네임,

2) viewBox,

3) 그리고 이게 어떤 아이콘인지 표시하는 href까지 있습니다.

 

viewBox는 svg마다 값이 다르며 꼭 알맞은 값을 넣어주어야 아이콘이 정상적으로 뜹니다

 

그런데 use태그만 넣는다고 아이콘이 생기지는 않습니다.

 

SVG에 hidden과 display:none 속성을 주고, 아래에 진짜 path를 넣어주면 됩니다.

path id="heart" 이 부분이 use의 href="#heart"와 연동되어 아이콘이 구현됩니다.

 

use href에는 꼭 #를 넣어주어야 연동이 됩니다.

 

사실은 이렇게 구현됐답니다

 

.like-icon {
	width: 12px;
	height: 12px;
	fill: #000;

	transition: var(--transition);
}

이렇게 CSS 설정도 당연히 가능합니다.

 

가끔 ios 환경에서 path id만으로 use href를 썼을 때 출력이 되지 않거나, path나 circle등 svg 내 태그가 여러개일 때가 있는데요. symbol 태그로 묶어주면 됩니다.

 

 

 

 

html 하단의 svg 내부 값만 변경해주시면 됩니다~

| 티스토리에서 관리자(블로그 주인)인지 확인하는 스크립트

※ 2차 도메인에서는 다 guest로 취급합니다 (1차 x)

 

document.addEventListener("DOMContentLoaded", function() {
function checkRole() {
	const pageRole = window.T.config.ROLE;
	if ( pageRole === "owner") {
		const adminPageDiv = document.createElement("div");
		adminPageDiv.classList.add("owner-check");
		adminPageDiv.insertAdjacentHTML("beforeend", "Go to Admin Page");
		document.querySelector(".menu").appendChild(adminPageDiv);
	}
}
checkRole();
});


//스위치 버전

document.addEventListener("DOMContentLoaded", function() {
function checkRole() {
	const pageRole = window.T.config.ROLE;
	switch (pageRole) {
		case "owner":
			const adminPageDiv = document.createElement("div");
			adminPageDiv.classList.add("owner-check");
			adminPageDiv.insertAdjacentHTML("beforeend", "Go to Admin Page");
			document.querySelector(".menu").appendChild(adminPageDiv);
			break;
		case "user":
		case "connected":
			//user,connected에 필요한 내용
			break;
		default:
		break;
	}
}
checkRole();
})

(위나 아래나 동일한 스크립트임 if문에서 오류가 날 때 switch문을 이용하면 된다

switch문에서는 default를 적어주는 게 좋음)

 

 

<div class="owner-check"><a href="/admin">Go to Admin Page</a></div>

스키마 마크업에서 ROLE을 체크하여, owner라면 .menu에 해당 태그를 추가시킨다

guest라면 해당 html이 생성되지 않아 보이지 않음.

 

반대로 guest만 체크하고 싶으면 !=="owner"로 바꿔주면 됨

*값은 user, connected(구독자), guset, owner

 

사용하기 위해서 해당 스크립트는 html의 </head> 위 혹은 </s_t3> 밑에 넣어주면 되고,

html 내부에 menu 클래스가 존재하고 있어야 함

 

여러 응용 가능, 어드민 페이지 이동 버튼 등 방문자에게 불필요한 내용 생성 시 유용함

 

단, 모든 스크립트가 그렇듯 훗날 티스토리 자체적으로 변경이 있다면 호출이 안 될 수도 있으니 참고!

기존 티스토리 측에서 지원하던 날짜 치환자는 [★##_article_rep_date_##] 이 치환자 하나 뿐이었지만, 연도, 월, 일, 시 ,분, 초까지 하나씩 나타내는 새로운 치환자가 생겼다.

 

 

1 : 글에서 보여지는 날짜

https://tistory.github.io/document-tistory-skin/list/list.html

 [★##_article_rep_date_##]  글 발행 날짜/시간 (yyyy.mm.dd HH:MM)
 [★##_article_rep_simple_date_##]  글 발행 날짜 (yyyy.mm.dd)
 [★##_article_rep_date_year_##]  글쓴 세부시간 - 연도 (yyyy)
 [★##_article_rep_date_month_##]  글쓴 세부시간 - 월 (mm)
 [★##_article_rep_date_day_##]  글쓴 세부시간 - 일 (dd)
 [★##_article_rep_date_hour_##]  글쓴 세부시간 - 시 (HH)
 [★##_article_rep_date_minute_##]  글쓴 세부시간 - 분 (MM)
 [★##_article_rep_date_second_##]  글쓴 세부시간 - 초 (SS)

 

아래처럼 출력 방식을 변경할 수 있다.

 

(1) 기존 치환자

<div class="date">[★##_article_rep_date_##]</div> 

= 2019.06.29 12:00

 

(2) 새로운 치환자를 이용한 배열

<div class="date">[★##_article_rep_date_month_##]/[★##_article_rep_date_day_##]</div>

=06/29

 

(3) 새로운 치환자를 이용한 배열 

<div class="date">[★##_article_rep_date_month_##]월 [★##_article_rep_date_day_##]일 [★##_article_rep_date_hour_##][★##_article_rep_date_minute_##]분</div>

=06월29일 12시00분

 

다만 연도가 기본 yyyy형태(2019)라서 4자리 형식으로 출력된다. yy형태(19)로 출력하려면 또 스크립트를 써야 함..ㅎㅎ 또 월을 영어나 한글 등으로 표시하려면 역시 스크립트를 써야 함..

 

 

 

2 : 리스트에서 보여지는 발행 날짜

https://tistory.github.io/document-tistory-skin/list/list.html

 [★##_list_rep_date_##]  글 발행 날짜/시간 (yyyy.mm.dd HH:MM)
 [★##_list_rep_simple_date_##]  글 발행 날짜 (yyyy.mm.dd)
 [★##_list_rep_date_year_##]  글쓴 세부시간 - 연도 (yyyy)
 [★##_list_rep_date_month_##]  글쓴 세부시간 - 월 (mm)
 [★##_list_rep_date_day_##]  글쓴 세부시간 - 일 (dd)
 [★##_list_rep_date_hour_##]  글쓴 세부시간 - 시 (HH)
 [★##_list_rep_date_minute_##]  글쓴 세부시간 - 분 (MM)
 [★##_list_rep_date_second_##]  글쓴 세부시간 - 초 (SS)

 

방식은 위와 동일

 

 

3 : 공지사항에서 보여지는 발행 날짜

https://tistory.github.io/document-tistory-skin/contents/notice.html

 [★##_notice_rep_date_##]  글 발행 날짜/시간 (yyyy.mm.dd HH:MM)
 [★##_notice_rep_simple_date_##]  글 발행 날짜 (yyyy.mm.dd)
 [★##_notice_rep_date_year_##]  글쓴 세부시간 - 연도 (yyyy)
 [★##_notice_rep_date_month_##]  글쓴 세부시간 - 월 (mm)
 [★##_notice_rep_date_day_##]  글쓴 세부시간 - 일 (dd)
 [★##_notice_rep_date_hour_##]  글쓴 세부시간 - 시 (HH)
 [★##_notice_rep_date_minute_##]  글쓴 세부시간 - 분 (MM)
 [★##_notice_rep_date_second_##]  글쓴 세부시간 - 초 (SS)

 

방식은 위와 동일

 

 

아직 댓글과 방명록에서는 지원하지 않고 요일 표시도 지원하지 않는다.

Guestbook.