Complete Guide: VS Code for Blogger Template
🔧 Step 1: Configure Prettier Settings
1. Ctrl+Shift+P
2. Type: "Open User Settings JSON"
3. Enter បិទ Code នេះ:
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"editor.tabSize": 2,
"prettier.printWidth": 120,
"prettier.singleQuote": true,
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[xml]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
📁 Step 2: Create Project Structure
📁 my-blogger-template/
📄 template.xml ← Blogger XML Code
📄 preview.html ← Live Preview
📄 style.css ← CSS Styles
📋 Step 3: Copy Blogger Template to VS Code
Blogger Dashboard
→ Theme → Edit HTML
→ Ctrl+A → Ctrl+C
→ VS Code បើក template.xml
→ Ctrl+V (Paste)
→ Ctrl+S (Save)
XML Tools នឹង Format ដោយស្វ័យប្រវត្តិ ✅
🎨 Step 4: preview.html Setup
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Blogger Preview</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- HEADER -->
<header id="header">
<div class="header-inner">
<h1 class="blog-title">My Blog Title</h1>
<p class="blog-desc">Blog Description Here</p>
</div>
</header>
<!-- NAVIGATION -->
<nav id="navbar">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
<!-- MAIN WRAPPER -->
<div id="outer-wrapper">
<div id="content-wrapper">
<!-- MAIN CONTENT -->
<main id="main">
<!-- Post 1 -->
<article class="post">
<h2 class="post-title">
<a href="#">Post Title 1</a>
</h2>
<div class="post-meta">
📅 January 1, 2025 | ✍️ Author Name | 🏷️ Label
</div>
<div class="post-thumbnail">
<img src="https://via.placeholder.com/800x400" alt="Post Image">
</div>
<div class="post-body">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris.
</div>
<a href="#" class="read-more">Read More →</a>
</article>
<!-- Post 2 -->
<article class="post">
<h2 class="post-title">
<a href="#">Post Title 2</a>
</h2>
<div class="post-meta">
📅 January 2, 2025 | ✍️ Author Name | 🏷️ Label
</div>
<div class="post-thumbnail">
<img src="https://via.placeholder.com/800x400" alt="Post Image">
</div>
<div class="post-body">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Ut enim ad minim veniam, quis nostrud exercitation ullamco.
Duis aute irure dolor in reprehenderit in voluptate velit esse.
</div>
<a href="#" class="read-more">Read More →</a>
</article>
</main>
<!-- SIDEBAR -->
<aside id="sidebar">
<!-- Search Widget -->
<div class="widget">
<h3 class="widget-title">Search</h3>
<input type="text" placeholder="Search..." class="search-input">
</div>
<!-- About Widget -->
<div class="widget">
<h3 class="widget-title">About Me</h3>
<img src="https://via.placeholder.com/100" alt="Profile" class="profile-img">
<p>About description here...</p>
</div>
<!-- Categories Widget -->
<div class="widget">
<h3 class="widget-title">Categories</h3>
<ul class="label-list">
<li><a href="#">Technology (10)</a></li>
<li><a href="#">Design (8)</a></li>
<li><a href="#">Tutorial (15)</a></li>
</ul>
</div>
<!-- Recent Posts Widget -->
<div class="widget">
<h3 class="widget-title">Recent Posts</h3>
<ul class="recent-list">
<li><a href="#">Recent Post Title 1</a></li>
<li><a href="#">Recent Post Title 2</a></li>
<li><a href="#">Recent Post Title 3</a></li>
</ul>
</div>
</aside>
</div>
</div>
<!-- FOOTER -->
<footer id="footer">
<p>© 2025 My Blog. All rights reserved.</p>
</footer>
</body>
</html>
🎨 Step 5: style.css Setup
/* ==================== RESET ==================== */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: Arial, sans-serif;
background: #f5f5f5;
color: #333;
line-height: 1.6;
}
a {
text-decoration: none;
color: inherit;
}
img {
max-width: 100%;
height: auto;
}
/* ==================== HEADER ==================== */
#header {
background: #4285f4;
color: white;
padding: 30px 20px;
text-align: center;
}
.blog-title {
font-size: 2rem;
margin-bottom: 5px;
}
.blog-desc {
font-size: 1rem;
opacity: 0.8;
}
/* ==================== NAVBAR ==================== */
#navbar {
background: #333;
padding: 10px 20px;
}
#navbar ul {
list-style: none;
display: flex;
gap: 20px;
max-width: 1200px;
margin: 0 auto;
}
#navbar ul li a {
color: white;
font-size: 14px;
transition: color 0.3s;
}
#navbar ul li a:hover {
color: #4285f4;
}
/* ==================== LAYOUT ==================== */
#outer-wrapper {
max-width: 1200px;
margin: 20px auto;
padding: 0 20px;
}
#content-wrapper {
display: flex;
gap: 20px;
}
/* ==================== MAIN ==================== */
#main {
flex: 1;
}
/* ==================== POST ==================== */
.post {
background: white;
margin-bottom: 20px;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.post-title {
font-size: 1.4rem;
margin-bottom: 8px;
}
.post-title a {
color: #4285f4;
transition: color 0.3s;
}
.post-title a:hover {
color: #0d47a1;
}
.post-meta {
font-size: 12px;
color: #999;
margin-bottom: 12px;
}
.post-thumbnail {
margin-bottom: 12px;
border-radius: 6px;
overflow: hidden;
}
.post-body {
font-size: 14px;
line-height: 1.8;
margin-bottom: 15px;
color: #555;
}
.read-more {
display: inline-block;
background: #4285f4;
color: white;
padding: 8px 16px;
border-radius: 4px;
font-size: 13px;
transition: background 0.3s;
}
.read-more:hover {
background: #0d47a1;
}
/* ==================== SIDEBAR ==================== */
#sidebar {
width: 300px;
flex-shrink: 0;
}
.widget {
background: white;
padding: 15px;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
margin-bottom: 20px;
}
.widget-title {
font-size: 1rem;
color: #4285f4;
border-bottom: 2px solid #4285f4;
padding-bottom: 8px;
margin-bottom: 12px;
}
.search-input {
width: 100%;
padding: 8px;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 13px;
}
.profile-img {
border-radius: 50%;
display: block;
margin: 0 auto 10px;
}
.label-list,
.recent-list {
list-style: none;
}
.label-list li,
.recent-list li {
padding: 5px 0;
border-bottom: 1px solid #f0f0f0;
font-size: 13px;
}
.label-list li a,
.recent-list li a {
color: #555;
transition: color 0.3s;
}
.label-list li a:hover,
.recent-list li a:hover {
color: #4285f4;
}
/* ==================== FOOTER ==================== */
#footer {
background: #333;
color: white;
text-align: center;
padding: 20px;
margin-top: 20px;
font-size: 13px;
}
/* ==================== RESPONSIVE ==================== */
@media (max-width: 768px) {
#content-wrapper {
flex-direction: column;
}
#sidebar {
width: 100%;
}
.blog-title {
font-size: 1.5rem;
}
}
🚀 Step 6: Start Live Server
1. គ្លីច preview.html
2. Right-click → "Open with Live Server"
ឬ គ្លីច "Go Live" នៅ Status Bar
3. Browser បើក Auto ✅
✏️ Step 7: How Each Extension Helps
┌─────────────────────────────────────────────────┐
│ │
│ កែ CSS នៅ style.css │
│ ↓ │
│ Prettier → Format ស្វ័យប្រវត្តិ (Ctrl+S) │
│ ↓ │
│ Auto Rename Tag → Rename tags ភ្លាមៗ │
│ ↓ │
│ XML Tools → Validate & Format XML │
│ ↓ │
│ Live Server → Browser Refresh ភ្លាមៗ │
│ ↓ │
│ Copy ទៅ Blogger Dashboard ✅ │
│ │
└─────────────────────────────────────────────────┘
⌨️ Shortcut Keys សំខាន់
| Shortcut | Extension | មុខងារ |
|---|---|---|
Ctrl+S |
Prettier | Save + Format |
Alt+Shift+F |
Prettier | Format Manual |
Ctrl+Shift+P → XML Format |
XML Tools | Format XML |
F2 |
Auto Rename Tag | Rename Tag |
Alt+Click |
Live Server | Open Preview |
Ctrl+H |
VS Code | Find & Replace |
Ctrl+/ |
VS Code | Comment Toggle |
Ctrl+Z |
VS Code | Undo |
📤 Step 8: Upload to Blogger
1. Ctrl+A → Copy Code ពី template.xml
2. Blogger → Theme → Edit HTML
3. Ctrl+A → Paste → Save ✅
🎉 រួចរាល់! អ្នកមាន Professional Workflow សម្រាប់កែ Blogger Template!