A-AA+then

มาขอไอเดียเรื่องแสดงโค้ดเฉพาะสมาชิกครับ

1,563
 วันนี้แว่บมาขอคำแนะนำจากอาจารย์อีกที

พอดีตอนนี้ผมใช้ syntaxhighlighter2 ในการแสดงโค้ดต่างๆ ครับ
http://www.narongrit.net/knowledge-add-module-syntaxhighlighter-for-FCKeditor.html

โดยก่อนหน้าที่ผมจะใช้ตัวนี้ ผมใช้ function ในการกำหนดให้แสดงเฉพาะสมาชิก โดยของเดิมมันเป็น bbcode ครับ
ก็เลยพอจะควบคุมฟังก์ชันนี้ได้

แต่ตอนนี้อยากจะควบคุมการแสดงการแสดงของ syntax นี้ว่าใ้ห้เฉพาะสมาชิกที่ล้อกอินจึงจะเห็นโค้ดได้ คล้ายๆ ของเว็บอาจารย์นี่แหละครับ

อาจารย์พอจะให้คำแนะนำได้ไหม ว่ามันมีวิธีการกำหนดได้หรือเปล่าถ้ายังใช้ syntax ตัวนี้
ขอบคุณล่วงหน้าค้าบ

งมมาหลายวันละ ยังไม่ปิ้งไอเดียเสียที

6 ความคิดเห็น

555+++

ไม่เคยใช้เหมือนกันไอ้พวก highlighter พวกนี้

เป็นปัญหาหญ้าปากคอก แท้ๆ...

ไอเดียง่ายๆเลยก็แค่กลับไปใช้ BBCode ตามเดิมแหละ แล้วก็ทำเหมือนกับที่เคยทำมา มันจะต่างจาก BBcode ปกติก็แค่เราไม่จำเป็นต้องใส่ style ให้กับ BBCode เท่านั้น ซึ่งก็จะทำให้ข้อความมันถูกแสดงเหมือนไม่มีอะไรเปลี่ยนแปลง ที่เหลือ highlighter ก็จะจัดการต่อเอง

ในกรณีที่ไม่ใช่สมาชิกก็ให้ BBCode ซ่อนข้อความไป เท่านั้น...
1

 ง่า พอดีผมเคยลองใช้ BBcode ร่วมกับ html ธรรมดาที่สร้างจาก FCKeditor แล้วมันยังไม่ค่อยเวิร์คน่ะครับ
เลยตัดสินใจใช้เฉพาะ html ไปเลย
ปัญหาที่ผมเจอ เมื่อใช้ BBcode กับ html ร่วมกันถ้าใช้ FCKeditor น่ะครับ คือเวลา enter แล้ว ตอนพิมพ์ก็ห่างปกติ แต่พอแสดงผล บรรทัดที่ enter นั้นมันห่างแบบ double เลย 
เคยไปไล่ๆ ดูโค้ด FCK เหมือนกัน มันก็มีฟังก์ชันที่แสดง BBcode ร่วมกับ html ธรรมดาได้ แต่ก็ยังงงๆ อยู่ดี 
สงสัย ผมยังไม่แตกฉานเรื่องโค้ด หุๆๆ 

ขออาจารย์เกริ่นซักนิดแบบว่าใช้ BBcode ร่วมกับ html นี้ว่า ในส่วนของโค้ดแสดงผลนั้นมี trick อะไรอีกหรือเปล่าค้าบ
2

ไม่มีครับ โค้ดตรงไปตรงมา ตัวอย่างนะ

[ c o d e ] ..... [ / c o d e ]

จะถูกแปลงเป็น <div>.....</div> ตอนแสดงผล ซึ่งจะไม่มีอะไรเกี่ยวข้องกับ highlighter เลย แค่ div ธรรมดา ไม่มี style

ถ้าไม่ได้ login ก็ให้ขอความภายใน div เป็นข้อความแจ้งเตือน ซึ่ง highlighter จะไม่ทำงานอัตโนมัติ

ถ้า login ก็แสดงโค้ด highlighter ก็จะทำงานเองแหละ
3

 อ่าครับ เดี๋ยวจะลองปล้ำกับมันอีกซักที

ได้ผลยังไงเดี๋ยวมารายงานค้าบ
4

ผมทำแบบนี้อะ

preg_replace_callback


<?php

/**
 * @author Marosdee
 * @copyright 2009
 */


// ถ้าสมาชิก ให้ลองใส่ 1
$member = 0;

$text = '555555555 <br /> อันนี้โค้ดนะ <br />[code]&lt;?php echo "Hello World"; ?&gt;
<br /> เห็นไหมเอย ???';

$text = preg_replace_callback('#\[code\](.+?)\[\/code\]#is', 'memberonly', $text);

function memberonly($match)
{
    global $member;
   
    if  ( $member == 0 )
    {
        $match[1] = 'เฉพาะสมาชิกเท่านั้น';
    }   
    return $match[1];
}

echo $text;
?>
5

เอาใหม่นะ มันไปปนกับโค้ดเว้บนี้ 555+

ผมทำแบบนี้อะ

preg_replace_callback


<?php

/**
 * @author Marosdee
 * @copyright 2009
 */


// ถ้าสมาชิก ให้ลองใส่ 1
$member = 0;

$text = '555555555 <br /> อันนี้โค้ดนะ <br />[phptag]&lt;?php echo "Hello World"; ?&gt;[/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 แล้วจะสนุกมากมาย เอิ้กๆๆ
6
^