Home » Archives for 12/13/11
Ngẫu hứng Blogger (2)
16:26 |Do tên gọi kia hơi dài, mình xin được phép đổi tên chủ đề "Bạn biết gì về BlogSpot, hãy chia sẻ cung tôi". Trong số 2 này mình sẽ nói về các đối tượng bên trong của widget, bao gồm : Include (Luồng), Data (Dữ liệu), Loop (Vòng lặp), If/Else (Biểu thức điều kiện).
Nhắc đến bài trước, bạn đã thử thực hành với 2 đối tượng section và widget chưa. Nếu chưa, hãy làm thử đi nhé. Đơn giản hãy chỉ tạo thử một section header, trong đó chứa một widget HTML, bạn cho nó hiển thị hình ảnh trong 3 trang khác nhau : index, item, static page.
C.Luồng (Include)
Luồng là một đối tượng con, nằm trong widget. Hiểu nôm na, nó như một ống dẫn truyền dữ liệu từ CSDL vào widget. Do vậy nếu tạo widget mà không có luồng, sẽ có lỗi xảy ra.
Cấu tạo một luồng như sau :
Giải thích :
id: Định danh duy nhất trong widget để luồng tham chiếu.
var : Biến đặt cho luồng truyền giá trị vào, và ở đây nó là một giá trị tham chiếu.
Điều kiện bắt buộc là như mình đã nói ở trên, thêm vào đó, mỗi widget phải có một id = 'main'. Và để cho chắc ăn, id của luồng ta để mặc định là main . Vấn để tạo id mới và sau đó luồng có tham chiếu đến được không. Mình xin trả lời là có, nhưng mình không dám chắc...Vì chưa thử bao giờ ^^!
Luồng không những truyền dữ liệu, nó còn dùng để lấy dữ liệu trong các vòng lặp. Một VD đơn gian đó là lấy tiêu đề của các bài post. Nghĩ hình dung và kết nối, các bạn đơn giản có thể hiểu, ta đang dùng javascript để lọc feed.
Ở đây bạn chú ý vào dòng màu đỏ, vòng lặp loop bên ngoài duyệt tất cả các bài viết (posts), chọn ra một bài viết trong đó (post), với dữ liệu là i.
Chú ý đến cấu trúc trên và có thể sử dụng với các điều kiện sau:
D. Dữ liệu (Data)
Nhăc đến data, chác nhiều người sẽ hiểu. Có thể nói nó là đối tượng quan trong nhất, nó mang lại cái hồn cho Blog. Vì vậy nói ở đây chắc không thể nào có thể nói hết. Mình sẽ dành một bài viết riêng cho nó.
Các bạn còn nhớ type của widget của bài viết trước chứ. Mỗi loại widget sẽ có một loại data riêng. Vì vậy bạn không thể làm cái điều "râu ông nọ cắm cằm bà kia" được.
Nói qua về nó, nó có dạng sau data:name1.name2. Trong đó, name1 sẽ là đối tượng chính, name2 thường là các thuộc tính đi kém theo sau đó. Mình thấy nói về phần này rất hay, chắc có lẽ xin khất ở bài sau.
E. Vòng lặp (Loop)
Dùng để lọc ra một phần tử trong một nhóm phần tử : nhóm bài viết(posts), nhóm nhãn(labels), nhóm bình luận (coments)...
Cấu trúc :
Hình dung đơn giản thì đây là vòng lặp foreach, phần tử con được lấy ra trong nhóm phần tử.
VD :
F. BT Điều kiện (If/Else)
Biểu thức so sánh đưa ra kết quả đúng và sai..
Cấu trúc :
Điều kiện ở đây thường là so sánh các đối tượng data với giá trị đã biết để tạo ra các kết quả đúng và sai. Một VD đơn giản là so sánh số bài viết, nếu lớn hơn 1 hiển thị 'A', nhỏ hơn bằng 1 hiển thị 'a'.
Nó có thể năm ngoài widget, tuy nhiêu không được đặt biểu thức if/else giữa widget và include.
Tổng kết.
Qua đây bạn chắc bạn đã thực sự hiểu sơ qua về cấu trúc của một BlogSpot. Biết được ai là cha, ai là con. Mình xin được tổng kết lại các phần đã giới thiệu đơn giản như sau:
Có gì sai hãy bổ sung, góp ý với mình nhé. Rất cảm ơn. Hẹn các bạn ở bài viết tới. Layouts Data Tags.
Nhắc đến bài trước, bạn đã thử thực hành với 2 đối tượng section và widget chưa. Nếu chưa, hãy làm thử đi nhé. Đơn giản hãy chỉ tạo thử một section header, trong đó chứa một widget HTML, bạn cho nó hiển thị hình ảnh trong 3 trang khác nhau : index, item, static page.
C.Luồng (Include)
Luồng là một đối tượng con, nằm trong widget. Hiểu nôm na, nó như một ống dẫn truyền dữ liệu từ CSDL vào widget. Do vậy nếu tạo widget mà không có luồng, sẽ có lỗi xảy ra.
Cấu tạo một luồng như sau :
<b:includable id='{tên id}' var='{Biến}'>
{Nội dung hiển thị}
</b:includable>
Giải thích :
id: Định danh duy nhất trong widget để luồng tham chiếu.
var : Biến đặt cho luồng truyền giá trị vào, và ở đây nó là một giá trị tham chiếu.
Điều kiện bắt buộc là như mình đã nói ở trên, thêm vào đó, mỗi widget phải có một id = 'main'. Và để cho chắc ăn, id của luồng ta để mặc định là main . Vấn để tạo id mới và sau đó luồng có tham chiếu đến được không. Mình xin trả lời là có, nhưng mình không dám chắc...Vì chưa thử bao giờ ^^!
Luồng không những truyền dữ liệu, nó còn dùng để lấy dữ liệu trong các vòng lặp. Một VD đơn gian đó là lấy tiêu đề của các bài post. Nghĩ hình dung và kết nối, các bạn đơn giản có thể hiểu, ta đang dùng javascript để lọc feed.
<b:includable id='main'>
<b:loop var='i' values='posts'>
<b:include name='post' data='i'/>
</b:loop>
</b:includable>
<b:includable id='post' var='p'>
Tiêu đề: <data:p.title/>
</b:includable>
Ở đây bạn chú ý vào dòng màu đỏ, vòng lặp loop bên ngoài duyệt tất cả các bài viết (posts), chọn ra một bài viết trong đó (post), với dữ liệu là i.
Chú ý đến cấu trúc trên và có thể sử dụng với các điều kiện sau:
name: Tương ứng gấn như một id, nhưng hiện thị mình thấy nó giống một class hơn.
data : dữ liệu truyền vào, ngầm hiểu chính là nội dung bài viết, tác giả, số comment ...
data : dữ liệu truyền vào, ngầm hiểu chính là nội dung bài viết, tác giả, số comment ...
D. Dữ liệu (Data)
Nhăc đến data, chác nhiều người sẽ hiểu. Có thể nói nó là đối tượng quan trong nhất, nó mang lại cái hồn cho Blog. Vì vậy nói ở đây chắc không thể nào có thể nói hết. Mình sẽ dành một bài viết riêng cho nó.
Các bạn còn nhớ type của widget của bài viết trước chứ. Mỗi loại widget sẽ có một loại data riêng. Vì vậy bạn không thể làm cái điều "râu ông nọ cắm cằm bà kia" được.
Nói qua về nó, nó có dạng sau data:name1.name2. Trong đó, name1 sẽ là đối tượng chính, name2 thường là các thuộc tính đi kém theo sau đó. Mình thấy nói về phần này rất hay, chắc có lẽ xin khất ở bài sau.
E. Vòng lặp (Loop)
Dùng để lọc ra một phần tử trong một nhóm phần tử : nhóm bài viết(posts), nhóm nhãn(labels), nhóm bình luận (coments)...
Cấu trúc :
<b:loop var='{biến chạy, phần tử con}' values='{nhóm phần tử}'>
{Lặp nội dung ở đây}
</b:loop>
Hình dung đơn giản thì đây là vòng lặp foreach, phần tử con được lấy ra trong nhóm phần tử.
VD :
<b:loop var='i' values='data:posts'>
<h2><data:i.title/></h2>
</b:loop>
F. BT Điều kiện (If/Else)
Biểu thức so sánh đưa ra kết quả đúng và sai..
Cấu trúc :
<b:if cond='{điều kiện}'>
{hiển thị nội dung nếu là đúng}
<b:else/>
{hiển thị nội dung nếu là sai}
</b:if>
Điều kiện ở đây thường là so sánh các đối tượng data với giá trị đã biết để tạo ra các kết quả đúng và sai. Một VD đơn giản là so sánh số bài viết, nếu lớn hơn 1 hiển thị 'A', nhỏ hơn bằng 1 hiển thị 'a'.
<b:if cond='data:post.numComments > 1'>
<font color="red">A</font>
<b:else/>
<font color="red">a</font>
</b:if>
Nó có thể năm ngoài widget, tuy nhiêu không được đặt biểu thức if/else giữa widget và include.
Tổng kết.
Qua đây bạn chắc bạn đã thực sự hiểu sơ qua về cấu trúc của một BlogSpot. Biết được ai là cha, ai là con. Mình xin được tổng kết lại các phần đã giới thiệu đơn giản như sau:
Có gì sai hãy bổ sung, góp ý với mình nhé. Rất cảm ơn. Hẹn các bạn ở bài viết tới. Layouts Data Tags.
Tạo liên hệ giống blog Minh
06:08 |Bạn biết gì về Blogspot, hãy chia sẻ cùng tôi.
02:36 |
Chính vì lý do đó, mình viết bài viết "Bạn biết gì về Blogspot, hãy chia sẻ cùng tôi." để chia sẻ nhưng gì mình biết, để mọi người cùng tham khảo, cùng vọc. Và lớn hơn nữa nó sẽ thành chuyên mục TUT sử dụng BlogSpot quen thuộc của mọi người. Cũng mong nó sẽ hỗ trợ phần nào đó phần design của các bạn tốt hơn.
Trong bai viết này, mình chỉ nói sơ qua về một số đối tượng Blogspot. Nếu nói điều gì đó chưa đúng hay sai về lý thuyết mong được đóng góp của mọi người, dù sao mình cũng không phải dân làm web ^^!. Không dám múa rìu qua mắt thợ :D
A.Section
Đầu tiên, thứ mình biết được đầu tiên là trong BlogSpot được chia làm các khối lớn. Các khối này được nằm trong thẻ
<section>,
các khối section này chứa các widget, HTML hay các tiện ích thêm vào mà các bạn vẫn hay dùng. Trong một trang bạn có thể chia làm nhiều <section>
.Không cứ bắt buộc theo temp chuẩn là chỉ có header, main, sibar đâu nhé. Các bạn có thể tuỳ biến thêm các section cho trang của mình.Và lưu ý nhé, section mình nói trên phài đặt trong thẻ đóng và mở là
<b:section {thuộc tính}></b:section.>
Nó là thẻ bắt buộc phải có trong một template, nếu không có một thẻ này, BlogSpot sẽ báo lỗi khi up template.
Và kể từ nay trở về sau, các bạn sẽ tử hiểu các cấu trúc thành phần cấu tạo nên BlogSpot cũng sẽ phải nằm trong thẻ đóng, mở <b:></b:>
Mỗi <section> trong template được tạo như sau.
<b:section id='{tên id}' class='{tên class}' maxwidgets="{số lượng}" showaddelement="{yes, no}">
</b:section>
Giải thích thuộc tính như sau :
id: Là tên duy nhất đặt cho section.
class: dùng để code CSS cho section.
maxwidgets: Số lượng widget có thể nằm trong. Widget tý sẽ kể đến ^^!
showaddelement: Có cho phép thêm phần tử vào section không.
class: dùng để code CSS cho section.
maxwidgets: Số lượng widget có thể nằm trong. Widget tý sẽ kể đến ^^!
showaddelement: Có cho phép thêm phần tử vào section không.
Ngoài ra, còn có thêm một thuộc tính growth: định dạng kiểu dáng của section "horizontal","vertical" (nằm, đứng). Nhưng mình nghĩ cũng chả khi nào dùng đến, vì bo CSS rồi. Thuộc tính id sẽ là bắt buộc, các thuộc tính còn lại là tuỳ biến, tức là có hoặc không.
B.Widget
Widget ta có thể tạm hiểu là một phần tử con của Section.
Tạo một widget :
<b:widget id="{tên id}" type='{loại}' locked="{yes,no}" title="{Tên Widget}"/>
Giải thích :
id: Trường thuộc tính duy nhất và bắt buộc, BlogSpot thường dựa vào id để lưu lại cấu hình về css, cũng như data của nó. Mỗi khi bạn restore hay thay thế temp mới, các dữ liệu sẽ tự động đẩy vào các widget trống.
type: Bao gốm các dạng sau : BlogArchive, Blog, Feed, Header, HTML, SingleImage, LinkList,List, Logo, BlogProfile, Navbar, VideoBar, NewsBar, ListView .... Trong đó HTML được chúng ta sử dung nhiều nhất.
locked: Được phép di chuyển hay không ở trong phần tử trang.
title : Tên widget.
type: Bao gốm các dạng sau : BlogArchive, Blog, Feed, Header, HTML, SingleImage, LinkList,List, Logo, BlogProfile, Navbar, VideoBar, NewsBar, ListView .... Trong đó HTML được chúng ta sử dung nhiều nhất.
locked: Được phép di chuyển hay không ở trong phần tử trang.
title : Tên widget.
Ngoài ra còn một số thuộc tính :
pageType (cho phép hiển thị ở trang nào) : Giá trị : all, archive, main, item - > phần này dành cho phân trang rất hay, các bạn không cần dùng đến if để kiểm tra pageType nữa.
mobile: (cho phép hiển thị với điện thoại di động không) : Giá trị: yes, no.
mobile: (cho phép hiển thị với điện thoại di động không) : Giá trị: yes, no.
Trong blog của bạn, tất cả các thẻ <section>
Giờ bài viết đã dài, mình cũng hơi mỏi tay rồi. Hẹn các bạn trong số tiếp theo. Trong bài sau mình sẽ giới thiệu về : Include (Luồng), Data(Dữ liệu), Loop (Vòng lặp), If/Else (Biểu thức điều kiện)
Xin hẹn các bạn trong bài viết sau. Cảm ơn về ý kiến của các bạn !