ถามตอบ ปัญหาการพัฒนา Extension ไม่ว่าจะเป็น Module plugin Component หรือ แม้แต่ template การปรับแต่งโค้ด Joomla ต่างๆ ทุกเวอร์ชั่น 1.5 2.5 หรือ 3.x
Moderator: mindphp , ผู้ดูแลกระดาน
jamepiyawat
PHP VIP Members
โพสต์: 2008 ลงทะเบียนเมื่อ: 21/05/2019 10:45 am
โพสต์ที่ยังไม่ได้อ่าน
โดย jamepiyawat » 13/07/2019 5:21 pm
ผมได้ทำการเชื่อม 2 ตารางแล้วแต่ทั้ง 2 ตารางมีฟิว name_en-GB และ name_th-TH เหมือนกันทั้ง 2 ตารางผมจึงกำหนัดให้ใช้ฟิวของตารางแรกซึงผมสามารถดึงค่าฟิว name_en-GB ออกมาใช้ได้แล้วแต่ยังไม่สามารถดึงฟิว name_th-TH ในตารางแรกออกมาใช้ได้เพราะไม่ทราบว่าจะต้องใส่ยังไง
อยากทราบวิธีที่สามารถเรียกใช้ฟิวทั้ง name_en-GB และ ฟิว name_th-TH ในตารางแรกออกมายังไงครับ
โค้ดที่เชื่อม 2 ตารางและสามารถดึงฟิว name_en-GB ออกมาได้แล้ว ครับ
โค้ด: เลือกทั้งหมด
$db = joomla\CMS\Factory::getDbo();
$query = $db->getQuery(true)
->select($db->qn('a.name_en-GB').',a.product_id,a.image,b.category_id')
->from('#__mzc_products AS a')
->leftJoin('#__mzc_products_to_categories As b ON a.product_id=b.product_id')
->order('RAND()','product_id');
$db->setQuery($query,0,4);
$items = $db->loadAssocList();
tsukasaz
PHP VIP Members
โพสต์: 22120 ลงทะเบียนเมื่อ: 18/04/2012 9:39 am
โพสต์ที่ยังไม่ได้อ่าน
โดย tsukasaz » 15/07/2019 2:32 am
ประกาศตัวแปรมา แล้วเรียกใช้คำสั่งเช็คภาษาที่เปิดอยู่
โค้ด: เลือกทั้งหมด
$lang_tag = \Joomla\CMS\Factory::getLanguage()->getTag();
ค่าในตัวแปร $lang_tag จะเป็นตัวย่อของภาษาที่ใช้งานตอนนั้น เช่น เปิดหน้าเว็บ joomla ภาษาอังกฤษอยู่ มันจะมีค่าเป็น en-GB
ถ้าเปิดหน้าภาษาไทย จะมีค่าเป็น th-TH แล้วก็เอามาต่อ String กับคำว่า name_ ก็จะได้ชื่อ name_en-GB หรือ name_th-TH แล้ว
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995 )
jamepiyawat
PHP VIP Members
โพสต์: 2008 ลงทะเบียนเมื่อ: 21/05/2019 10:45 am
โพสต์ที่ยังไม่ได้อ่าน
โดย jamepiyawat » 15/07/2019 11:24 am
ทำได้แล้วครับ แต่ว่าผมเลือกฟิว name_th-TH ออกมาใช้งานไม่ได้ครับ
ทำยังไงถึงจะselect ฟิว name_th-TH ออกมาใช้ได้ถูกต้องครับ
ถ้า select ฟิว name_th-TH ออกมาแบบนี้
โค้ด: เลือกทั้งหมด
->select($db->qn('a.name_en-GB'),('a.name_th-TH').',a.product_id,a.image,b.category_id')
มันก็ออกมาเป็นแบบนี้เลยครับ
หน้าภาษาอังกฤษ
Selection_999(004).png (5.22 KiB) Viewed 744 times
หน้าภาษาไทย
Selection_999(005).png (8.78 KiB) Viewed 744 times
tsukasaz
PHP VIP Members
โพสต์: 22120 ลงทะเบียนเมื่อ: 18/04/2012 9:39 am
โพสต์ที่ยังไม่ได้อ่าน
โดย tsukasaz » 15/07/2019 11:46 am
อันนั้นมันคือการ select ชื่อของทุกภาษาออกมาหรือเปล่า แบบนี้ถ้าไม่ได้ติดตั้งภาษาไทย แล้วไปเรียก name_th-TH มันจะ error นะครับ
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995 )
jamepiyawat
PHP VIP Members
โพสต์: 2008 ลงทะเบียนเมื่อ: 21/05/2019 10:45 am
โพสต์ที่ยังไม่ได้อ่าน
โดย jamepiyawat » 15/07/2019 2:37 pm
แบบว่าผม select แบบนี้
โค้ด: เลือกทั้งหมด
->select($db->qn('a.name_en-GB').',a.product_id,a.image,b.category_id')
แล้วมันสามารถขึ้นชื่อสินค้าที่อยู่ในฟิล a.name_en-GB ได้แต่ว่าพอเปลี่ยนเว็บเป็นภาษาไทยแล้วไม่มีการแสดงชื่อสินค้าออกมาให้เห็นเลยอะครับ
ผมควรจะทำอย่างไรให้มีชื่อสินค้าภาษาไทยตอนเปลี่ยนเว็บเป็นภาษาไทย ครับ
ปลี่ยนเว็บเป็นภาษาอังกฤษ
Selection_999(006).png (48.67 KiB) Viewed 733 times
เปลี่ยนเว็บเป็นภาษาไทย
Selection_999(007).png (42.43 KiB) Viewed 733 times
ติดตั้งภาษาไทยเรียบร้อยแล้วครับ
Selection_999(008).png (22.04 KiB) Viewed 733 times
tsukasaz
PHP VIP Members
โพสต์: 22120 ลงทะเบียนเมื่อ: 18/04/2012 9:39 am
โพสต์ที่ยังไม่ได้อ่าน
โดย tsukasaz » 15/07/2019 5:08 pm
tsukasaz เขียน: ประกาศตัวแปรมา แล้วเรียกใช้คำสั่งเช็คภาษาที่เปิดอยู่
โค้ด: เลือกทั้งหมด
$lang_tag = \Joomla\CMS\Factory::getLanguage()->getTag();
ค่าในตัวแปร $lang_tag จะเป็นตัวย่อของภาษาที่ใช้งานตอนนั้น เช่น เปิดหน้าเว็บ joomla ภาษาอังกฤษอยู่ มันจะมีค่าเป็น en-GB
ถ้าเปิดหน้าภาษาไทย จะมีค่าเป็น th-TH แล้วก็เอามาต่อ String กับคำว่า name_ ก็จะได้ชื่อ name_en-GB หรือ name_th-TH แล้ว
ค่าที่อยู่ใน $db->qn('a.name_en-GB') มันต้องเปลี่ยนไปตามภาษาของหน้าเว็บครับ
ตรง 'a.name_en-GB' มันคือ String เราต้องทำให้มันเปลี่ยนตามภาษา โดยใช้ตัวแปรที่อ่านจากภาษา ในตัวอย่างใช้ $lang_tag
เวลาเขียนเชื่อมก็ให้มันได้ 'a.name_'. $lang_tag มันก็จะ select ตามภาษาแล้ว
ตอนแสดงผลในไฟล์ default.php ก็ใช้หลักการเดียวกันก็ได้ หรือ ตอน select จะใช้ AS กำหนดชื่อให้มันเป็นชื่อเดียวก็ได้
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995 )
jamepiyawat
PHP VIP Members
โพสต์: 2008 ลงทะเบียนเมื่อ: 21/05/2019 10:45 am
โพสต์ที่ยังไม่ได้อ่าน
โดย jamepiyawat » 19/07/2019 11:52 am
ทำได้แล้วครับให้ใส้โค้ดนี้ในหน้า select ด้วย
โค้ด: เลือกทั้งหมด
$lang_tag = \Joomla\CMS\Factory::getLanguage()->getTag();
เพื่อเป็นการทำให้ตัวแปล $lang_tag เก็บ en-GB หรือ th-TH ตามที่เราเปลี่ยนภาษา
ต่อจากนั้นก็จะเป็นการ select ฟิว name_th-TH หรือ ฟิว name_en-GB ตามที่หน้าเว็บของเราจะเป็นภาษาอะไร แบบนี้
โค้ด: เลือกทั้งหมด
->select($db->qn('a.name_'.$lang_tag).',a.product_id,a.image,b.category_id')
tsukasaz
PHP VIP Members
โพสต์: 22120 ลงทะเบียนเมื่อ: 18/04/2012 9:39 am
โพสต์ที่ยังไม่ได้อ่าน
โดย tsukasaz » 19/07/2019 12:39 pm
เยี่ยมครับ แล้วเวลาเรียกใช้ทำยังไงครับ
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995 )
สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 109