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

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

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

看起来太远了

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

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

赞赏有很大帮助!多谢!!

有帮助吗?

解决方案

您绝对不需要为类似的事情创建任何数据库表。如果您想要一个基本的管理页面,您将需要编写一个简单的模块。首先按照这个 快速开始 设置基本模块的指南。(笔记:您不需要在 .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() 时都需要清除)。您可以在这里清除它:管理/设置/性能

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

其他提示

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

恕我直言,Drupal 的弱点是为建立站点而需要配置的管理设置数量庞大,而您不想添加这些设置。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top