เลือกฟิว name_th-TH ออกมาใช้ยังไงครับ

ถามตอบ ปัญหาการพัฒนา Extension ไม่ว่าจะเป็น Module plugin Component หรือ แม้แต่ template การปรับแต่งโค้ด Joomla ต่างๆ ทุกเวอร์ชั่น 1.5 2.5 หรือ 3.x

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
jamepiyawat
PHP VIP Members
PHP VIP Members
โพสต์: 2008
ลงทะเบียนเมื่อ: 21/05/2019 10:45 am

เลือกฟิว name_th-TH ออกมาใช้ยังไงครับ

โพสต์ที่ยังไม่ได้อ่าน โดย jamepiyawat »

ผมได้ทำการเชื่อม 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
PHP VIP Members
โพสต์: 21991
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: เลือกฟิว name_th-TH ออกมาใช้ยังไงครับ

โพสต์ที่ยังไม่ได้อ่าน โดย tsukasaz »

ประกาศตัวแปรมา แล้วเรียกใช้คำสั่งเช็คภาษาที่เปิดอยู่

โค้ด: เลือกทั้งหมด

$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
PHP VIP Members
โพสต์: 2008
ลงทะเบียนเมื่อ: 21/05/2019 10:45 am

Re: เลือกฟิว name_th-TH ออกมาใช้ยังไงครับ

โพสต์ที่ยังไม่ได้อ่าน โดย jamepiyawat »

ทำได้แล้วครับ แต่ว่าผมเลือกฟิว 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
Selection_999(004).png (5.22 KiB) Viewed 732 times
หน้าภาษาไทย
Selection_999(005).png
Selection_999(005).png (8.78 KiB) Viewed 732 times
ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 21991
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: เลือกฟิว name_th-TH ออกมาใช้ยังไงครับ

โพสต์ที่ยังไม่ได้อ่าน โดย tsukasaz »

อันนั้นมันคือการ select ชื่อของทุกภาษาออกมาหรือเปล่า แบบนี้ถ้าไม่ได้ติดตั้งภาษาไทย แล้วไปเรียก name_th-TH มันจะ error นะครับ
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)
ภาพประจำตัวสมาชิก
jamepiyawat
PHP VIP Members
PHP VIP Members
โพสต์: 2008
ลงทะเบียนเมื่อ: 21/05/2019 10:45 am

Re: เลือกฟิว name_th-TH ออกมาใช้ยังไงครับ

โพสต์ที่ยังไม่ได้อ่าน โดย jamepiyawat »

แบบว่าผม select แบบนี้

โค้ด: เลือกทั้งหมด

->select($db->qn('a.name_en-GB').',a.product_id,a.image,b.category_id')
แล้วมันสามารถขึ้นชื่อสินค้าที่อยู่ในฟิล a.name_en-GB ได้แต่ว่าพอเปลี่ยนเว็บเป็นภาษาไทยแล้วไม่มีการแสดงชื่อสินค้าออกมาให้เห็นเลยอะครับ

ผมควรจะทำอย่างไรให้มีชื่อสินค้าภาษาไทยตอนเปลี่ยนเว็บเป็นภาษาไทย ครับ

ปลี่ยนเว็บเป็นภาษาอังกฤษ
Selection_999(006).png
Selection_999(006).png (48.67 KiB) Viewed 721 times
เปลี่ยนเว็บเป็นภาษาไทย
Selection_999(007).png
Selection_999(007).png (42.43 KiB) Viewed 721 times
ติดตั้งภาษาไทยเรียบร้อยแล้วครับ
Selection_999(008).png
Selection_999(008).png (22.04 KiB) Viewed 721 times
ภาพประจำตัวสมาชิก
tsukasaz
PHP VIP Members
PHP VIP Members
โพสต์: 21991
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: เลือกฟิว name_th-TH ออกมาใช้ยังไงครับ

โพสต์ที่ยังไม่ได้อ่าน โดย tsukasaz »

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
PHP VIP Members
โพสต์: 2008
ลงทะเบียนเมื่อ: 21/05/2019 10:45 am

Re: เลือกฟิว name_th-TH ออกมาใช้ยังไงครับ

โพสต์ที่ยังไม่ได้อ่าน โดย jamepiyawat »

ทำได้แล้วครับให้ใส้โค้ดนี้ในหน้า 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
PHP VIP Members
โพสต์: 21991
ลงทะเบียนเมื่อ: 18/04/2012 9:39 am

Re: เลือกฟิว name_th-TH ออกมาใช้ยังไงครับ

โพสต์ที่ยังไม่ได้อ่าน โดย tsukasaz »

เยี่ยมครับ แล้วเวลาเรียกใช้ทำยังไงครับ
The last bug isn't fixed until the last user is dead. (Sidney Markowitz, 1995)
ภาพประจำตัวสมาชิก
jamepiyawat
PHP VIP Members
PHP VIP Members
โพสต์: 2008
ลงทะเบียนเมื่อ: 21/05/2019 10:45 am

Re: เลือกฟิว name_th-TH ออกมาใช้ยังไงครับ

โพสต์ที่ยังไม่ได้อ่าน โดย jamepiyawat »

แบบนี้ครับ

โค้ด: เลือกทั้งหมด

<?php echo $product['name_'.$lang_tag]; ?>
ตอบกลับโพส

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 88