ระบบควบคุมในการกระจายและเข้าถึงข่าวสาร การประกาศ

วันอังคารที่ 29 มีนาคม พ.ศ. 2559

ทดลองดึงเนื้อหาจาก Article ของ Aldryn_newsblog

ไม่มีความคิดเห็น :
  การทดลองนี้เพื่อพิสูจน์ว่าเราจะดึงเนื้อหาจาก Article model ของ Aldryn_newsblog มาแสดงในหน้าที่เราต้องการได้หรือไม่  ที่มาคือในกรณีเราจะสร้างประกาศประเภทบทความเราจะใช้ plugin ที่สร้างไว้ให้เราใช้งานได้เลย ในที่นี้เราเลือก Aldryn_newsblog ใช้สร้างข่าวหรือบทความ สามารถใส่รูปภาพประกอบลงไปในบทความได้  มีการทำ list ของบทความให้อัตโนมัติ   การทดลองของเราคือสร้างบทความมา 1 บทความเป็น model ชื่อ Article แล้วดึงเนื้อจาก Article ที่เราเขียนมาแสดงในหน้าที่เราต้องการ มีขั้นตอนดังนี้
1. โหลด aldryn_newsblog จาก https://github.com/aldryn/aldryn-newsblog
2. สร้าง app ใช้ cms project ของเราชื่อ myapp
3. เขียนไฟล์ models.py ดังนี้

from cms.models.pluginmodel import CMSPlugin

from django.db import models
from aldryn_newsblog.models import Article

class ArticleHello(CMSPlugin):
 article = models.ForeignKey(Article)

 def __unicode__(self):
  return self.article.translations.title

from aldryn_newsblog import Article คือเข้าถึง model ของ alryn_newsblog
4. เขียนไฟล์ cms_plugins.py ดังนี้

from cms.plugin_base import CMSPluginBase
from cms.plugin_pool import plugin_pool
from django.utils.translation import ugettext_lazy as _

from .models import ArticleHello

class HelloArticle(CMSPluginBase):
 model = ArticleHello
 name = _("Hello Article")
 render_template = "hello_article.html"
 cache = False

 def render(self, context, instance, placeholder):
  context = super(HelloArticle, self).render(context, instance, placeholder)
  return context

plugin_pool.register_plugin(HelloArticle)
 จากการเปิดดู cms_plugins.py ของ aldryn_newsblog พบว่า
@plugin_pool.register_plugin ถ้าถูกประกาศบน class ไหนแปลค่า plugin_pool.register_plugin ตัว class นั้น
5. สร้าง templates/hello_plugin.html ดังนี้

{% load i18n staticfiles thumbnail cms_tags apphooks_config_tags %}
<h1>Hello Article</h1>
<ul>
 <li>{{ instance.article.translations }}</li>
 <li>{{ instance.article.publishing_date }}</li>
 <li>{% render_model instance.article "lead_in" %}</li>
</ul>
ศึกษาจาก article.html ของ aldryn_newsblog พบว่าให้ใช้ {% load i18n staticfiles thumbnail cms_tags apphooks_config_tags %} เพื่อให้ใช้คำสั่ง {% render_model instance.article "lead_in" %} ได้
6. รันคำสั่ง python manage.py makemigrations myapp และ python manage.py migrate myapp
7. รัน server เปิดหน้าที่เราต้องการ  จากนั้นเพิ่มสร้าง article โดย aldryn_newsblog มาหนึ่งบทความ จากนั้นเพิ่ม plugin ชื่อ Hello Article เลือกบทความที่เราสร้าง

จากรูปเราใช้ Hello Article มาแสดงจากนั้นก็เป็นข้อมูลต่างๆของบทความที่เราสร้าง สรุปคือเรานำ aldryn newsblog มาใช้สร้างประกาศแบบบทความได้ และเราควบคุมการแสดงเนื้อหาของบทความได้

ไม่มีความคิดเห็น :

แสดงความคิดเห็น