มาขอไอเดียเรื่องแสดงโค้ดเฉพาะสมาชิกครับ
วันนี้แว่บมาขอคำแนะนำจากอาจารย์อีกที
พอดีตอนนี้ผมใช้ syntaxhighlighter2 ในการแสดงโค้ดต่างๆ ครับ
http://www.narongrit.net/knowledge-add-module-syntaxhighlighter-for-FCKeditor.html
โดยก่อนหน้าที่ผมจะใช้ตัวนี้ ผมใช้ function ในการกำหนดให้แสดงเฉพาะสมาชิก โดยของเดิมมันเป็น bbcode ครับ
ก็เลยพอจะควบคุมฟังก์ชันนี้ได้
แต่ตอนนี้อยากจะควบคุมการแสดงการแสดงของ syntax นี้ว่าใ้ห้เฉพาะสมาชิกที่ล้อกอินจึงจะเห็นโค้ดได้ คล้ายๆ ของเว็บอาจารย์นี่แหละครับ
อาจารย์พอจะให้คำแนะนำได้ไหม ว่ามันมีวิธีการกำหนดได้หรือเปล่าถ้ายังใช้ syntax ตัวนี้
ขอบคุณล่วงหน้าค้าบ
งมมาหลายวันละ ยังไม่ปิ้งไอเดียเสียที
พอดีตอนนี้ผมใช้ syntaxhighlighter2 ในการแสดงโค้ดต่างๆ ครับ
http://www.narongrit.net/knowledge-add-module-syntaxhighlighter-for-FCKeditor.html
โดยก่อนหน้าที่ผมจะใช้ตัวนี้ ผมใช้ function ในการกำหนดให้แสดงเฉพาะสมาชิก โดยของเดิมมันเป็น bbcode ครับ
ก็เลยพอจะควบคุมฟังก์ชันนี้ได้
แต่ตอนนี้อยากจะควบคุมการแสดงการแสดงของ syntax นี้ว่าใ้ห้เฉพาะสมาชิกที่ล้อกอินจึงจะเห็นโค้ดได้ คล้ายๆ ของเว็บอาจารย์นี่แหละครับ
อาจารย์พอจะให้คำแนะนำได้ไหม ว่ามันมีวิธีการกำหนดได้หรือเปล่าถ้ายังใช้ syntax ตัวนี้
ขอบคุณล่วงหน้าค้าบ
งมมาหลายวันละ ยังไม่ปิ้งไอเดียเสียที
ไม่เคยใช้เหมือนกันไอ้พวก highlighter พวกนี้
เป็นปัญหาหญ้าปากคอก แท้ๆ...
ไอเดียง่ายๆเลยก็แค่กลับไปใช้ BBCode ตามเดิมแหละ แล้วก็ทำเหมือนกับที่เคยทำมา มันจะต่างจาก BBcode ปกติก็แค่เราไม่จำเป็นต้องใส่ style ให้กับ BBCode เท่านั้น ซึ่งก็จะทำให้ข้อความมันถูกแสดงเหมือนไม่มีอะไรเปลี่ยนแปลง ที่เหลือ highlighter ก็จะจัดการต่อเอง
ในกรณีที่ไม่ใช่สมาชิกก็ให้ BBCode ซ่อนข้อความไป เท่านั้น...
เลยตัดสินใจใช้เฉพาะ html ไปเลย
ปัญหาที่ผมเจอ เมื่อใช้ BBcode กับ html ร่วมกันถ้าใช้ FCKeditor น่ะครับ คือเวลา enter แล้ว ตอนพิมพ์ก็ห่างปกติ แต่พอแสดงผล บรรทัดที่ enter นั้นมันห่างแบบ double เลย
เคยไปไล่ๆ ดูโค้ด FCK เหมือนกัน มันก็มีฟังก์ชันที่แสดง BBcode ร่วมกับ html ธรรมดาได้ แต่ก็ยังงงๆ อยู่ดี
สงสัย ผมยังไม่แตกฉานเรื่องโค้ด หุๆๆ
ขออาจารย์เกริ่นซักนิดแบบว่าใช้ BBcode ร่วมกับ html นี้ว่า ในส่วนของโค้ดแสดงผลนั้นมี trick อะไรอีกหรือเปล่าค้าบ
[ c o d e ] ..... [ / c o d e ]
จะถูกแปลงเป็น <div>.....</div> ตอนแสดงผล ซึ่งจะไม่มีอะไรเกี่ยวข้องกับ highlighter เลย แค่ div ธรรมดา ไม่มี style
ถ้าไม่ได้ login ก็ให้ขอความภายใน div เป็นข้อความแจ้งเตือน ซึ่ง highlighter จะไม่ทำงานอัตโนมัติ
ถ้า login ก็แสดงโค้ด highlighter ก็จะทำงานเองแหละ
ได้ผลยังไงเดี๋ยวมารายงานค้าบ
preg_replace_callback
<br /> เห็นไหมเอย ???';<?php
/**
* @author Marosdee
* @copyright 2009
*/
// ถ้าสมาชิก ให้ลองใส่ 1
$member = 0;
$text = '555555555 <br /> อันนี้โค้ดนะ <br />[code]<?php echo "Hello World"; ?>
$text = preg_replace_callback('#\[code\](.+?)\[\/code\]#is', 'memberonly', $text);
function memberonly($match)
{
global $member;
if ( $member == 0 )
{
$match[1] = 'เฉพาะสมาชิกเท่านั้น';
}
return $match[1];
}
echo $text;
?>
[/code]
ผมทำแบบนี้อะ
preg_replace_callback
<?php
/**
* @author Marosdee
* @copyright 2009
*/
// ถ้าสมาชิก ให้ลองใส่ 1
$member = 0;
$text = '555555555 <br /> อันนี้โค้ดนะ <br />[phptag]<?php echo "Hello World"; ?>[/phptag]<br /> เห็นไหมเอย ???';
$text = preg_replace_callback('#\[phptag\](.+?)\[\/phptag\]#is', 'memberonly', $text);
function memberonly($match)
{
global $member;
if ( $member == 0 )
{
$match[0] = 'เฉพาะสมาชิกเท่านั้น';
}
return $match[0];
}
echo $text;
?>
ศึกษาดีๆ เกี่ยวกับ preg_replace_callback แล้วจะสนุกมากมาย เอิ้กๆๆ