---
# System prepended metadata

title: AEM Designer開發筆記

---

# AEM Designer開發筆記

## 頁籤、頁尾、續下頁...資料處理


### 常用頁籤

目前有使用過的是下列兩種頁籤
* **Master Page n of m**：以單一 MasterPage 所產出來的頁面總數去計算頁碼
* **Page n of m** ：以所有頁面的總數去計算頁碼

![](https://i.imgur.com/bAJyEAR.png)


舉例來說：
如果預設頁面就有**兩頁**

在第一頁使用**Master Page n of m**
只會以該頁內容頁數計算
如果第一頁沒換頁，頁數會出現 **第 1 頁/ 共 1 頁**


在第一頁使用 **Page n of m**
內容會計算整個資料的頁面，所以**m**的值至少為**2**
如果第一頁資料沒有多到要換頁，頁數會出現第 **第1 頁/ 共 2 頁**


---
### Master Page n of m

**Master Page n of m** 頁籤在使用時，預設會額外產出兩個物件

* **CurrentMasterPage** ：記錄目前標籤
* **MasterPageCount** ：記錄單一MasterPage所出現的頁面總數

最後再把兩個值塞到 **第 # 頁 /共 ##頁**  的##中，資料即處理完成
(以上為使用物件時，系統自動處理的行為)
![](https://i.imgur.com/QjtYA3j.png)

---
**程式寫法如下：**


**CurrentMasterPage**：抓取父層**index 值 +1**，由於 **index** 值從0開始，所以抓取**index+1**即為目前頁數
>`this.parent.index+1`

**MasterPageCount**：抓取父層總長度
>`this.parent.all.length`

註：由於兩個標籤都會寫在**PageArea1**的底下，所以**this.parent**都是抓取 **PageArea1** 這個物件

![](https://i.imgur.com/Yk7NSou.png)

---
### Page n of m 

使用時，也會額外產出兩個標籤
* **CurrentPage** ：紀錄目前為整個layout頁數的第幾頁
* **PageCount** ：記錄整個layout頁數

---
**程式寫法如下：**

**CurrentPage**：抓整個跟物件的layout層，應該....預設有個function 是**page()**，可以取得目前資料頁數

>`xfa.layout.page(this)`

**PageCount**：抓整個跟物件的layout層，使用預設function：**pageCount()**，取得總頁數
>`xfa.layout.pageCount()`

(以上為使用物件時，系統自動處理的行為)

![](https://i.imgur.com/lPDCFYZ.png)



---
### 頁尾於最後一頁才出現的處理

最後一頁才需要出現**頁尾**資料的寫法，可以透過上述頁數的code來處理

以 **Master Page n of m** 為例子

1. 先將**footer**區塊隱藏
2. 宣告一個變數 **currentPage** 記錄目前的頁數 = **this.parent.index+1**
3. 再宣告另一個變數 **totalPages** 記錄所有頁數 = **this.parent.all.length**
4. 最後判斷 **目前頁數 = 所有頁數** 時 ， 將 **footer** 的 **presence** 值設為**visible** ，即最後一頁時，顯示 **footer**

**完整程式如下：**
```javascript
var currentPage = this.parent.index + 1
var totalPages = this.parent.all.length
if(currentPage == totalPages) this.presence='visible'
```

![](https://i.imgur.com/U3ziq1b.png)


備註：由於footer 的層級與上述例子的資料相同，所以可以照抄原始碼，如果層級不同，抓取的資料需要額外注意

---

### 「續下頁」的處理

**續下頁**的條件判斷依樣畫葫蘆

判斷兩個條件
1. 如果總頁數只有1頁時，隱藏
2. 如果總頁數大於1頁時，最後一頁隱藏

**完整程式如下：**

```javascript
var currentPage = this.parent.index + 1
var totalPages = this.parent.all.length

//只有一頁的時候，隱藏
if(totalPages == 1) this.presence='hidden';
//兩頁以上，在最後一頁隱藏
else if (currentPage == totalPages ) this.presence='hidden';


```
### 用;折行的程式寫法


```javascript
var strValue=this.rawValue;
if(strValue.indexOf(';')>-1){
this.rawValue=strValue.replace(/;/g,'\n');
}

```
---

### 小結
1. 如果有需求是每個區塊獨立計算頁籤，或是部分頁面不用有頁碼，可使用**Master Page n of m**處理
2. 若要記錄整份文件的頁數，則使用**Page n of m**即可
