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.

Chào anh Hutek!
.

Nghe danh đã lâu bây giờ vẫn chưa thấy mặt
Em muốn hỏi anh làm sao để enable mấy hình cảm xúc bên dưới với chèn kiểu gõ vào như anh đấy. Cảm ơn anh. Chúc a Hutek một ngày vui vẻ.
17/06/2010
Em đọc thêm bài này nhé http://hutek.info/2009/10/18/lam-moi-blog-cua-ban-voi-nhung-emotions-ngo-nghinh/
Nếu em ở Hà Nội thì gặp anh đơn giản thôi mà
17/06/2010
Hi,
Bác cho em hỏi 1 tí, hàm của bác có tự lấy ảnh trong bài viết – mà ảnh này là ảnh ở host ngoài chứ không phải ảnh tự tay up lên khi post bài – không ? Vì đang cần cái này
Trả lời gấp hộ nhé bác ơi
Thanks bác !
13/04/2010
hehe, cái đó bác tự code đi, cái của em chỉ crop ảnh tự up thôi
13/04/2010
Mèn ơi, tiêu rồi :(
13/04/2010
Có thể viết 1 hàm save cái hình về host mình (Save cái nào cần thôi)rồi sau đó thì chạy cái crop hình bình thường.
11/05/2010
Anh Hutek chỉ cách tích hợp cái này vào Thesis đi.
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 =-.
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) =-.
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 =-.
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) =-.
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) =-.
28/02/2010
anh ơi
giúp em cái quảng cáo trên heard đi
06/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
02/01/2010
Ok, chờ em xem lại css đã, xem nó nằm ở đâu
02/01/2010
THanks bác nhiều,mong được sự giúp đỡ của bác,
02/01/2010
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 =-.
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
03/12/2009
Tình hình la em wpline nhà ta sung đột với 2 plugin là WP Grins và WP AJAX Edit Comments :bomb: , 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 :2: 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é :x
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
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é
17/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.
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á
.-= otobuy´s last blog ..Thuế nhập khẩu ôtô lên 91% =-.
10/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 =-.
04/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 =-.
01/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é
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ọ =-.
03/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
04/11/2009
sắp mùng 10 roài :vic:
.-= ADSL Viettel´s last blog ..Số phận của S-Fone :“tồn tại hay không tồn tại” =-.
08/11/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 ? =-.
30/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 :2:
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: )
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
28/10/2009
Ừ, coi rồi mà không biết làm :chem:
28/10/2009
Có vẻ như là biết rồi nhỉ, dễ đúng ko nào
29/10/2009
Hix đã làm đc đâu!
29/10/2009
Vào cái http://www.phantuannam.info/ thấy hiện ảnh rồi mà
29/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 :cuoi_duyen:
27/10/2009
:cuoi_duyen: :cuoi_duyen: :cuoi_duyen: :cuoi_duyen: Khổ được như bác Hutek đã sướng, bác ợ :x :x
27/10/2009
E làm được rồi :soldier: Sướng :votay: Thanks bác Hutek!!!!
27/10/2009