Drupal

Drupal开发人员和管理员的问答

1
如何显示最后编辑内容的人而不是原始作者?
在页面上/admin/content,有一个针对作者的列。我们有很多人在编辑我们的内容,因此原始作者并不那么重要。我想更改它以显示编辑该内容的最后一个人,我认为该人存储在该内容的修订版中。如何修改视图以显示该视图?另外,是否可以在自定义模块中实现此操作的钩子? 我已经检查了几个其他问题,例如这个和这个,但这并没有太大帮助。
8 views  8 

3
如何将当前选择传递给实体浏览器选择视图
我正在使用实体浏览器(在Drupal 8中为2.x-dev)作为自定义实体的实体引用基础字段的表单小部件。实体浏览器已配置 作为模式显示 使用单个小部件, 没有选择显示, 使用带有实体浏览器批量选择字段的视图作为小部件,以及 将所选实体附加到参考字段的当前选择中。 选择实体工作正常。但是实体参考字段不得重复。 为了简化没有重复项的实体的选择,我想从实体浏览器视图结果中过滤已经选择的实体。因此,用户将仅看到未选择的实体。 为此,我创建了一个自定义视图arguments_default插件,该插件将实体浏览器选择存储公开为实体ID的上下文默认参数: <?php namespace Drupal\my_module\Plugin\views\argument_default; use Drupal\Core\KeyValueStore\KeyValueStoreExpirableInterface; use Drupal\views\Plugin\views\argument_default\ArgumentDefaultPluginBase; use Symfony\Component\DependencyInjection\ContainerInterface; /** * The entity browser selection argument default handler. * * @ViewsArgumentDefault( * id = "entity_browser_selection", * title = @Translation("Entity Browser Selection") * ) */ class EntityBrowserSelection extends ArgumentDefaultPluginBase { /** …
8 8 


1
返回未发布节点的备用HTTP代码
我正在尝试为Drupal 8中未发布的节点返回404页面而不是403响应。 我测试了 内核响应订户,但是发现我使用的代码只会将状态代码从403更改为404,而实际上不显示404页面。因此,也许有人可以向我展示如何在其中生成404页面Response对象? 这是我正在使用的代码: class ResponseSubscriber implements EventSubscriberInterface { /** * {@inheritdoc} */ public static function getSubscribedEvents() { return [KernelEvents::RESPONSE => [['alterResponse']]]; } /** * Change status code to 404 from 403 if page is an unpublished node. * * @param FilterResponseEvent $event * The route building event. */ …

2
如何将多语言内容从CSV迁移到Drupal 8?
我来自阅读使用新的Drupal 8迁移API /模块和内容迁移:从CSV到Drupal 8的过程,创建迁移的过程非常清楚,并且可以正常工作,但是我找不到如何将内容迁移到多语言站点。在“ 迁移API”概述中,我找不到有关此的任何信息。 那么,如何迁移多语言内容? 更新: 我找到了一个例子:https://github.com/drupal/drupal/tree/8.3.x/core/modules/migrate/tests/modules/migrate_external_translated_test 目前,我能够迁移英语内容,但不能迁移翻译内容。

3
类型提示-UserInterface或AccountInterface哪个更好?
最近,我终于开始将注意力从D7转移到D8,并将网站转换为D8。在D7中,我将帐户对象键入\ stdClass,因为它们不是任何类的成员。但是,在D8中,它们现在是User类的成员。 就是说,我在网上的某些代码中发现人们在键入提示,例如Drupal \ Core \ Session \ AccountInterface,在其他地方则键入了Drupal \ user \ UserInterface。我们应该如何确定要使用哪种类型的类型提示,两种对象之间的区别是什么?
8 8 

1
如何在Drupal 8中通配符清除缓存?
在Drupal 7中,我们曾经能够做到这一点: cache_clear_all('state:', 'cache', TRUE) 这将删除任何缓存斌entires 开始用字符串state:(匹配的高速缓存的ID,如state:info和state:nebraska)。 https://www.drupal.org/node/1272696上的更改记录甚至在Drupal 7示例中记录了该用例,但实际上并未提供如何在D8中进行复制的示例。 似乎我们应该使用缓存标签,考虑到简单的用例,这似乎是一个更昂贵的转换。我没有看到适用于CacheBackendInterface的任何匹配方法。请注意,这并不是要删除缓存仓中的所有项目,deleteAll()明确涵盖了该内容。
8 8  caching 

3
如何更改菜单链接的标题?
随着时间的推移,用户可以在我的网站上收集一些“要点”。我有一个带有一些链接的顶层菜单(例如,“家庭”,“个人资料”,“注销”)。我想更改菜单项“配置文件”,并添加当前连接的用户拥有的点数。 我尝试了几次钩子,然后几乎成功获得了想要的东西hook_link_alter()。 function mycustommodule_link_alter(&$variables) { if ($variables['text'] == "profile") { // Do some work. $variables['text'] = $variables['text'] . " (you have $nb_points points)"; } } 我清除了缓存(带有drush cr),菜单项显示了我想要的值。但是,如果该值由于某些原因发生变化,则表明它是旧值。我必须一直清除缓存以更新其值。 如何避免在每次从用户获得的点更改时都清除缓存以更新菜单标题?


3
如何在节点标题中嵌入节点的NID?
我知道存在自动节点标题模块,但是仅适用于Drupal 7。 单击提交后,是否可以使用NID自动分配标题?我知道在单击提交按钮之前NID不存在。如何将NID嵌入标题中? 一个钩子会用什么?
8 8  hooks  nodes 


2
什么是hook_translated_menu_link_alter()来更改菜单链接?[重复]
这个问题已经在这里有了答案: 渲染前更改菜单链接的访问权限 (3个答案) 上个月关闭。 我想更改Drupal 8中的菜单链接。在Drupal 7中,我们可以使用实现此功能hook_translated_menu_link_alter()。 function module_translated_menu_link_alter(&$item, $map) { global $user; if (!empty($item['access'])) { // Administrator will access all menu's. if (strpos(current_path(), 'admin/structure/menu/manage/' . $item['menu_name']) === 0 && user_access('administer menu')) { return; } // If userid is equal to menu user id. if ($user->uid == 1) { $access …
8 8  routes 

1
如何用Drush翻译复数字符串?
如果我们想在Drupal中翻译复数字符串,可以使用该format_plural()函数。 如果您正在编写drush命令,则可以使用该dt()函数来翻译字符串,但是如果要在drush中翻译多个字符串,该函数是否可以完成此操作?

4
如何确定module_exists和function_exists之间?
我熟悉module_exists在模块中使用,并在类似情况下使用它: 如果站点中还提供其他模块,请在模块中启用一些其他功能。所述预订:电子邮件模块包含一个例子(实际上有很多这方面的例子),如图其模块源:使用令牌(在电子邮件正文)要求令牌模块被使能。 在主题中实现模块依赖性,如“ 如何在主题中实现模块依赖性并用主题打包模块? ” 的答案所示。 但是,也function_exists有如“ 是否有可能在Hook.info声明Javascript库依赖项 ” 答案中所示。 我的印象function_exists是与相比,使用是一种更可靠(安全)的方法module_exists。特别是如果您要确保某些功能(在模块的较新版本中添加)可用,而仅使用module_exists,就可能会遇到类似以下错误的风险: 如果一个网站仍在使用旧版本的模块,它不具有的功能尚未(所以你不应该尝试使用它 尚未)。 如果网站已经使用新的模块,它不具有该功能的版本了(所以你不应该尝试使用它 了)。 我的问题是:决定使用哪种module_existsvs 的典型标准或优点/缺点是 function_exists什么?

3
是否有比覆盖模板文件更有效的替代方法?
我必须消除视图中的许多不必要的标记。通常,我可以通过覆盖主题中的模板文件来完成此操作,但是这次视图的确很大,性能下降了。所以我想知道,是否有一种更有效的方法来减少标记?更改节点的标记时,预处理功能比覆盖模板文件要快,那么是否有用于视图的类比机制? 编辑1:当然,性能低下的原因并不是首先覆盖了模板文件,但是如果我可以在那里进行一些优化,则必须这样做。另外,我经常在视图UI本身中禁用标记而遇到麻烦:例如,当我使用Omega子主题时,忽略禁用行样式…… 编辑2:我知道Views UI 内的可能性;我正在寻找的是一种具有精细控制的手动方式。
8 views  theming 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.