在Magento中命名一个无名(ANONYMOUS)区块?

时间:2015-11-22 03:23:59

标签: php magento block anonymous

我正面临着一个非常奇怪的故障。所以,我正在尝试使用以下代码{{block type="core/template" name="ves_random_products" template="page/RandomProducts.phtml"}}向我的家添加一个块,它可以很好地工作,从集合中显示随机产品等等。

现在我正在使用整页缓存扩展,我需要使这个块动态化,问题是Magento似乎不会将“ves_random_products”作为块名称,当页面加载时,我的block没有名称(无名/匿名),当我执行var_dump(Mage::app()->getLayout()->getAllBlocks());时,块的名称显示为“ANONYMOUS_0”。最奇怪的是,在Mage::app()->getLayout()->getAllBlocks()内,我可以看到参数“name”,其值为“ves_random_products”。 var_dump的完整输出是:

array(1) {
  ["ANONYMOUS_0"]=>
  object(Mage_Core_Block_Template)#243 (31) {
    ["_viewDir":protected]=>
    string(32) "/var/www/html/magento/app/design"
    ["_viewVars":protected]=>
    array(0) {
    }
    ["_baseUrl":protected]=>
    NULL
    ["_jsUrl":protected]=>
    NULL
    ["_allowSymlinks":protected]=>
    NULL
    ["_template":protected]=>
    string(25) "page/RandomProducts.phtml"
    ["_nameInLayout":protected]=>
    string(12) "ANONYMOUS_0"
    ["_layout":protected]=>
    object(Mage_Core_Model_Layout)#192 (15) {
      ["_update":protected]=>
      object(Mage_Core_Model_Layout_Update)#191 (7) {
        ["_elementClass":protected]=>
        NULL
        ["_packageLayout":protected]=>
        NULL
        ["_cacheId":protected]=>
        NULL
        ["_cachePrefix":protected]=>
        NULL
        ["_updates":protected]=>
        array(0) {
        }
        ["_handles":protected]=>
        array(7) {
          ["default"]=>
          int(1)
          ["cms_page"]=>
          int(1)
          ["STORE_fsview"]=>
          int(1)
          ["THEME_frontend_default_ves_superstore"]=>
          int(1)
          ["cms_index_index"]=>
          int(1)
          ["page_one_column"]=>
          int(1)
          ["customer_logged_out"]=>
          int(1)
        }
        ["_subst":protected]=>
        array(2) {
          ["from"]=>
          array(2) {
            [0]=>
            string(11) "{{baseUrl}}"
            [1]=>
            string(17) "{{baseSecureUrl}}"
          }
          ["to"]=>
          array(2) {
            [0]=>
            string(26) "http://mystore.com/"
            [1]=>
            string(27) "https://mystore.com/"
          }
        }
      }
      ["_blocks":protected]=>
      *RECURSION*
      ["_output":protected]=>
      array(0) {
      }
      ["_area":protected]=>
      string(8) "frontend"
      ["_helpers":protected]=>
      array(0) {
      }
      ["_directOutput":protected]=>
      bool(false)
      ["_xml":protected]=>
      object(Mage_Core_Model_Layout_Element)#40 (0) {
      }
      ["_cacheId":protected]=>
      NULL
      ["_cacheTags":protected]=>
      array(0) {
      }
      ["_cacheLifetime":protected]=>
      NULL
      ["_cacheChecksum":protected]=>
      bool(false)
      ["_cacheSaved":protected]=>
      bool(false)
      ["_cache":protected]=>
      NULL
      ["_elementClass":protected]=>
      string(30) "Mage_Core_Model_Layout_Element"
      ["_xpathExtends":protected]=>
      string(13) "//*[@extends]"
    }
    ["_parent":protected]=>
    NULL
    ["_alias":protected]=>
    NULL
    ["_anonSuffix":protected]=>
    NULL
    ["_children":protected]=>
    array(0) {
    }
    ["_sortedChildren":protected]=>
    array(0) {
    }
    ["_childrenHtmlCache":protected]=>
    array(0) {
    }
    ["_childGroups":protected]=>
    array(0) {
    }
    ["_request":protected]=>
    NULL
    ["_messagesBlock":protected]=>
    NULL
    ["_isAnonymous":protected]=>
    bool(true)
    ["_parentBlock":protected]=>
    NULL
    ["_frameOpenTag":protected]=>
    NULL
    ["_frameCloseTag":protected]=>
    NULL
    ["_sortInstructions":protected]=>
    array(0) {
    }
    ["_factory":protected]=>
    NULL
    ["_app":protected]=>
    NULL
    ["_data":protected]=>
    array(5) {
      ["type"]=>
      string(13) "core/template"
      ["name"]=>
      string(19) "ves_random_products"
      ["template"]=>
      string(25) "page/RandomProducts.phtml"
      ["block_params"]=>
      array(3) {
        ["type"]=>
        string(13) "core/template"
        ["name"]=>
        string(19) "ves_random_products"
        ["template"]=>
        string(25) "page/RandomProducts.phtml"
      }
      ["module_name"]=>
      string(9) "Mage_Core"
    }
    ["_hasDataChanges":protected]=>
    bool(true)
    ["_origData":protected]=>
    NULL
    ["_idFieldName":protected]=>
    NULL
    ["_isDeleted":protected]=>
    bool(false)
    ["_oldFieldsMap":protected]=>
    array(0) {
    }
    ["_syncFieldsMap":protected]=>
    array(0) {
    }
  }
}

我正在尝试没有成功让这个块有一个名字,我做错了什么?看着整个互联网,似乎我是唯一一个面临这个问题的人(?!)。奇怪的。这是一个核心故障吗?谢谢!

1 个答案:

答案 0 :(得分:1)

我不确定,但是因为看起来你在CMS中添加了这个块我觉得这个名字被忽略了。您可能需要将其保存在布局XML中,以使其实际计为命名。

无论哪种方式,我认为只是命名它将解决你的主要问题,你需要的是打孔FPC - 使用这种方法可能会有所帮助:

https://magento.stackexchange.com/questions/35140/static-block-fpc-hole-punch