【问题标题】:Creating "ON/OFF News Links" functionality for a block created with View Module为使用 View Module 创建的块创建“开/关新闻链接”功能
【发布时间】:2010-06-14 18:39:38
【问题描述】:

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

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

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

看起来太长了

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

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

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

【问题讨论】:

  • 为整个站点或每个节点开/关?
  • for block,我用 View Module 创建的,列出所有新闻标题。

标签: drupal drupal-6 drupal-blocks


【解决方案1】:

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

【讨论】:

  • 哇哇哇!男人!你刚刚救了我的命!!它完美无缺!非常感谢你详细的帖子!我很想给你买一杯冰镇啤酒,你呢?认真的:)
  • 我还使用了drupal.org/project/views_customfield 模块来添加我的 php 条件 :) 现在工作得很好 :) 只剩下 1 个问题了。我在权限页面看不到模块权限设置:/ 我需要为客户端授予管理员用户访问权限:/ 如何控制自定义模块的权限设置?
  • 很高兴为您提供帮助。如果你发现自己在泰国,我会接受你的提议。要设置自定义权限,您可以通过向模块添加 mynewmodule_perm() 函数并定义新权限来使用 hook_perm()。然后在 mynewmodule_menu() 中,您将使用该权限作为访问回调。
  • 泰国,嗯,我需要在那里安排一个假期 :) 这样我就可以和你见面喝啤酒了 :) ps,我用谷歌搜索了 hook_perm() 的详细信息。现在我可以在权限设置页面看到自定义模块。我启用了该功能,但我仍然无法使用角色访问该页面(实际上我已授予权限):/
  • 确保您在更改菜单设置后已清除缓存。
【解决方案2】:

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

【讨论】:

  • 感谢您的回复。我的意思是当我写我是一个新手时:) 你说在管理员/设置/on-off-switch 创建表单。使用 CCK 之类的任何模块或其他任何模块创建它?你能说得更详细一点吗,因为这里是一个drupal dummy:/感谢你抽出宝贵的时间!!!
【解决方案3】:

恕我直言,Drupal 的弱点是要配置大量管理员设置来启动网站,而您不想再添加这些设置。

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

【讨论】:

  • 我对 artmania 的目标很模糊,但这可能是最好的选择。它还将改进缓存。我更有兴趣将另一个菜单项排除在管理下拉菜单之外。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-06
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
相关资源
最近更新 更多