1

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

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

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

看起来太长了

  1. 创建数据库表
  2. 创建一个带有 ON/OFF 选项的页面
  3. 添加 php 代码以更新数据库以供管理员选择
  4. 获取主页块中的 db 值以显示链接等。

有没有更短、更好的方法来做我需要的事情?

欣赏帮助很大!!!非常感谢!!

4

3 回答 3

3

您绝对不需要为类似的东西创建任何数据库表。如果你想要一个基本的管理页面,你需要编写一个简单的模块。首先按照此快速入门指南设置基本模块。(注意:您不需要在 .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() 在任何地方获取此值。

于 2010-06-15T03:44:08.480 回答
1

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

于 2010-06-14T19:22:02.913 回答
1

Drupal 的弱点,恕我直言,就是要配置大量的管理设置来启动一个站点,而您不想添加它。

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

于 2010-06-15T03:57:35.397 回答