标签: drupal-8

如何在Drupal 8中以编程方式创建节点?

我正在Drupal 8中设计一个新模块.这是一个长期项目,至少几个月内不会上市,所以我用它来弄清楚什么是新的.

在这个模块中,我希望能够以编程方式创建节点.在Drupal 7中,我会通过创建对象,然后调用"node_submit"和"node_save"来完成此操作.

这些函数在Drupal 8中不再存在.相反,根据文档,"模块和脚本可以使用通常的表单API模式以编程方式提交节点." 我不知所措.这是什么意思?我已经使用Form API在Drupal 7中创建表单,但是我没有得到文档在这里说的内容.

我想要做的是基于不是直接从用户呈现的表单中获取的信息,以编程方式创建至少一个并且可能多个新节点.我需要能够:

1)指定内容类型

2)指定URL路径

3)设置以前已经过时的node_object_prepare()处理过的任何其他必要变量

4)提交新节点对象

我希望能够在一个独立的,高度抽象的函数中完成此操作,而不依赖于特定的块或形式.

那我错过了什么?

php drupal drupal-8

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

如何以编程方式在Drupal 8中创建实体引用字段?

我想使用我的自定义模块在Drupal 8中创建一个实体引用字段.就像有人点击Drupal页面上的链接一样,将自动在页面节点类型中创建实体引用字段.

谁能帮我这个?

drupal drupal-8

10
推荐指数
2
解决办法
7308
查看次数

如何在Drupal 8 twig模板中使用图像样式?

我正在尝试使用我在drupal 8主题中创建的图像样式打印图像.

我可以通过{{content.banner}}在模板中打印图像,但如何将图像样式应用于该图像?我试着找文件,但似乎没有任何东西.

drupal twig drupal-8

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

drupal 8获取节点中的分类术语值

Drupal \node\Entity\Node Object([in_preview] => [values:protected] => Array([vid] => Array([x-default] => 1)

        [langcode] => Array
            (
                [x-default] => en
            )

        [field_destination] => Array
            (
                [x-default] => Array
                    (
                        [0] => Array
                            (
                                [target_id] => 2
                            )

                    )

            )
Run Code Online (Sandbox Code Playgroud)

无法直接获取field_destination值.它是与内容类型相关的分类术语.任何帮助appriciated.

drupal-8

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

Drupal 8 Twig不适用于Debug

我一直在搞乱Drupal 8并且看到在状态报告中它建议我应该添加Twig C扩展,在添加它之后我开始在主题模板文件中使用Kint时出现以下错误.

Warning: file(/Users/jafacakes2011/Sites/site/recipe-hub/vendor/twig/twig/lib/Twig/Environment.php(403) : eval()'d code): failed to open stream: No such file or directory in Drupal\kint\Twig\KintExtension->kint() (line 78 of /Users/jafacakes2011/Sites/site/recipe-hub/modules/contrib/devel/kint/src/Twig/KintExtension.php).
Run Code Online (Sandbox Code Playgroud)

我使用自制软件安装PHP和Twig: brew install php56 php56-twig php56-mcrypt php56-opcache

你可以在下面的图片中看到twig在我的php服务器上.

该错误让我相信这是一个权限问题,但所有权限似乎都在供应商twig文件夹中.

php twig drupal-8

9
推荐指数
2
解决办法
2181
查看次数

Drupal 8将自定义变量传递给主题模板

所以我有一个已配置路由的控制器我的动作如下所示

/**
 * List of brands
 *
 * @return array
 */
public function listAction()
{
    $brandIds = \Drupal::entityQuery('node')
        ->condition('type', 'brand')
        ->sort('title', 'asc')
        ->execute();

    return [
        'addition_arguments' => [
            '#theme' => 'page--brands',
            '#brands' => is_array($brandIds) ? Node::loadMultiple($brandIds) : [],
            '#brands_filter' => \Drupal::config('field.storage.node.field_brand_categories')->get()
        ]
    ];
}
Run Code Online (Sandbox Code Playgroud)

我想在我的树枝模板主题文件页面中使用#brands和#brands_filter - 品牌,但我从未看到它经历过.

有人可以帮忙吗?

谢谢

UPDATE

解决了这个问题

在您的模块my_module.module文件中添加以下内容

function module_theme($existing, $type, $theme, $path)
{
    return [
        'module.brands' => [
            'template' => 'module/brands',
            'variables' => ['brands' => []],
        ],
    ];
}
Run Code Online (Sandbox Code Playgroud)

在您的控制器中使用

return [
        '#theme' => 'mymodule.bands', …
Run Code Online (Sandbox Code Playgroud)

drupal-8

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

访问Drupal 8视图模板中的各个字段

我在做一些我认为应该是相对简单的drupal 8视图的问题.

我有一个名为Countries的内容类型.我想在一个视图块中显示我主页上的3个最新国家节点.每个国家/地区都在容器div上显示"views-row"类.我正在使用视图 - 视图 - 未格式化 - 国家/地区 - block_1.tpl来模拟输出.

我想输出类似以下标记的内容:

<a class="view-row-1" href="/link/to/node">
    <img src="source-of-teaser-image.png">
    <h3>Title of node</h3>
</a>

<a class="view-row-2" href="/link/to/node">
    <img src="source-of-teaser-image.png">
    <h3>Title of node</h3>
</a>

<a class="view-row-3" href="/link/to/node">
    <img src="source-of-teaser-image.png">
    <h3>Title of node</h3>
</a>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是访问模板中的各个字段.如果我使用视图模式,我可以访问各个字段.如果我在视图中选择"显示字段",我可以为"查看结果计数器"和"路径"添加一个字段,这将允许我添加"view-row-N"类并将a标记链接到节点,但我无法单独访问这些字段.我有{{row.content}}变量,但任何进一步挖掘变量的尝试(例如row.content.field_name)都没有给我任何信息并且调用{{dump(row.content)}}会使网站崩溃.

由于两个原因,我无法将其输出为视图模式.我无法在视图模式下访问"查看结果计数器"或"路径"字段,即使我有这些变量,某些字段也会嵌套在其他字段中(图像和标题嵌套在其中)

我觉得这应该真的很简单

<a class="view-row-{{ row.content.view_result_counter }}" href="{{ row.content.path }}">
Run Code Online (Sandbox Code Playgroud)

等等,但我已经尝试了我能想到的一切.我完全走错了路吗?到目前为止,Twig和我相处得不好......

views templating twig drupal-8

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

Drupal 8:视频嵌入字段库加载彩色盒响应视频的顺序

直截了当的问题:

是什么原因导致视频在使用Video Embed Field和Colorbox时响应?它是基于JavaScript库的正确加载顺序吗?或者也许它是在Video Embed Video模块中运行的东西?

关于我想要实现的目标的更长的解释/细节:

我正在构建一个Drupal 8站点,它有一个Media Bundle,我们称之为"卡片".卡片包含以下字段:

  • 标题
  • 图片
  • 悬停文字
  • YouTube视频

在默认状态下,用户可以看到标题和图像.悬停时,悬停文本覆盖在图像上.点击后,YouTube视频应启动到Colorbox模式.

我使用以下模块来解决这个问题:

  • 媒体实体
  • 媒体实体图片
  • 视频嵌入字段
  • 彩盒

我创建了Media Bundle w/Media实体和Media实体图像模块.我为YouTube视频字段的媒体包添加了视频嵌入字段.在Media Bundle的显示设置中,我将Video Embed Field设置为Colorbox并选中了Responsive Videos选项.

此时我确认我所有的田地都按照我的要求渲染.YouTube视频显示的是默认缩略图,而Colorbox模式工作正常 - 当可用宽度小于最大宽度配置时,它也会调整为更小.

现在我需要进行一些修改以获得标题,将文本和图像作为可点击区域的一部分来触发Colorbox.

我创建了一个自定义树枝模板来控制卡/媒体实体的显示.我注意到Video Embed Field能够基于类和"data-video-embed-field-modal"属性启动colorbox.所以我的计划是重新创建该结构并在div中嵌入我需要的其他字段.这是我的树枝模板:

<div{{ attributes }}>
  {% if content %}

    {#load libraries#}
    {{ attach_library('colorbox/colorbox') }}
    {{ attach_library('colorbox/init') }}
    {{ attach_library('colorbox/default') }}
    {{ attach_library('video_embed_field/colorbox') }}
    {{ attach_library('video_embed_field/responsive-video') }}

    <div class="{{ content.field_you.0['#attributes'].class.0 }}" data-video-embed-field-modal="{{ content.field_you.0['#attributes']['data-video-embed-field-modal'] }}">
      <div class="card-title">{{ name }}</div>
      <div class="hover-wrapper">
        <div class="card-image">{{ content.field_card_image }}</div>
        <div class="card-hovertext">{{ content.field_hover_text.0['#context'].value }}</div>
      </div> …
Run Code Online (Sandbox Code Playgroud)

drupal colorbox twig drupal-8

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

如何在Drupal 8中导入/导出内容类型?

如何在Drupal 8中将内容类型及其相关内容从一个网站导入/导出到另一个网站?

drupal-8

8
推荐指数
2
解决办法
7062
查看次数

IEF参考使用自动实体标签将父字段显示为标题

我是Drupal 8的新手,想为IEF参考标题添加字段值。目前,我正在使用自动实体标签版本2.x-dev自动为我的实体生成标题,但是当涉及到IEF引用时,我希望获取父级的名称作为IEF的标题。作为示例,请参见下图

我将堆栈溢出作为名称添加到Entity-X

然后我要添加一个新的IEF实体,该实体使用“自动实体”标签自动生成标题

创建IEF实体后

如您所见,它只说完成了15%,但我希望它可以完成堆栈溢出15%

这是我在“自动实体”标签中选择的标记,以在IEF参考中显示名称。

[entity-x:field_name] - [task:field_percent_complete] % Completed 
Run Code Online (Sandbox Code Playgroud)

此令牌模式放置在Task实体中

注意:我Entity-x和Task是系统中的两个不同实体

php drupal content-management-system drupal-8

8
推荐指数
0
解决办法
123
查看次数