提供基本的水井对象
项目描述
提供Armstrong内部安排和调度模型所需的基本内容水井代码。
您可以使用水井来更改内容的顺序。它们旨在与查询集结合使用,以便用户可以控制列表中首先出现的内容。
用法
水井是Armstrong中最强大的组件之一;它们基本上关乎内容的排序和结构。
网站上经常有一些部分只显示最近发布的属于某些分组(例如,一个部分或标签)的故事,但如果有重大新闻,编辑人员希望通过将其放置在顶部来突出显示。Wells允许编辑人员通过管理员来固定故事。演示项目使用QuerysetBackedWellView结合‘front_page’ WellType来完成此用例。
armstrong.core.arm_wells提供了3个主要对象来工作。最高级别是WellType,它通常是您网站上希望对内容进行排序的特定位置。每个WellType都有许多Well对象。Well对象代表在特定时间段内对该WellType的特定内容排序。每个Well都有许多Node对象,每个Node对象都通过GenericForeignKey将Well与数据库中的一个对象相关联。
任意内容的排序
使用Wells最简单的方法是只与一个WellType关联一个Well对象。更改该Well的内容或内容的排序方式将立即更改网站上显示的内容。
使用GenericForeignKeys将Node对象链接到内容提供了很多灵活性。Wells使您能够轻松地将数据应用程序、视频、音频剪辑、照片库和现场博客等所有内容都放置在一个Well中,即使它们没有共同的基类。
将不同样式和字段的内容对象进行布局的挑战促使开发了armstrong.core.arm_layout,它为各种内容对象指定了命名的布局框架。
通过将Wells视为仅用于排序内容的简单工具,您将开始看到网站上其他适合使用它们的场景。任何写作或编辑人员希望在网站上重新排序的对象数据库都是Wells的良好候选。
调度
Wells的另一个主要方面是调度。如果编辑人员希望在周四下午5点计划首页,他们可以创建一个新的Well,使用‘front_page’ WellType和希望显示的内容。通过设置新Well的pub_date为周四下午5点,届时不需要采取任何行动,网站将开始使用新Well。
类似地,如果内容应该仅在特定时间段内计划并随后回到较早的Well,Well也有一个过期字段。我们建议每个WellType都有一个永不过期的空Well对象,以提供合理的回退。
WellManager有一个方便的方法get_current,它接受WellType名称,并获取与该WellType关联的Well,具有最近的pub_date在过去,并且没有过期的过期。
使用QuerySetBackedWellView
Wells还可以由一个queryset支持,该queryset将在所有项目耗尽后用作额外内容的来源。目前,这不能通过管理员进行配置,但可以使用QuerySetBackedWellView轻松完成。例如,在urls.py中
url(r'^$', QuerySetBackedWellView.as_view(well_title='front_page', template_name="index.html", queryset=Article.published.all()), name='front_page'), # get's the current 'front_page' well, backs it with Article.published.all() # and renders the index.html page
要渲染一个well,我们建议使用armstrong.core.arm_layout模块。这将允许简单的模板处理异构内容。例如,要使用‘standard’布局渲染well中的每个项目
{% load layout_helpers %} {% for content in well.items %} {% render_model content 'standard' %} {% endfor %}
管理员自定义
修改well的管理员视图已被自定义,提供用于排序Node的拖放界面。要将Node添加到well中,请使用VisualSearch框首先搜索ContentType,然后搜索您想使用的对象的标题。例如,在演示中,在框中输入‘art’,将提供‘ARTICLE’,按Enter键并搜索标题中包含‘Perry’的文章。VisualSearch小部件来自armstrong.hatband,它提供了有关自定义此过程更多信息。
当节点被添加时,它会显示有关其ContentType ID和对象ID的简单(且不是特别有用)信息。它还会向服务器发送请求,以获取使用“preview”名称的render_model调用的html结果。这允许您以类似对象在网站上显示的方式轻松显示节点。
安装与配置
您可以使用pip安装armstrong.core.arm_wells的最新版本。
pip install armstrong.core.arm_wells
请确保将armstrong.core.arm_wells添加到您的INSTALLED_APPS中。您可以选择任何方式添加。这是一个复制粘贴的解决方案。
INSTALLED_APPS += ["armstrong.core.arm_wells", ]
安装后,如果您使用South,则需要运行syncdb或migrate。
贡献
创建一些出色的东西——改进代码、添加一些功能等(这是最难的部分)。
创建一个主题分支以存放您的更改
将所有提交放入新的主题分支中
提交一个pull request
项目状态
Armstrong是一个开源新闻平台,任何组织都可以免费使用。它是Texas Tribune和Bay Citizen合作的成果,以及John S. and James L. Knight Foundation的资助。
要跟进开发,请务必加入Google Group。
armstrong.core.arm_wells是Armstrong项目的一部分。您可能正在寻找那个。
许可证
版权所有 2011-2012 Bay Citizen和Texas Tribune
在Apache License,Version 2.0(“许可证”)下许可;除非适用法律要求或经书面同意,否则不得使用此文件,除非符合许可证。您可以在以下位置获取许可证副本:
除非适用法律要求或经书面同意,否则在许可证下分发的软件按“现状”基础分发,不提供任何明示或暗示的保证或条件。有关许可的权限和限制的具体语言,请参阅许可证。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。