标签: drupal-8

Drupal 8 hook_theme_suggestions_HOOK_alter() 未使用

我使用hook_theme_suggestions_HOOK_alter()根据内容类型为 page.html.twig 添加主题挂钩建议:

function mytheme_theme_suggestions_page_alter(array &$suggestions, array $variables) {
  $node = \Drupal::request()->attributes->get('node');
  $suggestions[] = 'page--node--' . $node->getType();
}
Run Code Online (Sandbox Code Playgroud)

现在我的树枝调试模式发现了这一点:

    <!-- FILE NAME SUGGESTIONS:
   * page--node--case.html.twig (new suggestion based on content type 'case')
   * page--node--3.html.twig
   * page--node--%.html.twig
   * page--node.html.twig
   x page.html.twig
   -->
Run Code Online (Sandbox Code Playgroud)

但是,当我创建一个名为 的文件时page--node--case.html.twig,它没有被渲染。相反,page.html.twig正在被使用。

有人知道发生了什么事吗?

drupal drupal-theming drupal-8

1
推荐指数
1
解决办法
2939
查看次数

是否可以强制 Drupal 8 核心 Jquery 转到标题?

我只是想知道是否可以将(仅)JQ 核心文件移动到网站顶部而不是</body>html 标签之前。我知道这不是最佳实践,但是如果在滑块脚本之前未加载 JQ,我正在使用的革命滑块将无法工作,我知道,这很奇怪,但我猜这是他们创建它的方式:p。

我已经修改了 core.libraries.yml(实际上我创建了一个补丁和反向补丁以在我更新 Drupal 时应用)并且我已经包含了一个header:true语句以便 JQuery 转到 . 这不是修改 drupal 核心的好主意,这就是为什么我正在寻找更好的解决方案。

或者也许实现我正在寻找的最好方法是用我自己的 JQuery 覆盖核心 JQuery,这样我就可以把它放在我想要的任何地方?我不知道是否有可能:)

谢谢!

jquery drupal-8

1
推荐指数
1
解决办法
1477
查看次数

Drupal 8 图像字段值

我试图弄清楚如何从 Drupal 8 中的实体获取图像的路径。我原以为 get()->value 可以做到这一点,但这只返回一个空白字符串。

我有一个测试功能:

function getValueTest ($profile_id, $field)
{
   $profile_storage = \Drupal::entityManager()->getStorage('profile'); 
   $profile = $profile_storage->load($profile_id);
   if ($profile != null)
   {
      if ($profile->hasField ($field))
      {
         return $profile->get ($field)->value;
      }
   }

   return "No field" . $field;
}
Run Code Online (Sandbox Code Playgroud)

假设某个配置文件 ID 3 有两个字段 field_first_name 和 field_mugshot。如果我打电话:

dpm ($this->getValueTest (3, 'field_first_name'));
dpm ($this->getValueTest (3, 'field_mugshot'));
Run Code Online (Sandbox Code Playgroud)

第一个调用在消息区域中正确显示第一个名称,但第二个调用仅给出一个空白字符串。我需要图像的路径,以便我可以对其内容进行一些处理。

drupal drupal-8 drupal-entities

1
推荐指数
1
解决办法
3581
查看次数

如何使“breadcrumb”变量在 breadcrumb.html.twig 中可用,在 node--type.html.twig 中可用

breadcrumb.html.twig 中有一个breadcrumb可用的变量

我有一个Page需要面包屑的节点类型,因为它必须位于我的内容之间。

但该变量breadcrumb不可用node--page.html.twig

我怎样才能把它拿到那里?

我知道这是在预处理函数/挂钩某处完成的,但我不知道在哪里看。

twig drupal-8

1
推荐指数
1
解决办法
2338
查看次数

Drupal 8 视图:忽略管理员角色的上下文过滤器

我有一个服务于实体参考字段的视图。我需要它:(1)提取当前登录用户创作的内容,(2)除非当前登录用户具有“管理员”角色,在这种情况下提取所有内容。

目前,我将上下文过滤器设置为“作者”,这可以很好地满足要求 (1)。我想我需要它来绕过基于角色的过滤器。对于“块”或“页面”显示,我只需复制显示,根据角色为其设置权限,而且是无缝的。但因为这是一个实体引用字段,所以我只能在字段设置中指定一种显示。有任何想法吗?

drupal view entityreference drupal-8

1
推荐指数
1
解决办法
1411
查看次数

直接在 page.html.twig 中渲染字段

如何直接在 page.html.twig 中呈现字段?

当我尝试渲染它时:

{{ node.field_my_field.value }}
Run Code Online (Sandbox Code Playgroud)

我得到:

Exception: Object of type Drupal\entity_reference_revisions\EntityReferenceRevisionsFieldItemList cannot be printed
Run Code Online (Sandbox Code Playgroud)

当我添加一个 .value 时,它​​仍然没有正确渲染(我使用带有子字段的段落)但出现以下错误:用户错误:“target_id”是无效的渲染数组键

Drupal\Core\Render\Element::children() (line 97 of core/lib/Drupal/Core/Render/Element.php).
User error: "target_revision_id" is an invalid render array key in Drupal\Core\Render\Element::children() (line 97 of core/lib/Drupal/Core/Render/Element.php).
User error: "_loaded" is an invalid render array key in Drupal\Core\Render\Element::children() (line 97 of core/lib/Drupal/Core/Render/Element.php).
User error: "_accessCacheability" is an invalid render array key in Drupal\Core\Render\Element::children() (line 97 of core/lib/Drupal/Core/Render/Element.php).
Run Code Online (Sandbox Code Playgroud)

那么我该如何渲染它呢?

drupal twig drupal-8

1
推荐指数
1
解决办法
5933
查看次数

如何获取 drupal 8 中日期时间对象的值?

有一个 Datetime 对象如下,我想获取日期值

大批
(
    [0] => 数组
        (
            [值] => Drupal\Core\Datetime\DrupalDateTime 对象
                (
                    [formatTranslationCache:受保护] =>
                    [inputTimeRaw:受保护] =>
                    [输入时间调整:受保护] =>
                    [inputTimeZoneRaw:受保护] =>
                    [inputTimeZoneAdjusted:受保护] =>
                    [inputFormatRaw:受保护] =>
                    [输入格式调整:受保护] =>
                    [langcode:protected] => en
                    [错误:受保护] => 数组
                        (
                        )

                    [dateTimeObject:protected] => 日期时间对象
                        (
                            [日期] => 2018-01-05 01:30:00.000000
                            [时区类型] => 3
                            [时区] => UTC
                        )

                    [字符串翻译:受保护] =>
                )

        )

)

我不想通过以下方式获得这个值

$node->get("field_id")->value;
因为我需要动态值,这意味着在更改日期字段后该值应该更改。是否可以?

datetime drupal-8

1
推荐指数
1
解决办法
2万
查看次数

Drupal 8 - 如何在 preprocess_views_view 中获取暴露的过滤器值

我正在使用 preprocess_views_view 来定义一些新变量并将它们传递给树枝模板。

为了定义这些变量,我需要访问公开的过滤器输入值,但我似乎无法弄清楚如何:

function my_modules_preprocess_views_view(&$variables) {
  $view = $variables['view'];
  // Here I would need to access the exposed filters value
  $exposed_filter_value = "the_value";
  $variables["foo"] = "Something based on the exposed filters value";
}
Run Code Online (Sandbox Code Playgroud)

我将非常感谢任何线索 - 干杯!

drupal-views drupal-8 drupal-exposed-filter

1
推荐指数
1
解决办法
3963
查看次数

在 Drupal 8 中以编程方式保存地理字段

我已经阅读了很多资料,我geofield_compute_values()在尝试以编程方式在 Drupal 中保存坐标时应该使用该函数。

但是它对我不起作用,该函数在我使用的 Drupal 8.5.2 中未定义。

我已经使用 composer 安装了 geofield,我可以像往常一样在管理区域中使用它,并且在那里保存没有问题。

以下是我尝试过的一些示例,第一个示例给了我undefined function geofield_compute_values()

$geofield_data = geofield_compute_values([
    'lat' => $lat,
    'lon' => $lon,
], GEOFIELD_INPUT_LAT_LON);

$cbisProduct->set('field_koordinater', $geofield_data);
Run Code Online (Sandbox Code Playgroud)

我也尝试过,但没有成功,也没有错误:

$geofield = [
    'geom' => "POINT (" . $lon . " " . $lat . ")",
    'geo_type' => 'point',
    'lat' => $lat,
    'lon' => $lon,
    'left' => $lon,
    'top' => $lat,
    'right' => $lon,
    'bottom' => $lat,
];

$cbisProduct->set('field_koordinater', $geofield);
Run Code Online (Sandbox Code Playgroud)

drupal geospatial coordinates drupal-8

1
推荐指数
1
解决办法
969
查看次数

我该如何解决问题:在 modules/contrib/redirect/modules/redirect_404 中缺少必需的密钥(核心)?

“网站遇到意外错误。请稍后再试。” 当我去清除 D8 中的缓存时,没有进一步的细节。我之前在另一个 drupal 站点上遇到过类似的问题,根据我的经验,“意外错误”似乎是 Drupal 给出的一般错误消息,而可能会有更详细的消息。

因此,为了进一步调查我$config['system.logging']['error_level'] = 'verbose';在 settings.php 中启用日志记录的问题 。

刷新网站后产生以下内容:

The website encountered an unexpected error. Please try again later.</br></br><em class="placeholder">Drupal\Core\Extension\InfoParserException</em>: Missing required keys (core) in modules/contrib/redirect/modules/redirect_404/redirect_404.info.yml in <em class="placeholder">Drupal\Core\Extension InfoParserDynamic-&gt;parse()</em> (line <em class="placeholder">29</em> of <em class="placeholder">core/lib/Drupal/Core/Extension/InfoParserDynamic.php</em>). <pre class="backtrace">Drupal\Core\Extension\InfoParser-&gt;parse(&#039;modules/contrib/redirect/modules/redirect_404/redirect_404.info.yml&#039;) (Line: 552)

我知道有时会在不清除 Drupal 缓存时出现问题。因此,由于 UI 不可用,我尝试通过截断缓存表来通过数据库刷新所有缓存。还运行了 composer install; 作曲家更新但无济于事。

我将不胜感激有关如何解决手头问题的任何解决方案。

谢谢

drupal drupal-8 drupal-modules

1
推荐指数
1
解决办法
3248
查看次数