drupal6: ทดลองใช้งานมอดูล geshifilter

ขั้นตอนตั้งแต่ติดตั้งคือ
  1. ดาวน์โหลดมอดูล GeSHi Filter
    สำหรับรุ่น 6-rc2 คือ [code language="bash"]$ cd sites/all/modules
    $ wget http://ftp.drupal.org/files/projects/geshifilter-6.x-1.0-rc2.tar.gz
    $ tar cfz geshifilter-6.x-1.0-rc2.tar.gz[/code]
  2. ดาวน์โหลดไลบรารี GeSHi (Generic Syntax Highlighter) มาไว้ในไดเรกทอรี่ geshi
    [code language="bash"]$ cd geshifilter/geshi
    $ wget http://nchc.dl.sourceforge.net/sourceforge/geshi/GeSHi-1.0.7.20.tar.bz2
    $ tar cfj GeSHi-1.0.7.20.tar.bz2[/code]
  3. เปิดใช้มอดูลจาก URL: admin/builds/modules
  4. เปิดการอนุญาตจาก URL: admin/user/permissions
  5. ตั้งค่าการใช้งาน URL: admin/settings/geshifilter
    เพื่อให้กระทบต่อการแสดงผลของธีมให้น้อยที่สุด เลือกเปลี่ยนแปลงสามตัวคือ
    • Generic syntax highlighting tags: เพิ่มแท็ก <pre>
    • Tag style: เลือก [foo] (ลดข้อจำกัดการแสดงผล HTML)
    • Code container: เลือกใช้ Use <div> container (enables automatic line wrapping)
    ส่วนภาษา สามารถเพิ่มลดได้จากแท็บ Languages
  6. ตรงนี้สำคัญนิดนึง คือ Input Format ต้องเข้าไปเปิดให้ใช้งาน GeSHi ด้วย จาก URL: admin/settings/filters จะใช้ตัวไหนบ้าง ก็ต้องเข้าไปเปิดในทุก ๆ ตัว
  7. เวลาสร้างเนื้อหา จะใช้รูปแบบคือ
    [pre language="php"] ...CONTENT...
    ...CODE...
    
    [/pre] ตัวจริงให้เปลี่ยนจาก < เป็น [
  8. เสร็จแล้ว วิธีนี้น่าจะกระทบต่อธีมน้อยที่สุด ทดลองใช้งานดูสักระยะนึง อ้างอิง
Topic: 

drupal6: ปรับปรุงการใช้งานมอดูล geshifilter

โพสต์นี้ อย่าเชื่อมาก เป็นแค่การทดลองเท่านั้น พบว่ามอดูล geshifilter เขาแปลงรหัส entity ให้โดยอัตโนมัติ
ทำให้การโพสต์เนื้อความ ไม่ยืดหยุ่นเท่าที่ควร
เที่ยวนี้เราจะตั้งค่าใหม่ ให้การใช้งานมีความยืดหยุ่นสูงสุด
  • ตั้งค่าการใช้งาน geshifilter ผ่าน URL: admin/settings/geshifilter
    • Generic syntax highlighting tags: เพิ่มแท็ก pre
    • Code container: เลือก Use <div> container
  • แก้มอดูลเล็กน้อย เพื่อยกเลิกการแปลง entities อัตโนมัติ
    $ vi sites/all/modules/geshifilter/geshifilter.pages.inc เพิ่มการ decode สองครั้ง (โดยเพิ่มบรรทัดที่เป็นตัวหนา)
    :129
    ...
      $source_code = decode_entities($source_code);
      $source_code = decode_entities($source_code);
    ...
    
เสร็จแล้ว เสร็จแล้ว แต่ยังงง ๆ กับผลลัพธ์อยู่ รอดูอีกสักพัก เริ่มเข้าใจแล้ว
แท็กที่เราจะทำพิเศษเพิ่มในบล๊อกของโค๊ด ไม่สามารถทำได้ เพราะ GeSHi จะแปลงเป็น entities ทั้งหมด
ต้องหาทางอื่นในการเน้นประโยคแทน เช่นทำบรรทัดคอมเมนต์เป็นต้น
เช่น
...
  $source_code = decode_entities($source_code);
  $source_code = decode_entities($source_code);  //ADD THIS LINE
...
ตัวอย่างข้างต้น ต้องกรอกในฟอร์มว่า
<div class="geshifilter">
<pre language="drupal6">
...
  $source_code = decode_entities($source_code);
  $source_code = decode_entities($source_code);  //ADD THIS LINE
...
</pre>
</div>
มอดูลนี้ใหญ่และซับซ้อนมาก แฮ็กไม่ไหว เอาเท่าที่ได้แล้วกันครับ update
ลองใช้งาน geshifilter แล้วมันทำให้โค๊ดในงานเก่าดูเพี้ยนไปหมด ทางแก้คือสร้าง Input format ใหม่ ผ่าน admin/settings/filters
ตั้งให้สามารถใช้งาน GeSHi ได้ (โดยยกเลิกการใช้งาน GeSHi กับ Input Format อันเก่า เพื่อให้ไม่ต้องตามไปแก้งานเก่า)
ตั้งชื่อว่า GeSHi Filtered HTML
สำหรับงานใหม่ที่จะต้องการใช้ Syntax Highlight ก็ค่อยมาเลือกใช้ Input format แบบนี้
Topic: