Quantcast
Channel: WFU BLOG
Viewing all 571 articles
Browse latest View live

Bootstrap 簡易版面實作範例﹍網格+面板+表單輸入+按鈕

$
0
0
bootstrap-webpage-layout-practice-Bootstrap 簡易版面製作範例﹍網格+面板+表單輸入+按鈕Bootstrap 的使用說明內容不少,份量足以出一本書,不過工具書用從頭看到尾的方式來學習,效果不見得比較好。

如同「一圖勝過千言萬語」,從範例中來學習、吸收 Bootstrap,效率會來得更快,印象也比較深刻。

本篇提供一個簡單的小範例,可以熟悉以下這些功能的用法:

  • 網格
  • 面板
  • 表單輸入
  • 按鈕
  • Well

(圖片出處: negativespace.co)


一、原始架構及方針


1. Layout 草圖

這是最近的一個案例,案主需要將「樹莓派」(Raspberry Pi)裝置儲存的數據,在網頁上顯示,並需要搜尋功能。

bootstrap-webpage-layout-practice-1-Bootstrap 簡易版面製作範例﹍網格+面板+表單輸入+按鈕

上圖為原始需求的草圖:

  • 左右兩個欄位
  • 左邊按下對應裝置的按鈕後,要能顯示該裝置的數據
  • 右邊需要搜尋功能,抓出所有相同 ID 的裝置及數據

以上的版面架構算是滿簡單,從 Bootstrap 都能找到對應的組件來套用。


2. Bootstrap 組件

  • 首先分割左右欄位,可利用「網格」(格線)系統,還能做到自適應 RWD 效果
  • 左右欄位的標頭(header)區塊,可利用「Well」組件
  • 每個裝置的數據資訊區塊,可利用「面板」+「按鈕」組合拳
  • 搜尋功能可利用「表單」中的 input 組件來組合出草圖的效果

從以上說明瞭解進行的方向後,以下來看範例程式碼。

開始之前,可先參考「Bootstrap 3 & 4 速查表﹍中英文版整理」,瞭解相關語法的說明要去哪裡搜尋。

本文以下的說明請直接對照相關的中英文網站,主要將觀念帶到,細節就不深入了。



二、程式碼說明


1. 引用 Bootstrap

首先記得在 head區塊引用 Bootstrap:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"></link>


2. 網格(Grid)系統

  • 可先參考「Bootstrap Grid System 排版」,瞭解網格系統的概念
  • 切成左右 2 個欄位,我預計使用 4:8 的比例
  • 外圍使用 container-fluid會比 container有更好的 RWD 效果
  • 下一層使用 row組合左右 2 個欄位
  • 左邊欄位使用 col-sm-4,右邊欄位使用 col-sm-8,代表平板以上的寬度(768px)會維持 4:8 的比例
  • 768px 以下的裝置,左右兩欄會自動成為 100% 寬

簡單的切版範例如下:

<div class="container-fluid">
<div class="row">
<div class="col-sm-4"></div>
<div class="col-sm-8"></div>
</div>
</div>


3. Well

「Well」組件可以很方便的做出網站標頭(header)區塊,左右兩欄的範例如下:

<!--左邊欄位-->
<div class="well">目前裝置連線狀況</div>

<!--右邊欄位-->
<div class="well">搜尋頁面</div>


4. 面板(panel)

「面板」(panel)這個套裝組件,拿來顯示裝置資訊真是再好用不過了:

  • 最外層使用 panel,且可使用預設的 5 種顏色,請參考 Bootstrap 相關說明,例如 panel-primary是深藍色
  • 面板標題使用 panel-heading
  • 面板內容使用 panel-body
  • 面板底部使用 panel-footer

範例程式碼如下:

<div class="panel panel-primary">
<div class="panel-heading">裝置一</div>
<div class="panel-body">所有數據資料</div>
<div class="panel-footer">獲取第1台數據</div>
</div>


5. 按鈕(button)

上面的 "獲取第1台數據"字串必須用按鈕的形式來呈現:

  • 再按鈕標籤 button使用 class btn可呈現預設按鈕樣式
  • 有 5 種預設顏色可使用,例如 btn-primary是深藍色
  • 若按鈕要佔用全部寬度,可使用 btn-block
  • 可改變按鈕尺寸,例如 btn-lg代表使用大尺寸按鈕

依據本案例的草圖,按鈕程式碼如下:

<button class="btn btn-default btn-block">獲取第1台數據</button>

6. 輸入框 + 送出按鈕(input)

右邊欄位的 "搜尋框 + 查詢按鈕",可使用 Bootstrap 的「輸入框組」功能:

  • 外圍宣告使用 input-group
  • 輸入框 input 必須使用 form-control
  • 輸入框可改變大小,例如大尺寸請使用 input-lg
  • 為輸入框加入額外元素可使用 input-group-addon,加入額外按鈕可使用 input-group-btn
  • 在額外按鈕之內,加入前面的 bootstrap 按鈕元件語法,就完成組合效果了

以下是範例程式碼:

<div class="input-group">
<input placeholder="輸入 ID" class="form-control input-lg" type="text">
<span class="input-group-btn">
<button class="btn btn-primary btn-lg">查詢</button>
</span>
</div>




三、完整程式碼


把以上每個部分都組合起來,以下是完整的程式碼。

輸入 HTML/CSS 覺得麻煩的話,一定要使用「前端開發神器 Emmet 快速上手教學」。

<html>

<head>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"></link>
<style>
.well, .panel {text-align: center;}
</style>
</head>

<body>

<div class="container-fluid">
<div class="row">

<!--左邊欄位-->
<div class="col-sm-4">
<div class="well">目前裝置連線狀況</div>
<div class="panel panel-primary">
<div class="panel-heading">裝置一</div>
<div class="panel-body">這裡是數據內容</div>
<div class="panel-footer">
<button class="btn btn-default btn-block">獲取第1台數據</button>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">裝置二</div>
<div class="panel-body">這裡是數據內容</div>
<div class="panel-footer">
<button class="btn btn-default btn-block">獲取第2台數據</button>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">裝置三</div>
<div class="panel-body"></div>
<div class="panel-footer">
<button class="btn btn-default btn-block">獲取第3台數據</button>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">裝置四</div>
<div class="panel-body"></div>
<div class="panel-footer">
<button class="btn btn-default btn-block">獲取第4台數據</button>
</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">裝置五</div>
<div class="panel-body"></div>
<div class="panel-footer">
<button class="btn btn-default btn-block">獲取第5台數據</button>
</div>
</div>
</div>

<!--右邊欄位-->
<div class="col-sm-8">
<div class="well">搜尋頁面</div>
<div class="input-group">
<input placeholder="輸入 ID" class="form-control input-lg" type="text">
<span class="input-group-btn">
<button class="btn btn-primary btn-lg">查詢</button>
</span>
</div>
<br/>
<div class="panel panel-primary">
<div class="panel-heading">Raspberry Pi 加入成功 裝置 1</div>
<div class="panel-body">這裡是數據內容</div>
</div>
<div class="panel panel-primary">
<div class="panel-heading">Raspberry Pi 加入成功 裝置 2</div>
<div class="panel-body">這裡是數據內容</div>
</div>
</div>

</div>
</div>
</body>

</html>



四、範例效果


下面是程式碼的網頁執行畫面,從頭到尾只需設定 class 名稱,除了一個置中的 CSS 語法,完全不用調整其他 CSS 參數,就能得到一定水準的版面效果,Bootstrap 是不是非常方便呢!




更多 Bootstrap 相關文章:

jQuery 日期時間範圍選擇器 Date Range Picker (Bootstrap 外掛)

$
0
0
date-range-picker-jQuery 日期時間範圍選擇器﹍Date Range Picker(Bootstrap 外掛)過去網頁表單要輸入日期不容易,往往得另外裝個外掛,例如基於 jQuery 的套件 datepicker。

而現在的瀏覽器使用 HTML5 已成為標準,Input 標籤內建就有簡易的選擇日期功能,只要加入屬性 type="date"就可使用,不必另裝外掛。

不過最近處理一個需求,需要輸入一段日期區間,也就是要選取頭尾 2 個日期,例如 2017/8/1 ~ 2017/9/1。不用外掛的話要做到這件事挺麻煩,版面效果也不佳。

本篇就來介紹一下這個強大的 Date Range Picker 外掛,以 jQuery、Bootstrap 為基礎而發展出來,不但功能完善,介面也十分美觀。



一、CDN 安裝法


1. 官網介紹

date-range-picker-1-jQuery 日期時間範圍選擇器﹍Date Range Picker(Bootstrap 外掛)


進入以上官網後,右上的「Download ZIP」可以下載外掛程式,但必須放在自己的網路空間,可使用「Dropbox 外連產生器」、或放在「Github」。

不過最方便的還是使用 CDN,速度又快,後面會說明。

官網的使用說明,請見上圖左邊紅框:

  • Usage:說明所有要引用的連結,以及啟動外掛的語法
  • Examples:這部分提供基礎的使用範例,可明白各種狀況下的使用語法,基本上看完這些就夠用了。
  • Configuration Generator:這裡提供一個快捷的 API 調用器,可根據自己需求勾選項目,可立即看到效果,可快速幫助學習使用。
  • Options, Methods & Evens:需要使用進階、或自訂功能時,就必須讀一下這裡的 API 使用說明書


2. CDN 安裝法

Date Range Picker 算是很強大的外掛,因此不少 CDN 都有提供檔案連結。

使用前必須先載入 jQuery、Bootstrap,全部的 CDN 連結及啟動語法如下:

<!--載入連結-->
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"></link>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-daterangepicker/2.1.25/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-daterangepicker/2.1.25/daterangepicker.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-daterangepicker/2.1.25/daterangepicker.min.css" rel="stylesheet"></link>
<!--載入連結-->

<!--要選取日期的元素-->
<input class="default" type="text"/>
<!--要選取日期的元素-->

<!--執行 Date Range Picker-->
<script>
$("input.default").daterangepicker();
</script>
<!--執行 Date Range Picker-->


執行後就可看到最基本的效果,就像下面這個輸入框:





二、中文化版本


Date Range Picker 預設顯示英文字元,讀一下說明書可修改參數,將所有字串改為中文。

有網友做了中文化版本,且改善了介面,會更好操作,有需要的話可參考這個 Github 專案:




三、參數修改(自行中文化)


以下摘要一些我覺得重要、會比較常使用的參數,以及字串中文化的說明範例。

1. 使用參數的方式

最好有一點 JS 概念再來修改,否則在基本的 JS 語法格式就會卡關。

Date Range Picker 的啟動方式是這樣:

$(元素).daterangepicker();

加入參數的方式,是在 daterangepicker() 的括弧內放入物件格式 {},例如:

$(元素).daterangepicker(
{
物件1: 值,
物件2: 值
}
);

每個物件彼此用小寫逗號 ","隔開,最後一個物件之後不可有逗號。

瞭解以上概念後,以下進行物件參數的說明。


2. 常用物件參數

A. 選擇時間:除了選擇日期之外,也可選擇時間

timePicker: true,
timePickerIncrement: 30, // 以 30 分鐘為一個選取單位
locale: {
format: "MM/DD/YYYY h:mm A" // 日期+時間的顯示格式
}


B. 預設區間:自訂預設的起迄日期、字串格式

locale: {
format: "YYYY-MM-DD"
},
startDate: "2013-01-01",
endDate: "2013-12-31"


C. 選擇單一日期:使用以下設定後,可以只選擇單一日期

singleDatePicker: true,
showDropdowns: true // 月份、年份有下拉選單可選擇


D. 設定區間選項:以下設定可以產生快速選單,這是中文化範例

ranges: {
"今天": [moment(), moment()],
"昨天": [moment().subtract(1, "days"), moment().subtract(1, "days")],
"過去 7 天": [moment().subtract(6, "days"), moment()],
"過去 30 天": [moment().subtract(29, "days"), moment()],
"本月": [moment().startOf("month"), moment().endOf("month")],
"上個月": [moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month")]
}


E. 清除預設選項:如果輸入框不想顯示預設日期,使用以下設定可清空輸入框

autoUpdateInput: false,
另外還必須執行以下語法,否則程式看起來會像當掉:

$(元素).on("apply.daterangepicker", function(ev, picker) {
$(this).val(picker.startDate.format("MM/DD/YYYY") + " - " + picker.endDate.format("MM/DD/YYYY"));
});


F. 使用清除功能:系統預設的 Cancel(取消) 按鈕,如果要改成清除功能,刪除已經選擇的日期,請用以下設定

locale: {
cancelLabel: "清除"
}

另外還必須執行以下語法:

$(元素).on("cancel.daterangepicker", function(ev, picker) {
$(this).val("");
});


G. 日曆位置

opens : "right" // 靠右
opens : "left" // 靠左


H. 字串中文化範例

locale : {
applyLabel : "確定",
cancelLabel : "取消",
fromLabel : "開始日期",
toLabel : "結束日期",
customRangeLabel : "自訂日期區間",
daysOfWeek : [ "日", "一", "二", "三", "四", "五", "六" ],
monthNames : [ "1月", "2月", "3月", "4月", "5月", "6月",
"7月", "8月", "9月", "10月", "11月", "12月" ],
firstDay : 1
}


I. 分隔符號:改變系統預設的分隔符號 -

locale: {
separator: " ~ "
}


J. 總是顯示日曆

alwaysShowCalendars: true



四、範例程式碼


以下提供一組範例程式碼,對照以上說明,應該就比較清楚了:

<input class="dateRange form-control" type="text" />
<script>
$("input.dateRange").daterangepicker({
"alwaysShowCalendars": true,
opens: "left",
startDate: "2017-08-01",
endDate: "2017-09-01",
ranges: {
"今天": [moment(), moment()],
"過去 7 天": [moment().subtract(6, "days"), moment()],
"本月": [moment().startOf("month"), moment().endOf("month")],
"上個月": [moment().subtract(1, "month").startOf("month"), moment().subtract(1, "month").endOf("month")]
},
locale: {
format: "YYYY-MM-DD",
separator: " ~ ",
applyLabel: "確定",
cancelLabel: "清除",
fromLabel: "開始日期",
toLabel: "結束日期",
customRangeLabel: "自訂日期區間",
daysOfWeek: ["日", "一", "二", "三", "四", "五", "六"],
monthNames: ["1月", "2月", "3月", "4月", "5月", "6月",
"7月", "8月", "9月", "10月", "11月", "12月"
],
firstDay: 1
}
});
$("input.dateRange").on("cancel.daterangepicker", function(ev, picker) {
$(this).val("");
});
</script>


執行後的效果類似下面這個輸入框:



補充說明:雖然這個外掛主要用來選取兩個日期範圍,但也可修改參數只選取一個日期,可以用來取代 datepicker 這類的外掛。


更多網站工具:


更多 Bootstrap 工具:

Picasa 圖床的獨家應用:製作 RWD 自適應圖片,讓手機自動載入小圖,加快網頁讀取速度

$
0
0
picasa-rwd-image-srcset-Picasa 圖床的獨家應用:製作 RWD 自適應圖片,讓手機自動載入小圖,加快讀取速度過去曾在「加快 Blogger 行動版圖片載入速度的密技」告訴讀者,Blogger 使用的圖片只要從後台上傳,也就是使用 Picasa 圖床,行動版就會自動改為載入小尺寸的圖片。

因為有這樣的獨家功能,Picasa 只要上傳一張圖片,就會產生手機版尺寸的圖片,我一直認為 Picasa 是當今最佳圖床,沒有之一。

只不過知道這件事的使用者不多,偶爾還是會有站長問我這件事:「手機版的圖片好像比較模糊?」(請參考「Blogger 各種圖片異常狀況處理」→「四、手機圖片模糊」→「2. Blogger 行動版的圖片」)

這正是因為 Blogger 手機版 Picasa 圖片,寬度被自動縮小為 280px,在目前智慧手機規格越來越高的情況下,幾年前 Blogger 官方這樣的設計,看起來跟不上科技發展了,因為現在的手機傳輸速度更快,也能顯示更高品質的圖片。

因此,今年官方推出的「全新自適應 RWD 範本」,行動版已經取消了 "圖片自動縮小為 280px 寬"這件事。

但是,並非所有使用者都配備高檔手機,還是得顧慮低階手機處理圖片的能力。那麼現在行動版圖片不會自動縮小的話,能有辦法完美處理所有行動裝置的圖片嗎?

我在這篇「Blogger 新版 RWD 範本,對 SEO 有哪些加分之處?」→「三、自適應圖片尺寸」看到了曙光,官方新版的程式碼,示範了如何產生自適應圖片,在不同尺寸的螢幕會各自載入不同尺寸的圖片,本篇會介紹作法及原理。

P.S. 一定會有讀者詢問「Picasa 不是關閉了?」,若有此疑問請先看這篇「其實 Google 相簿依然是 Picasa,你可能不太相信」。

(圖片出處: picjumbo.com)


一、SRCSET 使用說明


照理來說,一個 IMG 標籤只能顯示一張圖片,而能夠使用自適應圖片的關鍵,在於使用了新的 IMG 屬性 SRCSET,可以設定多張圖片,根據不同螢幕寬度來顯示對應的圖片。


1. 範例效果

先來看一下自適應圖片的效果,請進入這個網站:


以 Chrome 為例,按 Ctrl +Ctrl -來縮放螢幕,就會看到隨著不同的螢幕寬度,網頁分別載入不同尺寸的圖片。

不過測試時需要注意的是,瀏覽器通常會快取圖片,導致多看幾次後,圖片可能就不切換了。

那麼請勿必參考這個網頁「Disabling Chrome cache for website development」,有圖片說明如何關閉 Chrome 的快取功能。


2. 基本語法

範例網頁提供的自適應圖片效果,使用的語法如下:

<img src="images/2000x1000.png" srcset="
images/500x250.png 500w,
images/1000x500.png 1000w,
images/1500x750.png 1500w,
images/2000x1000.png 2000w,
images/3000x1500.png 3000w"/>


基本的語法說明請參考這篇「用 srcset 屬性做簡單的 Responsive Image」,本篇非語法教學,以下用最簡單、但不完全正確的敘述,來說明運作原理:

  • 若瀏覽器太舊看不懂 srcset,會讀取 src 的圖片網址來顯示
  • 當偵測到瀏覽器為不大於 500px 寬時,顯示 500x250.png 這張圖
  • 當偵測到瀏覽器為不大於 1000px 寬時,顯示 1000x500.png 這張圖
  • 其他螢幕尺寸以此類推
  • 找不到合適的螢幕寬度設定時,顯示所有設定中最大的那一張

為什麼說以上說明不完全正確呢?因為 "500w"的 "w",並不是代表 "px"的意思。

目前先看成 px 比較容易理解,有興趣的讀者可繼續看後面的進階說明。


3. 設備像素比

要說明這個 "w"代表的含意,需要補充的資料又更多了,請先瞭解這個名詞「設備像素比」:


簡單來說,是蘋果使用的 Retina 螢幕顯示技術,用了 2x2 的 像素來顯示原本 1x1 的像素。例如我們知道 iPhone4 的螢幕寬度是 320x480 px,但實際上蘋果卻在這樣的螢幕尺寸,顯示了 640x960 px 這樣 4 倍大的面積,那麼圖片效果自然比起一般的 320x480 手機清楚太多了。

而每一台手機的「設備像素比」數值都不一樣,詳細列表可參考這個網頁:



4. 實際像素值

所以 iPhone4 的「設備像素比」為 2,代表螢幕寬度 320px,背後是使用 640px 來顯示,我們可以看做 640px 寬才是 iPhone4 的 "實際像素值"。

那麼前面無法理解的 "w"現在就可以懂了,"w"代表的就是 "實際像素值"。

我們再重新闡釋一次前面提到的 srcset 基本語法,這樣就沒錯了:

  • 當偵測到瀏覽器的 "實際像素值"小於 500px 寬時,顯示 500x250.png 這張圖
  • 當偵測到瀏覽器的 "實際像素值"小於 1000px 寬時,顯示 1000x500.png 這張圖



二、Picasa 自適應圖片語法


有了以上概念後,可以開始來看 Picasa 如何處理自適應圖片。

前面的範例網頁,為了顯示不同尺寸比例的同一張圖片,必須上傳多張圖片,但 Picasa 完全不需要這麼做,只需要上傳一張圖片!


1. Picasa 網址參數

從 Blogger 上傳圖片到 Picasa 的流程可參考「Blogger 使用圖片的各種技巧:上傳+取得網址」。

Picasa 網址有參數可以設定,直接調整參數就能控制圖片大小,詳細原理可參考「使用 Picasa 的三大好處」→「二、使用 Google Drive 當圖床的影響」→「3. Picasa 的網址參數」。

舉例來說,這是一張 Picasa 圖片網址:

https://2.bp.blogspot.com/-wef9oDXpQ2M/WX3ssoXww3I/AAAAAAAAQDY/hduoXB-NPsMNpMrQs4knQKHCy4rOwNo5wCLcBGAs/s1600/wfublog-2017.jpg

將紅色字串 s1600 改成以下字串:

  • w320 → 代表寬度為 320px
  • w640 → 代表寬度為 640px
  • w960 → 代表寬度為 960px

可自行貼在瀏覽器測試,有了這樣的機制,要產生自適應圖片語法就很容易了。


2. Picasa 自適應圖片語法

稍微修改一下前面範例網站的自適應圖片語法:

<img src="//2.bp.blogspot.com/-wef9oDXpQ2M/WX3ssoXww3I/AAAAAAAAQDY/hduoXB-NPsMNpMrQs4knQKHCy4rOwNo5wCLcBGAs/s1600/wfublog-2017.jpg" srcset="
//2.bp.blogspot.com/-wef9oDXpQ2M/WX3ssoXww3I/AAAAAAAAQDY/hduoXB-NPsMNpMrQs4knQKHCy4rOwNo5wCLcBGAs/w480/wfublog-2017.jpg 480w,
//2.bp.blogspot.com/-wef9oDXpQ2M/WX3ssoXww3I/AAAAAAAAQDY/hduoXB-NPsMNpMrQs4knQKHCy4rOwNo5wCLcBGAs/w600/wfublog-2017.jpg 600w,
//2.bp.blogspot.com/-wef9oDXpQ2M/WX3ssoXww3I/AAAAAAAAQDY/hduoXB-NPsMNpMrQs4knQKHCy4rOwNo5wCLcBGAs/w720/wfublog-2017.jpg 720w,
//2.bp.blogspot.com/-wef9oDXpQ2M/WX3ssoXww3I/AAAAAAAAQDY/hduoXB-NPsMNpMrQs4knQKHCy4rOwNo5wCLcBGAs/w960/wfublog-2017.jpg 960w"/>


以上的語法,在不同的手機、平板寬度時,例如:

  • 最大寬度為 480px 的螢幕就會載入 480px 寬的圖片
  • 最大寬度為 720px 的螢幕就會載入 720px 寬的圖片

選擇合適的圖片尺寸載入,跟總是載入原圖尺寸相比,是不是能讓行動裝置的網頁速度變快呢!


3. Picasa 自適應圖片範例



上圖就是前面 Picasa 自適應圖片語法範例的效果,可用「Chrome 開發人員工具」來看效果,就能知道在網頁上、在哪支手機上,會載入哪張圖片。


picasa-rwd-image-srcset-1-Picasa 圖床的獨家應用:製作 RWD 自適應圖片,讓手機自動載入小圖,加快讀取速度

上圖是模擬 iPhone4 的效果:

  • 可看到手機螢幕寬度為 320x480
  • 請參考前面提到的「設備像素比」,iPhone4 的實際像素寬度為 640px (而非 320px)
  • 所以在 srcset 中,會找到最接近的 600w,所設定的對應圖片來顯示
  • 請注意紅框的 "w600",是我們將 Picasa 圖片網址參數設定為 600px 寬的那張圖。
  • 這就證明了使用 srcset 不會載入原尺寸的那張圖。
  • 在螢幕上顯示的尺寸,由於手機螢幕寬 320px,扣掉左右 padding 各 10px 後,圖片呈現的寬度為 300px



三、Sizes 屬性


RWD 圖片除了 srcset 需要設定,另外還有一個重要屬性 sizes,設定方法舉例如下,需要有一點 RWD 的 CSS 語法概念比較容易懂:

<img sizes="(max-width: 320px) 300px, 500px" .../>
以上語法代表的意思為:

  • 螢幕最大寬度為 320px 時,圖片顯示的寬度為 300px
  • 螢幕寬度大於 320px 時,圖片顯示的寬度為 500px
  • 可依照 Media Queries 的概念,設定多組條件

由於本篇不著墨過多語法教學,關於 sizes的概念與詳細說明,請參考這篇「响应式图片srcset全新释义sizes属性w描述符」。



四、自適應圖片語法轉換器


瞭解本篇的語法原理後,從 Blogger 上傳的每張 Picasa 圖片,都可使用 srcset, sizes 參數來製作自適應圖片。

只不過,自己手動產生語法是又慢又耗時的,這項工作可以交給程式代勞。

之前曾寫了「Blogger 圖片語法轉換器」,主要為了處理開頭提到的行動版圖片。

那麼這個轉換器現在會進行改版,變成可以轉換為自適應圖片的語法,近期就會發佈。

簡單做個結語吧,有了自適應圖片語法轉換器後,Picasa 不但可以說是最佳圖床,而且沒有任何對手可以看到車尾燈,這可是 Blogger 站長們才有的福利喔


更多 Picasa 相關文章:


更多提升網站效能相關文章:

免開瀏覽器播放 Youtube 訂閱頻道+清單,還能自動記憶結束時間﹍foobar2000 (Windows)

$
0
0
foobar2000-免開瀏覽器播放 Youtube 訂閱頻道+清單,還能自動記憶結束時間﹍foobar2000通常我在眼睛需要休息時,會播放訂閱的 Youtube 頻道來 "聽",一邊利用零碎時間,一邊可以吸收特定的知識、資訊等等。

而且為了發揮更多時間效益,我還會把 Youtube 影片的速度調整為 1.5 ~ 2 倍,在同樣的時間下可以消化更多影片。

不過使用瀏覽器看 Youtube 訂閱頻道或清單,長久以來發現一些問題:

  • 因為頻道的影片一直增加,常常會忘了哪些影片已經看過、或只看了一部份。
  • 影片的時間都不短,不一定每次的零碎時間,都能看完一部影片。
  • 所以下次要從幾分幾秒處開始 "聽",就得花一些時間來尋找。

所以我發現使用 Chrome 看 Youtube 頻道的效益不佳,會浪費很多無謂的時間。最後找到目前比較好的解決方案,是使用 foobar2000 這個免費軟體,以下分享我的安裝設定心得。



一、foobar2000 軟體安裝


1. 軟體介紹

很多 Windows 影音播放軟體其實都支援 Youtube 播放,但測試了幾個常用的 PotPlayer、Smplayer、Kmplayer,有的可以播放 Youtube 清單,但是都不能支援 Youtube 頻道

在 PTT 的 EZsoft 版搜尋到這篇「用foobar2000播放YouTube影片」,軟體介紹地十分詳細,看到功能包括了我的需求:

  • foobar2000 可以讀取單一影片、整個播放清單、或載入一整個頻道

這真是太棒了,支援頻道的話,就不用自己另外費功夫來製作清單了。


2. foobar2000 安裝

找到這篇「當foobar2000遇上Youtube」,把 foobar2000 的安裝過程寫的非常詳細,而且官方的介面其實有點簡陋,作者提供了自製的版面配置,不但美觀、而且功能好用多了,強烈推薦使用。


foobar2000-1-免開瀏覽器播放 Youtube 訂閱頻道+清單,還能自動記憶結束時間﹍foobar2000

上圖就是原文作者製作的版面,主要、常用的功能圖示都集中到左下角區塊,安裝說明請直接看原文。

以下這些相關的檔案連結,主要是幫忙分流之用:




二、相關設定


1. 簡易使用說明

foobar2000-2-免開瀏覽器播放 Youtube 訂閱頻道+清單,還能自動記憶結束時間﹍foobar2000

以原教學作者提供的版面配置為例,左下角區塊找到紅色圓框的按鈕,按下後會出現藍色箭頭處的視窗,在藍色方框處可進行搜尋。

這個 Youtube Search 的功能十分強大,可以輸入關鍵字搜尋,也可如圖中輸入這些網址:

  • 頻道主個人網址:格式為 .../user/xxx
  • 頻道網址:格式為 .../channel/xxx
  • 播放清單:格式為 .../playlist?list=xxx

接著就看你要如何處理這些列表的影片,可以全部加入自己的播放清單,也可選擇部分就好。


2. 記憶結束時間

對我來說這是很重要的功能,自動記住上次影片播放到哪裡,再次打開 foobar2000 時,就會自動從該處開始播放。


foobar2000-3-免開瀏覽器播放 Youtube 訂閱頻道+清單,還能自動記憶結束時間﹍foobar2000


  • 左下角區塊找到紅色圓框的按鈕,按下後會出現藍色箭頭處的視窗
  • 左側的「播放」→ 勾選「關閉 foobar2000 時儲存播放狀態,在下一次啟動時繼續播放」

最後按「確定」就可以了。


3. 設定快速鍵

foobar2000 預設的操作介面說實在挺陽春的,因此很多別的影音播放軟體的操作功能都沒有,例如快速前進、後退、暫停,這些常見功能都沒有快速鍵,所以我必須自己建立一些快速鍵。


foobar2000-4-免開瀏覽器播放 Youtube 訂閱頻道+清單,還能自動記憶結束時間﹍foobar2000

同樣在設定畫面,如上圖,按左側「鍵盤快速鍵」後,可以自訂熱鍵。

  • 按「新增」挑選要自訂的熱鍵功能
  • 在「索引鍵」的地方按下自訂快速鍵
  • 如上圖,我設定了一些快速前進、後退的秒數。

最後按「確定」就可以了。



三、調整播放速度


文章開頭提到一項個人需求,我常會將影片改用 1.5 ~ 2 倍的速度播放,但 foobar2000 預設並沒有這個功能。搜尋網路找到了這篇「Foobar2000 DSP音效外掛元件」,介紹了 SoundTouch 這個外掛可以安裝。

外掛檔案前面有分流網址,安裝方法請參考該篇文章即可。但這個外掛不是很好用,特別說明一下:


foobar2000-5-免開瀏覽器播放 Youtube 訂閱頻道+清單,還能自動記憶結束時間﹍foobar2000

  • 一樣在設定畫面 → 左側「播放」→ A 處「DSP 管理器」
  • 確定 B 處已經安裝好 SoundTouch,並選取這個項目
  • 按下 C 處「設定選取」,會出現「SoundTouch Configurations」這個視窗
  • 在 D 處「Rate adjust」可調整播放速度,例如圖中我加快了 50%,成為 1.5 倍速
  • 最後按「ok」及右下角的「套用」才能生效

為什麼說這功能不太好用?因為每次要調整時,都得進入這個設定畫面,跑完以上冗長的流程才能設定完,沒有快速鍵、在選單也沒有項目可以快速設定,目前只好將就著用。



四、小結


雖然目前調整播放速度的功能還不太方便,不過其他的部分已經可以幫我節省很多時間了。

將 Youtube 頻道影片移轉到 foobar2000 的播放清單後,看完的影片可以立刻從播放清單刪除,如同完成了一件待辦事項,也不會忘了這部影片到底看過沒,或是有沒有完整地看完過。

如果你也曾訂閱一些 Youtube 頻道影片,但苦於找不到有效的影片消化方法,那麼非常推薦使用 foobar2000 這個 windows 軟體。


更多 Youtube 相關文章:

聊聊字媒體、愛食記這類文章聚合平台,重複內容對網站 SEO 會有什麼影響

$
0
0
duplicated-content-seo-result-skill-聊聊字媒體、愛食記這類複製文章的平台,重複內容對網站 SEO 會有什麼影響幾個月前聽說有個免費部落格搬家的服務「字媒體」,基於探究原理的興趣研究一下他的機制,從官方的聲明來看滿吸引人的,雖然會產生重複內容,但創辦人過去有豐富的 SEO 操作經驗及技巧,長期而言宣稱可以提升 SEO,獨立網站也可加入合作,一時之間很好奇他的技術,也曾考慮是否要加入。

不過基於對 Google 搜尋引擎運作的瞭解,隱約覺得會產生某些問題,但概念一時無法轉換為文字,加上一直都很忙,對於一向不太在意 SEO 的我來說,這也不會是什麼急事,所以就先擱置了。

最近想到,曾有個 Blogger 客戶(部落格主題為美食),告訴我跟「愛食記」合作,文章同步到愛食記出了點問題,這件事後來有解決了。重點在於過了一陣子後,客戶彷彿像世界末日一樣跟我哭訴 SEO 流量掉了至少 1/3,但找不到原因為何,說她試了各種方法都無法恢復原本流量,簡直快瘋了。

再來就是「字媒體」發生了 nofollow 事件,雖然跟本篇主題的相關性較小,不過這幾件事我感覺對部落格站長影響很大,因此本篇來說說我的想法。

(圖片出處: pixabay.com)


一、SEO 知識的真偽


首先說明一下對 SEO 知識的看法,雖然本站其他相關文章已有提過,不過因為很重要,所以再提醒讀者一次:

  • SEO 規則基本上是 Google 制訂的,也就是說「Google 說了算」
  • Google 的規則常常在改,所以必須以最新的版本為準
  • 網路上有海量的 SEO 文章,讀者你有辦法辨別內容的正確性、是否為最新版本嗎?
  • 相信了過時(或錯誤)的 SEO 知識,沒有時間追蹤新的知識、並且抱著舊知識不放,反而會害了你的網站,那麼還不如完全不懂、或不追蹤任何 SEO 知識
  • 因此閱讀 SEO 文章時,請務必判斷作者的論述是不是他自己猜想的,還是有引用 Google SEO 工程師發言、或官方文件,才比較有可靠性
  • 最可靠的 SEO 知識,就是直接閱讀官方文件、或 Google 工程師的發言(不過英文必須理解正確)



二、愛食記案例的結局


談一下「愛食記」案例結果如何,當初跟客戶說重複內容一定會有問題,勸客戶把愛食記的所有文章下架,不過客戶捨不得,我記得是建議她這麼做:

  • 在愛食記不要放全文,只留前面幾行文字
  • 用類似「繼續閱讀全文」這樣的連結連回文章

如果可以的話,這會是最好的作法了,不過我猜愛食記不可能這麼做。

最近客戶表示 SEO 已經完全恢復了,於是問了下最後處理的如何,原來:

  • 客戶請愛食記終止同步文章複製,就不會有重複內容的問題
  • 但原本愛食記介紹該篇文章的頁面仍然保留,並留有文章的連結,可將流量導回
  • 簡單的說,就是仍然有同步文章,但不全文複製,只留下文章簡介的資訊。

所謂「文章簡介的資訊」並不是文章前幾行的內容,如果有看過愛食記就會知道這個頁面是什麼樣子,這裡略過不提。

無論如何,我相信這個案例的結果,的確是部落格跟愛食記合作的最佳範例

不過,是否每個部落格都能跟愛食記談出這樣的做法,我不敢打包票,那麼請憑實力了。



三、重複內容對 SEO 的影響


開頭提到對於「重複內容」這件事,"隱約覺得會產生某些問題"。我的意思是根據經驗,感覺上有些重複內容的頁面,在搜尋結果不會顯示出來。

但終究這只是我的經驗,不具說服力,還是看看官方說法為何比較準確。

這篇「Google對於重複內容的建議」是少數關於 "重複內容"這個主題,有引用官方文件、影音談話內容,且日期較近(2017/3月版本)的文章。

讀者若有時間請詳讀這篇文章,以下摘錄跟本篇論述有關的部分:

  1. Google不會懲罰重複內容
  2. Google會自動過濾掉重複的內容,盡量提供單一內容給使用者
  3. Google確實會對這些重複內容做一些事情,那就是降低它的權威性
  4. 如果你有很多個網站都在發表相同的內容,不管是產品或文章,這對你的排名絕對不會是好事情
  5. Google會希望給予那些有獨特性、相關性、權威性、有價值性,或是一直不斷更新內容的頁面更多的獎勵

以上摘要主要是讓讀者對 Google 如何處理 "重複內容"有概念,而本篇想要特別拉出來的是第 2 點:「Google會自動過濾掉重複的內容,盡量提供單一內容給使用者」。

意思是說搜尋結果有 2 筆以上的相同文章內容時,Google 可能只會挑選權威性最高的那個頁面來顯示,其他的所有重複頁面則都不顯示

這也說明了我的疑慮的確存在,當一篇食記同時發表在「愛食記」、「窩客島」、「愛評網」..等處,那麼搜尋某些特定關鍵字時,由於文章內容重複,「主站 + 三個分身」共 4 個頁面,可能就只有權威性最高的那個頁面能顯示而已。

至於何者權威性最高,要搜尋了才知道,但可以確定的是,主站註定有某些關鍵字會輸給分站,也就是搜尋結果會被過濾掉,從而喪失了主站流量

我想,這就是我的客戶加入「愛食記」後所遇到的情形,搜尋結果有大量的關鍵字權威性輸給愛食記,導致 SEO 流量大減。

同時愛食記全文看完後,相信很少有人還會特地點回主站,因此流量真的補不回來。



四、重複內容的搜尋結果


同時我也做了一些搜尋實驗,隨機抽樣一些部落格文章,來看重複內容的影響程度。

先聲明並不認識抽樣網站站長,用詞若有不當請被提到的站長包涵。

1. 權威度高的網站

知名大站的搜尋結果就不列了,因為權重太高,就算有重複內容,搜尋結果大多還是排名在「愛食記」等網站之前。


2. 權威度中等的網站


一開始先搜尋完整文章標題,或是標題中的字串,大部分都是「痞客邦」在前,窩客島在後,代表該網站有一定的權威度。

再來改搜尋「文章中出現的字串」,模擬使用者各種可能的搜尋方式,例如 "YQBOBA 主打粉圓專賣",結果是這樣子:

duplicated-content-seo-result-skill-1-聊聊字媒體、愛食記這類複製文章的平台,重複內容對網站 SEO 會有什麼影響

搜尋結果窩客島排第 1,主站文章則找不到了

這算是「搜尋結果有多個重複內容網站時,只會顯示權重最高那一筆資料」的範例。雖然這是比較少見的搜尋字串測試方式,不過也代表了網站有重複文章時,一些屬於長尾關鍵字的流量,會被這一類的權重較高的平台吃掉


3. 權威度不夠的網站


這個案例比較特別,用完整文章標題搜尋,只出現愛食記網頁;用部分文章標題關鍵字搜尋,依然只看到愛食記網頁:

duplicated-content-seo-result-skill-2-聊聊字媒體、愛食記這類複製文章的平台,重複內容對網站 SEO 會有什麼影響

怕這個網站尚未提交網站 sitemap,特地使用 site:http://youping912006.pixnet.net 搜尋,確認不但有搜尋結果,也有看到這篇文章被搜尋引擎收錄。

那麼以上現象大致可以歸納為,這個網站建立的時間還不夠長,權威度不夠,導致搜尋結果全部被愛食記吃掉了,這是非常可怕的事情!



五、如何處理他處網站的重複內容


根據以上的 Google 官方說明、實際案例、以及我的搜尋實驗,那麼所有產生複製內容的平台,例如本文提到的平台,或自行複製貼上到 PTT、論壇這樣的狀況,只要我們的網站權威度不夠,SEO 流量就可能會被吃掉

那麼當初為了獲得高權重外部連結所做的付出,看來是得不償失,除非有辦法確定能將外部連結的流量導回我們網站──這個辦法就是不要全文轉貼,才能讓訪客連過來看原文,將流量導回主站


1. 推薦方式

前面「二、愛食記案例的結局」我對客戶的建議,也是我對 "如何處理他處網站重複內容"的建議。

這個作法的原理類似部落格搬家後的狀況,兩處網站會出現重複內容,因此必須按照「痞客邦搬家到 Blogger 後,SEO 問題要如何解決?」→「四、痞客邦的處置」的方式來進行。

總之,他處網站的重複內容,只留幾行文字並連回主站是比較沒問題的 SEO 操作方式。

如果能像「愛食記」這樣,只留簡介頁面、並可連回主站,我想這會是 100 分的作法了。


2. 字媒體

以字媒體成立的目的,要官方接受重複內容只留幾行文字,會比較困難。那麼我覺得想加入字媒體、類似平台的站長,可能需要進行評估:

  • 如果本身網站權威度非常高,將來就算字媒體茁壯了,SEO 也不會輕易被吃掉,這個族群是適合加入字媒體的。
  • 如果網站權威度中等:
    • SEO 流量將來勢必會被字媒體吃掉一部份,那麼加入字媒體可能是場賭注。
    • 你得先加入才能進行測試,究竟從字媒體得到的好處,能否彌補失去的 SEO 流量。
    • 如何測試、測試結果能否可精準評估,這些都是謎,同樣是賭注。
  • 如果網站權威度不夠,那麼就不要想從字媒體獲得外連的 SEO 加分這件事,因為你的流量已經被吃光光了。


3. 關於部落客龍頭

其實回過頭想,背後老闆是鴻海的字媒體,設定的目標不會小鼻子小眼睛,一定是準備取代痞客邦、劍指龍頭。這一天若真的到來,代表字媒體網站的 SEO 權重將比所有網站都強,那麼一開始不怕 SEO 受影響的頂尖部落客們,屆時真的也不會受影響嗎?

以痞客邦的「PIXstyleMe」為例,部落格平台帶頭做複製文章的行為,把自己當農場經營,很明顯影響旗下部落格的 SEO。因此當初多數只要是知情的部落客,都會在後台取消勾選「同意複製文章到 PIXstyleMe」類似這樣的選項。

題外話,如果會怕「PIXstyleMe」影響 SEO 的話,那麼按照同樣的邏輯,就算是部落客龍頭,長期來看應該也是會害怕加入字媒體吧?


4. 折衷方法

相信大部分部落格站長,寫文章的出發點是出於分享,不過有一部份能接案的網站,是需要文章聚合平台的,因為需要獲得曝光度、能被案主找到。

那麼針對這類性質的站長,這是我想到的折衷方法:

  • 加入聚合平台,但不全文複製(可能不是所有平台都接受這個作法)
  • 加入聚合平台,同意全文複製,但只提供部分文章,這樣子最多只有那些文章的 SEO 受影響。
  • 例如假設你的網站有 1000 ~ 2000 篇文章,但只提供數十篇到一百篇這樣的數量,讓 SEO 的影響在 1/10 以下
  • 意思就是說,看站長願意犧牲多少的 SEO,來換取廠商面前的曝光率。
  • 甚至你還可以只提供懶人包文章給這類平台,因為懶人包裡滿滿都是你的文章連結,這個效用應該不用 WFU 多解釋了~~



六、安全無風險的作法


字媒體是由 SEO 專家所創立,出發點在於平台茁壯以後,可以讓加入的部落格獲得優質外連(link juice)。平台建立的目的也可以說是,將原本多數由痞客邦(提供網域權威度)庇蔭的網站,搬家後改為由字媒體來庇蔭。

其另一個優勢為,提供平台首頁的功能,讓潛在合作對象可以接洽想接案的網站。這就是前面提到的,站長需要考慮是否犧牲 SEO 流量來換取合作接案的機會。

不過這件事與主題無關,如何評估就留給站長們去思考。而本篇的論述推演下來,"目前"只有權威度高的網站加入這個平台,是比較不影響 SEO 的。那麼權威度中下的網站,有沒有安全無風險的替代作法呢?


1. 其他部落格平台

其實能提供網域權威度的平台,還有非常多,所有的大型部落格平台都算是,例如痞客邦(pixnet.net)、Blogger(blogspot.com)。

這也就是說,合法製作優質外連的平台、網域非常多,這方面就看個人功力了。

實際的操作方式以 Blogger 為例:

  • 在 Blogger 買網址架站(作為主站)
  • 把文章複製到痞客邦(可用 Blogger API + Pixnet API 處理)
  • 用處理搬家的方式,在痞客邦只留文章前幾行,製作搬家通知畫面連回主站
  • 新文章要自動同步到痞客邦,一樣可操作 Blogger API、Pixnet API 來做到

這樣就能獲得比字媒體更好的效果(除非認為字媒體網域權威度能贏過痞客邦、Blogger),而且完全無風險,不需負擔任何主機、流量等其他費用。另外,以 Blogger 的自由度,任何想得到、其他網站看得到的功能都有辦法寫得出來。

事實上 WFU BLOG 幾年前就用這個方式在痞客邦實驗過了,的確能獲得一些來自痞客邦的流量,也有一些 Adsense 的點擊。

當然,你也可以主站放痞客邦,分站放 Blogger,就能獲得 blogspot.com 的 link juice。不過我相信沒人會這麼做,因為痞客邦自由度不夠,不能想幹嘛就幹嘛。


2. 不建議過早優化 SEO

雖然安全無風險的作法已經提供給讀者,但不代表 WFU 建議你做這件事,因為我一向不建議讀者太在意 SEO,經營網站有太多遠比 SEO 更重要的事情要做

有興趣可參考「部落格網站在那個階段,需要開始加強 SEO?」,經營部落格跟創業很類似,能否闖出名號沒有人能知道,過早進行優化是一種資源與時間的浪費。

專注在網站內容,等到名聲建立起來後,屆時才是真正需要開始優化網站的時刻,包含 SEO。在那之前,關於 SEO,Blogger 只要做到這幾件事就好」。


更多 SEO 相關文章:

WordPress 防駭 + 建立安全防護心得紀錄

$
0
0
wp-site-safety-protection-WordPress 防駭 + 建立安全防護心得紀錄上一篇處理完「WP 被駭後, 移除各種被植入的外掛及惡意程式」,並且備份完乾淨的檔案之後,接下來本篇要建立安全的防駭機制及環境。

(圖片出處: pixabay.com)


一、WP 防護概念


WordPress 由於是開放原始碼的部落格平台,每個 WP 網站的架構、預設資料夾名稱、甚至登入網址連結都一模一樣。使用了相同版本的 WP 網站,都會存在相同的漏洞,對於有心人士而言,如果沒做好防護措施的話,要入侵 WP 不算難事。

要在 WP 長久安居的話風險不小,因此架站之前,的確得先瞭解各種安全防護措施,可參考這些文章:



處理網站被駭,以及安全防護的基本概念及原理,可參考這篇:




二、確保帳號安全


以下開始紀錄網站被駭之後,進行的各項防堵及安全措施。

能夠在 WP 網站植入各種外掛、惡意程式,表示駭客有辦法取得管理員的權限,或是已經破解了現有的帳號密碼,因此第一要務是不讓駭客輕易登入網站。

1. 監控登入次數

Limit Login Attempts」這個外掛可以監控使用者登入的狀況,是最推薦的外掛,安裝使用教學可參考這篇「Limit Login Attempts: WordPress後台登入錯誤次數限制」。

wp-limit-login-attempts-WordPress 防駭 + 建立安全防護心得紀錄

安裝之後,駭客就不能輕易從 WP 網站後台嘗試密碼,因為超過一定次數就會被鎖定、紀錄 IP、甚至封鎖 IP,WFU 認為這是重要性最高的外掛


2. 加強帳號密碼安全性

  • 刪除 WP 預設的 Admin 帳號
  • 更改帳號的密碼,用系統的「產生密碼」按鈕,增加複雜度
  • 務必修改根目錄系統檔案 wp-config.php裡面的金鑰設定,一共有 8 組,直接參考該檔案的註解說明,到網址 https://api.wordpress.org/secret-key/1.1/salt/ 來產生金鑰即可。


3. 隱藏後台及登入網址

這件事可說是第二重要,將 WP 後台的預設網址 /wp-admin,以及 WP 預設登入網址 /wp-login.php隱藏起來,駭客連登入的地方都找不到,WP 就安全多了

hc-custom-wp-admin-url-WordPress 防駭 + 建立安全防護心得紀錄

高登大推薦的「HC Custom WP-Admin URL」是最佳外掛,安裝完、設定一組字串後,就能自動隱藏預設的 /wp-admin以及 /wp-login.php網址。

不過原文「隱藏 WordPress 後台網址」提到可以只改 .htaccess 就好,不用安裝外掛,我的測試結果是不行,情形跟留言者 Stacey 所提的狀況一樣,所以就沒在原文回報了。

提醒一下讀者,「HC Custom WP-Admin URL」這個外掛做的事情,不只是修改 .htaccess 這個檔案,還改了一些系統設定,因此請勿移除此外掛,否則駭客還是可以從 WP 預設的 /wp-admin來登入及猜密碼。



三、不顯示 WP 版本


特定 WP 版本都會存在該版本的安全性漏洞,因此必須避免讓駭客知道網站的版本資訊。

可惜 WP 在太多地方存放了版本資訊,大致整理以下這些地方、以及隱藏方法:

  • 根目錄的 readme.html,請直接刪除即可
  • 網頁的 meta 標籤,刪除方法可參考前面提到的參考文章「一、WP 防護概念」→「WordPress安裝後你應該做的事–安全防駭篇」
  • 系統目錄 "wp-admin"之下的 "about.php",可參照「二、確保帳號安全」→「3. 隱藏後台及登入網址」,將系統目錄 wp-admin隱藏起來,避免被駭客利用。
  • 系統目錄 "wp-content"之下的 "version.php",可參照「四、保護系統重要檔案、目錄及資料表」→「1. htaccess」的語法,限制 version.php 的存取。



四、保護系統重要檔案、目錄及資料表


WP 有許多預設的檔案、目錄、資料表名稱,最好要限定存取權或更改名稱,才不會被駭客利用。

1. htaccess

.htaccess是網站裡面最重要的系統檔案,可設定所有檔案的存取權限,可參考「一、WP 防護概念」的相關教學文章,進行以下設定:

  • 保護 .htaccess 自己的存取權
  • 每個目錄的 index 檔案存取權限
  • 保護 wp-config.php 的存取權
  • 保護 wp-includes 目錄
  • 限制上傳檔案大小


2. 重新命名 WP 資料表前綴

wp-config.php這個重要的 WP 系統檔,設定了資料表名稱的前綴字串,預設是 "wp_"。如果沒有更改的話,容易被駭客知道、進而利用。

但光是從 wp-config.php更改是不行的,只好藉助於外掛幫我們解決這件事。

wp-change-db-prefix-WordPress 防駭 + 建立安全防護心得紀錄

前面推薦的參考文章介紹了「Change DB Prefix」,這個外掛可以很方便的幫我們完成這件事。

更棒的是,完成之後就可以將這個外掛移除,不用在後台佔用空間及資源。



五、主機商


最後,網站被駭也有可能是主機這邊的問題,因此主機商這一端也有需要進行的項目,需要跟主機商溝通:

  • 確保主機沒有漏洞、或被植入木馬。
  • 提供備份的服務
  • 提供被異常流量攻擊時的防護措施

每個網站的用途、目的不盡相同,本文紀錄的安全防護心得,並未包含所有的方法,建議參考引用的相關教學文章,採用適合自己網站的項目來進行。


更多 WordPress 相關文章:

自適應 RWD 圖片語法產生器﹍Picasa 圖床專用

$
0
0
rwd-image-generator-picasa.jpg-自適應 RWD 圖片語法產生器﹍Picasa 圖床專用之前「Picasa 圖床的獨家應用:製作 RWD 自適應圖片」詳細介紹了 IMG 標籤如何設定 srcset 屬性,讓網頁可根據各種螢幕寬度載入不同尺寸的圖片,手機、行動裝置就能縮短網頁載入時間。

同時全世界的圖床,只有 Picasa 可以做到,上傳一張圖片後,修改網址參數,就能成為任意尺寸的圖片。他的好處是,可利用程式自動產生指定尺寸的圖片網址,搭配 srcset 就能產生自適應 RWD 圖片語法。

那麼只要你是 Blogger 站長,從後台上傳、存放在 Picasa 的圖片,就能使用這個 WFU 製作的「自適應 RWD 圖片語法產生器」。

本篇會介紹如何操作這個簡單方便的工具,可點以下連結前往:





一、使用說明


rwd-image-generator-picasa-1.jpg-自適應 RWD 圖片語法產生器﹍Picasa 圖床專用

操作順序依上圖 A~E:

A. 紅框處可填入多個不同螢幕寬度的 px 數值,如果對 srcset 熟悉的話可自行修改。若不熟悉的話,用預設值就可以了。

最多可填入 5 組,不需要的也可取消勾選。


B. 這一區可自動產生 IMG 標籤的 ALT 描述內容,產生的規則從畫面中的選項很容易就能瞭解。

需要詳細說明的話請參考「圖片 ALT 描述自動產生器」。


C. 這一區可對 A、IMG 標籤的其他屬性進行加工,詳細說明可參考「Blogger 圖片語法轉換器


D. 以上參數都設定好了之後,將來這個轉換器的操作非常簡單且直覺。首先進入 Blogger 後台 → 編輯文章 → 切換到「HTML」模式 → 複製全部內容


rwd-image-generator-picasa-2.jpg-自適應 RWD 圖片語法產生器﹍Picasa 圖床專用

接著將全部內容貼入上圖左邊「貼上 html 碼」這個區塊


E. 如上圖,右邊的「轉換結果」區塊會自動出現轉換結果,並自動全部選取。此時只要按下 Ctrl + C複製,再貼回文章中存檔即可。

文章中無論有多少張圖片,都會一次處理完畢。




二、注意事項


1. 請注意 Picasa 圖片產生的時間點

大約是今年年初「Blogger 推出全新自適應 RWD 官方範本」的那個時間點,Blogger 後台上傳的圖片,IMG 格式多了一個屬性 data-original-width,用來紀錄原始圖片的寬度。而以往上傳的圖片(例如今年 2017 以前),我們無法得知圖片的原始寬度。

這個工具需要利用原始圖片寬度,才能運算出最佳解的 RWD 圖片語法

所以請站長特別注意:

  • 使用本工具前,務必先檢查你的圖片有沒有 data-original-width屬性
  • 若是沒有的話,使用本工具將無法產生正確的 RWD 圖片語法。
  • 要處理舊的文章圖片,建議改用「Blogger 圖片語法轉換器


2. 轉換固定寬度圖片

舊版的圖片轉換器,可以將所有圖片轉換為同樣寬度,這其實也是滿實用的功能,也許不少站長滿需要的。

但是同樣寬度的圖片,就不一定適合 RWD 了,因此兩種轉換器是互斥的。

那麼不需要 RWD,比較需要相同寬度圖片的站長,有兩種建議:

  • 使用 XnView 這套軟體,可以批次轉換所有的圖片尺寸,然後再上傳到 Blogger。
  • 使用舊版「Blogger 圖片語法轉換器


3. 自動記憶

這個工具使用了「自動記憶表單狀態外掛」,因此只需要第一次設定完所有參數,將來再進入網頁都不必再重新設定,非常方便可安心使用。


更多網站工具推薦:

關於部落格重複內容對 SEO 的影響﹍一點補充

$
0
0
上個禮拜發佈了一篇文章,關於重複內容對 SEO 的影響,因為某些原因在一天之內就刪除了文章。

本來想說應該沒差,有訂閱本站的忠實讀者,在 RSS 閱讀器應該都看得到。結果上 Feedly 網站確認一下時,很奇怪無法點開文章內容,當點擊文章連結時,由於已經刪文而導致產生 404 頁面。

所以這件事對讀者有些抱歉,這篇文章在還沒貼到 FB、粉絲團之前就刪了,想必很多追蹤或是訂閱本站的讀者沒機會看到這篇文章。

刪文的原因後面會說明,而為了不影響讀者的權益,這篇刪文經修改部分內容後,暫時會貼在本篇,只要你是本站的會員,都可看到隱藏的「會員限定文章」內容。

(圖片出處: pixabay.com)


一、刪文內容





二、刪文的考量


1. 綜合考量

刪掉文章有很多綜合考量,其中一個是出自於對台灣中小型產業發展的顧慮。現今的大環境不好,被這篇文章提到的平台,目前還沒健壯到足以接受或承擔公審。在下次發生事件之前,目前至少還留有一些時間讓他們去找出問題、解決問題、或證明有能力處理問題。

不過相對來說,刪掉這篇文章對部落客是不公平的,因為這個圈子有必要知道曾發生的事,那麼加入這些平台之前,就會有心理準備,以及了解自己必需付出的成本有什麼。

上面隱藏的修改內容,雖然現在滿篇到處都是OOXX,不過不影響事件的解讀。一方面可以保護台灣這些小企業,搜尋任何平台關鍵字都不會浮出來;一方面提供將來對 "重複內容"有疑慮的使用者,在網路上可以找到相關的參考資訊。


2. 我學到的東西

雖然我是 Google 的愛用及支持者,但不代表所有產品、設計都會買單。當初 Google AMP 剛出來時,台面上只看得到吹捧、讚揚的聲音,但我測試後就覺得跟本不適合部落格,所以寫了一篇詳細的 "剖析"文章。

痞客邦也夠大,相信禁得起我批判,所以幾年前發現 FB 留言的漏洞後,就曾發文探討。再來就是痞客邦旗下的 7headlines,利用 Iframe 框架網站內容來獲利,不道德的事我發文一樣不手軟。

而這次的事件,跟家人討論過後,我想我有做不好的地方。相對而言,Google 跟痞客邦是有資源可以不斷跌倒及爬起的公司,但這些平台不一定有。

所以我學到的事情是,龍頭企業可以指名評論,而還在成長的企業,需要給予多一點的機會



三、關於重複內容的補充


上星期那篇文章發佈後沒有太久,其中某個平台看得出很急著要聯絡上我,所以經過考慮後將文章刪除了。

不過我也跟平台傳達了我的想法,讓平台瞭解這樣的情況是存在的,平台要想辦法解決問題、或提出證據讓自己的使用者能安心,否則將來還是會有使用者發現這樣的狀況。


1. 無止境的循環

而另一個平台則是認為 "重複內容"有辦法不影響 SEO,有技術可以處理這些問題,且認為會被影響的部落格,表示網站權威性不夠。

那麼這部分就分兩點補充我的看法:

A. 重複內容非長久之道

  • 根據上篇的內容,Google 開宗明義講了,搜尋引擎就是比較喜歡「原創」的內容,這樣的文章比較能得到獎勵
  • 假設能處理 "重複內容"的 SEO 技術(稱為 A)目前的確存在,也被發現了
  • 那麼 Google 為了獎勵「原創內容」,將來發現 "重複內容"可操作 SEO 時,是否也會修改演算法(稱為 B)?
  • 為了維持 A 的優勢,必須再度想新的招數,而 Goolge 也會不斷有對應的 B 產生,來保護及獎勵原創內容
  • 那麼將來重複內容的 SEO 可能就是上上下下,看 A 與 B 的拔河結果而定
  • 感覺上為了讓複製文章的 SEO 不受影響,必須持續戰勝 Google 工程師。只要 Google 的宗旨不變,那麼鑽一輩子好像挺累的,而且沒有輸的空間。


B. 網站權威性問題

既然權威度低的部落格的確不適合加入這樣的平台,我想這個結論也滿明確的,請不夠出名的網站,遠離這類平台會比較安全。


2. 接案需求

前文只建議有接案需求的部落格,為了增加給廠商的曝光機會,來加入這些平台。

拿可能的 SEO 損失換取接案機會,我想這是公平的。而 SEO 的損失多寡將取決於平台與 Google 的拔河能力。


3. 平台提供的好處

後來才知道,其實某些平台提供了不少實質的好處給加入的部落格,例如有機會上雜誌報導、增加知名度,或是可以集點數換券等等。

我認為平台自己也知道,重複內容會影響一部分部落格的實質流量,所以願意提供這些好處,來交換文章。

那麼我想這算是很公平的交易,站長可評估是否願意拿 SEO 來換取這些優惠。


4. 客座文章

「客座文章」算是不得不產生的複製內容,這是沒辦法的事,若有媒體邀稿、或要求轉錄文章,如果認為獲得的名氣 > 損失的 SEO,就提供文章吧。

其實我認為「客座文章」的影響不大,畢竟只是一篇文章,佔網站的流量比例很小。但文章很有可能擴散到有力人士的眼前,所以是值得投資的標的(但請慎選合作對象)。

有力人士的影響,可以算到 "人生"層級,所以此時的評估不宜用 "網站"層級的 SEO 流量來衡量


以上是所有補充內容,請先看完「會員限定文章」再閱讀,有 FB 帳號即可加入會員。


更多 SEO 相關文章:

自動記憶表單狀態,重新開啟網頁後輸入的資料都還在﹍jQuery 外掛 Sisyphus

$
0
0
form-remember-status-sisyphus-自動記憶表單狀態,重新開啟網頁後輸入的資料都還在﹍jQuery 外掛 Sisyphus曾製作過不少線上工具,大多需要用表單的形式讓使用者輸入資料。其中「圖片 ALT 描述自動產生器」用到大量表單元件,有單選、多選、文字輸入等各種形式。

只要常常發佈部落格文章的話,這個工具每次都會用到,那麼表單勾選的狀態、或輸入的文字必須儲存起來,下次使用才不會麻煩,可避免重複勾選及輸入。

以前儲存表單狀態是用 cookie 來寫入,但程式寫起來不方便,且前陣子這個工具改版為「自適應 RWD 圖片語法產生器」,導致儲存表單狀態的功能必須重寫。

還好找到了一個基於 HTML5 開發的 jQuery 外掛 Sisyphus,不必使用 cookie,使用起來也超級方便、功能又強,解決了表單儲存的難題,本篇就來介紹如何使用。



一、CDN 安裝法


1. 官網介紹


官網做得非常直覺、易懂,進入後就可看到多個 DEMO 效果,旁邊就是範例程式碼。

form-remember-status-sisyphus-1-自動記憶表單狀態,重新開啟網頁後輸入的資料都還在﹍jQuery 外掛 Sisyphus

例如上圖這個複雜的表單,各種表單輸入內容、下拉選單、核取方塊等等,重新整理頁面後,馬上就可看到效果,狀態都被儲存起來了。

執行程式碼也超簡單的,為表單取個 ID (例如 myForm),執行以下程式碼就行了:

$("#myForm").sisyphus();

2. CDN 安裝連結

這麼好用的外掛,同時也不必另外找網頁空間存放檔案,已經有 CDN 支援了,請見這個網址:


要引用這個外掛,在網頁 head區塊放以下程式碼即可:

<script src='https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/sisyphus.js/1.1.3/sisyphus.min.js'></script>

第一行要先引用 jQuery,第二行就是 Sisyphus 的 CDN 連結。



二、範例程式碼


以下提供一個簡單的範例:

<!--表單內容-->
<div id="remember_form">
<label>名稱</label>
<br/>
<input name="name" type="text" value="Wayne Fu">
<br/><br/>
<label>性別</label>
<br/>
<select name="sex">
<option selected="selected">男生</option>
<option>女生</option>
<option>其他</option>
</select>
<br/><br/>
<label>網站名稱、描述</label>
<br/>
<textarea name="description" cols="50" rows="5">WFU BLOG:
Blogger 技巧及工具最豐富的專業部落格,提供 RWD 網站架設、維護諮詢、網頁設計服務,分享網路雲端應用心得。</textarea>
<br/><br/>
<label>網站性質</label>
<br/>
<label>
<input name="attr" type="checkbox" checked="checked">網路雲端</label>
<br/>
<label>
<input name="attr" type="checkbox" checked="checked">網頁設計</label>
<br/>
<label>
<input name="attr" type="checkbox">美食旅遊</label>
<br/>
<label>
<input name="attr" type="checkbox">流行資訊</label>
<br/>
<label>
<input name="attr" type="checkbox">3C 開箱</label>
<br/>
</div>

<!--引用外掛-->
<script src='https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/sisyphus.js/1.1.3/sisyphus.min.js'></script>

<!--執行程式碼-->
<script>
$("#remember_form").sisyphus();
</script>


執行的效果大致如以下這個表單,可自行修改表單內容,再重新整理頁面,就可看到表單內容被記憶的效果:




三、補充事項


1. 一定要有 name

非常重要的一點,這個外掛的原理是讀取表單元件的屬性 "name"來儲存資料,只要你的某個表單元素沒有設定 name,那個元素就無法儲存狀態了

所以執行外掛之前,請詳細檢查你的所有表單元件,例如 input、select、textarea...等,是否都設定了 name 的參數

如果不清楚 name 怎麼設定,可參考上面的程式碼範例。


2. API 說明

基本上這個外掛不需研究 API 說明,就很好用了。

如果有特別的需求需要使用官方 API,可參考官方說明書:


這裡提供了一些參數、事件可以使用。

如果覺得英文說明看不懂,那麼可看這篇中文翻譯說明:



更多 jQuery 相關工具:

本站 Blogger 開放留言上傳圖片功能

$
0
0
blogger-comment-upload-image.jpg-本站 Blogger 開放留言上傳圖片功能知名留言板外掛大多會提供圖片附件功能,例如 FB、Disqus。「一圖勝過千言萬語」,有時沒有圖片的輔助,任憑提問者花了再多文字描述,也不一定能表達出完整的原意。

雖然幾年前就想研發 Blogger 留言上傳圖片的功能,但無奈工程太過複雜。後來終於找到關鍵技術,不過又一直有事耽擱,直到現在才有機會把功能整理出來。

那麼本篇就來說明操作的方法,及簡單介紹原理。

(圖片出處: 699pic.com)


一、使用說明


在本站的留言框上方,會看到兩行資訊:


blogger-comment-upload-image-1.png-本站 Blogger 開放留言上傳圖片功能

雖然第一行資訊特別用紅字標示提問請「詳細描述狀況,並附網址或截圖」,不過還是很多讀者似乎看不到這訊息?還請麻煩提問時填寫相關網址,否則 WFU 是不會心靈感應的。

原本請留言者附截圖並不是件容易的事,不過現在第二行多了一個「上傳圖片」的按鈕,這下方便許多,按下去就對了!


blogger-comment-upload-image-2.png-本站 Blogger 開放留言上傳圖片功能

選擇圖片後,會自動上傳到 Picasa 圖床,請稍待幾秒,完成上傳後就會出現上圖:

  • 畫面會顯示這張圖的連結網址,並且已經自動選取文字
  • 請按紅字說明進行複製,並貼在留言框中即可
  • 想確認上傳的圖片是否正確,直接點擊圖片網址,會另開視窗顯示圖片



二、注意事項


使用說明很簡單,需要注意的事項也很少:

  • 應該不會有人特地拿這個工具來製作自己使用的圖片連結才是(用自己的 Blogger 後台上傳還比較方便),不過我還是做了上傳次數的限制
  • 最多可以上傳 3 次圖片
  • 如果真的一次留言要超過 3 張圖片,只好麻煩分批留言了
  • 貼到留言框的圖片網址,會自動變成超連結,所以不必再另外使用 A 標籤語法

對這個按鈕出現的位置有興趣的話,可參考「讓 Blogger 留言注意事項能隨留言框移動

想讓留言內容的連結網址,自動顯示圖片,可參考這篇「讓 Blogger 留言能顯示圖片及 Youtube 影片﹍將網址字串轉換為圖片」。



三、技術說明


以上為主要內容,接下來的技術原理提供給有興趣的站長瞭解。

1. 上傳的圖片是存放在 Picasa 圖床,而 Picasa API 現在已經終止「新增相簿」的功能了,所以只能選擇舊有的相簿來存放圖片。

2. 想要選擇 Picasa 舊相簿來存放,得先知道舊相簿的 ID,可參考「其實 Google 相簿依然是 Picasa,你可能不太相信」→「二、Google 相簿的 RSS Feed」,利用「Google Photos RSSerator」這個網站的工具來找到。

3. 操作 Picasa API 無法由前端完成,官方只提供了 Server 端的 API,所以站長想要實現上傳圖片的功能,得瞭解後端的語言。

4. Blogger 後台、「Open Live Writer」等等能夠上傳圖片到 Picasa,都得連到後端主機,才能操作 Picasa API。

5. Picasa 官方提供的「API 說明書」非常詳細,但做起來很難,只建議工程師研究,一般人不建議。


更多 Blogger 留言相關工具:

聊聊部落格若加入文章聚合平台,重複內容對網站 SEO 會有什麼影響

$
0
0
duplicated-content-seo-result-skill.jpg-聊聊部落格若加入文章聚合平台,重複內容對網站 SEO 會有什麼影響幾個月前聽說有個免費部落格搬家的服務「XXX」,基於探究原理的興趣研究一下他的機制,從官方的聲明來看滿吸引人的,雖然會產生重複內容,但創辦人過去有豐富的 SEO 操作經驗及技巧,長期而言宣稱可以提升 SEO,獨立網站也可加入合作,一時之間很好奇他的技術,也曾考慮是否要加入。

不過基於對 Google 搜尋引擎運作的瞭解,隱約覺得會產生某些問題,但概念一時無法轉換為文字,加上一直都很忙,對於一向不太在意 SEO 的我來說,這也不會是什麼急事,所以就先擱置了。

最近想到,曾有個 Blogger 客戶(部落格主題為美食),告訴我跟「OOO」合作,文章同步到OOO出了點問題,這件事後來有解決了。重點在於過了一陣子後,客戶彷彿像世界末日一樣跟我哭訴 SEO 流量掉了至少 1/3,但找不到原因為何,說她試了各種方法都無法恢復原本流量,簡直快瘋了。

再來就是「XXX」發生了 nofollow 事件,雖然跟本篇主題的相關性較小,不過這幾件事我感覺對部落格站長影響很大,因此本篇來說說我的想法。

(圖片出處: pixabay.com)


一、SEO 知識的真偽


首先說明一下對 SEO 知識的看法,雖然本站其他相關文章已有提過,不過因為很重要,所以再提醒讀者一次:

  • SEO 規則基本上是 Google 制訂的,也就是說「Google 說了算」
  • Google 的規則常常在改,所以必須以最新的版本為準
  • 網路上有海量的 SEO 文章,讀者你有辦法辨別內容的正確性、是否為最新版本嗎?
  • 相信了過時(或錯誤)的 SEO 知識,沒有時間追蹤新的知識、並且抱著舊知識不放,反而會害了你的網站,那麼還不如完全不懂、或不追蹤任何 SEO 知識
  • 因此閱讀 SEO 文章時,請務必判斷作者的論述是不是他自己猜想的,還是有引用 Google SEO 工程師發言、或官方文件,才比較有可靠性
  • 最可靠的 SEO 知識,就是直接閱讀官方文件、或 Google 工程師的發言(不過英文必須理解正確)



二、OOO案例的結局


談一下「OOO」案例結果如何,當初跟客戶說重複內容一定會有問題,勸客戶把OOO的所有文章下架,不過客戶捨不得,我記得是建議她這麼做:

  • 在OOO不要放全文,只留前面幾行文字
  • 用類似「繼續閱讀全文」這樣的連結連回文章

如果可以的話,這會是最好的作法了,不過我猜OOO不可能這麼做。

最近客戶表示 SEO 已經完全恢復了,於是問了下最後處理的如何,原來:

  • 客戶請OOO終止同步文章複製,就不會有重複內容的問題
  • 但原本OOO介紹該篇文章的頁面仍然保留,並留有文章的連結,可將流量導回
  • 簡單的說,就是仍然有同步文章,但不全文複製,只留下文章簡介的資訊。

所謂「文章簡介的資訊」並不是文章前幾行的內容,如果有看過OOO就會知道這個頁面是什麼樣子,這裡略過不提。

無論如何,我相信這個案例的結果,的確是部落格跟OOO合作的最佳範例

不過,是否每個部落格都能跟OOO談出這樣的做法,我不敢打包票,那麼請憑實力了。



三、重複內容對 SEO 的影響


開頭提到對於「重複內容」這件事,"隱約覺得會產生某些問題"。我的意思是根據經驗,感覺上有些重複內容的頁面,在搜尋結果不會顯示出來。

但終究這只是我的經驗,不具說服力,還是看看官方說法為何比較準確。

這篇「Google對於重複內容的建議」是少數關於 "重複內容"這個主題,有引用官方文件、影音談話內容,且日期較近(2017/3月版本)的文章。

讀者若有時間請詳讀這篇文章,以下摘錄跟本篇論述有關的部分:

  1. Google不會懲罰重複內容
  2. Google會自動過濾掉重複的內容,盡量提供單一內容給使用者
  3. Google確實會對這些重複內容做一些事情,那就是降低它的權威性
  4. 如果你有很多個網站都在發表相同的內容,不管是產品或文章,這對你的排名絕對不會是好事情
  5. Google會希望給予那些有獨特性、相關性、權威性、有價值性,或是一直不斷更新內容的頁面更多的獎勵

以上摘要主要是讓讀者對 Google 如何處理 "重複內容"有概念,而本篇想要特別拉出來的是第 2 點:「Google會自動過濾掉重複的內容,盡量提供單一內容給使用者」。

意思是說搜尋結果有 2 筆以上的相同文章內容時,Google 可能只會挑選權威性最高的那個頁面來顯示,其他的所有重複頁面則都不顯示

這也說明了我的疑慮的確存在,當一篇食記同時發表在「OOO」、「XOX」、「OXO」..等處,那麼搜尋某些特定關鍵字時,由於文章內容重複,「主站 + 三個分身」共 4 個頁面,可能就只有權威性最高的那個頁面能顯示而已。

至於何者權威性最高,要搜尋了才知道,但可以確定的是,主站註定有某些關鍵字會輸給分站,也就是搜尋結果會被過濾掉,從而喪失了主站流量

我想,這就是我的客戶加入「OOO」後所遇到的情形,搜尋結果有大量的關鍵字權威性輸給OOO,導致 SEO 流量大減。

同時OOO全文看完後,相信很少有人還會特地點回主站,因此流量真的補不回來。



四、重複內容的搜尋結果


同時我也做了一些搜尋實驗,隨機抽樣一些部落格文章,來看重複內容的影響程度。

先聲明並不認識抽樣網站站長,用詞若有不當請被提到的站長包涵。

1. 權威度高的網站

知名大站的搜尋結果就不列了,因為權重太高,就算有重複內容,搜尋結果大多還是排名在「OOO」等網站之前。


2. 權威度中等的網站


一開始先搜尋完整文章標題,或是標題中的字串,大部分都是「痞客邦」在前,XOX在後,代表該網站有一定的權威度。

再來改搜尋「文章中出現的字串」,模擬使用者各種可能的搜尋方式,例如 "YQBOBA 主打粉圓專賣",結果是這樣子:

duplicated-content-seo-result-skill-1.jpg-聊聊部落格若加入文章聚合平台,重複內容對網站 SEO 會有什麼影響

搜尋結果XOX排第 1,主站文章則找不到了

這算是「搜尋結果有多個重複內容網站時,只會顯示權重最高那一筆資料」的範例。雖然這是比較少見的搜尋字串測試方式,不過也代表了網站有重複文章時,一些屬於長尾關鍵字的流量,會被這一類的權重較高的平台吃掉


3. 權威度不夠的網站


這個案例比較特別,用完整文章標題搜尋,只出現OOO網頁;用部分文章標題關鍵字搜尋,依然只看到OOO網頁:

duplicated-content-seo-result-skill-2.jpg-聊聊部落格若加入文章聚合平台,重複內容對網站 SEO 會有什麼影響

怕這個網站尚未提交網站 sitemap,特地使用 site:http://youping912006.pixnet.net 搜尋,確認不但有搜尋結果,也有看到這篇文章被搜尋引擎收錄。

那麼以上現象大致可以歸納為,這個網站建立的時間還不夠長,權威度不夠,導致搜尋結果全部被OOO吃掉了,這是非常可怕的事情!



五、如何處理他處網站的重複內容


根據以上的 Google 官方說明、實際案例、以及我的搜尋實驗,那麼所有產生複製內容的平台,例如本文提到的平台,或自行複製貼上到 PTT、論壇這樣的狀況,只要我們的網站權威度不夠,SEO 流量就可能會被吃掉

那麼當初為了獲得高權重外部連結所做的付出,看來是得不償失,除非有辦法確定能將外部連結的流量導回我們網站──這個辦法就是不要全文轉貼,才能讓訪客連過來看原文,將流量導回主站


1. 推薦方式

前面「二、OOO案例的結局」我對客戶的建議,也是我對 "如何處理他處網站重複內容"的建議。

這個作法的原理類似部落格搬家後的狀況,兩處網站會出現重複內容,因此必須按照「痞客邦搬家到 Blogger 後,SEO 問題要如何解決?」→「四、痞客邦的處置」的方式來進行。

總之,他處網站的重複內容,只留幾行文字並連回主站是比較沒問題的 SEO 操作方式。

如果能像「OOO」這樣,只留簡介頁面、並可連回主站,我想這會是 100 分的作法了。


2. XXX

以XXX成立的目的,要官方接受重複內容只留幾行文字,會比較困難。那麼我覺得想加入這類內容聚合平台的站長,可能需要進行評估:

  • 如果本身網站權威度非常高,將來就算平台茁壯了,SEO 也不會輕易被吃掉,這個族群是適合加入的。
  • 如果網站權威度中等:
    • SEO 流量將來勢必會被聚合平台吃掉一部份,那麼加入可能是場賭注。
    • 你得先加入才能進行測試,究竟從聚合平台得到的好處,能否彌補失去的 SEO 流量。
    • 如何測試、測試結果能否精準評估,這些都是謎,同樣是賭注。
  • 如果網站權威度不夠,那麼就不要想從聚合平台獲得外連的 SEO 加分這件事,因為你的流量已經被吃光光了。


3. 關於部落客龍頭

其實回過頭想,背後老闆是XO的XXX,設定的目標不會小鼻子小眼睛,一定是準備取代痞客邦、劍指龍頭。這一天若真的到來,代表XXX網站的 SEO 權重將比所有網站都強,那麼一開始不怕 SEO 受影響的頂尖部落客們,屆時真的也不會受影響嗎?

以痞客邦的「PIXstyleMe」為例,部落格平台帶頭做複製文章的行為,把自己當農場經營,很明顯影響旗下部落格的 SEO。因此當初多數只要是知情的部落客,都會在後台取消勾選「同意複製文章到 PIXstyleMe」類似這樣的選項。

題外話,如果會怕「PIXstyleMe」影響 SEO 的話,那麼按照同樣的邏輯,就算你是部落客龍頭,長期來看應該也是會害怕加入XXX吧?


4. 折衷方法

相信大部分部落格站長,寫文章的出發點是出於分享,不過有一部份能接案的網站,是需要文章聚合平台的,因為需要獲得曝光度、能被案主找到。

那麼針對這類性質的站長,這是我想到的折衷方法:

  • 加入聚合平台,但不全文複製(可能不是所有平台都接受這個作法)
  • 加入聚合平台,同意全文複製,但只提供部分文章,這樣子最多只有那些文章的 SEO 受影響
  • 例如假設你的網站有 1000 ~ 2000 篇文章,但只提供數十篇到一百篇這樣的數量,讓 SEO 的影響在 1/10 ~ 1/20 或以下
  • 意思就是說,看站長願意犧牲多少的 SEO,來換取廠商面前的曝光率
  • 甚至你還可以只提供懶人包文章給這類平台,因為懶人包裡滿滿都是你的文章連結,這個效用應該不用 WFU 多解釋了~~



六、安全無風險的作法


XXX是由 SEO 專家所創立,出發點在於平台茁壯以後,可以讓加入的部落格獲得優質外連(link juice)。平台建立的目的也可以說是,將原本多數由痞客邦(提供網域權威度)庇蔭的網站,搬家後改為由XXX來庇蔭。

其另一個優勢為,提供平台首頁的功能,讓潛在合作對象可以接洽想接案的網站。這就是前面提到的,站長需要考慮是否犧牲 SEO 流量來換取合作接案的機會。

不過這件事與主題無關,如何評估就留給站長們去思考。而本篇的論述推演下來,"目前"只有權威度高的網站加入這個平台,是比較不影響 SEO 的。那麼權威度中下的網站,有沒有安全無風險的替代作法呢?


1. 其他部落格平台

其實能提供網域權威度的平台,還有非常多,所有的大型部落格平台都算是,例如痞客邦(pixnet.net)、Blogger(blogspot.com)。

這也就是說,合法製作優質外連的平台、網域非常多,這方面就看個人功力了。

實際的操作方式以 Blogger 為例:

  • 在 Blogger 買網址架站(作為主站)
  • 把文章複製到痞客邦(可用 Blogger API + Pixnet API 處理)
  • 用處理搬家的方式,在痞客邦只留文章前幾行,製作搬家通知畫面連回主站
  • 新文章要自動同步到痞客邦,一樣可操作 Blogger API、Pixnet API 來做到

這樣就能獲得比XXX更好的效果(除非認為XXX網域權威度能贏過痞客邦、Blogger),而且完全無風險,不需負擔任何主機、流量等其他費用。另外,以 Blogger 的自由度,任何想得到、其他網站看得到的功能都有辦法寫得出來。

事實上 WFU BLOG 幾年前就用這個方式在痞客邦實驗過了,的確能獲得一些來自痞客邦的流量,也有一些 Adsense 的點擊。

當然,你也可以主站放痞客邦,分站放 Blogger,就能獲得 blogspot.com 的 link juice。不過我相信沒人會這麼做,因為痞客邦自由度不夠,不能想幹嘛就幹嘛。


2. 不建議過早優化 SEO

雖然安全無風險的作法已經提供給讀者,但不代表 WFU 建議你做這件事,因為我一向不建議讀者太在意 SEO,經營網站有太多遠比 SEO 更重要的事情要做

有興趣可參考「部落格網站在那個階段,需要開始加強 SEO?」,經營部落格跟創業很類似,能否闖出名號沒有人能知道,過早進行優化是一種資源與時間的浪費。

專注在網站內容,等到名聲建立起來後,屆時才是真正需要開始優化網站的時刻,包含 SEO。在那之前,關於 SEO,Blogger 只要做到這幾件事就好」。


2017.9.6 補充:
  • 簡單補充一下,本站是部落格,所寫的每篇 SEO 文章,都是針對部落格平台的心得。因為本篇文章曝光率比其他文章高一些,所以會有 "非部落格"平台的站長看到。但 "非部落格"與 "部落格"的 SEO 作法先天上差很多,因此只建議 "部落格"平台的站長閱讀本站的 SEO 文章。
  • 其他補充,整理到這篇「關於部落格重複內容對 SEO 的影響﹍一點補充


更多 SEO 相關文章:

建立不被中國大陸封鎖的 Blogger 網站實作

$
0
0
最近進行「CC0 免費圖庫搜尋引擎」的簡體版網站,同樣也是放在 Blogger 平台。為了不被中國大陸屏蔽,需要使用一些技術。

之前寫了一系列有關「Blogger 不被大陸封鎖」的文章,這次實作就用得上了。

不過想要仿效的站長必須先提醒:

  • 請先具備一定的 HTML/CSS/JS 知識
  • 不能使用 Picasa 圖床
  • 不能使用官方留言框
  • 很多現成外掛可能無法使用

(圖片出處: pixabay.com)


一、基本概念


在開始實作之前,需要先瞭解一些必要的概念,可先參考:


同時本篇的實作,也參考中國網友 +Lawyer Fu 的經驗「谷歌blogger平台建立国内可访问博客攻略」。


需要處理的重點項目有這些:

  • 獨立網域
  • 使用中國圖床
  • 刪除官方外連
  • 外掛避免使用外連



二、使用獨立網域


1. 建立獨立網站

首先很重要的一點,不建議站長使用原本的 Blogger 主站,來進行本篇的作業

比較建議的是,另外建立一個 Blogger 分站,來讓中國訪客看這個網站

最主要的原因是,圖床沒有一個完美的解決方案,所有的免費圖床,包括 Blogger 官方使用的 Picasa 圖床,中國都看不到。

所以最好是主站的圖片使用 Picasa 圖床,原因請見「Blogger 使用 Flickr 當圖床,可能違規被停權」→「六、適合部落格的圖床」。

而不被中國封鎖的分站,另外使用別的圖床。


2. 買網域

避免被封鎖的第一要件,是購買獨立網域。如果不知道要跟哪個網域代理商買,可參考「Godaddy網址購買及續約__省錢攻略」。

接著防止被封鎖的分站,必須放在子網域之下,設定的教學請見這篇「Blogger 自訂網址﹍設定子網域的技巧」。



三、使用中國圖床 + 外連


獨立架設的分站,圖片連結想要不被封鎖,最安全的方法就是使用中國圖床。

根據這篇中國網友「blogger国内访问心得」的使用經驗,他推薦兩個圖床及外連空間:


除了圖片,部落格會使用到的 JS/CSS 外連,也放在這些中國可連的的空間才不會被擋。



四、刪除官方外連


這個部分也是重點,官方預設的程式碼,有一些 JS/CSS 外連放在 Google 伺服器(blogger.com),會被長城擋下來。

但是這些程式碼偏偏在範本中是看不到的,因此必須用一些技巧,把部分程式碼刪除掉。

1. 註解官方外連

註解掉官方 js/css 外連的方法可參考「谷歌blogger平台建立国内可访问博客攻略」→「4、修改blogger模板」→「(1)提取模板css放国内调用,并禁用blogger自动加载的css」。

或者你也可以在範本中執行一段 js,把這些外連 blogger.com的 js/css 刪除掉。首先請參考「引用 jQuery 連結及版本的注意事項」→「四、CDN 及大陸市場」→ 使用不會被擋的 jQuery 連結。

然後在範本中 </body>之前,插入以下程式碼即可:

$(function() {
$("link, script").each(function() {
var $this = $(this),
href = $this.attr("href"),
src = $this.attr("src");
if (href && href.indexOf("blogger.com") > 0) {
$this.remove();
}
if (src && (src.indexOf("blogger.com") > 0 || src.indexOf("google.com") > 0 )) {
$this.remove();
}
});
});


2. 官方留言框

官方留言板因為使用了 blogger.com 網域的連結,會被封鎖,因此建議直接在後台關閉留言功能。

取而代之,可參考「blogger国内访问心得」→「评论系统 」,作者推建了 "多說"、"搜狐"等留言板服務。

只不過我看他的網站,留言板裝的反而是「LiveRe」這個外掛。


3. 官方工具

至於 Blogger 提供的小工具,我無法打包票每個都能用,原則大概是這樣:

  • 提取 Feed 資料的外掛應該沒問題,例如「標籤」、「熱門文章」。
  • 不需連外部程式碼的工具應該也沒問題
  • 需要連外部程式碼的工具我猜會被擋,例如「聯絡表單」(必須傳送 http 請求到 google 伺服器)

以上理論由於我沒有測試環境,如有讀者可以測試再麻煩回報。



五、外掛避免使用外連


本站寫了很多 Blogger 小工具,若要不被封鎖的話,請注意以下原則:

  • 不需要外連的小工具不會有問題,例如「最新文章」、「最新回應
  • 需要外連的小工具,請自行放到不會被封鎖的空間,例如「Blogger 文章列表極速版
  • 非本站的外掛,同樣注意以上原則,必須把外連檔案改放別的空間



六、其他注意事項


1. 挑選範本

無論是用官方範本、或網路上的範本來改,都需要一定的 HTML/CSS/JS 能力,否則無法架出不被封鎖的 Blogger 網站。

這篇「Blogger在国内的访问策略」提供了不少特別為中國 Blogger 網站而調整、優化過的範本,可以試著從這些範本來進行修改。


2. 檢測是否被封鎖

最後,為了確保努力沒有白費,部落格的網址、或所有使用外連的網址,記得使用這篇「不被大陸封鎖的「免費空間/圖床」測試心得」所提供的三個測試工具,線上測試連結能否在中國正常拜訪。


中國大陸封鎖網站相關主題:

Bootstrap 表單驗證外掛 Validator,美觀輕鬆好上手

$
0
0

bootstrap-validator-Bootstrap 表單驗證外掛 Validator,美觀輕鬆好上手
網頁表單在送出前,所有欄位都需進行防呆或驗證資料格式。如果每次製作不同的表單,都要重新寫一次 JS 來處理這些事,還挺麻煩的。

大致找了一下,「驗證表單」功能的外掛還不少,而且功能也很強。不過各個官網逛過一圈後,幾乎都被我刷掉了,要嘛功能太多、說明書太複雜,要嘛官網無法立即看到 DEMO 效果,學習起來會很花時間。

最後比較中意的這個還滿特別的,是基於 Bootstrap 所開發的外掛 Validator,以下會說明雀屏中選的原因。



一、Bootstrap Validator


1. 簡介


雖然這不是最強大的「表單驗證」外掛,但我認為它的 CP 值比較高,因為:

1. 官網的設計有從使用者角度出發,一進入網頁就看到 DEMO 效果,重要選單也做成浮動功能,排版清楚,適合快速上手及學習。

2. API 功能沒有非常多,但重要、常見的功能都有,這樣說明書找起來也不會太花時間。

3. 雖然需要先安裝「Bootstrap」,不過 Bootstrap 已經是非常知名、多數網頁都會使用的框架,而且做出來的表單也比較美觀,因此我認為比其他外掛值得採用。

4. 這個外掛有 CDN 支援,因此不用另外尋找網頁空間

5. 其他外掛需要用 js 設定複雜的參數,這個外掛幾乎不需用 js 設定,不必學習 js 語法,多數常用的設定用 HTML 就可搞定,相對之下單純許多。


2. 功能

bootstrap-validator-1-Bootstrap 表單驗證外掛 Validator,美觀輕鬆好上手

上圖是這個外掛的表單驗證效果,大致有這些優點:

  • 紅圓圈處的打叉圖案,是 Bootstrap 預設的圖示,驗證失敗時可顯示此效果。
  • 這個外掛的神奇之處,在於某些驗證失敗的字串,可自動顯示對應語系的文字。例如圖中的 "請填寫這個欄位",這是未設定過就顯示的預設中文字串。
  • 每個欄位可自行設定各種驗證失敗的字串。
  • 「輸入密碼」的下一欄,通常會設計「確認密碼」的欄位,這個外掛預設就有比對密碼字串的功能。
  • 所有必要欄位尚未填寫、勾選之前,圖中紅框處的「提交按鈕」(Submit)是不能按的,這是少見的防呆好設計



二、基本安裝方式


1. CDN 連結


所有的外掛版本、連結,請參照以上 CDN 網址。

網頁記得先引用 jQuery 以及 Bootstrap 的 CSS 連結。


2. 基本安裝

以下是安裝範例:

<!--引用 jQuery + Bootstrap-->
<script src='//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js'></script>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"></link>

<!--表單內容-->
<form id="myForm" role="form" data-toggle="validator">
...
</form>

<!--引用 Validator-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/1000hz-bootstrap-validator/0.11.9/validator.min.js"></script>

<!--執行 Validator-->
<script>
$("#myForm").validator();
</script>

官網表示有兩種方式可啟動驗證表單程式:

  • 為 form 標籤加上 data-toggle="validator"屬性即可
  • 或者是為 form 設定 ID(例如 myForm),接者用 js 執行 $("#myForm").validator();



三、使用說明


以下說明製作表單 FORM 標籤時的注意事項,多數設定只要寫好 HTML 就能看到效果。

1. 表單 HTML

需要驗證的 Input 輸入欄位,支援以下屬性:

  • type="email"
  • type="url"
  • type="number" (可另外設定位數)
  • text, search, tel, url, email 這幾種形式,可設定 Regex 正規表示式
  • required


2. 顯示錯誤訊息

當驗證失敗時,需要有一個區塊顯示錯誤訊息。此區塊的製作要點如下:

  • 必須放在 .form-group的容器之間,請參考「Bootstrap」的說明書內容,瞭解什麼是 form-group。
  • 建議放在 Input 標籤的後一行
  • 要放在 Input 前一行當然也可以,但錯誤訊息出現在前面怪怪的

此區塊的完整 HTML 碼如下:

<div class="help-block with-errors"></div>


3. 其他常見功能

A. 確認密碼:

原本輸入密碼的 Input 欄位,請設定 ID(例如 inputPW),需要使用者重複輸入確認密碼的 Input 欄位,請設定屬性:

data-match="#inputPW"

同時這個 Input 欄位可設定顯示錯誤訊息:

data-match-error="糟了!密碼並未吻合,請重新輸入~"

B. 限制字數:

例如 Input 密碼欄位希望至少輸入 6 個字元的話,可以設定屬性:

data-minlength="6"

C. 使用正規表示式:

例如希望密碼只能使用英(或)數、最少 6 位數,可這樣設定:

pattern="^[a-zA-Z0-9]{6,}$"

那麼密碼不符合規定時就會顯示錯誤訊息。而想設定此時的錯誤訊息,方式如下:

data-pattern-error="請輸入英、數組合的密碼至少 6 個位元"

D. 預設錯誤訊息:

想要改寫系統預設的錯誤訊息,設定方式如下:

data-error="請填寫此欄位"


四、完整範例


以下是一個簡單的完整範例,所有 HTML 部分的語法、參數,上面都有說明:

<!--引用 jQuery + Bootstrap-->
<script src='//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js'></script>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"></link>

<!--表單內容-->
<form id="register_form" role="form" data-toggle="validator">
<div class="form-group">
<input id="inputName" name="Name" type="text" class="form-control" placeholder="姓名" required="required">
<div class="help-block with-errors"></div>
</div>
<div class="form-group">
<input id="inputEmail" name="Email" class="form-control" type="email" placeholder="電子郵件地址" data-error="郵件格式錯誤" required="required">
<div class="help-block with-errors"></div>
</div>
<div class="form-group">
<input id="inputPassword" name="Password" class="form-control" type="password" placeholder="設定密碼" pattern="^(?=.*\d)(?=.*[a-zA-Z]).{6,}$" data-error="請輸入含有英文字母及數字的密碼,至少六個字元。" required="required">
<div class="help-block with-errors"></div>
</div>
<div class="form-group">
<input id="inputConfirmPassword" name="ConfirmPassword" class="form-control" type="password" placeholder="確認密碼" data-match="#inputPassword" data-error="密碼未吻合!" required="required">
<div class="help-block with-errors"></div>
</div>
<input type="submit" value="註冊" class="btn btn-danger btn-block" />
</form>

<!--引用 Validator-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/1000hz-bootstrap-validator/0.11.9/validator.min.js"></script>

<!--執行 Validator-->
<script>
$('#register_form').validator().on('submit', function(e) {
if (e.isDefaultPrevented()) { // 未驗證通過 則不處理
return;
} else { // 通过后,送出表单
alert("已送出表單");
}
e.preventDefault(); // 防止原始 form 提交表单
});
</script>


執行效果如同以下的表單,可自行輸入、測試各種錯誤狀態。所有欄位都填寫正確後,才能送出表單:




更多 Bootstrap 相關文章:


更多 jQuery 相關文章:

自訂 Input File 檔案上傳按鈕 CSS 最佳解法

$
0
0
之前製作「本站開放留言上傳圖片功能」時,才發現 Input 上傳檔案按鈕還真不是普通地難搞。查了一下發現 Google 這些字串 "input type file css not working"時會有不少案例,很是離奇。

好在最後還是找到完美的解決方法,以下大致說明這是什麼狀況,並提供幾個實作範例。

(圖片出處: pixabay.com)


一、為何 Input Type="file"不給修改


1. CSS 沒辦法改

一開始是發現滑鼠移到上傳按鈕時,依然是游標圖示,且無法改為手掌點擊的圖示,就像下面這樣:





最簡單的 CSS 參數 cursor: pointer是沒有作用的,查了一下看到這個討論串「Cursor pointer on a file input, possible?」,說可能是因為安全性的因素,各種瀏覽器都不會有作用。

不只如此,看到另一個討論串「Styling an input type=“file” button」,說要修改 input type="file"的 CSS 樣式是異常的困難!而且連部分 js 都被禁止!!


2. 變通方法很麻煩

這下真的很棘手,我還不想為了這個小小的功能另外裝外掛或執行 js。

馬上想得到的思路大致是把 input 上傳按鈕變透明,放一張圖片在 input 按鈕下面,利用 position 定位來調整大小、位置等等,總可以將圖片喬到一個滿意的尺寸,可以剛好跟按鈕重疊。

調整過程其實滿繁複的:

  • 如果嫌麻煩把 input 上傳按鈕隱藏起來,例如 display: none,結果又會導致上傳功能失效。
  • 如果沒把圖片尺寸調得跟透明 input 按鈕完全一致,有時雖然視覺上看起來版面沒問題
  • 事實上不小心點到空白處仍可能點到透明 input 按鈕,就會彈出上傳視窗,讓使用者一頭霧水

變通方法的範例程式碼就不列出來了,各個相關討論串、文章幾乎都找得到,例如這個「自訂 input file 檔案上傳按鈕」。



二、Label 的妙用


1. 最佳解法 1

前面提到的討論串「Styling an input type=“file” button」,裡面第二個解答,沒有被評為最佳解答,但獲得最多的推薦,其實就是本篇的最佳解。

他的原理是:

  • Label 標籤有一個奇特的特性,只要他包在任何 Input 標籤外面,點擊 Label 就等於點擊 Input
  • 所以當 Label 標籤很寬、很大時,點擊 Input 就很方便
  • 利用這個特性,將 Label 標籤包在 input 上傳按鈕外面,再將 input 上傳按鈕隱藏起來,點擊依然有效
  • 接著想要使用圖片代替 Input 上傳按鈕的話,就可在 Label 裡面放圖片
  • 原本對 input 上傳按鈕無法設定的任何 CSS,此時設定在 Label 上即可。


2. 最佳解法 2

但作者有說到兩個缺點:

  • IE8 不接受 input 上傳按鈕被隱藏起來
  • 如果使用「表單驗證」這類外掛時,隱藏的表單不會被驗證。

如果是以上這些狀況,作者提供的解法也很簡單,不要隱藏 input 上傳按鈕,把尺寸設定為 1px 大小,位置用 position 挪到看不到的地方就好。

他提供了這兩個範例程式碼:



3. 其他應用

瞭解 Label 的原理後,像 input 核取方塊(checkbox)、單選按鈕(radio),都可以用同樣的方式,用 Label 把核取方塊、單選按鈕,以及描述文字通通包起來,這樣就很方便訪客點擊了,就像這樣:






三、input 上傳按鈕實作範例 1




上面這個上傳按鈕,就是本站留言板上方會出現的按鈕樣式,結合了「Bootstrap」、「Font Awesome 圖示」,範例程式碼如下:

<label class="btn btn-info">
<input id="upload_img" style="display:none;" type="file">
<i class="fa fa-photo"></i> 上傳圖片
</label>

  • 首先將 input 上傳按鈕包在 label 之中,並將 input 按鈕隱藏
  • label 加了這幾個 class 可以自動產生漂亮美觀的按鈕
  • 文字 "上傳圖片"左邊的 HTML 碼是 Font Awesome 對應的圖示

這個按鈕做起來輕鬆又愉快,不用搞複雜的 CSS 技巧,也不需要製作圖片。



四、input 上傳按鈕實作範例 2


這是做另一個案子用到的上傳圖片按鈕範例,同樣非常實用,比較常見於用在上傳會員頭像的區塊。



範例程式碼如下:

<label class="upload_cover">
<input id="upload_input" type="file">
<span class="upload_icon">➕</span>
<i class="delAvatar fa fa-times-circle-o" title="刪除"></i>
</label>
<style>
.upload_cover {
position: relative;
width: 100px;
height: 100px;
text-align: center;
cursor: pointer;
background: #efefef;
border: 1px solid #595656;
}
#upload_input {
display: none;
}
.upload_icon {
font-weight: bold;
font-size: 180%;
position: absolute;
left: 0;
width: 100%;
top: 20%;
}
.delAvatar {
position: absolute;
right: 2px;
top: 2px;
}
</style>


  • 首先將 input 上傳按鈕包在 label 之中,並將 input 按鈕隱藏
  • label 設定整個正方形頭像區塊的 CSS,例如前面提到的 cursor pointer,以及外框、底色等。
  • 中間的 "十字"圖示是利用「Unicode 特殊符號字元」,用來提示使用者按了可以上傳圖片
  • 右上角的打叉圖示,使用 Font Awesome,用來提示使用者按了可以取消這張圖片,重新上傳。

這個功能雖然稍微比較複雜,需要利用 position 設定各種定位,不過對於理解 input 包在 label 之中的用法幫助很大,是很實用的技巧。


更多 CSS 相關技巧:

自適應 RWD 多層下拉選單實作﹍Bootstrap 外掛 SmartMenus

$
0
0
multi-dropdown-nav-menu-bootstrap-smartmenus.jpg-自適應 RWD 多層下拉選單實作﹍Bootstrap SmartMenus 外掛所有網站架設要處理的區塊中,導覽列的下拉選單是最麻煩的一部份,如果需要「多層下拉選單」的話,難度就比較高,可參考「Blogger 多層下拉選單實作」。

而行動裝置使用率大幅攀升後,導覽列非常需要有自適應 RWD 效果,手機上才能同步呈現下拉選單這麼複雜的功能。因此製作 RWD 導覽列含多層下拉選單,我認為是架設網站的過程,難度最高的一部份。

所以在這篇「如何從 Blogger 範本網站挑到理想的版型,且不會出錯」,我強烈建議挑選範本時,導覽列的功能要放最高權重。

而如果你熟悉 HTML/CSS 的話,有機會可以自製 RWD 多層下拉選單,不用跟別人撞衫,而且並不困難,因為國外已經開發了非常完整的免費外掛,以下就來看如何實作。





一、SmartMenus 介紹


1. 官網


上面是官網連結,這個免費的導覽列外掛 SmartMenus 歷史非常悠久,隨著網路技術的進步也不斷地演進,一路發展到現在的版本,最終是使用 jQuery、Bootstrap 等框架來開發各種導覽列效果。


2. 各種 DEMO 效果


上面網址進入「Launch gallery »」後,包含各種展示效果,幾乎常見的導覽列樣式都可以找到。


SmartMenus-animated-submenu-demo.jpg-自適應 RWD 多層下拉選單實作﹍Bootstrap SmartMenus 外掛

上圖是比較特別的動畫下拉選單,會有彈出式的特效,可進入官網看效果。


SmartMenus-mega-submenu-demo.jpg-自適應 RWD 多層下拉選單實作﹍Bootstrap SmartMenus 外掛

這個 Mega 下拉選單真是嚇壞我了!通常只會在要價不斐的付費範本看到這樣的效果,沒想到 SmartMenus 不但提供了這類的 Mega 下拉選單,而且還提供了多種版面效果!!


3. CDN


最棒的一點是,SmartMenus 這個外掛有 CDN 支援,代表讀者不用費心找網頁空間來擺放檔案,直接外連 CDN 就行了,非常方便、速度又快。



二、準備動作


開始製作「自適應多層下拉選單導覽列」之前,必須先瞭解這個外掛是基於 jQuery、Bootstrap 而開發,因此需要先載入這兩個框架。

連同框架,所有要引用的外部 CDN 連結如下:

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"></link>
<link href="https://cdnjs.cloudflare.com/ajax/libs/jquery.smartmenus/1.1.0/addons/bootstrap/jquery.smartmenus.bootstrap.min.css" rel="stylesheet"></link>
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery.smartmenus/1.1.0/jquery.smartmenus.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery.smartmenus/1.1.0/addons/bootstrap/jquery.smartmenus.bootstrap.min.js'></script>

以上所有程式碼可放在導覽列的 HTML 碼之前,或是範本中 </head>之前。



三、導覽列程式碼範例


以下為導覽列的 HTML 碼範例,可對照範例網頁效果:

<!--導覽列-->
<div class="navbar navbar-default" role="navigation">

<!--網站標題-->
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">WFU BLOG(網站標題)</a>
</div>
<!--網站標題-->

<!--下拉選單-->
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="#">導覽列連結</a>
</li>
<li><a href="#">下拉選單 1 <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">選項 1</a>
</li>
<li><a href="#">選項 2</a>
</li>
<li><a href="#">第 2 層選單 <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">選項 1</a>
</li>
<li><a href="#">第 3 層選單 <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">選項 1</a>
</li>
<li><a href="#">選項 2</a>
</li>
</ul>
</li>

</ul>
</li>
</ul>
</li>
<li><a href="#">下拉選單 2 <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">選項 1</a>
</li>
<li><a href="#">選項 2</a>
</li>
<li><a href="#">第 2 層選單 <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">選項 1</a>
</li>
<li><a href="#">選項 2</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<!--下拉選單-->

</div>
<!--導覽列-->

以上的程式碼的修改要點如下:

  • 兩處綠色字串可改為自訂字串,但請保持一致
  • 導覽列所有項目的文字,可改為自訂字串
  • 基本上這個導覽列是標準的 Bootstrap 語法,如果熟悉 Bootstrap 的話改起來會很順手。
  • 可參考「Bootstrap 3 & 4 速查表(cheat sheet)」,瞭解 Bootstrap 的操作。
  • 例如藍字 <span class="caret"></span> 這語法代表 Bootstrap 內建的三角箭頭圖示,可自行更換
  • 可依照 ul li 的架構模式,自行新增、刪除選單的項目

可前往範例網頁,看上面這個導覽列的 RWD 效果:




四、補充說明


這個外掛的功能很強大,有太多可以自訂的功能,可參考「官方文件」的說明。

不過啃說明書滿麻煩的,看起來十分複雜。比較簡單的方法是,直接進入官網的 Demo 頁面,每個展示效果都可直接看到 HTML/CSS/JS 碼,把這些程式碼複製過來,再細部修改調整,會是比較快速的作法。


更多 RWD 相關技巧:


更多 Bootstrap 相關技巧:

商業公司網站需要了解的 SEO 概念﹍短期策略

$
0
0
前陣子寫了「重複內容對網站 SEO 會有什麼影響」後,收到 FB 訊息,表示某旅遊公司要學習 SEO 操作方法,想邀請我前往上課。而這陣子接的幾個商業架站需求,也特別註明需要加強 SEO。

我想,SEO 對多數網站而言隔著一層神祕面紗,他們對 SEO 不是很了解,不過抱著美麗的憧憬,認為摘下面紗後就能窺探仙境,網站得以一飛沖天。

而且認為摘下面紗的時間愈短愈好,尤其是商業網站,因為有營運、數字的壓力。SEO 能多快見效,各種覺得 CP 值高的方法都會去嘗試。

那麼就來寫專門給商業營利公司看的 SEO 文章,也可看做是常見 FAQ。雖說是為解答商業網站而寫,實際上對任何網站都適合作為參考。

第一篇的主題跟短期、SEO 速成有關,第二篇則是長期經營的 SEO。

(圖片出處: pixabay.com)


一、SEO 有沒有可能立即或短期見效?


商業營運需要數字支撐,並想辦法把一切量化,那麼看待 SEO 自然也一樣,需要數字及 CP 值,希望能找到一個最低成本,讓網站立刻或最短期限內,能進入搜尋排名第一頁或前三頁。

假設這樣的方法存在,那麼比較可能的管道會是什麼呢?每個公司都想進入第一頁(擠進前 10 名),究竟要如何做到,又是誰能做到呢?

疑問有很多,也很難回答,不過先來看看其他行業。唱片或熱銷排行榜,除了實力、偶像等大家不意外的歌手,總是會有一些名不見經傳、或不可置信的名字出現在榜單上。其實這也算公開的秘密,雖然不是絕對,不過買榜、靠關係,是操作上最快的手法

SEO 也一樣,商業行為就商業手法解決,不管要 "買榜"、或 "靠關係",就交給仲介的 SEO 公司來操作。



二、SEO 公司收費會不會很貴?


如果賣的東西很有賺頭、(關鍵字)競爭很激烈,自然無法期待費用有多便宜。如果還不是成熟的產業,那麼關鍵字的費用在產業發展初期可以嚐到一些甜頭;然而在市場完全競爭之後,只能說該花的絕對跑不掉。

價格資訊其實 Google 大神都有,舉例這個網頁作為參考:


價格主要看想要操作的關鍵字有幾組,而且 "熱門關鍵字"、或是 "保證排名",這些狀況都要另外報價,所以一個月從幾千塊、數萬、到數十萬都有可能。

還有一個關鍵點是,一但停止付費,SEO 也會急遽下降

也可以這麼說,SEO 公司的費用,不是小公司玩得起的,除非原本的目的就是:

  • 只要短期見效
  • 短期活動
  • 產品週期很短



三、無法長期負擔 SEO 公司費用怎麼辦?


除非一開始就決定撈一票走人,我相信生意是要做長久的,多數公司還是會以長期經營作為目標。

但 SEO 公司費用太昂貴,當企業還不夠大,無法長期負擔這支出怎麼辦?

也許投放廣告可以比較節省預算,例如 Adwords、Facebook、部落客、網紅...等等,不過這一樣是長期費用。

那麼也許你會想,乾脆自己來操作 SEO,或是學習 SEO,不就可以省下這筆錢了?



四、有什麼推薦的資源可學習操作 SEO?


同樣假設網路搜尋得到學習 SEO 操作的絕佳資源,更甚者,能找到專門教導 SEO 的付費課程,而且更棒的是,你全學會了!

如果你是一間婚攝公司,是否這樣就能保證進入搜尋排名第一頁?

可以想像一下,其他幾百間婚攝相關的公司、工作室,也都想進入第一頁。而網路能搜尋到、市面能看得到的 SEO 資源,別人不會找不到。靠著大家都學得到的知識,究竟誰能進入第一頁呢?

就像看投顧老師解盤,上遍各種投資理財的課程,在股市是否就能賺大錢?如果吸收了每個人都能獲得的資訊就能賺錢,那麼誰負責賠錢呢?

這樣推論下來,如果上課是有效的,那麼沒有人的 SEO 會不好了。這原理跟被公開了的股票操作秘訣一樣,見光後很快就失效了。



五、有沒有一般人學不到的 SEO 技術呢?


當然有啦,記得有位 SEO 前輩曾說想找徒弟,只把畢生絕技傳給信任的人,所以有緣人切記要把握良機。

這也告訴我們,真正的關鍵技術一般人碰不到,SEO 公司怎麼可能讓獨門研發的技術外流,會拿出去開課的內容一定已經不是關鍵。

一個進出好幾億的股市操盤手,幹嘛開課賺個幾萬塊學費呢~

真的想學這些技術,可以跟 SEO 公司投履歷,運氣好應該有機會跟大師討教不傳之密。

只不過,有沒有需要為了想吃鮭魚,而出海學捕魚呢?



六、我上了某些 SEO 課真的有效呢!


1. 倖存者偏誤

首先建議看這篇「是否痞客邦、WordPress 的 SEO 比 Blogger 好,有這樣的事嗎?」,瞭解什麼是 "倖存者偏誤"這樣的概念。

先確認一下是否所有一起上課的同學都有效呢?還是你只是少數覺得有效的成員?

究竟有沒有效,需要用科學的方法來檢定,而不是用感覺來判定,否則你就是 "倖存者偏誤"的絕佳案例。


2. 排除其他影響 SEO 的因素

會影響 SEO 排名的因素太多、太多了,有可能你的文章內容變好,所以排名上升了。

也有可能剛好有力人士幫你轉貼分享,瀏覽量暴增,所以排名大躍進。

因此,要確定上課學的 SEO 招數是有用的,必須將其他所有變數固定,才能測試出單一的因素是否有效。

不過基本上這是很困難的事,也很少有人知道如何做,科學實驗沒那麼簡單,也很花時間。所以「SEO 課程有沒有效」這件事,其實是非常難以判定的

就像很多人上台見證「seafood」的神蹟,絕症都好了、人際關係一級棒、考試都一百分,我只能說這類的見證,願意傾向將 "事件與 seafood 做連結",而選擇性忽略其他更為相關的因素對事件的影響


3. SEO 暴跌的案例

我認為要證明 SEO 技巧有效很困難,但相反的,要證明某些 SEO 技巧有害卻是比較容易。

在這篇「重複內容對網站 SEO 會有什麼影響」,我的客戶因為在不同平台產生了重複內容,導致 SEO 搜尋不到、流量暴跌,這個案例足以作為借鏡。當流量劇烈損失時,做了什麼不對的事,是比較容易找出來的。



七、小結


簡單做個總結,如果抱著太大期待來看這一篇,想知道 SEO 有沒有什麼短期操作手法,應該會感到非常失望。

是的,除非很有錢、很有關係,否則 SEO 沒有短期致效的推薦策略。

這篇的主要目的是為了帶出下一篇的「長期策略」,如果商業公司想長期經營,想必也不會是靠 SEO,一定是靠產品(及下一篇的主題)。

既然 SEO 只是加分,不是主要工具,那麼對 SEO 的態度改為長期經營,帶來的加乘效果將更為穩定、巨大,並且費用更划算,這會不會是小型企業更為有力的態度與想法呢?


更多 SEO 相關文章:

Asus Zenfone 觸控螢幕亂跳﹍處理心得全紀錄

$
0
0
兩年前幫長輩買了 Asus Zenfone 2 手機,主要用途就上網、拍照、Line 而已,除了用久存放相片空間會不夠,其他沒什麼問題。

所以今年初也買了一台規格比較高的 Zenfone 2 自用,沒想到悲劇是降臨在我身上,用沒幾個月就開始出現 "螢幕亂跳、到處亂點,完全不受控制的狀態",若是運氣不好,還可能自動點到撥號功能,Call 了不該 Call 的人──我就發生了幾次...

Google 搜尋了一下資料,才發現 Asus 這狀況根本災情慘重,並不算個案,以下就來紀錄這段期間我的奮戰過程。

(圖片出處: asus.com)


一、可能的處理方式


1. 亂跳的情形

如果不了解什麼是 "螢幕亂跳、自己亂點程式執行",可參考這段網路上的影片,不過我的情形比這嚴重多了:



2. 關閉皮套 + 觸控手勢

這篇「Zenfone2 螢幕自我維修感想」,首先提到的是將內建的「華碩皮套」、及「ZenMotion 觸控手勢」功能關閉。

這兩項的確跟觸控會有些關係,我一開始也是這麼做,看起來有點效,不過一陣子之後,螢幕又開始亂跳了,代表這兩個功能不是真正的影響原因。


3. 更換螢幕

上面那篇文章表示,也有可能是螢幕故障導致,說明了官方的維修方式,以及拍賣也可找到維修的賣家。

但,螢幕是否為真正影響 "觸控亂跳"的原因,在查明之前我不敢妄動,因此繼續查資料。


4. 刪除 APP

這篇「Zenfone 3 螢幕自己亂點」,有使用者提到 "某些app刪後改善很多",代表是 app 跟系統軟體不相容引起的現象。

但是要如何找出哪個 app 呢?這也是一件麻煩事,還是繼續找答案好了。


5. 進入安全模式、回覆出廠值

這是華碩官方討論區「[螢幕/觸控] 螢幕亂跳的朋友們看這裡」,建議使用者先進入安全模式測試

我覺得這方法滿有道理的,至少可以先排除是否為 "app 不相容"的問題。如果連安全模式都有問題,那就表示是硬體的問題,到時再來看要怎麼維修。

進入安全模式的步驟可參考官網「Android 裝置如何進入&離開安全模式?」的詳細說明,開機及關機狀態下的操作方式都不一樣。



二、是否直接送修?


雖然家人說手機有問題,直接拿去送修就好,不過我還是沒那麼放心:

  • 家附近就有「台灣大哥大」門市很方便,但如果他們處理不來,還是得送回華碩,那樣我得花更多時間,這段期間還沒有手機用。
  • 送華碩皇家俱樂部比較遠,如果修不好,換一台機子給我,難道那台機子就比較能讓我放心嗎?
  • 如果換的機子也是別人送修的,潛在問題不知還有多少?


我找到這篇使用者送修經驗「zenfone 2 觸控異常」,案主也是相同問題送修,異常狀況跟我差不多,結果:

  • 第一次修 工程師把整個機板換掉 後來不到2個月 觸控異常又發作
  • 第二次修 這次工程師把觸控螢幕換掉 服務人員只說螢幕異常..
  • 雖然說修真的很快 1小時搞定...但總覺每次修都只是換新的
  • 故障緣由為何?好像皇家也交待的不是很清楚
  • 每次修 資料都要被清空一次 真的很累了...實在沒什麼耐心再修一次

所以,除非真的沒辦法,目前我對 Zenfone 的信心不夠,無法知道後面衍伸的問題會不會更多。



三、我的處理狀況


1. 恢復出廠值

考慮之後,因為這台 Zenfone 2 前三個月都沒什麼問題,不曉得會不會是後來裝了什麼,才導致觸控異常,決定把手機恢復為出廠狀態,看看是否就能正常運作。

這一點的思路,跟「Nexus 7 提升速度及效能的方法﹍將 Android 版本降為 4.x」是類似的。


2. 找出有問題的 APP

最乾淨的狀態下當然沒什麼問題,那麼接下來把常用的 APP 一個個裝上去,結果用一陣子後,螢幕亂跳的情形就跑出來了。

看起來的確是 APP 跟系統相衝的關係,但要怎麼找出來有問題的 APP,這個測試過程真的麻煩又花時間。


3. 安全模式

又經過了一段長時間的交叉測試比對,總是在我覺得應該找到有問題的 APP 後,一陣子後又開始螢幕亂跳,代表另有原因在。

於是進入「安全模式」測試,也可以說運氣不錯,沒多久就發現螢幕亂跳,代表是硬體的問題,這下只有送修一途了。



四、皇家俱樂部檢測


雖然不是很願意,不過既然還在保固內,確定是硬體問題時只能交給原廠,於是上網預訂了維修時間。

到了現場後,在門口先輸入手機、維修代號等資訊,才能取得預約號碼。

很快就輪到我,偏偏在維修人員測試下,進入安全模式後,怎麼測試都不會出現螢幕亂跳的情形。

不過我把之前手機處理的狀況跟維修人員描述得很清楚,前一天先恢復出廠值後,進入安全模式發現出問題,而今天又把手機恢復出廠值,只是還無法出現異常狀況,跟對方表達手機螢幕會亂跳的時機其實很隨機,並不是做了特定動作才會出現。

因此當場測不出來的情況下,華碩會接著請工程師做整體的檢測,也就是進行「一小時快修」,在那裡等一小時可得到檢測結果。

皇家俱樂部布置地還不錯,有電視可看,也有提供 WIFI、雜誌等等,等一小時還不算無聊。

最後結果揭曉,工程師有檢查出是觸控螢幕的問題,直接換一個螢幕給我,操作起來總算沒問題了。

目前為止過了一、兩個禮拜都算正常,距離保固還有 4 個月,希望 4 個月內能看出華碩維修的品質如何。



五、結論


總結一下查閱的資料,遇到 Asus Zenfone 觸控功能出問題時,處理的 SOP 可以這麼做,比較節省時間:

  • 先進入安全模式,可排除是 APP 軟體不相容,導致觸控的問題。
  • 如果是 APP 的問題,而該 APP 又很重要 → 換手機吧,可早日解脫,因為 Asus 沒辦法解決軟體不相容的問題。
  • 如果能解決 APP 的問題,無論是系統或 APP,都不要再做任何更新,永遠保持這個狀態、版本,才能避免變數產生
  • 能夠不送修,可自己解決問題的話,就盡量不要送修,以免送修後換回來的機子,有更多的變數。
  • 在保固截止前,自己真的無法解決問題,就趕快送修吧,因為沒有更好的辦法了。
  • 過保固後,如果發生觸控的問題,我覺得不用送修、也不要找人修,要花維修的錢,不如直接換好一點的手機,因為不會知道之後還要維修多少錢。


更多 3C 產品相關文章:

台灣縣市鄉鎮郵遞區號 下拉選單外掛 TWzipcode 使用心得

$
0
0
填寫會員資料的表單,大多需要輸入地址,不過自己製作「縣市」、「鄉鎮地區」的下拉選單其實很麻煩,而且最好也要提供郵遞區號,因為填表者自己不一定記得住。

本篇介紹的這個 jQuery 外掛 TWzipcode,可以完美地解決這些麻煩事,同時也會分享實作的心得。



一、基本安裝


1. 官網教學


請進入以上網址,其實在中文外掛之中,我覺得是做得相當有水準的官網。

馬上就能看到範例效果,以及對應的使用說明,是相當容易上手的。


2. 自備網路空間

跟國外知名外掛相比,略有疑慮的是沒有知名 CDN 支援。目前作者找到「JSDELIVR」來存放 CDN 連結,由於比較沒那麼知名,如果對於存活時間有疑慮的話,需要放在自己的空間,或是尋找網路空間來放。

請在官網找到下載連結,也可下載這個打包的 ZIP 檔:


解壓縮後,將裡面的 jquery.twzipcode.min.js (最新版本),上傳到你的空間。

可以考慮使用「Dropbox 外連產生器」,或是放到「Github Page」。


3. CDN

如果決定使用 CDN 的話,作者擺放在這個頁面:


目前最新版本 1.7.14 的連結如下:

https://cdn.jsdelivr.net/npm/jquery-twzipcode@1.7.14/jquery.twzipcode.min.js

4. 引用 TWzipcode

由於這是 jQuery 外掛,因此要使用之前,請將以下連結放到網頁 </head>之前:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<script src="你的網頁空間/jquery.twzipcode.min.js"></script>

第 1 行 jQuery 連結可參考「引用 jQuery 的注意事項」,檢查範本是否已安裝過 jQuery,如果已經安裝過請刪除此行,以免重複安裝。



二、基本範例


1. 基本語法



引用完 TWzipcode,使用以下基本語法,就可看到上面範例的效果:

<div id="twzipcode"></div>
<script>
$("#twzipcode").twzipcode();
</script>



2. 實用參數



使用基本語法效用不大,表單還需要調整樣式、取值。另外比較麻煩的是,select 選單標籤是由外掛自動產生,一些 class、name 都會採預設值,導致無法操作。

以下提供比較實用的參數,效果如上:

<div id="zipcode2"></div>
<script>
$("#zipcode2").twzipcode({
countySel: "臺北市", // 城市預設值, 字串一定要用繁體的 "臺", 否則抓不到資料
districtSel: "大安區", // 地區預設值
zipcodeIntoDistrict: true, // 郵遞區號自動顯示在地區
css: ["city form-control", "town form-control"], // 自訂 "城市"、"地區" class 名稱
countyName: "city", // 自訂城市 select 標籤的 name 值
districtName: "town"// 自訂地區 select 標籤的 name 值
});
</script>

修改說明請參考綠色註釋字串。

如果有使用「Bootstrap」,class 名稱加上 form-control 可美化表格,也可使用其他 class 的自訂 style 效果。



三、自訂表單樣式


這個外掛主要處理縣市、鄉鎮的下拉選單,不過表單主要填寫的是地址。過去曾舉過一個案例,需要製作比較複雜的表格,例如下圖:




複雜表格的對齊技巧,可參考「讓複雜的表單配置也能完美對齊﹍Grid 網格系統」,那麼此時比較 TWzipcode 適合另一種安裝方式,效果如下:





範例程式碼如下:

<div id="zipcode3">
<div class="f3" data-role="county">
</div>
<div class="f4" data-role="district">
</div>
</div>
<input name="Address" type="text" class="f13 address form-control">
<script>
$("#zipcode3").twzipcode({
"zipcodeIntoDistrict": true,
"css": ["city form-control", "town form-control"],
"countyName": "city", // 指定城市 select name
"districtName": "town" // 指定地區 select name
});
</script>
<style>
.city, .town{width: 100%;}
.f1{float:left;margin-left:5px;margin-right:5px;width:calc(5% - 10px)}
.f2{float:left;margin-left:5px;margin-right:5px;width:calc(10% - 10px)}
.f3{float:left;margin-left:5px;margin-right:5px;width:calc(15% - 10px)}
.f4{float:left;margin-left:5px;margin-right:5px;width:calc(20% - 10px)}
.f5{float:left;margin-left:5px;margin-right:5px;width:calc(25% - 10px)}
.f6{float:left;margin-left:5px;margin-right:5px;width:calc(30% - 10px)}
.f7{float:left;margin-left:5px;margin-right:5px;width:calc(35% - 10px)}
.f8{float:left;margin-left:5px;margin-right:5px;width:calc(40% - 10px)}
.f9{float:left;margin-left:5px;margin-right:5px;width:calc(45% - 10px)}
.f10{float:left;margin-left:5px;margin-right:5px;width:calc(50% - 10px)}
.f11{float:left;margin-left:5px;margin-right:5px;width:calc(55% - 10px)}
.f12{float:left;margin-left:5px;margin-right:5px;width:calc(60% - 10px)}
.f13{float:left;margin-left:5px;margin-right:5px;width:calc(65% - 10px)}
.f14{float:left;margin-left:5px;margin-right:5px;width:calc(70% - 10px)}
.f15{float:left;margin-left:5px;margin-right:5px;width:calc(75% - 10px)}
.f16{float:left;margin-left:5px;margin-right:5px;width:calc(80% - 10px)}
.f17{float:left;margin-left:5px;margin-right:5px;width:calc(85% - 10px)}
.f18{float:left;margin-left:5px;margin-right:5px;width:calc(90% - 10px)}
.f19{float:left;margin-left:5px;margin-right:5px;width:calc(95% - 10px)}
.f20{float:left;margin-left:5px;margin-right:5px;width:calc(100% - 10px)}
</style>


先自行設定城市、地區的 DIV 標籤,對於版面就能有比較多的控制權了。


更多 jQuery 相關外掛:

Hotmail 或其他電子郵件快速、完整搬到 Gmail 心得紀錄﹍Thunderbird

$
0
0
hotmail-to-gmail-thunderbird.jpg-Hotmail 或其他電子郵件快速、完整搬到 Gmail 心得紀錄﹍Thunderbird原本的公務郵件是用 Hotmail 收發,不過其實沒有很滿意,因為:

  • 網頁開啟速度很慢
  • 搜尋功能不怎麼樣,都要搜尋很久
  • 網頁編輯時貼圖片很麻煩,只能用附檔

處理垃圾郵件的能力太差,則是讓我決定搬家的最終原因。以前一開始是,被我標示為垃圾郵件的寄件者,Hotmail 始終學不會擋信;而最近是一大堆客戶寄來的信,通通被判定為垃圾郵件,導致收不到重要信件。

使用過的所有網路郵件中,中華電信、yahoo、Hotmail,處理垃圾郵件、搜尋功能都是遠遠比不上 Gmail,因此公務郵件這麼重要的功能,還是交給 Gmail 處理才有效率。

Gmail 本身有匯入郵件的功能,不過我用 Hotmail 匯入一直失敗。以下紀錄郵件搬到 Gmail 比較方便的途徑,而且效果會比 Gmail 本身提供的匯入功能好。

(圖片出處: 699pic.com)


一、安裝 Thunderbird


基本上本篇的流程是參照這篇「How to Import Email From Mozilla Thunderbird Into Gmail

Thunderbird 是個很方便的收信軟體,處理信件時會像 Gmail 一樣,把所有同標題、同討論串的信件聚合在一起,不會四散在各處。

如果跟我一樣,主要使用網頁收發信,那麼安裝完這個工具,把信收完、搬到 Gmail 後,就可以砍掉這個軟體了。


可進入以上阿榮的網站連結,下載免安裝中文版。



二、下載所有信件


這裡以 Hotmail 舉例,其他的網路郵件設定請參照該服務的說明。

可參考這篇「Thunderbird 教學」來設定電子郵件帳號、伺服器等資訊。

由於我原本的帳號是 Hotmail,比較知名的服務 Thunderbird 本身都能判定伺服器相關資訊,可不用另外查詢,很快就能直接下載所有的郵件備份。



三、設定 Gmail 帳號


接著設定另一個新的電子郵件帳號,也就是我們要移轉過去的 Gmail 郵件帳號。

設定過程中需要輸入收信、寄信伺服器等資訊,可參考 Gmail 官方說明:


輸入的內容,可參考下圖:

hotmail-to-gmail-thunderbird-1.jpg-Hotmail 或其他電子郵件快速、完整搬到 Gmail 心得紀錄﹍Thunderbird


設定完成後,依序可看到要移轉的郵件、及 Gmail 郵件帳號:

hotmail-to-gmail-thunderbird-2.jpg-Hotmail 或其他電子郵件快速、完整搬到 Gmail 心得紀錄﹍Thunderbird

要移轉的帳號,請先確認已經收完所有的「收件匣」、及「寄件備份」,再繼續下個動作。

已經建立的 Gmail 郵件帳號,預設會幫我們建立「收件匣」、以及「Gmail」這個資料夾,裡面會包含「寄件備份」。



四、複製郵件


接下來是 Thunderbird 最棒的一個功能,可以讓我們無痛複製所有郵件到 Gmail 郵件伺服器。


hotmail-to-gmail-thunderbird-3.jpg-Hotmail 或其他電子郵件快速、完整搬到 Gmail 心得紀錄﹍Thunderbird

如上圖,先到原本郵件帳號的「收件匣」,全選所有的郵件(Ctrl + A),按右鍵 → 複製到 → 選擇「Gmail」郵件帳號 → 收件匣

就會開始複製到 Gmail 的收件匣,同時一邊上傳到伺服器。

不必等待上傳的動作,我們繼續進入原本郵件帳號的「寄件備份」,全選所有的郵件,按右鍵 → 複製到 → 選擇「Gmail」郵件帳號 → 選擇「Gmail」這個資料夾 → 寄件備份

這樣就大功告成了,可以慢慢等待所有的郵件複製、並自動同步到 Gmail。

最後,如果不需要收信到硬碟的話,就可以刪掉 Thunderbird 這個軟體、含所有郵件,節省硬碟的空間。


更多 Google 相關工具技巧:

網頁、行動版都可使用的 Tooltip 提示框﹍jQuery + Bootstrap

$
0
0

過去曾寫過一系列「簡單漂亮的 CSS 提示框(tooltip)懶人包實作」,可不用裝 JS 外掛,純粹使用 CSS 來實現。

網頁版的 tooltip 提示框,在滑鼠經過時會自動浮現。而最近的案子則是需要在行動版顯示 tooltip 提示框效果,這就有點麻煩,因為手機沒有滑鼠 hover 的事件可捕捉,只能利用點擊讓 tooltip 顯示。

可以使用的外掛例如 jQuery UI 的 Tooltip,然而這不算很好的選擇,因為需要額外載入兩個檔案。

如果網頁有使用 Bootstrap 效果的話,也可考慮使用 Bootstrap 內建的 Tooltip 功能,而且畫面更美觀,本篇兩種方案都會介紹。



一、Jquery Tooltip 安裝



官網頁面就可看到 tooltip 的顯示效果,第二個教學連結說明的很詳細,所有參數修改請參考該篇文章即可。





上面這個範例按鈕的 tooltip 效果,參考程式碼如下:

<!--載入 jquery, jquery ui-->
<script src='//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js'></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css">


<!--按鈕 HTML-->
<button title="Welcome To WFU BLOG">按鈕範例,滑鼠移過來</button>

<!--執行 tooltip-->
<script>
$(document).tooltip();
</script>

  • 需要載入的 3 個外部連結,除了 jQuery 一般網頁本來就會用到之外,還需額外載入 jQuery UI 的 js/css 檔案
  • 網頁的所有 HTML 標籤,只要有使用 title 屬性,就能自動成為 tooltip 提示框
  • 在範本中 </body>之前,執行紅色的 JS,就會讓網頁所有 HTML 標籤的 title 產生 tooltip 效果



二、Bootstrap Tooltip 安裝


為了 Tooltip 這個小小功能,讓網頁需要額外花費 jQuery UI 兩個 http 請求,說實在不太能接受。如果原本網頁就有使用 Bootstrap 的話,那麼就可使用內建的 Tooltip 功能,而且效果更好,預設就有三角形箭頭。


Bootstrap Tooltip 外掛的修改有點麻煩,想自己改 CSS 的話,可參考六角學院的連結,瞭解一下動態產生的 tooltip 的 html 結構。

而第二個連結 w3schools 有修改的實例可參考,下面也提供一個簡單範例。




上面這個範例按鈕的 tooltip 效果,參考程式碼如下:

<!--載入 jquery, jquery ui-->
<script src='//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js'></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"></link>

<!--按鈕 HTML-->
<button class="demo1" data-placement="bottom" title="Welcome To WFU BLOG">按鈕範例,滑鼠移過來</button>

<!--執行 tooltip-->
<script>
$(".demo1").tooltip();
</script>

  • 需要載入的 3 個外部連結,除了 jQuery 一般網頁本來就會用到之外,另外 2 個 Bootstrap js/css 檔案,如果網頁本來就會使用,就不算額外的花費
  • 網頁的所有標籤,只要有使用 title 屬性,就能自動成為 tooltip 提示框
  • 可以設定提示訊息出現的位置,例如 data-placement="bottom"代表出現在下方
  • 執行的 JS 可放在範本中 </body>之前,請注意兩處紅色字串保持一致即可。



三、Bootstrap Tooltip 修改


額外紀錄一些 Bootstrap Tooltip 的修改方式,例如下面這個按鈕的效果:



上面這個範例按鈕的 tooltip,修改了預設 CSS 效果,同時有斷行效果,參考程式碼如下:

<!--載入 jquery, jquery ui-->
<script src='//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js'></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"></link>

<!--按鈕 HTML-->
<button class="demo2" data-placement="bottom" data-html="true" title="Welcome To WFU BLOG&lt;br&gt;最專業的 Blogger 網站">按鈕範例,滑鼠移過來</button>

<!--tooltip CSS-->
<style>
.demo2 + .tooltip > .tooltip-inner {
background-color: #ddd;
color: #666;
font-size: 1rem;
padding: 5px 10px;
box-shadow: 1px 1px 1px #aaa;
}
.demo2 + .tooltip.bottom {
margin-top: 5px;
}
.demo2 + .tooltip.bottom > .tooltip-arrow {
border-bottom: 5px solid #ddd;
}
</style>

<!--執行 tooltip-->
<script>
$(".demo2").tooltip();
</script>

  • 各處紅色字串 demo2 需一致
  • 如果文字太長,需要設定斷行位置,可參考「Add line break to tooltip in Bootstrap 3」,增加 data-html="true"屬性,然後在 title 的字串要斷行處,加入 &lt;br&gt; 即可
  • 調整主要區塊的 CSS,請修改 .demo2 + .tooltip > .tooltip-inner 這裡,例如底色、字體等
  • .demo2 + .tooltip.bottom 可調整與按鈕之間的距離
  • .demo2 + .tooltip.bottom > .tooltip-arrow 這裡可改三角尖端的顏色

若使用手機測試本篇 tooltip 提示訊息,請點擊 DEMO 按鈕可看到效果。


更多 Bootstrap 相關文章:


更多 jQuery 相關工具:
Viewing all 571 articles
Browse latest View live