我已经创建了一个自定义Drupal 8模块,该模块与自定义块和块表单一起工作以收集一些信息.
这一切都很好.
我还有一个twig模板,我想用我买的php feed类渲染一个twitter feed.我只是不知道它是如何将它集成到模块中的.
这是该课程的设置:http://austinbrunkhorst.com/demos/twitter-class/#setup
它包含两个文件:
ultimate.twitter.feed.php
和
tmhOAuth.php
这是目前的一个require_once 'tmhOAuth.php';主管ultimate.twitter.feed.php
根据指令,我应该创建一个具有以下内容的php文件:
$options = array(
'screen_name' => 'FeedTestUser',
'consumer_key' => '...',
'consumer_secret' => '...',
'user_token' => '...',
'user_secret' => '...',
);
$twitter = new Twitter($options);
$twitter->PrintFeed();
Run Code Online (Sandbox Code Playgroud)
我猜这也是一个障碍因为twig文件不是php
非常感谢任何帮助.
C
我会在您的模块中将该类设置为服务。然后,您的块将实现该服务并进行处理。如果可以避免的话,您实际上不想使用require_once()它,而是使用 Drupal 构造(部分原因是,如果您稍后重新组织内容,Drupal 将帮助在新位置找到文件)。
将该类放置在模块的 src 目录中,并将命名空间添加到文件的开头(假设那里还没有命名空间)。然后,在块的类文件中,您应该能够添加引用该名称空间的 use 语句(更好的是使用依赖项注入,但详细信息会妨碍您在这里)。
然后,在块类的build()方法中,您可以按照问题中的描述实例化该类,但您可能希望捕获该 HTML 并将其作为标记放入块中,而不只是让模块打印 HTML。如果该类允许您在不使用缓冲区的情况下执行此操作,那么您应该(但我在文档中没有看到任何支持这一点的内容),然后尝试对结构化数据进行主题化。如果没有,您可以使用PHP 的输出缓冲来捕获其打印尝试:
ob_start();
$twitter->PrintFeed();
$content= ob_get_contents();
ob_end_clean();
Run Code Online (Sandbox Code Playgroud)
然后将生成的标记放入渲染数组中:
return [
'my_twitter_block' => [
'#markup' => $content,
],
];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1763 次 |
| 最近记录: |