我收到了这个D9网站,我只是试着在节点显示中启用一些字段(例如,full、teaser等)。把它们分配到地区,但我做不到。加载gif将永远继续,当我单击submit时,它返回到禁用或原始的位置,这些节点显示中有很多字段。这可能是缓存问题。我在后台搞不出来。
是否有任何方式可以通过编程或在数据库中启用这些字段?
如何在下面的代码中为字段分配区域?
/** @var \Drupal\Core\Entity\EntityDisplayRepositoryInterface $display_repository **/
$display_repository = \Drupal::service('entity_display.repository');
// Assign widget settings for the default form mode.
$display_repository->getFormDisplay('node', 'node_type')
->setComponent('field_name', [
'region' => 'content',
])
->save();
// Assign display settings for the 'default' and 'full' view modes.
$display_repository->getViewDisplay('node', 'node_type')
->setComponent('field_name', [
'label' => 'hidden',
'region' => 'content',
])
->save();
$display_repository->getViewDisplay('node', 'node_type', 'full')
->setComponent('field_name', [
'label' => 'hidden',
'type' => 'string_textfield',
])
->save();如果上面的代码是正确的,那么我可以使用什么函数钩子来实现这一点?
发布于 2022-06-30 19:39:32
以下几点对我有用:
模块/模块.routing.yml
module.fields:
path: '/module/fields'
defaults:
_controller: '\Drupal\module\Controller\ModuleController::fields'
_title: 'Enable fields in node after changing field type'
requirements:
_permission: 'access content'模块/src/Controller/ModuleController.php
namespace Drupal\module\Controller;
use Drupal\Core\Controller\ControllerBase;
/**
* Class ModuleController.
** @package Drupal\lotus\Controller
*/ class ModuleController extends ControllerBase
{
/**
* Fields.
* * @return string
* Return Fields string.
*/
public function fields()
{
$display_repository = \Drupal::service('entity_display.repository');
// Assign widget settings for the default form mode.
$display_repository->getFormDisplay('node', 'bundle')
->setComponent('field_name', [
'region' => 'content',
])
->save();
// Assign display settings for the 'default' and 'full' view modes.
$display_repository->getViewDisplay('node', 'bundle')
->setComponent('field_name', [
'region' => 'content',
])
->save();
$display_repository->getViewDisplay('node', 'bundle', 'full')
->setComponent('field_name', [
'region' => 'content',
])
->save();
return ['#type' => 'markup',
'#markup' => $this->t('Field field_name has been enabled!!'),];
}
}https://stackoverflow.com/questions/72793803
复制相似问题