20.12.18 게시판 사이트 프로젝트(댓글 유틸(disqus) 추가,검색엔진 등록, 구글 애널리틱스 적용, 구글 ad 추가 등)

2020. 12. 18. 19:15JAVA/Blog 사이트 프로젝트

<BuildService.java>

// 게시판 별 게시물 상세페이지 생성
	private void buildArticleDetailPages() {
		List<Board> boards = articleService.getBoards();

		for (Board board : boards) {
			List<Article> articles = articleService.getBoardArticlesByCodeForPrint(board.code);
			int articlesSize = articles.size();
			
			if (articlesSize <= 0) {
				continue;
			}
			int beforeArticleIndex = 0;
			int x = beforeArticleIndex;
			int beforeArticleId = articles.get(x).id;

			String head = getHeadHtml("article_detail");
			String foot = Util.getFileContents("site_template/foot.html");

			String template = Util.getFileContents("site_template/detail.html");

			System.out.println("= article 상세페이지 생성 =");

			for (Article article : articles) {

				StringBuilder html = new StringBuilder();

				html.append(head);

				StringBuilder body = new StringBuilder();

				body.append("<div class=\"article-detail-cell__id\">");
				body.append("<div>");
				body.append("<span>번호 : </span><span>" + article.id + "</span>");
				body.append("</div>");
				body.append("</div>");
				body.append("<div class=\"article-detail-cell__title\">");
				body.append("<div>");
				body.append("<span>제목 : </span><span>" + article.title + "</span>");
				body.append("</div>");
				body.append("</div>");
				body.append("<div class=\"article-detail-cell__title\">");
				body.append("<div>");
				body.append("<span>작성자 : </span><span>" + article.extra_memberName + "</span>");
				body.append("</div>");
				body.append("</div>");
				body.append("<div class=\"article-detail-cell__title\">");
				body.append("<div>");
				body.append("<span>작성일 : </span><span>" + article.regDate + "</span>");
				body.append("</div>");
				body.append("</div><br>");
				body.append("<div class=\"article-detail-cell__body height-70p \">");
				body.append("<div>");
				body.append("<span>" + article.body + "</span>");
				body.append("</div>");
				body.append("</div><br><br>");
				//댓글 유틸 disqus 적용
				body.append("<nav><div id=\"disqus_thread\"></div>\r\n"
						+ "<script>\r\n"
						+ "    (function() { // DON'T EDIT BELOW THIS LINE\r\n"
						+ "    var d = document, s = d.createElement('script');\r\n"
						+ "    s.src = 'https://devj-blog.disqus.com/embed.js';\r\n"
						+ "    s.setAttribute('data-timestamp', +new Date());\r\n"
						+ "    (d.head || d.body).appendChild(s);\r\n"
						+ "    })();\r\n"
						+ "</script>\r\n"
						+ "<noscript>Please enable JavaScript to view the <a href=\"https://disqus.com/?ref_noscript\">comments powered by Disqus.</a></noscript></nav>");

				body.append(
						"</div></section><section class=\"section-3 con-min-width\"><div class=\"con\"><div class=\"article-list-bottom-cell flex flex-jc-c\">");

				if (article.id > beforeArticleId) {
					body.append("<div class=\"./\"><a href=\"" + articles.get(x - 1).id + ".html"
							+ "\" class=\"hover-underline\">&lt 이전글</a></div>");
				}

				body.append("<div class=\"./\"><i class=\"fas fa-th-list\"></i><a href=\"" + board.code + "-list-1.html"
						+ "\" class=\"hover-underline\"> 목록 </a></div>");
				if (x < articlesSize - 1) {
					body.append("<div class=\"./\"><a href=\"" + articles.get(x + 1).id + ".html"
							+ "\"class=\"hover-underline\">다음글 &gt</a></div>");
				}

				html.append(template.replace("[상세페이지 블록]", body));
				html.append(foot);

				String fileName = article.id + ".html";
				String path = "site/" + fileName;

				Util.writeFile(path, html.toString());

				System.out.println(path + " 생성");
				x++;
				beforeArticleId = articles.get(x - 1).id;

			}
			System.out.println("= article 상세페이지 생성 종료 =");

		}
	}

 

<head.html>

<!doctype html>
<html lang="en">

<head>
<script data-ad-client="ca-pub-7996879977557531" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-X5RMP83794"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-X5RMP83794');
</script>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 구글 검색엔진 등록-소유권 확인 -->
<meta name="google-site-verification" content="37R4KcEaJU5LfiKL7GI1hu1_spJgWOazN6xy48OHhD4" />
<title>Developers</title>

<!-- 폰트어썸 불러오기 -->
<link rel="stylesheet"
	href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css">
<!-- app.css 불러오기 -->
<link rel="stylesheet" href="app.css">

<!--모바일에서도 PC와 같은 비율 유지-->
<meta name="viewport" content="width=device-width, initial-scale=1">

<!--제이쿼리-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<!-- 토스트 UI 에디터, 자바스크립트 코어 -->
<script src="https://uicdn.toast.com/editor/latest/toastui-editor-all.min.js"></script>

<!-- 코드 미러 라이브러리 추가, 토스트 UI 에디터에서 사용됨 -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.3/codemirror.min.css" />
<!-- 토스트 UI 에디터, CSS 코어 -->
<link rel="stylesheet" href="https://uicdn.toast.com/editor/latest/toastui-editor.min.css" />





</head>

<body>
	<div class="body-content min-height-100vh flex flex-column">
		<!-- 로고바 시작 -->
		<header class="logo-bar con-min-width">
			<div class="con height-100p flex flex-jc-c">
				<a href="index.html" class="logo flex flex-ai-c"> <i
					class="fab fa-jenkins"></i> <span> Develo<span>p</span>ers
				</span>
				</a>
			</div>
		</header>
		<!-- 로고바 끝 -->

		<!-- 메뉴바 시작 -->
		<header class="menu-bar con-min-width">
			<div class="con height-100p">
				<nav class="menu-bar__menu-1">
					<ul class="flex">
						<li><a href="index.html" class="block"> <i class="fas fa-home"></i>
								<span>HOME</span>
						</a></li>
						<li><a class="block"> <i class="fas fa-list"></i> <span>ARTICLES</span>
						</a>
							<ul>
								[게시판 이름 블록]
							</ul></li>
						<li><a class="block"> <i class="fas fa-link"></i> <span>LINK</span>
						</a>
							<ul>
								<li><a href="https://jhs512.github.io/blog/"
									target="_blank" class="block"> <i class="fab fa-blogger-b"></i>
										<span>BLOG</span>
								</a></li>
								<li><a href="https://github.com/" target="_blank"
									class="block"> <i class="fab fa-github"></i> <span>GITHUB</span>
								</a></li>
							</ul></li>
						<li><a href="stat.html" class="block"> <i
								class="fas fa-chart-pie"></i> <span>STATISTICS</span>
						</a></li>
					</ul>
				</nav>
			</div>
		</header>
		<!-- 메뉴바 끝 -->

		<!-- 메인-타이틀바 시작 -->
		<main class="flex-grow-1">
			<div class="title-bar con-min-width">
				<h1 class="con">
					[타이틀바 컨텐츠]
				</h1>
			</div>
			<!-- 메인-타이틀바 종료 -->