2017-08-29 122 views
0

我正在尝试设置Drupal 7 Facebook页面插件模块,并且一切正常,它工作正常。为Drupal上的每个节点设置Facebook页面插件

我的问题是这样的:我不需要整个网站的独特小部件。我需要N个Facebook PagePlugin小部件才能在特定内容类型的M个节点中显示。我有一个内容类型“公司”,我需要在公司创建的每个配置文件中,这个小部件的配置可以分段的方式提供。 (1节点“公司”= 1个Facebook页面插件小部件)。

有没有办法为每个节点做到这一点?每个节点是否显示来自Facebook页面插件的配置临时?

代码?网站建设?

致各人问候

+0

丢掉模块,并且只需将必要的FB代码放置在此节点类型的自定义模板中...? – CBroe

+0

每个客户端都将是创建其公司配置文件的drupal编辑器用户。要求他们生成代码并插入代码并不直观。最好自动做到这一点:通过表单中的字段请求链接到Facebook页面,然后将其插入到窗口小部件设置中,但我不知道这是否可能: -/ – davidjguru

+0

谁说过让他们这样做?你对每个公司使用不同的模板,或者是什么?并且添加另一个字段到您的自定义节点类型应该不是真正的挑战。 – CBroe

回答

0

好的,任务完成了。 我只使用了六个(或七个:-P)部分:

  1. 首先,我创建了一个新的文本字段名为 facebook_direction的内容类型。
  2. 其次,我收到了Facebook Developers给出的facebook脚本。
  3. 第三,我写了一些PHP代码,用于获取有关当前节点 的信息并处理与节点关联的字段值。
  4. 第四,我使用PHP 代码更改了片段中的URL值,以便从每个节点获取每个Facebook页面。
  5. 第五,我在Drupal站点,名为“Facebook的 流部件”

  6. 第六取得了新的自定义块,我已经插入自定义块体的代码与PHP 主编活跃,标志着块仅限于种类 “公司”的内容类型。

地址:我确信,只有Facebook构件视图中创建是且仅当节点已经完成了现场的Facebook方向。否则,小部件不会生成(line if(!is_null($ direction))),所以它不显示为空。

下面是代码和正常工作:从塞维利亚

<div id="fb-root"></div> 
<script>(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/es_ES/sdk.js#xfbml=1&version=v2.10"; 
    fjs.parentNode.insertBefore(js, fjs); 
}(document, 'script', 'facebook-jssdk'));</script> 

<?php 

$field = 'field_facebook_direction'; 
$node = menu_get_object(); 
$items = field_get_items('node', $node, $field); 
$direction = $items[0]['value']; 
if (!is_null($direction)) { 
?> 
<div class="fb-page" data-adapt-container-width="true" data-hide- 
cover="false" data-href="<?php 
echo $direction;?>" data-show-facepile="false" data-small- 
header="false" data-tabs="timeline"> 

<blockquote cite="<?php echo $direction;?>" class="fb-xfbml-parse- 
ignore"> 
<a href="<?php echo $direction;?>">Facebook Stream</a></blockquote> 
</div> 

<?php 
} 

?> 

问候! :-)

相关问题