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