为使用View Module创建的块创建“ON / OFF新闻链接”功能

时间:2010-06-14 18:39:39

标签: drupal drupal-6 drupal-blocks

我是一个需要一些建议的drupal新手...

我在主页上有一个新闻列表块,使用View Module创建。它列出了所有添加的新闻标题和链接。到目前为止,一切都很酷。现在我需要在主页新闻块的管理端添加一个ON / OFF选项。当设置为ON时,它将按原样工作。当它为OFF时,仅列出标题而不链接到新闻详细信息页面。

那么,现在我应该在哪里添加此ON / OFF选项?我只为每个新闻添加/编辑/删除页面,没有添加此类选项的常用新闻页面。我应该创建一个带有这种ON / OFF选项的管理页面吗?另外我想我需要创建一个db表来保持这个ON / OFF状态。并在主页块控制该值,如果它是1或0,并根据db值显示链接:/

看起来太长了

  1. 创建数据库表
  2. 中创建一个带ON / OFF选项的页面
  3. 添加php代码以更新数据库以供管理员选择
  4. 获取主页块中的db值以显示链接等
  5. 有没有更短,更好的方法来做我需要的?

    赞赏非常有帮助!非常感谢!!

3 个答案:

答案 0 :(得分:3)

你绝对不需要为这样的东西创建任何数据库表。如果你想要一个基本的管理页面,你需要编写一个简单的模块。首先按照此quick start指南设置基本模块。 (注意:您不需要在.install文件中添加这些数据库查询)

启用模块后......

1)在mynewmodule.module文件中,添加一个菜单项,告诉Drupal可以访问您的管理页面:


function mynewmodule_menu() {
  return array(
    'admin/settings/mynewmodule' => array(
      'title' => 'My New Module',
      'description' => 'Change settings for news display.',
      'page callback' => 'drupal_get_form',
      'page arguments' => array('mynewmodule_admin_form'),
      'acces callback' => 'user_access',
      'access arguments' => array('administer site configuration'),
    ),
  );
}

2)同样在mynewmodule.module文件中,添加一个函数来创建您在菜单项中引用的表单:


function mynewmodule_admin_form() {
  $form = array();
  $form['mynewmodule-on-off-switch'] = array(
   '#type' => 'checkbox',
   '#title' => t('Enable news links'),
   '#description' => t('Control whether news items are linked to stories'),
   '#default_value' => variable_get('mynewmodule-on-off-switch', 1),
  );
  return system_settings_form($form);
}

3)清除缓存以使Drupal识别您的管理页面(您需要清除任何时候对mynewmodule_menu()进行更改)。您可以在此处清除它:admin / settings / performance

4)访问admin / settings / mynewmodule以查看您的管理表单。它的工作方式是保存配置时,Drupal会将名为“mynewmodule-on-off-switch”的变量(与表单中的数组键同名)保存到数据库中的变量表中。您可以使用variable_get()在任何地方获取此值。

答案 1 :(得分:1)

在admin / settings / on-off-switch创建表单。 在表单提交函数,variable_set('开/关开关',$ value)(尝试使用布尔值作为值)。 然后在视图主题上,在打印链接之前检查variable_get('开/关开关',$ default_value)。

答案 2 :(得分:1)

Drupal的弱点,恕我直言,是为了建立网站而配置的管理员设置的绝对数量,你不想添加它。

我要做的是让视图显示两个不同的块,一个带有完整视图,一个带有缩略视图。然后所有配置都可以通过块接口完成,从长远来看,这将更加灵活。例如:使用通配符或php代码进行块可见性;向具有不同角色的用户显示不同的视图;允许访问者控制他们看到的视图;将两个视图更清晰地暴露给主题引擎;并与任何其他与块一起使用的模块集成。