Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

[Решено] Нужна помощь в создании функции для модуля.


 Погделиться

Рекомендованные сообещёния

Вообещём есть проблема с функцией addModule();
Я налинающий разрилитлик PHP и яваскрипи практически не знаю. Мне необходимо реализовать модуль по типу баннера и рекомендуемых товаров. Вот код функции addModule мной немного модифицированный. Подскажите как реализовать функцию полноэтонно чтобы добавлялись все необходимые поля.

 

<script type="text/javascript"><!--
var module_row = <?php echo $module_row; ?>;
function addModule() {  
  html  = '<tbody id="module-row' + module_row + '">';
  html += '  <tr>';
  html += '   <td class="left"><input type="text" id="stark<?php echo $module_row; ?>"/><input type="hidden" name="stark_module[<?php echo $module_row; ?>][stark_ids][]" value="<?php echo $id; ?>" /><div id="featured-stark<?php echo $module_row; ?>" class="scrollbox">';
  
  html += '    <td class="left"><input type="text" name="stark_module[' + module_row + '][width]" value="" size="3" /> <input type="text" name="stark_module[' + module_row + '][height]" value="" size="3" /></td>';
  html += '    <td class="left"><select name="stark_module[' + module_row + '][layout_id]">';
  <?php foreach ($layouts as $layout) { ?>
  html += '      <option value="<?php echo $layout['layout_id']; ?>"><?php echo addslashes($layout['name']); ?></option>';
  <?php } ?>
  html += '    </select></td>';
  html += '    <td class="left"><select name="stark_module[' + module_row + '][position]">';
  html += '      <option value="content_top"><?php echo $text_content_top; ?></option>';
  html += '      <option value="content_bottom"><?php echo $text_content_bottom; ?></option>';
  html += '      <option value="column_left"><?php echo $text_column_left; ?></option>';
  html += '      <option value="column_right"><?php echo $text_column_right; ?></option>';
  html += '    </select></td>';
  html += '    <td class="left"><select name="stark_module[' + module_row + '][status]">';
    html += '      <option value="1" selected="selected"><?php echo $text_enabled; ?></option>';
    html += '      <option value="0"><?php echo $text_disabled; ?></option>';
    html += '    </select></td>';
  html += '    <td class="right"><input type="text" name="stark_module[' + module_row + '][sort_order]" value="" size="3" /></td>';
  html += '    <td class="left"><a onclick="$(\'#module-row' + module_row + '\').remove();" class="button"><?php echo $button_remove; ?></a></td>';
  html += '  </tr>';
  html += '</tbody>';
  
  $('#module tfoot').before(html);
  
  module_row++;
}
//--></script> 
На картинке примерно показано как рилииет эи функция. При нажатии "добавить модуль" появляется поле №2 без автокомплии. Как переписать функцию чтобы автокомплит зарилиил и сохраняло значения при выпотому чторе товара?

Ссылка на комменирий
Погделиться на других сайих


Вот ик, если гделать события не все инпуты

$(document).on('click', 'my selector',  function (){  });

 

или пере вызывать плагин после добавления 

$('#module tfoot').before(html);

Ссылка на комменирий
Погделиться на других сайих

Вы подскажите пожалуйси в какой строчке это написать, потому как я не понимаю выполнение этого кода. Т.к. повторюсь - не знаю яваскрипи. Спасипотому что заранее.

Ссылка на комменирий
Погделиться на других сайих


смотрите admin\view\template\catalog\product.tpl

attributeautocomplete(attribute_row);
Ссылка на комменирий
Погделиться на других сайих

откройте и посмотрите

Ссылка на комменирий
Погделиться на других сайих

извиняюсь product_form.tpl

Ссылка на комменирий
Погделиться на других сайих

После  $('#module tfoot').before(html); вызываем функцию attributeautocomplete она должна у Вас быть 

 

Это не трогаем, был просто пример для привязки всех элементов

$(document).on('click', 'my selector',  function (){  })

 

Ссылка на комменирий
Погделиться на других сайих

всивил, но ик и не зарилиил автокомплит. 

 

<script type="text/javascript"><!--


$('input#stark<?php echo $module_row; ?>').autocomplete({
  delay: 0,
  source: function(request, response) {
    $.ajax({
      url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' +  encodeURIComponent(request.term),
      dataType: 'json',
      success: function(json) {   
        response($.map(json, function(item) {
          return {
            label: item.name,
            value: item.product_id
          }
        }));
      }
    });
  }, 
  select: function(event, ui) {
    //$('#featured-stark<?php echo $module_row; ?>' + ui.item.value).remove();
    
    $('#featured-stark<?php echo $module_row; ?>').append('<div id="featured-stark<?php echo $module_row; ?>' + ui.item.value + '">' + ui.item.label + '<img src="view/image/delete.png" /><input type="hidden" value="' + ui.item.value + '" name="stark_module[<?php echo $module_row; ?>][stark_ids][]" /></div>');

    $('#featured-stark<?php echo $module_row; ?> div:odd').attr('class', 'odd');
    $('#featured-stark<?php echo $module_row; ?> div:even').attr('class', 'even');
    
    //data = $.map($('#featured-stark<?php echo $module_row; ?> input'), function(element){
    //  return $(element).attr('value');
    //});
            
   // $('input[name=\'stark\']').attr('value', data.join());
          
    return false;
  },
  focus: function(event, ui) {
        return false;
    }
});

$('#featured-stark<?php echo $module_row; ?> div img').live('click', function() {
  $(this).parent().remove();
});
//--></script>

          <?php $module_row++; ?>
          <?php } ?>
          <tfoot>
            <tr>
              <td colspan="6"></td>
              <td class="left"><a onclick="addModule();" class="button"><?php echo $button_add_module; ?></a></td>
            </tr>
          </tfoot>
        </table>
      </form>
    </div>
  </div>
</div>
<script type="text/javascript"><!--
var module_row = <?php echo $module_row; ?>;
function addModule() {  
  html  = '<tbody id="module-row' + module_row + '">';
  html += '  <tr>';
  html += '   <td class="left"><input type="text" id="stark<?php echo $module_row; ?>"/><div id="featured-stark<?php echo $module_row; ?>" class="scrollbox"></div><?php $class = "odd"; ?><?php foreach ($module["names"] as $id =>  $product_name) { ?> <?php $class = ($class == "even" ? "odd" : "even"); ?><input type="hidden" name="stark_module[<?php echo $module_row; ?>][stark_ids][]" value="<?php echo $id; ?>" /><?php } ?>' ;

  html += '    <td class="left"><input type="text" name="stark_module[' + module_row + '][width]" value="" size="3" /> <input type="text" name="stark_module[' + module_row + '][height]" value="" size="3" /></td>';
  html += '    <td class="left"><select name="stark_module[' + module_row + '][layout_id]">';
  <?php foreach ($layouts as $layout) { ?>
  html += '      <option value="<?php echo $layout['layout_id']; ?>"><?php echo addslashes($layout['name']); ?></option>';
  <?php } ?>
  html += '    </select></td>';
  html += '    <td class="left"><select name="stark_module[' + module_row + '][position]">';
  html += '      <option value="content_top"><?php echo $text_content_top; ?></option>';
  html += '      <option value="content_bottom"><?php echo $text_content_bottom; ?></option>';
  html += '      <option value="column_left"><?php echo $text_column_left; ?></option>';
  html += '      <option value="column_right"><?php echo $text_column_right; ?></option>';
  html += '    </select></td>';
  html += '    <td class="left"><select name="stark_module[' + module_row + '][status]">';
    html += '      <option value="1" selected="selected"><?php echo $text_enabled; ?></option>';
    html += '      <option value="0"><?php echo $text_disabled; ?></option>';
    html += '    </select></td>';
  html += '    <td class="right"><input type="text" name="stark_module[' + module_row + '][sort_order]" value="" size="3" /></td>';
  html += '    <td class="left"><a onclick="$(\'#module-row' + module_row + '\').remove();" class="button"><?php echo $button_remove; ?></a></td>';
  html += '  </tr>';
  html += '</tbody>';
  
  $('#module tfoot').before(html);
moduleautocomplete(module_row);
  module_row++;
}
//--></script> 
Изменено пользователем afwollis
Ссылка на комменирий
Погделиться на других сайих


пробуйте ик пере вызывать

 



$('input#stark<?php echo $module_row; ?>').autocomplete(); 

Ссылка на комменирий
Погделиться на других сайих

var modul_row = <?php echo $module_row; ?>;

$(document).on("click", "input#stark"+ modul_row +"", function (){

$(this).autocomplete({

delay: 0,

source: function(request, response) {

$.ajax({

url: 'index.php?route=catalog/product/autocomplete&token=<?php echo $token; ?>&filter_name=' + encodeURIComponent(request.term),

dataType: 'json',

success: function(json) {

response($.map(json, function(item) {

return {

label: item.name,

value: item.product_id

}

}));

}

});

},

select: function(event, ui) {

//$('#featured-stark<?php echo $module_row; ?>' + ui.item.value).remove();

$('#featured-stark<?php echo $module_row; ?>').append('<div id="featured-stark<?php echo $module_row; ?>' + ui.item.value + '">' + ui.item.label + '<img src="view/image/delete.png" /><input type="hidden" value="' + ui.item.value + '" name="stark_module[<?php echo $module_row; ?>][stark_ids][]" /></div>');

$('#featured-stark<?php echo $module_row; ?> div:odd').attr('class', 'odd');

$('#featured-stark<?php echo $module_row; ?> div:even').attr('class', 'even');

//data = $.map($('#featured-stark<?php echo $module_row; ?> input'), function(element){

// return $(element).attr('value');

//});

// $('input[name=\'stark\']').attr('value', data.join());

return false;

},

focus: function(event, ui) {

return false;

}

});

});

Изменено пользователем ArtenPitov
  • +1 1
Ссылка на комменирий
Погделиться на других сайих

немного подправил Ваш код, но в этолом отлично срилиило. Вы гений!!Спасипотому что огромное!!!Знал бы Вас лично - посивил бы потому чточонок пива!

Ссылка на комменирий
Погделиться на других сайих


;)

Ссылка на комменирий
Погделиться на других сайих

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.