Archive

Archive for the ‘Smarty’ Category

Cach xóa smarty cache

Khi làm web, chúng ta thường hay cache trang chủ để trang web đó load được nhanh hơn, nhưng với một số trang web có hệ thống đăng nhập đăng ký thành viên nếu cache trang chủ. khi logout chúng tai phải xóa  cache.

Tại trang logout chúng ta sử dụng

 


smarty->clearCache('index.tpl');
smarty->clear_all_cache();

 

hoặc


// clear a specific template resource
smarty->clear_compiled_tpl('index.tpl');
// clear entire compile directory
smarty->clear_compiled_tpl();

 

Chúc các bạn thành công

 

nhantam
PHP Developer

Smarty đăng ký đối tượng xử lý ở file template engine

Khi bạn muốn gọi một class hoặc phương thức tại file template engine (file.tpl) thì làm như thế nào (Smarty register object for file  template engine) ?

Hiện tại mô hình code chuẩn theo MVC đang rất thịnh hành hầu như áp dụng ở tất cả các ngôn ngữ lập trình, ở đây nhantam sẽ hướng dẫn các bạn cách đăng ký một class php hoặc một phương thức được gọi & xử lý ở file template engine (lớp Viewer trong MVC)

Bạn có một lớp PHP đặt tên class product


class product
{

function slide()
{
//coding lam gi do
}

}

 

Bình thường các bạn sẽ dùng phương thức assign của smarty để khai báo data cho file template engine như:

controller:


$product = new product();
$smarty->assign('slide',  $product->slide() );

Viewer (template engine):


{$slide}

Trong một số trường hợp bạn cần gọi hàm slide ở file template engine thì làm như thế nào ?

controller:


$product = new product();
$regObj = $smarty->getEngine();
$regObj->assign_by_ref('product ',  $product );

 

Viewer (template engine):


{$product->slide()}

 

Chúc các bạn thành công

nhantam
Thiết kế web Panpic Technology

 

 

Cách so sánh ngày năm tháng ngày trong smarty

Ví dụ: chúng ta cần so sánh 2 giá trị ngày như sau

– Ngày hiện
– Ngày cần so sánh (DateCompare)


Cách 1:
{assign var=DateCompare value='2014-01-22'}
{if $smarty.now|date_format:"%Y/%m/%d" > $DateCompare }
Ngày hiện tại lớn hơn ngày cần so sánh (DateCompare)
{/if}

or

Cách 2:
{assign var=toDay value=$smarty.now|date_format:"%Y/%m/%d"}
{if $DateCompare < $toDay}
Ngày hiện tại lớn hơn ngày cần so sánh (DateCompare)
{/if}

Chúc các bạn thành công

nhantam
Panpic Technology
Thiết kế web chạy trên điện thoại smartphone

phép tính toán học trong smarty template engine

Làm thế nào để tính toán trong file template engine (smarty template engine)

Ví dụ tôi có giỏ hàng 2 sản phẩm:

1/ file san_pham.php

$item = array (

1  => array(product_id=>1,  so_luong=2,  don_gia=1000),

2  => array(product_id=>2,  so_luong=1,  don_gia=3000)

)

$this->view->assign(‘items’, $items);

2/ file template engine san_pham.tpl

{foreach from=$items item=val}

{math assign=”gia_sanpham” equation=’x*y’ x=$val.so_luong y=$val.don_gia}

{$gia_sanpham} //ouput 2000, 3000

{/foreach}

Tương tự với các phép toán (công, trừ, chia) các bạn thay tại tham số equation=’x*y’

Chúc các bạn thành công

PHP Developer
nhantam

php convert việt nam đồng

Ví dụ 1:


function product_price($priceFloat) {
$symbol = 'đ';
$symbol_thousand = '.';
$decimal_place = 0;
$price = number_format($priceFloat, $decimal_place, '', $symbol_thousand);
return $price.$symbol;
}

Cách gọi hàm


$priceFloat = 150000.00;
product_price($priceFloat) //output 150.000đ

Ví dụ 2: Việt Smarty plugin currency format vnd

-1 Tạo một file modifier.vnd.php đặt tại folder …/Smarty/libs/plugins/modifier.vnd.php
-2 Nội dung như sau:


/*
* Smarty plugin
*
-------------------------------------------------------------
* File: modifier.vnd.php
* Type: modifier
* Name: vnd
* Version: 1.0
* Date: April 05th, 2012
* Purpose: Format money to VNĐ
* Install: Drop into the plugin directory.
* Author: nhantam
* Translation to PHP & Smarty: nhantam
*
* Exp:
* {$number|vnd:đ}
* {$number|vnd:vnđ}
-------------------------------------------------------------
*/
function smarty_modifier_vnd($number, $symbol='đ') {
while (true) {
$replaced = preg_replace('/(-?\d+)(\d\d\d)/', '$1.$2', $number);
if ($replaced != $number) {
$number = $replaced;
} else {
break;
}
}
if(!empty($symbol)) $number .= $symbol;
return $number;
}

-3 Sử dụng:


{$number|vnd}
{$number|vnd:đ}
{$number|vnd:vnđ}

nhantam
PHP Developer

llighttpd rewrite wordpress blog

Rewrite wordpress blog trên server lighttpd

Bước 1:

# root command line
# cd /etc/lighttpd/
# vi myweb-rewrite.conf //tạo file rewrite riêng cho trang web có tên mà myweb
server.document-root = "/home/www/lighttpd/myweb"
server.error-handler-404 = "/index.php"
index-file.names = ("index.html", "index.php")
url.rewrite-once = (
    "^/(.*/)?files/$" => "/index.php",
    "^/(.*/)?files/(.*)" => "/wp-content/blogs.php?file=$2",
    "^(/wp-admin/.*)" => "$1",
    "^/([_0-9a-zA-Z-]+/)?(wp-.*)" => "/$2",
    "^/([_0-9a-zA-Z-]+/)?(.*\.php)$" => "/$2",
)

// Sau đó lưu lại (save) tạo folder /etc/lighttpd/

Bước 2:

– Mở lihgttpd config

# vi lighttpd.conf
$HTTP["host"] =~ "^(www\.)?myweb.com$" {
    simple-vhost.default-host = "www.myweb.com"
    include "myweb-rewrite.conf"
}

:wq // lưu lại
restart lại lighttpd là OK //service lighttpd restart

Cách chia côt với php smarty template engine

PHP Smarty template engine

Ví dụ: bạn muốn thể hiện một table bao gồm 4 cột và nhiều hàng

vidu.php

$product = array() //9 phần tử
$this->view->assign(‘product’, $product);
$this->view->assign(‘totalArr’,  sizeof($product));
file template engine vidu.tpl
<table border=”0″ cellpadding=”0″ cellspacing=”0″ width=”600″>
{foreach from=$product name=test item=prd}

{if $smarty.foreach.test.iteration mod 4 eq 1}
<tr>
{/if}

<td>
– ten san pham: {$prd.name} <br />
– gia san pham:  {$prd.price}

</td>

{if $smarty.foreach.test.iteration mod 4 eq 0 or $smarty.foreach.test.iteration eq $totalArr}
</tr>
{/if}

{/foreach}
</table>

Ghi chú:

– {if $smarty.foreach.test.iteration mod 4 eq 1}
$smarty.foreach.test.iteration = sẽ lấy giá trị phần tử đầu tiên là 1
$smarty.foreach.test.index = sẽ lấy giá trị đầu tiên là 0.
mod = phép chia
eq = giá trị là phép so sánh bằng của smarty template engine
=> Nếu giá trị chạy mảng product đầu tiên là = 1 thì  xuất ra thẻ (tag) <tr>

– {if $smarty.foreach.test.iteration mod 4 eq 0 or $smarty.foreach.test.iteration eq $totalArr}
Tương tự như trên nếu giá trị chạy mảng product chi cho 4 = 0 hoặc giá trị là giá trị là giá trị cuối cùng của mảng, nghĩa là = $totalArr thì xuất ra thẻ (tag) </tr>

ví dụ mảng trên có 9 phần tử mảng thì sẽ xuất ra 3 dòng 4 cột:

<table width=”600″ height=”221″ border=”1″>
<tr>
<td width=”160″>- ten san pham: AAA <br />
– gia san pham: 10000 đ</td>
<td>…vv</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>