drupal5: สร้างเอกสารภายในและภายนอก
Submitted by wd on Fri, 2008-01-25 13:31
ถ้าเราต้องการให้ผู้อ่านมีสิทธิ์ที่ไม่เท่ากัน โดยให้กำหนดด้วย role
ในการเข้าถึงเอกสารใน node ต่าง ๆ สามารถทำได้โดยใช้มอดูล Taxonomy Access Control Lite ดังนี้
- ติดตั้งมอดูล Taxonomy Access Control Lite
$ cd /var/www/drupal/sites/all/modules
$ wget http://ftp.drupal.org/files/projects/tac_lite-5.x-1.1.tar.gz
$ tar xfz tac_lite-5.x-1.1.tar.gz - เปิดใช้งานผ่าน URL:
admin/build/modules
- สร้าง Vocaburary ใหม่ ด้วย Taxonomy ผ่าน URL:
admin/content/taxonomy
โดยเลือกแท็บAdd vocaburaly
ตั้งชื่อว่าPrivacy
สร้างterms
ชื่อว่าPublic
และPrivate
ตามลำดับ โดยอย่าให้เป็นฟรีแท็กส์ - เปิดให้ admin สามารถใช้งานมอดูลได้ ผ่าน URL:
admin/user/access
- เมื่อสร้างเสร็จจะเกิดเมนูย่อยชื่อ
Access control by taxonomy
ให้เลือก Vocaburary ว่าPrivacy
- เลือกแท็บ
Role based privileges
และเล็อกกำหนดสิทธิ์ให้แต่ละ role ได้ตามต้องการ เช่น anonymous เป็น Public และ authenticated เป็นทั้ง Public และ Private เป็นต้น
เสร็จแล้ว หลังจากนี้ ในขั้นตอนของการสร้างเอกสาร จะมีที่เลือก Privacy
ในหัวข้อ Categories ให้เราเลือกว่าจะให้เป็น Public หรือ Private
อ้างอิง - Content Type access permisions
หมายเหตุ
ถ้าใช้ Drupal-5.5 และ Drupal-5.6 และใช้ฐานข้อมูล Postgresql อาจมีข้อผิดพลาดเกิดขึ้น ต้องปรับแก้ Core ที่ไฟล์ includes/database.pgsql.inc
ดังนี้
$ vi includes/database.pgsql.inc
... function db_distinct_field($table, $field, $query) { if (!preg_match('/FROM\s+\S+\s+AS/si', $query) && !preg_match('/DISTINCT\s+ON\s*\(\s*('. $table .'\s*\.\s*)?'. $field .'\s*\)/si', $query) && preg_match('/(.*FROM\s+)(.*?\s)(\s*(WHERE|GROUP|HAVING|ORDER|LIMIT|FOR).*)/Asi', $query, $m)) { $query = $m[1]; $query .= preg_replace('/([\{\w+\}]+)\s+(' . $table . ')\s/Usi', '(SELECT DISTINCT ON (' . $field . ') * FROM \1) \2 ', $m[2]); $query .= $m[3]; } return $query; } ...
- Printer-friendly version
- Log in or register to post comments
- 4912 reads
Recent comments