2025年2月19日 星期三

Blog程式修改

你希望標籤可以 隨時增加或減少,並且 橫向排列

這樣就需要 JavaScript 動態生成標籤,而不是固定 HTML 內容。


📌 1. 功能需求

可新增、刪除主分類與細分類
標籤橫向排列,而非垂直
點擊主分類,展開/收合對應的細分類
子標籤點擊後,搜尋 Blogger 對應標籤文章


📜 2. 改進後的動態標籤雲

🔹 HTML + CSS + JavaScript

<div class="tag-cloud">
    <h2>標籤雲</h2>
    <div id="tag-container"></div>

    <!-- 新增標籤輸入框 -->
    <div class="tag-input">
        <input type="text" id="mainTagInput" placeholder="輸入主分類">
        <input type="text" id="subTagInput" placeholder="輸入細分類 (用逗號分隔)">
        <button onclick="addTag()">➕ </button>
    </div>
</div>

<style>
/* 標籤雲樣式 */
.tag-cloud {
    background: white;
    padding: 15px;
    border-radius: 8px;
    box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1);
}

/* 主分類按鈕(橫向排列) */
.tag-main {
    display: inline-block;
    background: #ff6600;
    color: white;
    padding: 8px 12px;
    border: none;
    font-size: 14px;
    margin: 5px;
    cursor: pointer;
    border-radius: 5px;
    transition: background 0.3s;
}
.tag-main:hover {
    background: #ff4500;
}

/* 子標籤(橫向排列) */
.tag-sub {
    display: none;
    margin-top: 5px;
}
.tag-sub a {
    display: inline-block;
    padding: 5px 10px;
    text-decoration: none;
    color: #333;
    background: #f4f4f4;
    border-radius: 5px;
    margin: 3px;
}
.tag-sub a:hover {
    background: #ddd;
}

/* 新增標籤輸入框 */
.tag-input {
    margin-top: 15px;
    display: flex;
    gap: 5px;
}
.tag-input input {
    padding: 5px;
    border: 1px solid #ccc;
    border-radius: 5px;
    flex: 1;
}
.tag-input button {
    padding: 5px 10px;
    background: #008000;
    color: white;
    border: none;
    cursor: pointer;
    border-radius: 5px;
}
.tag-input button:hover {
    background: #006400;
}
</style>

<script>
// 存放標籤的資料
let tags = [
    { main: "程式", sub: ["Python", "JavaScript", "Flask", "Django"] },
    { main: "藝術", sub: ["Photoshop", "Illustrator", "UI-UX"] },
    { main: "科技", sub: ["AI", "Blockchain", "BigData"] },
    { main: "生活", sub: ["Python", "JavaScript", "Flask", "Django"] },
    { main: "宗教", sub: ["Python", "JavaScript", "Flask", "Django"] },
    { main: "音樂", sub: ["Photoshop", "Illustrator", "UI-UX"] }, 
];

// 渲染標籤雲
function renderTags() {
    let tagContainer = document.getElementById("tag-container");
    tagContainer.innerHTML = ""; // 清空舊內容

    tags.forEach((tag, index) => {
        let tagCategory = document.createElement("div");
        tagCategory.classList.add("tag-category");

        // 創建主分類按鈕
        let mainButton = document.createElement("button");
        mainButton.classList.add("tag-main");
        mainButton.innerText = tag.main;
        mainButton.onclick = function () {
            let subTags = this.nextElementSibling;
            subTags.style.display = (subTags.style.display === "block") ? "none" : "block";
        };

        // 創建細分類區塊
        let subDiv = document.createElement("div");
        subDiv.classList.add("tag-sub");

        tag.sub.forEach(sub => {
            let subTag = document.createElement("a");
            subTag.href = `/search/label/${sub}`;
            subTag.innerText = sub;
            subDiv.appendChild(subTag);
        });

        // 創建刪除按鈕
        let deleteBtn = document.createElement("button");
        deleteBtn.innerText = "🗑️";
        deleteBtn.style.marginLeft = "5px";
        deleteBtn.style.background = "#ff0000";
        deleteBtn.style.color = "white";
        deleteBtn.style.border = "none";
        deleteBtn.style.padding = "5px 8px";
        deleteBtn.style.cursor = "pointer";
        deleteBtn.style.borderRadius = "5px";
        deleteBtn.onclick = function () {
            tags.splice(index, 1); // 刪除該分類
            renderTags(); // 重新渲染
        };

        // 組合元素
        tagCategory.appendChild(mainButton);
        tagCategory.appendChild(deleteBtn);
        tagCategory.appendChild(subDiv);
        tagContainer.appendChild(tagCategory);
    });
}

// 新增標籤
function addTag() {
    let mainTag = document.getElementById("mainTagInput").value.trim();
    let subTags = document.getElementById("subTagInput").value.trim().split(",");

    if (mainTag === "" || subTags.length === 0 || subTags[0] === "") {
        alert("請輸入主分類與至少一個細分類!");
        return;
    }

    tags.push({ main: mainTag, sub: subTags.map(tag => tag.trim()) });
    renderTags(); // 重新渲染標籤雲

    // 清空輸入框
    document.getElementById("mainTagInput").value = "";
    document.getElementById("subTagInput").value = "";
}

// 初次渲染
renderTags();
</script>

📌 3. 功能與改進點

✅ 動態標籤管理

  • 主分類(Tag Main) 可自由新增與刪除
  • 細分類(Tag Sub) 可自由增加,每個主分類可包含多個細分類
  • 點擊 主分類按鈕,展開或收合 細分類

✅ 標籤橫向排列

  • 主分類與細分類inline-block 顯示
  • 使用者可以更 直觀地找到分類與標籤

✅ 新增與刪除功能

  • 新增分類時,輸入 主分類名稱 + 細分類(用逗號分隔)
  • 刪除分類時,點擊 🗑️ 按鈕,即可刪除該分類

📌 4. 如何加入 Blogger?

1️⃣ 進入 Blogger 後台
2️⃣ 版面配置 → 新增小工具 → HTML/JavaScript
3️⃣ 貼上上方的程式碼 → 儲存
4️⃣ 檢視部落格,測試標籤雲是否能動態管理


🎯 5. 最終效果

標籤雲可動態增加/刪除分類與細分類
標籤排列方式由垂直改為橫向排列
可點擊標籤來搜尋 Blogger 文章

這樣就可以 更靈活地管理你的部落格分類 了!
請問這樣的功能符合你的需求嗎?😊

你希望標籤可以 隨時增加或減少,並且 橫向排列
這樣就需要 JavaScript 動態生成標籤,而不是固定 HTML 內容。


📌 1. 功能需求

可新增、刪除主分類與細分類
標籤橫向排列,而非垂直
點擊主分類,展開/收合對應的細分類
子標籤點擊後,搜尋 Blogger 對應標籤文章


📜 2. 改進後的動態標籤雲

🔹 HTML + CSS + JavaScript

<div class="tag-cloud">
    <h2>標籤雲</h2>
    <div id="tag-container"></div>

    <!-- 新增標籤輸入框 -->
    <div class="tag-input">
        <input type="text" id="mainTagInput" placeholder="輸入主分類">
        <input type="text" id="subTagInput" placeholder="輸入細分類 (用逗號分隔)">
        <button onclick="addTag()">➕ 新增分類</button>
    </div>
</div>

<style>
/* 標籤雲樣式 */
.tag-cloud {
    background: white;
    padding: 15px;
    border-radius: 8px;
    box-shadow: 2px 2px 10px rgba(0, 0, 0, 0.1);
}

/* 主分類按鈕(橫向排列) */
.tag-main {
    display: inline-block;
    background: #ff6600;
    color: white;
    padding: 8px 12px;
    border: none;
    font-size: 14px;
    margin: 5px;
    cursor: pointer;
    border-radius: 5px;
    transition: background 0.3s;
}
.tag-main:hover {
    background: #ff4500;
}

/* 子標籤(橫向排列) */
.tag-sub {
    display: none;
    margin-top: 5px;
}
.tag-sub a {
    display: inline-block;
    padding: 5px 10px;
    text-decoration: none;
    color: #333;
    background: #f4f4f4;
    border-radius: 5px;
    margin: 3px;
}
.tag-sub a:hover {
    background: #ddd;
}

/* 新增標籤輸入框 */
.tag-input {
    margin-top: 15px;
    display: flex;
    gap: 5px;
}
.tag-input input {
    padding: 5px;
    border: 1px solid #ccc;
    border-radius: 5px;
    flex: 1;
}
.tag-input button {
    padding: 5px 10px;
    background: #008000;
    color: white;
    border: none;
    cursor: pointer;
    border-radius: 5px;
}
.tag-input button:hover {
    background: #006400;
}
</style>

<script>
// 存放標籤的資料
let tags = [
    { main: "📚 程式設計", sub: ["Python", "JavaScript", "Flask", "Django"] },
    { main: "🎨 設計與藝術", sub: ["Photoshop", "Illustrator", "UI-UX"] },
    { main: "📰 科技與新聞", sub: ["AI", "Blockchain", "BigData"] }
];

// 渲染標籤雲
function renderTags() {
    let tagContainer = document.getElementById("tag-container");
    tagContainer.innerHTML = ""; // 清空舊內容

    tags.forEach((tag, index) => {
        let tagCategory = document.createElement("div");
        tagCategory.classList.add("tag-category");

        // 創建主分類按鈕
        let mainButton = document.createElement("button");
        mainButton.classList.add("tag-main");
        mainButton.innerText = tag.main;
        mainButton.onclick = function () {
            let subTags = this.nextElementSibling;
            subTags.style.display = (subTags.style.display === "block") ? "none" : "block";
        };

        // 創建細分類區塊
        let subDiv = document.createElement("div");
        subDiv.classList.add("tag-sub");

        tag.sub.forEach(sub => {
            let subTag = document.createElement("a");
            subTag.href = `/search/label/${sub}`;
            subTag.innerText = sub;
            subDiv.appendChild(subTag);
        });

        // 創建刪除按鈕
        let deleteBtn = document.createElement("button");
        deleteBtn.innerText = "🗑️";
        deleteBtn.style.marginLeft = "5px";
        deleteBtn.style.background = "#ff0000";
        deleteBtn.style.color = "white";
        deleteBtn.style.border = "none";
        deleteBtn.style.padding = "5px 8px";
        deleteBtn.style.cursor = "pointer";
        deleteBtn.style.borderRadius = "5px";
        deleteBtn.onclick = function () {
            tags.splice(index, 1); // 刪除該分類
            renderTags(); // 重新渲染
        };

        // 組合元素
        tagCategory.appendChild(mainButton);
        tagCategory.appendChild(deleteBtn);
        tagCategory.appendChild(subDiv);
        tagContainer.appendChild(tagCategory);
    });
}

// 新增標籤
function addTag() {
    let mainTag = document.getElementById("mainTagInput").value.trim();
    let subTags = document.getElementById("subTagInput").value.trim().split(",");

    if (mainTag === "" || subTags.length === 0 || subTags[0] === "") {
        alert("請輸入主分類與至少一個細分類!");
        return;
    }

    tags.push({ main: mainTag, sub: subTags.map(tag => tag.trim()) });
    renderTags(); // 重新渲染標籤雲

    // 清空輸入框
    document.getElementById("mainTagInput").value = "";
    document.getElementById("subTagInput").value = "";
}

// 初次渲染
renderTags();
</script>

📌 3. 功能與改進點

✅ 動態標籤管理

  • 主分類(Tag Main) 可自由新增與刪除
  • 細分類(Tag Sub) 可自由增加,每個主分類可包含多個細分類
  • 點擊 主分類按鈕,展開或收合 細分類

✅ 標籤橫向排列

  • 主分類與細分類inline-block 顯示
  • 使用者可以更 直觀地找到分類與標籤

✅ 新增與刪除功能

  • 新增分類時,輸入 主分類名稱 + 細分類(用逗號分隔)
  • 刪除分類時,點擊 🗑️ 按鈕,即可刪除該分類

📌 4. 如何加入 Blogger?

1️⃣ 進入 Blogger 後台
2️⃣ 版面配置 → 新增小工具 → HTML/JavaScript
3️⃣ 貼上上方的程式碼 → 儲存
4️⃣ 檢視部落格,測試標籤雲是否能動態管理


🎯 5. 最終效果

標籤雲可動態增加/刪除分類與細分類
標籤排列方式由垂直改為橫向排列
可點擊標籤來搜尋 Blogger 文章

這樣就可以 更靈活地管理你的部落格分類 了!
請問這樣的功能符合你的需求嗎?😊

沒有留言:

張貼留言

精選文章

手機使用VPN進入NAS、DaikinAPP時,仍能使用其他APP如銀行,連上WIFI 或行動網路

為了避免手機使用VPN進入NAS、DaikinAPP時,仍能使用其他APP如銀行,連上WIFI 或行動網路,要修改Router Policy設定?需要把家中屬於VPN的網段設備與其他區隔?要如何設定? 為了達成您的需求: ✅ 手機連上 VPN(例如連回家中 TP-Link ER...