Thứ Năm, 18 tháng 9, 2014

Cách tạo chữ hiệu ứng đẹp trên Photoshop cs3

Có rất nhiều cách tạo hiệu ứng chữ trên Photoshop cs3 sau đây là một cách đơn giản giúp những bạn mới học photoshop làm quen với việc tạo hiệu ứng chữ trong photoshop
BƯỚC 1 : 
- Nhấn phím tổ hợp Ctrl + N để mở 1 ảnh mới  
- Hoặc vào File > New để mở 1 ảnh mới  
( và làm theo ảnh dưới )
Bước 2 : Nháy chuột vào biểu tượng như hình dưới : 
 

Bước 3 : Ta đánh chữ cần điền vào rồi nhấn " √ " như hình dưới : 
  

Bước 4 : Nhân đôi số font = Ctrl + J : 
 

Bước 5 :  Chọn trên thanh bảng chọn, chọn Filter > Slylize > Wind.. sẽ hiện lên 1 cái bảng như phía dưới ảnh ta chọn : From the Right : 
  

Bước 6 : Làm tương tự như Bước 5 cũng sẽ hiện ra 1 bảng tương tự và lần này ta không chọn From the Right mà ta hãy chọn : " From the Left" : 

Bước 7 : ta chọn fx như ảnh đã khoanh tròn phía dưới :

Bước 8 : Ta chọn Gradient Overlay như hình dưới : 
Bước 9 : Làm theo từng bước như phía dưới :

Bước 10 : ta nhấn vào font phía trên font vừa định dạng ( xem ảnh ) 

Bước 11 : Lần này ta sử dụng phím tổ hợp Ctrl + T để định dạng cỡ chữ : ( hình dưới ) 

Bước 12 : ta điền các số thích hợp như : 1 - 2 - 3 -4 : ( hình dưới ) 

Bước  13  : Chọn fx ( hình dưới ) 
Bước 14 : Chọn Stroke ( hình dưới ) 

Bước 15 : Làm theo các bước như hình dưới : 


Kết quả : 

Xong..~ Vì ít thời gian nên tôi chỉ làm chữ đơn giản như thế thôi. Bài này dành cho các bạn chưa biết des trên Photoshop cs3 cũng như biết des mà không biết tạo hiệu ứng...

Tạo tùy chọn Theme cho Drupal 7

Khi mới bắt đầu học Drupal 7, bạn tiến hành cài các theme, có thể thấy có rất nhiều checkbox cho phép mở hoặc đóng bất kỳ thành phần nào của theme như logo, slogan... 
Trong Drupal 7, tất cả việc thao tác được thực hiện thông qua Form API, vì vậy cũng không quá đơn giản, nhưng cũng không quá phức tạp. Trong bài viết này Thủ thuật Việt Nam sẽ hướng dẫn bạn thực hiện công việc này.
Trong thư mục theme của bạn hãy tạo ra file theme-settings.php. Trong file chúng ta chỉ cần làm việc đơn giản là khai báo các trường của form (Form Field) và các tùy chọn mới này sẽ thực hiện việc gì
<?php
function tentheme_form_system_theme_settings_alter(&$form, &$form_state) {
  $form['theme_settings']['ten_tuy_chon'] = array(
 '#type' => 'checkbox',
 '#title' => t('Tùy chọn theme cho Drupal 7'),
 '#default_value' => theme_get_setting('ten_tuy_chon'),
  );
}
?>
Trong đó:
- ['theme_settings'] là mảng lưu trữ các trường của form đã có, đây cũng là chỗ để bạn chèn vào các tùy chọn của mình.
- ['your_option'] là tên của lựa chọn mới mà bạn muốn tạo ra.
- #type : Khai báo loại phần tử mà bạn muốn tạo ra. Như ví dụ là checkbox.
- #title : Tiêu đề của phần tử, là phần văn bản hiển thị cho tùy chọn.
- #default_value : Khai báo giá trị mặc định.
Trong ví dụ trên chúng ta đã khai báo #default_value truy vấn vào database để lấy giá trị qua hàm theme_get_setting('your_option'). Tuy nhiên, nếu không tìm thấy giá trị trong database, Drupal sẽ kiểm tra giá trị trong theme của bạn. Vì vậy chúng ta cần thêm dòng:
settings[your_option] = 1
Sau khi khai báo, giá trị mặc định sẽ luôn là 1, cho đến khi bạn thay đổi nó.
Để sử dụng được tùy chọn trong giao diện, bạn có thể sử dụng hàm
theme_get_setting('ten_tuy_chon');
Ví dụ: trong file .tpl.php, để kiểm tra xem có tích tùy chọn không
<?php if (theme_get_setting('ten_tuy_chon')): ?>
  <!-- Code ở đây. thuthuatvietnam.com -->
<?php endif; ?>
Chúc bạn thành công.
Để có thể kiểm tra kiến thức lập trình web mà bạn có hãy tham gia lầm bài test kiến thức lập trình web 

Thứ Hai, 15 tháng 9, 2014

Hướng dẫn tạo giỏ hàng trong MVC4

Sau đây mình sẽ hướng dẫn các bạn tạo giỏ hàng trong MVC4. Một phiên bản mới của ASP.net Ở đây mình sẽ sử dụng phiên bản Visual Studio 2012.

Đầu tiên bạn mở Visual Studio và chọn New Project trong menu File của VS. 
 Tiếp theo VS sẽ hỏi bạn loại project muốn tạo, bạn chọn như trong hình dưới 
Nhấn OK và chờ trong một vài giây màn hình VS sẽ hiển thị cấu trúc của website mặc định như hình bên dưới. 
Nhấn F5 để chạy thử project 
Xong các bước cài đặt ban đầu, tiếp theo chúng ta sẽ cần hiển thị sản phẩm lên trang chủ, mỗi sản phẩm sẽ có nút "Mua" và khi click vào sản phẩm sẽ được thêm vào giỏ hàng. Ở đây mình sẽ không demo cách lấy dữ liệu dưới DB lên web mà đơn giản sản phẩm sẽ là HTML (việc lấy thông tin sản phẩm lên thì các bạn tham khảo các bài viết khác nhé) :D

Trong màn hình chính của VS đang hiển thị HomeController, các bạn click chuột phải vào action Index trong khung editor của VS, sau đó chọn "Go to View". 

Bước này sẽ di chuyển chúng ta đến nội dung của trang chủ website. Sau đó chúng ta thay đổi nội dung của trang thành danh sách sản phẩm như sau.
Thay thế đoạn trong hình 
bằng nội dung HTML bên dưới 

Sau khi thay đổi ta nhấn F5 để xem nội dung thay đổi của website




Đến bước này cơ bản ta đã hoàn tất việc hiển thị sản phẩm trên website.

Bước tiếp theo ta sẽ tạo lớp giỏ hàng để lưu thông tin sản phẩm khi chọn. Click phải vào thư mục Models trong Sollution Explorer, chọn  Add new item. 


Trong cửa sổ xuất hiện tạo một class mới với tên gọi ShoppingCart.cs. Nhấn OK để tiếp tục.
Trong cửa sổ hiện ra trên VS chúng ta khai báo class ShoppingCartItem như hình dưới. 

Tiếp theo chúng ta thêm class ShoppingCart vào bên dưới class ShoppingCartItem 

Vậy là hoàn tất việc khai báo class giỏ hàng, việc implement các method của class ShoppingCart các bạn xem trong file demo đính kèm cuối bài nhé.

Tiếp theo chúng ta sẽ tiến hành thêm sản phẩm vào giỏ hàng bằng javascript khi người dùng click vào link Thêm vào giỏ hàng ở trang chủ. Khi click nút Thêm vào giỏ hàng thì chúng ta sẽ gửi yêu cầu thêm sản phẩm với ID sản phẩm tương ứng vào giỏ hàng.

Để làm việc này chúng ta phải khai báo class ShoppingCartController để tiếp nhận yêu cầu khi người dùng click vào nút Thêm vào giỏ hàng .

Click chuột phải vào thư mục Controller trong Sollution Explorer, chọn Add new item, chọn Controller.




Trong cửa sổ xuất hiện tạo ShoppingCartController.cs và nhấn OK. Trong ShoppingCartController chúng ta khai báo method AddToCart để xử lý yêu cầu thêm sản phẩm vào giỏ hàng. 


Tiếp theo chúng ta khai báo method RemoveFromCart để xóa sản phẩm khỏi giỏ hàng.






Method cuối cùng là UpdateQuantity. 

Sau khi hoàn tất bước xử lý ở server chúng ta cần khai báo sự kiện khi click Thêm vào giỏ hàng ở dưới client. Click chọn file View/Home/Index.cshtml trong Sollution Explorer, tiếp theo thêm thuộc tính onclick vào tag a "Thêm vào giỏ hàng".




Sau đó khai báo javascript để xử lý sự kiện khi click Thêm vào giỏ hàng. Trong file Index.cshtml thêm đoạn script sau vào đầu trang. 

Nhấn Ctrl + S để save lại project và nhấn F5 để chạy thử, sau khi click vào nút Thêm vào giỏ hàng ta sẽ thấy trình duyệt thông báo kết quả đã thêm thành công hay không.



Sau khi đã thêm sản phẩm vào giỏ hàng thành công, tiếp theo chúng ta sẽ cần xem và cập nhật, xóa những sản phẩm trong giỏ hàng.
Trong file ShoppingCartController, tìm đến action Inde, click chuột phải và chọn, Add View để tạo trang giỏ hàng. 
 Sau khi hiện ra cửa sổ mới nhấn OK.Khai báo script để xóa và cập nhật số lượng sản phẩm trong giỏ hàng. 
Tiếp theo thêm HTML hiển thị giỏ hàng vào bên dưới file Index.cshtml
Để link đến trang giỏ hàng từ trang chủ, chọn file View/Shared/_Layout.cshtml 
Sau đó thêm link vào như hình dưới
Thêm link đến giỏ hàng vào cuối đoạn text có sẵn. Sau đó nhấn F5 chạy thử, click Thêm vào giỏ hàng và sau đó click đến link giỏ hàng phía trên cùng bên tay phải ta được kết quả sau.
Vậy là chúng ta đã hoàn thành xong giỏ hàng. Các bạn có thể tải source demo tại đây. 


hướng dẫn xử lý form WordPress: Tạo và xử lý trang đăng nhập

Với mục đích chính của blog của mình ngay từ đầu tạo ra là để ghi nhớ lại những gì mà mình đã làm liên quan tới WordPress và cũng để chia sẻ tới tất cả các bạn quan tâm đến chủ đề mình viết do vậy trong lần này mình sẽ tập chung vào việc hướng dẫn các bạn học wordpress làm thế nào tạo một form đăng ký, đăng nhập, reset, lost password và bên trong đó là cách xử lý với các form đó nữa. 
wordpress-login-screen
  Form đăng nhập mặc định của wp

Đúng ,  Wordpress đã có gần như tất cả những cái mặc định cho người dùng cần rồi tuy nhiên với những theme chuyên biệt bạn cần phải tạo ra một form đăng nhập cho user của mình vào website chẳng hạn mà không bằng trang đăng nhập mặc định: wp-admin. Khi đó, Bạn sẽ bắt đầu giống mình, sẽ đi tìm cách giải quyết bài toán đó.  Một điều nữa đó là chúng ta nên hạn chế cho user sử dụng các chức năng mặc định của WordPress càng tốt, điều đó sẽ đảm bảo tính bảo mật cho bạn vì WordPress là một trong những mã nguồn mở bị hacker tấn công nhiều nhất.
Với bài hôm nay thì mình sẽ khai trương series bằng form ĐĂNG NHẬP.

Tạo form đăng nhập:

Bước đầu tiên chúng ta cần phải đăng ký một page đăng nhập dưới dạng việc tạo ra một  một page template với tên: template-login.php. Trong Page này mình đưa luôn cấu trúc các đoạn cho dễ hình dung
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
/*
* Template Name: <span class="q7oyxp" id="q7oyxp_9" style="font-weight: bold; height: 13px;">Login Page</span>
*/
?>
// Kiểm tra điều kiện login
<?php
if ( ! is_user_logged_in() ) :
   // Thông báo các pần lỗi khi thao tác với form
   // Form login
else:
  // Đưa thông báo nội dung khi chưa login
?>
Với cấu trúc trên thì chúng ta sẽ thực hiện các công việc kiểm tra điều kiện người dùng đã đăng nhập hay chưa bằng hàm is_user_logged_in()  , khi mà người dùng đã đăng nhập rồi thì chúng ta sẽ đưa ra thông báo việc đăng nhập là vô nghĩa :v.  Còn nếu như người dùng chưa đăng nhập thì chúng ta sẽ đi tới bước cho phép họ nhập các thông tin đăng nhập bao gồm tên truy cập và email của họ.
Lưu ý: Việc tạo ra form đăng nhập này thì WordPress cũng có một hàm giúp chúng ta tạo ra form đăng nhập một cách nhanh nhất dựa vào kế thừa các thành phần từ  form đăng nhập gốc với hàm: wp_login_form().  Ưu điểm của cách này là nhanh chóng và dễ dàng cho các bạn  nhưng nhược điểm của nó mà mình thấy chưa hợp lý đó chính là việc kiểm tra điều kiện đăng nhập của nó đang còn kế thừa từ form gốc do vậy khi bạn đăng nhập lỗi thì lập tức nó sẽ tự redirect sang form đăng nhập gốc, mà điều đó thì ngay từ ban đầu mình cần hạn chế rồi

Code phần chính trong form login

Đoạn code này bạn sẽ chèn vào trong phần :  // Form login bên trong cấu trúc ở trên . Bên trong phần này chúng ta sẽ có 2 phần chính phải làm đó là:
1. Viết html , cụ thể là form login với các input liên quan
2. Hàm kiểm tra điều kiện nhập vào trong form
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
?>
<div class="form-box realty-box clearfix"></pre>
<h1 class="box-title"><<span class="q7oyxp" id="q7oyxp_11" style="font-weight: bold; height: 13px;">span style</span>="text-align: center;"><?php the_title()?></span></h1>
 <form method="post" action="<?php the_<span class="q7oyxp" id="q7oyxp_6" style="font-weight: bold; height: 13px;">permalink</span>(); ?>" class="realty-wrap" name="loginform-custom">
 
 <p class="login-username">
 <label for="user_login"><?php _e( 'Tên truy cập', 'fitrealty' ); ?></label>
 <input type="text" size="20" value="" class="input" id="user_login" name="log">
 </p>
 <p class="login-password">
 <label for="user_pass"><?php _e( 'Mật khẩu', 'fitrealty' ); ?></label>
 <input type="password" size="20" value="" class="input" id="user_pass" name="pwd">
 </p>
 
 <p class="login-remember"><label><input type="checkbox" value="forever" id="rememberme" name="rememberme"><?php _e( 'Tự động đăng nhập lần sau', 'fitrealty' ) ?></label></p>
 <p class="login-submit">
 <input type="submit" value="<?php _e( 'Đăng nhập', 'fitrealty' ) ?>" class="button-primary" id="wp-submit" name="wp-submit">
 <input type="hidden" value="login" name="action">
 </p>
 
 </form>
 </div>
 <?php
 printf( '<div class="register-losspass"><a title="%s" href="%s">%s</a> | <a title="%s" href="%s">%s</a></div>',
__( 'Đăng ký tài khoản', 'fitrealty' ),
home_url() . 'dang-ky',
__( 'Đăng ký tài khoản', 'fitrealty' ),
__( 'Quên mật khẩu.', 'fitrealty' ),
 home_url() . '/quen-mat-khau',
__( 'Quên mật khẩu ?', 'fitrealty' )
 );
 ?>
Với dòng code trên thì giao diện và các field sẽ tương tự với form gốc. Như vậy đã xong phần viết html và các field trong form login. Tiếp đến chúng ta sẽ xử lý việc các thông tin nhập vào của user như: các thông tin không được để trống, kiểm tra user tồn tại hay không, email tồn tại hay không. Việc kiểm tra các thông tin trên thì sẽ có 2 hướng giải quyết mà mình hay dùng nhất đó là dùng php để xử lý trực tiếp ( Cách này các bạn sẽ thấy trong bài này ) và cách thứ 2 đó là sẽ dùng jquery để xứ lý với jquery khá nổi tiếng của Jquery UI: Jquery Validation ( Với jquery này thì  sẽ có ngay bài hướng dẫn ở bài sau với các form khác ).

Code xử lý thông tin form

Toàn bộ đoạn code này bạn có thể nhúng vào file function.php  hoặc là 1 file riêng biệt nào đó mà được include từ từ function ( với cách include này thì nên khuyên bạn xử dụng bởi sau này sẽ rất tiện lợi cho mọi người quản lý theme của mình nếu nó to dần lên ).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
add_action( 'template_redirect', 'fitrealty_login' );
 
function fitrealty_login()
{
    if ( ! is_page_template( 'template-login.php' ) )
        return;
 
    if ( ! isset( $_POST['action'] ) || 'login' != $_POST['action'] )
        return;
 
    if ( empty( $_POST['log'] ) || empty( $_POST['pwd'] ) )
    {
        $url = add_query_arg( array( 'login' => 'failed' ), get_permalink() );
        wp_redirect( $url );
        exit;
    }
 
    $user = wp_signon();
 
    if ( is_wp_<span class="q7oyxp" id="q7oyxp_4" style="font-weight: bold; height: 13px;">error</span>( $user ) )
    {
        $url = add_query_arg( array( 'login' => 'failed' ), get_permalink() );
        wp_redirect( $url );
        exit;
    }
 
    wp_redirect( home_url() );
    exit;
}
Giải thích code: 
Với dòng code trên sẽ thực thi các nhiệm vụ chính:
+   Kiểm tra điều kiện hàm sẽ được thực thi khi trong template login:
is_page_template( 'template-login.php' )
+ Kiểm tra các trường user, pasword có rỗng hay không, nếu lỗi sẽ redirect sang một link thông báo lỗi với kiểu gửi GET
empty( $_POST['log'] ) || empty( $_POST['pwd'] )
+ Thực hiện đăng nhập nếu luôn và chuyển tới trang chủ
wp_redirect( home_url() );
Lưu ý: Bạn sẽ thấy được rằng với hàm trên thì sẽ không đưa ra thông báo lỗi luôn mà kiểm tra các thông báo lỗi gửi dạng GET, toàn bộ phần thông báo mình sẽ thực hiện ở bước dưới dựa vào biết GET được gửi đi có failed hay không ?

Code xử lý thông báo tới user

Nếu như user nhấn nút Đăng nhập thì toàn bộ dòng code trên sẽ thực hiện và trả về link trang chủ nếu đăng nhập thành công và đăng nhập luôn cho người dùng còn ngược lại thì sẽ trả về 1 link lỗi với định dạng thế này:
                                   http://tenwebsite.com?login=failed
Đây là cách xử lý với phương thức GET quen thuộc của chúng ta. Dòng code dưới đây bạn sẽ điền vào phần : // Thông báo các pần lỗi khi thao tác với form  trong cấu trúc file ở phần trên đầu.
1
2
3
4
5
6
7
8
<?php
if( isset( $_GET['login'] ) && $_GET['login'] == 'failed' )
{
    printf( '<div class="alert error"><p><strong>%s</strong>: %s</p></div>',
     __( 'Đăng nhập thất bại', 'fitrealty' ),
     __( 'Tên truy cập hoặc mật khẩu không chính xác. ', 'fitrealty' )
    );
}
Như vậy là việc còn lại của các bạn sẽ là style cho form đăng nhập này sao cho hợp lý và đẹp mắt thôi.  Đây là toàn bộ thành quả sau khi làm được
login