在/ blog上显示.PHP块,但不在内部博客页面上显示

时间:2014-11-19 10:52:40

标签: php html drupal drupal-7

我的主要博客页面(/博客)和各个博客页面本身都有一个块。

我希望该块继续显示在各个博客页面上的主要博客页面但不是

例如,该块应显示在 - this page上,而不是this page

块.PHP如下:

<?php 
$path = isset($_GET['q']) ? $_GET['q'] : '<front>';
$link = url($path, array('absolute' => TRUE));
$findme   = 'blog';
$pos = strpos($link, $findme);
if ($pos !== false) {
  RETURN TRUE;
}
$node = node_load(arg(1));
if($node->type == 'blog') {
  return TRUE;
}
?>

2 个答案:

答案 0 :(得分:1)

转到/ admin / structure / blocks,搜索块的名称,配置,在Pages选项卡中,选择“仅列出的页面”,然后在文本区域中写下主要博客页面的标题

答案 1 :(得分:0)

不使用php过滤器选项,而是转到给定块的配置页面。

在可见性设置下,在&#39;页面内&#39;字段集。选择“仅在列出的页面上&#39;”。在下面的textarea中输入博客的路径,在您的示例&#39; blog&#39;中。 如果您希望此块仅显示在子页面上,则可以输入“博客/ *”#39;代替。

或者,如果这是一个以编程方式创建的块,则在hook_block_info的实现中。将以下键添加到块数组中。

'visibility' => BLOCK_VISIBILITY_LISTED,
'pages' => 'blog',

实施例

function hook_block_info() {
  $blocks = array();

  $blocks['example_block'] = array(
    'info' => t('Example block'),
    'status' => 1,
    'region' => 'content',
    'visibility' => BLOCK_VISIBILITY_LISTED,
    'pages' => 'blog',
    'cache' => DRUPAL_CACHE_GLOBAL,
    'weight' => 3,
  );
}