โดย Alexandru Pruteanu
สองสามเดือนที่ผ่านมา ผมได้เขียนบทความเกี่ยวกับ my Google Summer of Code project ซึ่งมีความตั้งใจเพิ่ม microdata semantics เข้าไปในใน Joomla CMS ตอนนี้เราไปดูความคืบหน้าของโปรเจคนี้กันเลยดีกว่าครับ
ผู้อ่านสามารถหาบทความอื่นๆ ของผมได้จาก Joomla Magazine เกี่ยวกับ Google Summer of Code project ของผมได้ที่ Improve Joomla! Frontend Semantics & Accessibility
หากคุณไม่คุ้นเคยกับไมโครดาต้า วีดีโอนี้สามารถช่วยให้คุณเข้าใจไมโครดาต้าได้ง่ายขึ้น: https://www.14dd5266c70789bdc806364df4586335-gdprlock/watch?v=A-kX0Aut-18
สถานะของโปรเจกต์
โปรเจคประเภทนี้จะต้องมีการวิจัย หาข้อมูลกับ Web Standards และมีการทดลองอย่างต่อเนื่องเพื่อคงความเข้ากันได้กับมาตรฐาน HTML ซึ่ง Microdata Library นั้นจะต้องมีความยืดหยุ่น รวดเร็ว กระทัดรัด และง่ายต่อการที่นักพัฒนา (Developers) จะนำไปใช้งาน ดังนั้นเพื่อที่จะรักษาคุณสมบัติข้างต้นไว้ ตัว Library เองจะต้องมีการออกแบบให้ยืดหยุ่น เพื่อที่จะสามารถมีการเปลี่ยนแปลงในอนาคต
หลังจากการทำวิจัยและการทดลองมาเป็นเดือน Library ได้ถูกรวมเข้ากับ Joomla CMS master branch ซึ่งผู้ใช้สามารถใช้งานได้ในเวอร์ชั่น Joomla 3.2 รุ่นถัดไป และหากคุณเป็นผู้พัฒนา (Developers) คุณสามารถใช้ Library ในการนำไปพัฒนาต่อยอด microdata semantics ใน extensions ของคุณ
สามารถดู Library เพิ่มเติมได้ตามลิงก์นี้: libraries/joomla/microdata
ใช้งาน JMicrodata Library อย่างไร?
เพื่อใช้งาน microdata semantics library ตัวใหม่ คุณจะต้องทำการใส่ตัวอย่าง(instance) เข้าไปยัง library ใน extensions ของคุณ
ตัวอย่าง:
$microdata = new JMicrodata('Article');
สมมติว่าเรามี string ตามนี้:
Written by Alexandru Pruteanu
และเราต้องใส่ Author Property เพิ่ม:
echo 'Written by' . $microdata->content(“Alexandru Pruteanu”)->property('author')->fallback('Person', 'name')->display();
บน library จะแสดงผลตามนี้:
Written by <span itemprop='author' itemscope itemtype='https://schema.org/Person'> <span itemprop='name'> Alexandru Pruteanu </span> </span>
หาก current scope นั้นไม่ใช่ ‘Article’, ยกตัวอย่างเช่น ‘Product’ scope, และตัว current scope นั้นไม่มี author property ผลที่ออกมาจะเป็นอย่างไร?
ซึ่งผลที่ออกมาจะเป็นดังภาพนี้:
<span itemscope itemtype='https://schema.org/Person'> <span itemprop='name'> Alexandru Pruteanu </span> </span>
ถ้าหากเราต้องการยกเลิกการใช้งาน microdata semantics output?
คุณสามารถยกเลิกการใช้งาน microdata output ได้อย่างง่าย:
$microdata->enable(false);
บน library จะแสดงผลตามนี้:
Written by Alexandru Pruteanu
สำหรับข้อมูลเพิ่มเติม สามารถศึกษาเพิ่มเติมได้ที่ Gist: https://gist.github.com/PAlexcom/6339949
หรือติดต่อผมได้เลยครับ, ผมยินดีให้คำตอบทุกประเด็นครับ 😉
การ Implementation ใน Joomla CMS?
บทความด้านล่างต่อไปนี้เป็นแค่คำแนะนำ และเนื้อหาที่ขึ้นด้านล่างนี้ยังไม่ได้ถูกนำไปพัฒนารวมใน official Joomla CMS version และในขณะที่ผมเขียนบทความนี้ ผมก็กำลังทำการพัฒนาใน CMS อยู่ตามที่ได้รับคำขอมา แต่เมื่อมีการเปลี่ยนแปลงใน CMS มากเท่าไร จึงต้องทำการทดลองอย่างต่อเนื่อง
ลิงก์เกี่ยวกับ live site with microdata semantics implemented: Joomla Live Site with Microdata Semantics
Google Rich snippets tool สามารถแยกข้อมูลออกมาได้ดังนี้:
คลิกบนลิงก์นี้เพื่อทดลองดู, (กด refresh หรือกด ‘PREVIEW’ หาก live test ไม่ทำงาน)
สามารถ implement ใน Joomla CMS administration areaได้อย่างไร?
คุณสามารถทำการ เปิดใช้งาน/ปิดการใช้งาน microdata semantics จาก Global Configuration ได้
ตัวอย่างเช่น: Administration → Global Configuration → Site (tab) → SEO Setting
คุณสามารถ เปิดใช้งาน/ปิดการใช้งาน microdata semantics output จาก Article editing options, และเลือก scope
อะไรคือปัญหาที่พบเจอในตอนนี้?
ปัญหาตอนนี้คือคุณไม่สามารถเปลี่ยนจาก Microdata ไปเป็น RFDa หรือ Microformats แม้แต่คำศัพท์ก็ไม่สามารถเปลี่ยนได้ เราจึงต้องหาหนทางเพื่อทำให้มันเป็นไปได้ ในระหว่างที่ผมเขียนบทความนี้ ปัญหาที่พบคือจำเป็นที่จะต้องมีค่า JMicrodata global มิฉะนั้นทุกอย่างจะเกิดความผิดพลาดขึ้น
บทสรุป
สำหรับผมแล้วการได้ร่วมงานกับ Joomla Team/Developers และการได้เป็นส่วนหนึ่งของ Google Summer of Code program นั้นเป็นอะไรที่เยี่ยมมาก และเป็นประสบการณ์ที่น่าสนใจอย่างยิ่ง ผมได้เรียนรู้หลายอย่างมากมาย โดยเฉพาะการดูแล Open Source และการร่วมงานของผู้คนจากหลากหลายประเทศว่ามีวิธีการอย่างไร ถึงแม้ว่าโปรแกรม GSoC จะจบไปแล้วก็ตาม ผมยังอยากจะทำโปรเจคนี้ต่อ และเพิ่ม featureใหม่ๆ เข้าไป หากคุณพบเจอปัญหาบนหน้า Library หรือมีความคิดสร้างสรรค์ใหม่ๆ คุณสามารถบอกผมได้ทันทีเลยครับ และผม Alexandru Pruteanu ยินดีที่จะพูดคุยและร่วมงานกับคุณ 🙂