Drupal8,http请求到服务器并附加到站点

Drupal8,http请求到服务器并附加到站点,drupal,twig,drupal-8,Drupal,Twig,Drupal 8,我有一个Drupal8站点,我需要向另一台服务器发出http请求(请求内容),并像页脚一样将其附加到页面中。由于SEO问题,我无法在加载DOM后执行此操作 我熟悉WordPress,使用WP很容易。然而,我对如何使用.twig和Drupal8来实现这一点感到困惑。任何建议都很好。谢谢 如果您希望在将内容发送到浏览器时将其作为DOM的一部分,这不是您希望在Twig中执行的操作,您应该在该过程的早期加载内容 您可以将该块放置在主题的正确区域 block plugin类要求您编写一个build()方法

我有一个Drupal8站点,我需要向另一台服务器发出http请求(请求内容),并像页脚一样将其附加到页面中。由于SEO问题,我无法在加载DOM后执行此操作


我熟悉WordPress,使用WP很容易。然而,我对如何使用.twig和Drupal8来实现这一点感到困惑。任何建议都很好。谢谢

如果您希望在将内容发送到浏览器时将其作为DOM的一部分,这不是您希望在Twig中执行的操作,您应该在该过程的早期加载内容

您可以将该块放置在主题的正确区域

block plugin类要求您编写一个
build()
方法来返回块的渲染数组。在
build()
中,您可以执行任何需要获取内容的操作,包括使用Symfony的Guzzle客户端发出HTTP请求:

public function build() {
  $url = 'https://www.example.com/remote/service';
  $client = \Drupal::httpClient();
  $request = $client->createRequest('GET', $url);
  // Do whatever's needed to extract the data you need from the request...
  $build = ['my_remote_block' => [
      '#theme' => 'my_custom_theme_function',
      '#attributes' => [
         //An array of variables to pass to the theme
      ],
      '#cache' => [
        //Some appropriate cache settings
      ],
    ],
  ];
如果要从请求中获取HTML,则可以跳过自定义主题函数,返回一个带有
'#type'=>“markup”
的数组,然后返回一个标记字段。本示例的其余部分假设您获取了数据,并希望自己进行渲染

在模块的.module文件中,可以定义自定义主题函数(因此可以使用自己设计的细枝文件)

最后,您可以创建一个名为my custom theme function.html.twig的twig文件
,以呈现输出


这些设置通常很慢(因为浏览器的请求然后触发另一个HTTP请求+处理时间),所以您应该考虑尽可能多地缓存块或使用类似的技术(根据您的问题,这可能不是您的选择,但似乎值得指出)。.

如果您希望在将内容发送到浏览器时将其作为DOM的一部分,这不是您希望在Twig中执行的操作,您应该在该过程的早期加载内容

您可以将该块放置在主题的正确区域

block plugin类要求您编写一个
build()
方法来返回块的渲染数组。在
build()
中,您可以执行任何需要获取内容的操作,包括使用Symfony的Guzzle客户端发出HTTP请求:

public function build() {
  $url = 'https://www.example.com/remote/service';
  $client = \Drupal::httpClient();
  $request = $client->createRequest('GET', $url);
  // Do whatever's needed to extract the data you need from the request...
  $build = ['my_remote_block' => [
      '#theme' => 'my_custom_theme_function',
      '#attributes' => [
         //An array of variables to pass to the theme
      ],
      '#cache' => [
        //Some appropriate cache settings
      ],
    ],
  ];
如果要从请求中获取HTML,则可以跳过自定义主题函数,返回一个带有
'#type'=>“markup”
的数组,然后返回一个标记字段。本示例的其余部分假设您获取了数据,并希望自己进行渲染

在模块的.module文件中,可以定义自定义主题函数(因此可以使用自己设计的细枝文件)

最后,您可以创建一个名为my custom theme function.html.twig的twig文件
,以呈现输出


这些设置通常很慢(因为浏览器的请求然后触发另一个HTTP请求+处理时间),所以您应该考虑尽可能多地缓存块或使用类似的技术(根据您的问题,这可能不是您的选择,但似乎值得指出)。.

可能重复的可能重复的可能重复的我已经完成了这部分。你能帮我做下一部分吗@acrosmanI已完成此部分。你能帮我做下一部分吗@骑手