Hiện nay Hutek thấy có khá nhiều bạn chưa biết hoặc chưa hiểu về cách lấy ảnh thu nhỏ (thumbnail) của hai theme do Hutek làm là WPLine và Webzine, thế nên hôm nay Hutek viết một bài chi tiết nói về cách lấy ảnh của cũng như hướng dẫn thực hành để các bạn có thể dễ dàng hơn trong việc sử dụng theme của Hutek.
Về hàm lấy ảnh này thì cũng có khá nhiều thăng trầm, bởi vì các theme của Hutek làm đều có xu hướng trang tin và cũng bởi vì hình ảnh ngày càng quan trọng hơn trong các bài viết nên ngay từ phiên bản đầu tiên của Webzine Hutek đã tích hợp chức năng hiện ảnh vào bài viết bằng cách sử dụng custom field. Đây có lẽ là phương pháp thô sơ và cổ truyền nhất trong việc tạo ảnh thu nhỏ để minh họa cho bài viết, tuy nhiên phương pháp này khá là khó với các bạn mới làm quen với Wordpress, thế là Hutek tiếp tục cải tiến và trong phiên bản 0.3 của Webzine Hutek dùng plugin Get the Image của Justin Tadlock kết hợp với phpThumb để tạo ảnh. Về cơ chế thì Get the Image sẽ làm nhiệm vụ tìm ảnh còn phpThumb sẽ làm nhiệm vụ resize ảnh, nhưng sự kết hợp này cũng có khá nhiều bất tiện. Thế nên trong phiên 1.0 của Webzine Hutek đã tự viết làm lấy ảnh để có thể phù hợp nhất với yêu cầu của mình. Tất nhiên là những theme sau này của mình đều sử dụng cơ chế lấy ảnh này (bao gồm WPLine, New Wind và các theme sắp phát hành)
Và trong bài viết này Hutek sẽ nói về hàm lấy ảnh này và cách thức thực hiện đối với WPLine cũng như Webzine.
Về cơ chế lấy ảnh thì đây là sự kết hợp của hàm lấy ảnh do Hutek viết (sau khi đã tham khảo nhiều hướng dẫn và tài liệu) kết hợp với phpThumb để tạo ảnh thu nhỏ, các bạn có thể tìm thấy đoạn code này trong file functions.php, toàn bộ hàm như sau:
/******************************************************************** Get image attach ********************************************************************/ function img($width,$height) { global $post; $custom_field_value = get_post_meta($post->ID, 'in_image', true); $custom_field_value_2 = get_post_meta($post->ID, 'out_image', true); $attachments = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'numberposts' => 1) ); if ($custom_field_value == true) { $img_url = parse_url($custom_field_value,PHP_URL_PATH); print '<img src="'.get_template_directory_uri().'/phpthumb/phpThumb.php?src='.$img_url.'&w='.$width.'&h='.$height.'&zc=T&q=70" alt="'.$post->post_title.'" />'; } elseif ($custom_field_value_2 == true) { print '<img src="'.$custom_field_value_2.'" alt="'.$post->post_title.'" />'; } elseif ($attachments == true) { foreach($attachments as $id => $attachment) { $img = wp_get_attachment_image_src($id, 'full'); $image = $image[0]; $img_url = parse_url($img[0], PHP_URL_PATH); print '<img src="'.get_template_directory_uri().'/phpthumb/phpThumb.php?src='.$img_url.'&w='.$width.'&h='.$height.'&zc=T&q=70" alt="'.$post->post_title.'" />'; } } else { $img = get_template_directory_uri(); $img_url = parse_url($img,PHP_URL_PATH); print '<img src="'.get_template_directory_uri().'/phpthumb/phpThumb.php?src='.$img_url.'/images/no_image.jpg&w='.$width.'&h='.$height.'&zc=T&q=70" alt="'.$post->post_title.'" />'; } }
Như các bạn thấy hàm này chỉ có hai biến là chiều dài và chiều rộng và sử dụng hàm if để xét các trường hợp lấy ảnh.
Nhìn vào code có thể thấy là trường hợp ưu tiên đầu tiên là ảnh dùng Custom Field có tên là in_image. In_image là trường hợp dùng cho việc hiển thị ảnh bất kỳ nằm trên host của blog. Ưu điểm của cách này là bạn không cần up thêm ảnh mà có thể tái sử dụng ảnh trên host và ảnh có thể resize được với phpThumb.
Tiếp theo hàm sẽ ưu tiên đến custom field có tên là out_image. Out_image là trường hợp dùng cho việc hiển thị ảnh bất kỳ nhưng không nằm trên host của bạn. Ưu điểm của cách này là ảnh của bạn không cần phải lưu trữ trên host còn nhược điểm là ảnh không thể resize bằng phpThumb.
Nếu cả hai trường hợp trên không xảy ra thì hàm tiếp tục tìm kiếm xem trong bài viết có ảnh nào được up lên không, nếu có nó sẽ tự động lấy ra ảnh đầu tiên và resize theo kích thước đã được định trước. Đây cũng là cách đơn giản và dễ nhất để tạo thumb cho bài viết, chỉ cần up ảnh cho bài viết còn các việc khác ko cần quan tâm.
Trường hợp cuối cùng xảy ra khi quét ảnh mà cũng ko có thì hàm sẽ tự động hiện thị một hình ảnh mặc định (no_image.jpg) để thông báo cho người dùng biết là chưa có ảnh.
Đó là 4 cách lấy ảnh của WPLine 1.0 và Webzine 1.0. Trong quá trình sử dụng có thể xảy ra các lỗi lấy ảnh, thường nó sẽ là các ảnh nền màu tím và một hàng chữ đỏ thông báo, nếu xảy ra trường hợp này thì có thể là do một số nguyên nhân như:
- Ảnh không còn tồn tại trên host
- Host không hỗ trợ module GD để phpThumb có thể size ảnh (rất hay xảy ra với các host free)
- Nguyên nhân khác (cần phải xem xét trực tiếp mới xác định được)
Như đã trình bày ở trên thì trong 4 trường hợp lấy ảnh thì sẽ có hai trường hợp dùng custom field nên Hutek hướng dẫn luôn cách dùng để những ai mới làm quen với Wordpress cũng có thể dễ dàng thực hiện.
Thực ra nó khá đơn giản. Các bạn chỉ cần vào phần viết bài mới, tìm đến chỗ custom field, nếu là lần đầu dùng thì chúng ta phải tạo một custom field với tên mà chúng ta muốn (trong trường hợp này là in_image và out_image) ở phần name còn giá trị thì là link ảnh giống như hình minh họa dưới đây

Còn các lần sau thì các bạn chỉ việc chọn một custom field đã có sẵn và điền giá trị vào thôi.
Trên đây Hutek đã trình bày khá chi tiết về cách thức lấy ảnh của WPLine 1.0 và Webzine 1.0 cũng như cách thực hiện. Hy vọng là bài viết sẽ giúp các bạn hiểu hơn và vận dụng tốt hơn các theme của Hutek.
storyteller Nguyễn
28/02/2010
Anh Hutek chỉ cách tích hợp cái này vào Thesis đi.
Minh
28/02/2010
Cái này có sẵn trong Thesis rồi mà bạn
Minh´s last blog ..Mua domain tại Godaddy chỉ 0,99$ với mã giảm giá: BUY2010
storyteller Nguyễn
28/02/2010
Àh, em nhầm. Em muốn nhắc đến tự resize ảnh ấy. Chứ với thesis chúng ta phải khổ sở resize ảnh/
storyteller Nguyễn´s last blog ..Điều quan trọng trong cuộc sống (1)
Minh
28/02/2010
Thesis có cơ chế tự resize ảnh, bạn vào Thesis Option > Post Images and Thumbnails
Minh´s last blog ..Mua domain tại Godaddy chỉ 0,99$ với mã giảm giá: BUY2010
storyteller Nguyễn
28/02/2010
Em thử cái đấy rồi, nhưng lúc nãy em dán url hình vào nó đâu có resize mà hiện nguyên kích thước hình gốc ( hình từ host).
storyteller Nguyễn´s last blog ..Điều quan trọng trong cuộc sống (1)
storyteller Nguyễn
28/02/2010
Thật thất lễ, đúng là em chẳng biết gì về thesis cả, em đã làm được rồi, đúng là cái gì cũng phải tìm hiểu kỹ.
storyteller Nguyễn´s last blog ..Điều quan trọng trong cuộc sống (1)
Ply
06/01/2010
anh ơi
giúp em cái quảng cáo trên heard đi
blackcat227
02/01/2010
Bác hutek ơi cho em hỏi chút,chỉnh code ở đâu để webzine 1.o resize ảnh được như wp line 1.1 được vậy bác,ảnh ngoài host í,mong bác giúp em với
Hutek
02/01/2010
Ok, chờ em xem lại css đã, xem nó nằm ở đâu
trịnh anh
02/01/2010
THanks bác nhiều,mong được sự giúp đỡ của bác,
adsl viettel
03/12/2009
bác hutek cho em hỏi cái tính năng comment trong blog mình là dùng plugin hay là của theme vậy
nếu là plugin thì bác cho em xin tên plugin nhé
adsl viettel´s last blog ..Tin nhắn rác ăn theo 3G
Hutek
03/12/2009
Comment theo bậc bậc như của em ấy hả, cái này wp hỗ trợ sẵn tính năng rồi nhưng phải chỉnh css để nó ra được như của em
BemBem
17/11/2009
Tình hình la em wpline nhà ta sung đột với 2 plugin là WP Grins và WP AJAX Edit Comments
, 2 cái này thì cung ko cần lắm, hum chước cài vào nó bị lỗi cứ đổ cho theme của bac
hehe hum nay làm bài góp y xem có anh em nào cung bị lỗi do cài 2 plugin trên thì còn biết nhe. thank bác hutek nhé
BemBem
17/11/2009
Nhiên thể bác vào xem cái blog của em nó ko hiên được anh thumb, mấy bài đầu thì hiện bt tự nhiên viết bài mới hum nay ko thấy hiện lữa. http://s-chick.co.cc
Hutek
17/11/2009
Muốn nó hiện thì up cho nó một cái ảnh hoặc là đọc kỹ lại bài viết này nhé
otobuy
10/11/2009
Bác Hưng chỉ giúp em lỗi vỡ khung của cái bài liên quan với. Em đã up date file style.css.php rồi mà nó vẫn như vậy.
otobuy´s last blog ..Thuế nhập khẩu ôtô lên 91%
Em thử disable tất cả plugin cũng không được. Bác kiểm tra giúp em với. Cái này vỡ khung trông xấu quá
adsl viettel
04/11/2009
Hay đứt mạng thế này có cần tài trợ mạng ko nhỉ
adsl viettel´s last blog ..Khuyến mại cho thuê bao di động Viettel tháng 11/2009
ADSL Viettel
01/11/2009
tình hình vẫn chưa có bản cập nhập wpline mới hả bác
em mong chờ từng ngày để đc thay cái theme bây giờ
ADSL Viettel´s last blog ..Khuyến mãi ADSL Viettel tháng 11/2009
Hutek
03/11/2009
tình hình là nhà em đang mất mạng nên việc đưa ra bản update cho wpline sẽ bị lùi xuống vài ngày, mà em chỉ nói là đầu tháng 11 thôi chứ ko phải là 1/11 nhé
Quân
03/11/2009
ảo
Nhớ Việt hóa anh nhé. em thấy girl nước mình ít người dùng wordpress kinh.
Quân´s last blog ..AOE – Phú Thọ
LE HIEU
04/11/2009
Chà! chắc là em nhớ nhầm. chắc ko quá ngày 10/11 đâu bác nhể? lúc đó vote cũng xong rồi. Lại vọc wpline tiếp. Nhà bác hay mất mạng nhỉ? thảo nào thấy invisble suốt! hihi
ADSL Viettel
08/11/2009
sắp mùng 10 roài
ADSL Viettel´s last blog ..Số phận của S-Fone :“tồn tại hay không tồn tại”
SEO Tips
30/10/2009
Bài viết hay đấy. Cụ thể hơn tí nữa thì okay. Làm tutorial được !
SEO Tips´s last blog ..Content vs SEO ?
Tuấn Nam
28/10/2009
Hutek xem giúp mình cái blog của mình, chẳng thèm hiện hình chi cả…
Đã nhờ Lê Hiếu xem qua nhưng Lê Hiếu khuyên nên hỏi Hutek tốt hơn
Mình không chuyên về tin học nên sẽ hỏi nhiều (giống như đã làm phiền Lê Hiếu :sos: )
Hutek
28/10/2009
mình đã viết rất chi tiết như vậy rồi mà. Không biết là bạn đã đọc hết chưa vậy
Tuấn Nam
28/10/2009
Ừ, coi rồi mà không biết làm
Hutek
29/10/2009
Có vẻ như là biết rồi nhỉ, dễ đúng ko nào
Tuấn Nam
29/10/2009
Hix đã làm đc đâu!
Hutek
29/10/2009
Vào cái http://www.phantuannam.info/ thấy hiện ảnh rồi mà
Lê Hiếu
27/10/2009
Đáng ra bác Hutek ( anh em họ với Huken) phải viết bài này sớm. không thì còn khổ dài dài
Huken
27/10/2009
Huken
27/10/2009
E làm được rồi
Sướng
Thanks bác Hutek!!!!