kkawin โพสต์ 2016-10-15 20:32:54

Discuz X3.2 BBCode Youtube โดยใช้ Java รองรับลิงค์หลายรูปแบบ

โค้ดนี้ผมเขียนเองไม่ได้คัดลอกมาจากที่ใด หากบังเอิญไปซ้ำกับของผู้ใดก็ขออภัยมา ณ. ที่นี้ด้วย
เหตุผลที่เขียนขึ้นมาเพราะแต่เดิมเคยใช้แบบที่ต้องคร๊อบเอาเฉพาะรหัสวีดิโอมาวางซึ่งรู้สึกไม่สะดวกจึงลองเขียนโค้ดขึ้นมาใหม่
ใช้คำสั่งที่รองรับ Browser หลักๆ ทุกตัวทุกเวอร์ชั่น เช่น IE 6-11, Chorme, Firefox, Opera, Safari
รองรับลิงค์จาก Youtube ในรูปแบบต่างๆ เช่น

https://www.youtube.com/watch?v=XXXXXXXXXXX
https://www.youtube.com/watch?v=XXXXXXXXXXX&feature=share
https://www.youtube.com/watch?feature=share&v=XXXXXXXXXXX
https://www.youtube.com/watch?v=XXXXXXXXXXX&list=PLEgNqLmZpLuI9ajUy3Hg97NrpssG4repu

รูปแบบ BBCode

https://www.youtube.com/watch?v=XXXXXXXXXXX
วิธีทำ

หารูป icon สำหรับปุ่ม BBCODE หรือจะโหลดภาพนี้ไปใช้ก็ได้

ตั้งชื่อไฟล์ว่า BB_youtube.png

แล้วอัพโหลดไปวางไว้ที่
../static/image/common/
จากนั้นให้ไปที่ AdminCP -> รูปแบบ -> จัดการเครื่องมือโพสต์ -> โค้ด Discuz!

ทำการเพิ่มแท็กใหม่ให้ชื่อว่า youtube ใส่ชื่อไฟล์ไอคอน BB_youtube.png

คลิกตกลง และเปิดรายละเอียด

แท็ก:
youtubeโค้ด/เนื้อหาที่ต้องการ:
<script type="text/javascript">
var id = '{1}';
var w = 640;
var h = 360;
id = id.substr(id.indexOf("v=") + 2);
var i = id.indexOf("&");
id = (i >= 0 ? id.substr(0, i) : id);
document.write("<iframe width='" + w.toString());
document.write("' height='" + h.toString());
document.write("' src='https://www.youtube.com/embed/" + id);
document.write("' frameborder='0' allowfullscreen></iframe>");
</script>ตัวอย่าง:
https://www.youtube.com/watch?v=XXXXXXXXXXXรายละเอียด:
วางคลิป Youtubeจำนวนช่องที่ให้ใส่ข้อมูล / โค้ด / ID: = 1

กำหนดสิทธิ์ตามต้องการ แล้วคลิกปุ่ม ตกลง เป็นอันเสร็จ

Attachments โพสต์ 2016-10-16 11:51:50

ขอบคุณครับ

pphum โพสต์ 2016-10-17 06:53:09

สุดยอดเลยครับ มีของ line และอื่นๆอีกไหมครับ

jaideejung007 โพสต์ 2016-10-17 17:43:41

เหมือนพินทิปเลย ไม่ต้องเอาไอดีมาวาง แค่วางลิงก์ ก็โพสต์ได้เลย เยี่ยมๆ

แปลงเป็น PHP ด้วยก็ดีนะครับ ตัวกรองโค้ด

ขอบคุณมากจ้า

kkawin โพสต์ 2016-10-18 06:48:12

PHP ต้องสร้างไฟล์แยก แต่ผมลองแล้วจะมีปัญหากับการสั่งลิงค์ที่มีเครื่อง '&' ID วีดีโอจะไม่ถูกส่งไปกับลิงค์

เช่นลิงค์ https://www.youtube.com/watch?feature=share&v=XXXXXXXXXXX

ก็จะไปแค่ https://www.youtube.com/watch?feature=share

ไม่รู้ว่าจะต้องแก้ยังไงถึงจะไปได้หมด


===============

ส่วนวีดีโอจากที่อื่น ถ้าใช้ Java ก็ใช้โค้ดรูปแบบเดิมครับแก้ไขจุดทีใช้หาตำแหน่ง ID
id = id.substr(id.indexOf("v=") + 2);
var i = id.indexOf("&");

กับ HTML ใน document.write ให้เป็นรูปแบบโค้ดฝังคลิปจากเว็บนั้นๆ ครับ

kingkitb โพสต์ 2016-10-19 12:39:10

แก้ไขครั้งสุดท้ายโดย kingkitb เมื่อ 2016-10-19 12:46

jaideejung007 ตอบกลับเมื่อ 2016-10-17 17:43
เหมือนพินทิปเลย ไม่ต้องเอาไอดีมาวาง แค่วางลิงก์ ก็โ ...
/source/function/function_discuzcode.php

preg_match("/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu‌​\.be\/|youtube\.com\‌​/(?:(?:watch)?\?(?:.‌​*&)?v(?:i)?=|(?:embe‌​d|v|vi|user)\/))([^\‌​?#&\"'>]+)/", $url, $matches);
ใช้ $matches
ต้องแก้ตั้งแต่ elseif(strpos($lowerurl, 'www.youtube.com/watch?') !== FALSE) {
ให้เป็น youtube.com กับ youtu.be (เพิ่มมาอีก 1)

birdboom โพสต์ 2016-11-20 10:12:27

เยี่ยมมาก

viwatchai โพสต์ 2016-12-23 14:39:03

ขอบคุณครับ

clubasian โพสต์ 2016-12-30 16:02:54

ขอบคุณมากครับ เยี่ยมจริง ๆ ครับท่าน

Toma_Kung โพสต์ 2017-1-8 10:24:51

ขอบคุณมากๆครับ sm942dzsm942dz
หน้า: [1] 2
ดูในรูปแบบกติ: Discuz X3.2 BBCode Youtube โดยใช้ Java รองรับลิงค์หลายรูปแบบ