首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何强制将子页添加到图书大纲的顶部或底部;更新大纲而不清除缓存

如何强制将子页添加到图书大纲的顶部或底部;更新大纲而不清除缓存
EN

Drupal用户
提问于 2018-11-21 17:45:17
回答 1查看 172关注 0票数 1

当您单击图书页面上的"Add子页“链接时,您将进入"/node/add/content type”,在那里您可以创建和保存子页面。返回到图书页时(假设图书导航块用于显示图书大纲),在清除缓存和刷新页面之前,新添加的子元素不会在大纲中显示(通常)。默认情况下,子级按字母顺序显示。

对于输入子页面的内容编辑器来说,这是一项挑战,因为在返回到图书页面时,他们没有看到他们刚刚输入的子页面,而且当他们看到子页面时,没有按条目的顺序列出子页面。

有没有办法:

  1. 离开add子页时自动清除缓存?还是禁用图书导航块的缓存,至少对于具有特定角色的用户是这样的?或者其他允许编辑器看到添加的子程序的东西?
  2. 自动将子页面添加到图书大纲的顶部或底部?可能是通过传递一个权重(在查询字符串中?)在右边的选项卡中的“权重”字段中添加子页面?(请注意,父节点id通过查询字符串传递,并插入到Book大纲选项卡中的Book和父项字段中。)或者其他的东西,这样编辑器就会知道在大纲中哪里查找新添加的子页面?

对于第二个问题,人们可能会说,“在创建子页面时,只需让它们输入权重即可。”这是很好的工作,直到他们拖动重新排序的轮廓。当这种情况发生时,Drupal会从-15开始为子页面分配权重,因此编辑器不确定输入的权重。

只是试图使为书籍输入子页面的过程尽可能简单,这样就可以减少错误(特别是同一章节增加了两次,或者根本没有)。

EN

回答 1

Drupal用户

回答已采纳

发布于 2018-12-01 23:06:44

作为对上面关于更新图书大纲显示而不清除缓存的第一个问题的回答:

将以下内容添加到自定义的.theme文件(请参见drupal.org/docs/8/theming),以向缓存的图书导航块添加标记:

代码语言:javascript
运行
复制
function YOURTHEME_preprocess_block(&$vars)
{
  if ($vars['plugin_id'] == 'book_navigation') {
    $vars['#cache']['tags'] = ['node_type:{content-type}'];
  }
}

然后将以下内容添加到自定义.module文件(请参阅Drupal.org/docs/8/creating定制模块),以便每当更改或删除指定内容类型的节点时刷新缓存的图书导航块:

代码语言:javascript
运行
复制
use Drupal\node\NodeInterface;
use Drupal\Core\Cache\Cache;

function YOURMODULE_node_presave(NodeInterface $node)
{
  if ($node->getType() == '{content-type}') {
    Cache::invalidateTags(['node_type:{content-type}']);
  }
}

function YOURMODULE_node_delete(NodeInterface $node)
{
  if ($node->getType() == '{content-type}') {
    Cache::invalidateTags(['node_type:{content-type}']);
  }
}

这个答案的下半部分归功于@oknate。有关更多细节,请参见添加或更新某个包的节点时,如何清除块上的缓存?

票数 1
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/272851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档