Я видел странное поведение для пользовательского плагина. Это скин генерирует немного HTML, и он отлично работает. Как только я перетаскиваю виджет на страницу, он виден только после обновления страницы. То же самое верно, когда я пытаюсь перетащить виджет в другую позицию.
Кто-нибудь испытывал такую же проблему? Я не уверен, является ли это ошибкой, или я могу что-то пропустить в моем коде.
[редактировать] Существует проблема с ipContent () -> getCurrentPage () -> getId (), которая имеет значение NULL после выполнения любого действия перетаскивания [редактировать]
Это мой файл скина:
<div>
<div class="form-group">
<div class="checkbox">
<label>
<input id="auth-email-check-nutzung" type="checkbox"><?php echo ipSlot('text', array(
'id' => 'nutzungsbedingungen_' . ipContent()->getCurrentPage()->getId(),
'default' => 'Ich stimme den <a href="#">Nutzungebedingungen</a> zu.',
'attributes' => array(
'id' => 'auth-email-check-nutzung-text'
)
)); ?>
</label>
</div>
<div class="checkbox">
<label>
<input id="auth-email-check-daten" type="checkbox"><?php echo ipSlot('text', array(
'id' => 'datenschutz' . ipContent()->getCurrentPage()->getId(),
'default' => 'Ich stimme der <a href="#">Datenschutzerklärung</a> zu.',
'attributes' => array(
'id' => 'auth-email-check-daten-text'
)
)); ?>
</label>
</div>
</div>
<form class="form" role="form">
<div class="form-group">
<label for="inputEmail1" class="control-label">Email</label>
<input type="email" class="form-control" id="inputEmail1" placeholder="Email">
</div>
<div class="form-group">
<?php if ((ipIsManagementState())) :?>
<?php
// Use a simulated Button to edit text and prevent any default button event
// for user friendly inline editing
echo ipSlot('text', array(
'id' => 'button' . ipContent()->getCurrentPage()->getId(),
'default' => 'senden',
'tag' => "div",
'class' => 'btn btn-danger auth-button btn-block',
'attributes' => array(
'data-target' => 'bs-button',
'id' => 'auth-email-button-div'
)
)); ?>
<?php endif; ?>
<?php if (!(ipIsManagementState())) :?>
<?php
// Display real Button only on the live page with the contents of ipSlot :
// 'id' => 'button' . ipContent()->getCurrentPage()->getId()
echo ipSlot('text',array(
'id' => 'button' . ipContent()->getCurrentPage()->getId(),
'tag' => "button",
'class' => 'btn btn-danger btn-block',
'attributes' => array(
'data-target' => 'bs-button',
'id' => 'auth-email-button',
'disabled' => 'disabled'
)
)); ?>
<?php endif; ?>
</div>
</form>
</div>
Заранее спасибо.
Когда вы перезагрузите страницу, «currentPage» действительно существует. Вот почему код работает. Но когда вы перетаскиваете новый виджет или перемещаете его, его содержимое загружается с помощью AJAX. У запроса AJAX нет реальной страницы. Таким образом, получение идентификатора текущей страницы в оболочке виджета невозможно в некоторых моментах.
Других решений пока нет …