ImpressPages 4.x上的多个小部件实例

时间:2014-10-21 12:36:16

标签: php impresspages

我创建了生成样本数据的新窗口小部件。例如:

ContactWidget命名小部件会生成联系人模板:

插件/ ContactWidget /空间/ ContactWidget /皮肤/如default.php

<?php $random_id = rand(100, 999); ?>
<div class="iconbox">
    <h4>
        <?php echo ipSlot('text', array('id' => 'contact_'.$random_id.'_title', 'default' => 'Title')); ?>
    </h4>
    <?php echo ipSlot('text', array('id' => 'contact_'.$random_id.'_desc', 'default' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut pharetra, erat commodo fringilla consequat, urna velit ultrices orci, vel tincidunt risus ex in nisl.', 'tag' => 'p')); ?>
</div>

我使用random()因为应该是唯一的id。但是当我刷新页面时,丢失了所有数据。

如何使用可编辑的Slots

生成窗口小部件多个实例

1 个答案:

答案 0 :(得分:1)

您正在皮肤中生成ID。这意味着在每个页面视图上再次生成此ID。

正确的方法是扩展默认小部件控制器类并覆盖defaultData数据方法。这是生成唯一ID并将其以默认数据数组返回的位置。然后你就可以在皮肤中使用那个id了。请注意,这仅适用于新的小部件。

如何扩展该方法: http://www.impresspages.org/docs/widgets(阅读PHP侧栏目) http://www.impresspages.org/docs/class-ip-widgetcontroller(默认小部件控制器类)