【问题标题】:Drupal 7 custom block not showing in block listDrupal 7自定义块未显示在阻止列表中
【发布时间】:2012-09-04 03:59:16
【问题描述】:

这里是 Drupal 7 新手,遇到以下问题。

我已启用我的块及其依赖项,但未显示在块列表中

谁能发现我在代码中可能遗漏的任何内容?

任何能指引我正确方向的帮助都将不胜感激!

提前致谢!

代码如下。

.info 文件

name = Bloque para el buscador - INMO
description = Bloque para mostrar el buscador geográfico de InmoAnuncios.
package = Modulos de Inmo Anuncios  
core = 7.x

scripts[] = bloque_buscador.js // exist in folder

dependencies[] = inmo_node_form // enabled 

.module 文件

<?php

/**
 * @file 
 * Modulo para el buscador de inmuebles
 * 
 * Este modulo provee de un bloque donde se despliega un buscador de inmuebles en el sitio
 */


/**
 * Implementa el hook_block_info() 
 * Este hook le dice a DRUPAL que este bloque se puede desplegar tanto en el home page como en el sidebar
 */
function bloque_buscador_block_info() {

    $blocks = array();

    $blocks['bloque_home'] = array(
        'info' => t('Inmo Buscador (home)'),
        'cache' => DRUPAL_NO_CACHE,
    );

    $blocks['bloque_sidebar'] = array(
        'info' => t('Inmo Buscador (sidebar)'),
        'cache' => DRUPAL_NO_CACHE,
    );

    return $blocks;
}

/**
 * 
 * @param type $delta
 * @return type
 * Implementa el hook_block_view()
 * 
 * 
 */
function bloque_buscador_block_view($delta = '') {

    $estados = db_query("SELECT * FROM estados WHERE enabled = 1;");
    $inmuebles = db_query("SELECT * FROM tipo_inmueble WHERE enabled = 1;");

    $optEstados = '';

    foreach ($estados as $estado) {
        $optEstados .= "<option value=\"{$estado->id}\">{$estado->nombre}</option>\n";
    }

    $optInmuebles = '<option value=\"0\">--Todos--</option>';

    foreach ($inmuebles as $inmueble) {
        $optInmuebles.= "<option value=\"{$inmueble->tipo_inmueble}\">{$inmueble->tipo_inmueble}</option>\n";
    }

    $contenido = <<<EOSTR
      <div class="jsrequired {$delta}" id="bloque_buscador">
        <header class="title">
          <h2>Encuentra tu inmueble ideal!</h2>
        </header>
        <div class="filtros">

          <form action="/filtro" method="GET">
            <table  border="0" cellpadding="0" cellspacing="0">
                <tr>
                    <td><label for="operacion">Busco inmuebles en:</label></td>
                    <td>
                        <label class="vc">Venta <input type="radio" name="operacion" id="operacion" value="venta"/></label>
                        <label class="vc">Renta <input type="radio" name="operacion" id="operacion" value="renta" /></label> 
                    </td>
                </tr>
                <tr>
                    <td><label for="tipo_inmueble">Tipo de inmueble?</label></td>
                    <td><select name="inmueble" id="inmueble" style="width:150px;"> $optInmuebles </select></td>
                </tr>
                <tr>
                    <td><label for="estado">En donde?</label></td>
                    <td><select name="estado" id="estado" style="width:150px;"> $optEstados </select></td>
                </tr>
                <tr>
                    <td colspan="2"><input type="submit" value="Buscar"></td>
                </tr>
          </table>
            </form>
        </div>
        <div class="mapa"><a href="#" class="mapa_buscador"></a></div>

      </div>
EOSTR;

    $bloque = array(
    "subject" => NULL,
    "content" => $contenido
  );
  return $bloque;
}

?>

【问题讨论】:

  • Drupal 现在有一个专用站点:drupal.stackexchange.com。你最好去那里问问。
  • 清除所有缓存,但一切似乎都很好,它应该显示两个块:Inmo Buscador(主页)和 Inmo Buscador(侧边栏)

标签: php drupal-7 block


【解决方案1】:

bloque_buscador_block_view 应指定返回哪个块显示,如 hook_block_view 文档中的示例所示

所以你应该有类似的东西:

  switch ($delta) {
    case 'bloque_home':
      $block['subject'] = NULL;
      $block['content'] = $contenido;
      break;

    case 'bloque_sidebar':
      // Insert appropriate code/logic here to display the sidebar block
      break;
  }
  return $block;

【讨论】:

  • 回复很晚,但感谢您花时间查看代码和回答!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
  • 2016-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多