0

在另一个 SO 问题中,这是在 Blocks (Page selector (block development))中使用的答案。但是,例如,我们如何在仪表板中应用它?

变量“Concrete”和“ConcreteEvent”似乎在管理员中未定义。解决这个问题的最佳方法是什么?

示例代码(使用 5.7.x):

Concrete.event.bind('ConcreteSitemap', function(e, instance) {
    Concrete.event.bind('SitemapSelectPage', function(e, data) {
        if (data.instance == instance) {
            Concrete.event.unbind(e);
            alert("You've selected a page! " + data.cID);
        }
    });
});
4

1 回答 1

1

看起来Concrete.event总是加载在仪表板页面中。如果您担心加载顺序,您有几个选择。

  1. 做一个资产组,把事件js资产放在第一位。如果您随后包含该而不仅仅是资产,那么具体5 应该首先管理加载事件。
  2. 使用类似 jquery 的 onload 事件$(function() { ... })这将比您预期的稍晚触发,但它总是在加载事件后发生。
  3. 将资产的位置设置为\Concrete\Core\Asset\Asset::ASSET_POSITION_FOOTER这将导致您的 JS 包含在页脚而不是头部中,从而允许事件 JS 始终首先加载

希望对你有帮助

于 2016-05-18T21:38:20.277 回答