Monthly Archives: November 2012
[D.I.Y] มาดัดแปลง module blocknewproducts ให้แสดงผลในตำแหน่ง home กัน
Module blocknewproducts ปกติจะมีการแสดงผลทางด้านซ้ายและขวาเท่านั้น แต่ถ้าเราอยากจะให้แสดงผลตรงกลางเหมือนกับ module homefeatured เราจะต้องทำยังไงบ้าง มาลองทำกันดู
สิ่งที่ต้องเตรียมมีดังนี้
- Text editor อะไรก็ได้แล้วแต่ถนัด
- Module blocknewproducts.php เป็นส่วนที่เราจะแก้ไข
- Tpl ของ module homefeatured (homefeatured.tpl) เอาไว้เป็นแม่แบบ
มาเริ่มกันเลยดีกว่า
- ให้ทำการ copy ไฟล์ homefeatured.tpl ไปยัง
modules/blocknewproducts แล้วเปลี่ยนชื่อเป็น blockhomenewproducts.tpl จะใช้ชื่ออื่นต่างจากนี้ก็ได้นะครับ
- เปิด blocknewproducts.php ด้วย Text editor ที่เตรียมไว้จากนั้นเราจะค่อยเพิ่ม php code ลงไปทีละจุดเริ่มจาก
public function install()
ให้แทรกชุดคำสั่ง
!$this->registerHook('displayHome')
ต่อมาที่ให้เพิ่ม code ตามด้านล่างนี้ ดูภาพด้านล่างประกอบ
public function hookDisplayHome($params)
{
$newProducts = Product::getNewProducts((int)($params['cookie']->id_lang), 0,
(int)(Configuration::get('NEW_PRODUCTS_NBR')));
if (!$newProducts && !Configuration::get('PS_BLOCK_NEWPRODUCTS_DISPLAY'))
return;
$this->smarty->assign(array(
'products' => $newProducts,
'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
'homeSize' => Image::getSize('home_default'),
));
return $this->display(__FILE__, 'blockhomenewproducts.tpl');
}

ต่อมาเรามาแก้ไขในส่วนของ blockhomenewproducts.tpl เพื่อให้รองรับการแปลภาษาสำหรับ module blocknewproducts นะครับ อย่าได้ช้าลงมือกันต่อ เปิดไฟล์ แล้วค้นหาคำว่า
mod='homefeatured'
จากนั้นให้แก้ไขเป็น
mod='blocknewproducts'
เป็นอันเสร็จสำหรับส่วนนี้ แต่ถ้าใครอยากจะเปลี่ยนคำไหนเป็นอะไรก็ตามสะดวกเลยครับ ยกตัวอย่างสักตัว เช่น
{l s='Featured products' mod='homefeatured'}
ก็เปลี่ยนเป็น
{l s='New products' mod='blocknewproducts'}
s='New products' คือส่วนของคำที่เราจะเอาไปแสดงและแปลเป็นภาษาอื่น ๆ นะครับ
จบในส่วนที่จำเป็นต้องแก้ไขแล้ว เราก็มาต่อในส่วนของ Backoffice กันเลย สิ่งที่เราจะต้องทำหลังจากนี้คือ
- reset module หรือ uninstall และ install ใหม่
- แปลภาษาเพิ่มเติมสำหรับ tpl ที่เพิ่มเข้าไปใหม่
ผลสำเร็จจะเป็นตามภาพด้านล่างนี้ครับ
จบ. กันง่าย ๆ แบบนี้แหละ ^^ ถ้าเขียนไม่เข้าใจยังไงถามได้นะครับ
*** เนื้อหาการดัดแปลงจะอ้างอิงกับ Module ใน PrestaShop 1.5 นะครับ สามารถนำไปประยุกต์กับ 1.4 ได้เหมือนกัน