Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

mindthegap

Новачок
  
  • Публікації

    21
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем mindthegap

  1. Здравствуйте! Пишу модуль для своего сайта, интерфейс аналогичен модулю приветствие и выглядит так:

    2016_05_03_21_22_32.png

    Мне же нужно, чтобы первая вкладка была добавлена по умолчанию, без ее добавления. Т.е. при первом заходе в модуль, пользователь должен видеть такую картину:

    2016_05_03_21_26_31.png

    Я так понимаю, что нужно копать код js, но туплю и не могу понять, где именно.

    <script type="text/javascript"><!--
    var module_row = <?php echo $module_row; ?>;
    
    function addModule() {	
    	html  = '<div id="tab-module-' + module_row + '" class="vtabs-content">';
    	html += '  <div id="language-' + module_row + '" class="htabs">';
        <?php foreach ($languages as $language) { ?>
        html += '    <a href="#tab-language-'+ module_row + '-<?php echo $language['language_id']; ?>"><img src="view/image/flags/<?php echo $language['image']; ?>" title="<?php echo $language['name']; ?>" /> <?php echo $language['name']; ?></a>';
        <?php } ?>
    	html += '  </div>';
    
    	<?php foreach ($languages as $language) { ?>
    	html += '    <div id="tab-language-'+ module_row + '-<?php echo $language['language_id']; ?>">';
    	html += '      <table class="form">';
    	html += '        <tr>';
    	html += '          <td><?php echo $entry_description; ?></td>';
    	html += '          <td><textarea name="welcome_module[' + module_row + '][description][<?php echo $language['language_id']; ?>]" id="description-' + module_row + '-<?php echo $language['language_id']; ?>"></textarea></td>';
    	html += '        </tr>';
    	html += '      </table>';
    	html += '    </div>';
    	<?php } ?>
    
    	html += '  <table class="form">';
    	html += '    <tr>';
    	html += '      <td><?php echo $entry_layout; ?></td>';
    	html += '      <td><select name="welcome_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 += '    </tr>';
    	html += '    <tr>';
    	html += '      <td><?php echo $entry_position; ?></td>';
    	html += '      <td><select name="welcome_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 += '    </tr>';
    	html += '    <tr>';
    	html += '      <td><?php echo $entry_status; ?></td>';
    	html += '      <td><select name="welcome_module[' + module_row + '][status]">';
    	html += '        <option value="1"><?php echo $text_enabled; ?></option>';
    	html += '        <option value="0"><?php echo $text_disabled; ?></option>';
    	html += '      </select></td>';
    	html += '    </tr>';
    	html += '    <tr>';
    	html += '      <td><?php echo $entry_sort_order; ?></td>';
    	html += '      <td><input type="text" name="welcome_module[' + module_row + '][sort_order]" value="" size="3" /></td>';
    	html += '    </tr>';
    	html += '  </table>'; 
    	html += '</div>';
    	
    	$('#form').append(html);
    	
    	<?php foreach ($languages as $language) { ?>
    	CKEDITOR.replace('description-' + module_row + '-<?php echo $language['language_id']; ?>', {
    		filebrowserBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
    		filebrowserImageBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
    		filebrowserFlashBrowseUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
    		filebrowserUploadUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
    		filebrowserImageUploadUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>',
    		filebrowserFlashUploadUrl: 'index.php?route=common/filemanager&token=<?php echo $token; ?>'
    	});  
    	<?php } ?>
    	
    	$('#language-' + module_row + ' a').tabs();
    	
    	$('#module-add').before('<a href="#tab-module-' + module_row + '" id="module-' + module_row + '"><?php echo $tab_module; ?> ' + module_row + ' <img src="view/image/delete.png" alt="" onclick="$(\'.vtabs a:first\').trigger(\'click\'); $(\'#module-' + module_row + '\').remove(); $(\'#tab-module-' + module_row + '\').remove(); return false;" /></a>');
    	
    	$('.vtabs a').tabs();
    	
    	$('#module-' + module_row).trigger('click');
    	
    	module_row++;
    }
    //--></script> 
    <script type="text/javascript"><!--
    $('.vtabs a').tabs();
    //--></script> 
    <script type="text/javascript"><!--
    <?php $module_row = 1; ?>
    <?php foreach ($modules as $module) { ?>
    $('#language-<?php echo $module_row; ?> a').tabs();
    <?php $module_row++; ?>
    <?php } ?> 
    //--></script> 
     
  2. Необходимо перенести магазин c Ocstore v.1.5 на Ocstore v 2.1.0.1. Перенести все данные из БД о заказах, пользователях, проданных товарах и т.д., установить новый шаблон и перенести часть модулей (установить новые). Подробное ТЗ вышлю в лс по запросу.

  3. Привязал язык к валюте следующим образом. В контролере языка вывел:

    	$this->currency->set($this->request->post['currency_code']); 
    				unset($this->session->data['shipping_methods']); 
    				unset($this->session->data['shipping_method']); 
    

    И в шаблоне: 

    <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data">
      <div id="language">
        <?php
        foreach ($languages as $language) {
          if($language['code'] == 'en') {
             $cur_ = 'GBP';
          } else {
             $cur_ = 'EUR';
          }
        ?>
        <img src="image/flags/<?php echo $language['image']; ?>" alt="<?php echo $language['name']; ?>" title="<?php echo $language['name']; ?>" onclick="$('input[name=\'language_code\']').attr('value', '<?php echo $language['code']; ?>');$('input[name=\'currency_code\']').attr('value', '<?php echo $cur_; ?>');  $(this).parent().parent().submit();" />
        <?php } ?>
        <input type="hidden" name="language_code" value="" />
        <input type="hidden" name="currency_code" value="" />
        <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" />
      </div>
    </form>
    

    Но валюта не переключается вместе с языком. Почему такое может быть?

  4. Каким образом лучше реализовать?

    Стандартный метод тут не работает.

    // unset cookies
    if (isset($_SERVER['HTTP_COOKIE'])) {
        $cookies = explode(';', $_SERVER['HTTP_COOKIE']);
        foreach($cookies as $cookie) {
            $parts = explode('=', $cookie);
            $name = trim($parts[0]);
            setcookie($name, '', time()-1000);
            setcookie($name, '', time()-1000, '/');
        }
    }
    
  5. {ваши редиректы (ну миллионы ведь статей в свободном доступе)}

    ...родные правила движка

     

    Пробовал, но не работает ни так:

    RewriteRule ^categoria/(.*) category [L]

    ни так: 

    RewriteRule ^categoria/category [L]

    В чем может быть проблема?

  6. Здравствуйте! В магазине поменялось около 200 урлов, есть список старый keyword -> новый keyword. Как из этого сделать редиректы со старых урл на новые? Все стандартные способы не работают, т.к. у меня в наличии только кейворды, а не полные пути. 

  7. Доброго времени суток. Вывел опции в модули рекомендуемые, акции и хиты продаж и подключил скрипт для пересчета цены при выборе опций. Сам скрипт под спойлером. Но получилась непонятная ситуация: в рекомендуемых все отлично работает и цена считается, а в акциях и хитах продаж получаю NaN вместо цены, хотя параметры передаются вроде такие же, как и в рекомендуемых. Как выяснить проблему?

     

     

    Скрипт

    function price_format(n)
    { 
        c = <?php echo (empty($currency['decimals']) ? "0" : $currency['decimals'] ); ?>;
        d = '<?php echo $currency['decimal_point']; ?>'; // decimal separator
        t = '<?php echo $currency['thousand_point']; ?>'; // thousands separator
        s_left = '<?php echo $currency['symbol_left']; ?>';
        s_right = '<?php echo $currency['symbol_right']; ?>';
          
        n = n * <?php echo $currency['value']; ?>;
    
        //sign = (n < 0) ? '-' : '';
    
        //extracting the absolute value of the integer part of the number and converting to string
        i = parseInt(n = Math.abs(n).toFixed(c)) + ''; 
    
        j = ((j = i.length) > 3) ? j % 3 : 0; 
        return s_left + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : '') + s_right; 
    }
    
    function calc_price(pid)
    {
        var main_price = Number($('#formated_price_'+pid).attr('price'));
        var special = Number($('#formated_special_'+pid).attr('price'));
          
        var options_price = 0;
        
        $('#option_'+pid+' option:selected').each(function() {
          if ($(this).attr('price_prefix') == '=') {
            main_price = Number($(this).attr('price'));
            special = main_price;
            // tax = main_price;
          }
        });
    
        $('#option_'+pid+' option:selected').each(function() {
          if ($(this).attr('price_prefix') == '*') {
            main_price = main_price * Number($(this).attr('price'));
            special = special * Number($(this).attr('price'));
            // tax = tax * Number($(this).attr('price'));
          }
        });
    
        $('#option_'+pid+' option:selected').each(function() {
          if ($(this).attr('price_prefix') == '+')
            options_price = options_price + Number($(this).attr('price'));
          if ($(this).attr('price_prefix') == '-')
            options_price = options_price - Number($(this).attr('price'));
        });
    
        // Calculate new price (With options).
        var new_price = main_price + options_price;
        var new_special = special + options_price;
    	      
            
        // Display Main Price
        $('#formated_price_'+pid).html( price_format(new_price) );
    
        $('#formated_special_'+pid).html( price_format(new_special) );
    }
    
    <?php foreach ($products as $product) { ?>
      calc_price(<?php echo $product['product_id']; ?>);
    <?php } ?> 

     

    Модуль Акции, после компиляции кода в браузере

    <div class="box">
      <div class="box-heading">Акции</div>
     <div class="box-content">
        <div id="box-product">
                <div>
                    <div class="image"><a href="http://opencart/index.php?route=product/product&product_id=80"><img src="http://opencart/image/cache/data/10339-250x300.png" alt="Test Product" /></a></div>
                    <div class="name"><a href="http://opencart/index.php?route=product/product&product_id=80">Test Product</a></div>
                    <div class="price">
                    <span class="price-old">2 000 р.</span><span class="price-new"><span id="formated_special_80" price="1200.0000">1 200 р.</span></span>
                  </div>
    
    <div class="cart">
    <div class="options">
    <div id="option_80">
                                                                                                <div id="option-248" class="option">
    <select name="option[250]" onchange="calc_price(82);" >
                                                                                                <option value="64"price_prefix="+" price="280 р.">0.7 кг</option>
                                                                                                <option value="65"price_prefix="=" price="1 444 р.">1.84 кг</option>
                                                                                                <option value="66"price_prefix="+" price="200 р.">2.72 кг</option>
    </select>
    </div>
                                                                                                </div>
                                                                                                                </div>     
            <input type="button" value="В корзину" class="button" />
            </div>
          </div>

     

     

    Скрипт, после компиляции кода в браузере

    <script type="text/javascript"><!--
    
    function price_format(n)
    { 
        c = 0;
        d = '.'; // decimal separator
        t = ' '; // thousands separator
        s_left = '';
        s_right = ' р.';
          
        n = n * 1.00000000;
    
        //sign = (n < 0) ? '-' : '';
    
        //extracting the absolute value of the integer part of the number and converting to string
        i = parseInt(n = Math.abs(n).toFixed(c)) + ''; 
    
        j = ((j = i.length) > 3) ? j % 3 : 0; 
        return s_left + (j ? i.substr(0, j) + t : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : '') + s_right; 
    }
    
    function calc_price(pid)
    {
        var main_price = Number($('#formated_price_'+pid).attr('price'));
        var special = Number($('#formated_special_'+pid).attr('price'));
          
        var options_price = 0;
        
        $('#option_'+pid+' option:selected').each(function() {
          if ($(this).attr('price_prefix') == '=') {
            main_price = Number($(this).attr('price'));
            special = main_price;
            // tax = main_price;
          }
        });
    
        $('#option_'+pid+' option:selected').each(function() {
          if ($(this).attr('price_prefix') == '*') {
            main_price = main_price * Number($(this).attr('price'));
            special = special * Number($(this).attr('price'));
            // tax = tax * Number($(this).attr('price'));
          }
        });
    
        $('#option_'+pid+' option:selected').each(function() {
          if ($(this).attr('price_prefix') == '+')
            options_price = options_price + Number($(this).attr('price'));
          if ($(this).attr('price_prefix') == '-')
            options_price = options_price - Number($(this).attr('price'));
        });
    
        // Calculate new price (With options).
        var new_price = main_price + options_price;
        var new_special = special + options_price;
            
        // Display Main Price
        $('#formated_price_'+pid).html( price_format(new_price) );
    
        $('#formated_special_'+pid).html( price_format(new_special) );
    }
    
      calc_price(80);
      calc_price(78);
      calc_price(77);
      calc_price(79);
      calc_price(82);
    
    //--></script> 
  8. Здравствуйте. Большое спасибо за помощь в прошлой теме. Еще один вопрос возник, пока не знаю, как подступиться. Как отсортировать сопутствующие товары (которые задаются в карточке товара, в разделе связи) по id? Нужно вывести их по порядку, т.е. 1,2,3,4 и т.д.

  9. Здравствуйте, мне необходимо, если корзина становится пустой - присвоить ей класс empty. На php это реализовал, а вот на jquery - не получается. Пробовал отслеживать текст "Товаров: 0 (0 р.)", получилось примерно так:

        if ($('#cart-total:contains("Товаров: 0 (0 р.)")').length > 0) {
        $("#cart").addClass("empty");
    }
    

    Все работает, но только после перезагрузки. Когда же удаляешь товары - класс не меняется. Пробовал отслеживать изменения в реальном времени, тоже ничего:

    $('#cart-total').bind("DOMSubtreeModified",function(){
        if ($('#cart-total:contains("Товаров: 0 (0 р.)")').length > 0) {
        $("#cart-icn").addClass("empty");
    }
    });

    Как сделать так, если человек удалил все товары из корзины и она стала пустой, то ей присваивался класс empty через jquery?

  10. Здравствуйте. Нужен простой скрипт, для импорта данных из xml-файла в БД. Сам xml-файл с данными автоматически скачивается каждый день на сервер. Файл содержит:

    • Артикул товара
    • Цена
    • Информация о наличии

    Необходимо написать простой скрипт, запускаемый из браузера и импортирующий данные из xml в соответствующий столбцы БД (sku, price, quantity).

  11. Есть обычные Опенкартовские категории, к которым прикручен таймер обратного отсчета. В админке у этих категорий выбирается изображение (как обычно в Опенкарт) и выставляется дата начала и конца отсчета. В самом магазине это выглядит как таймер в категории, которая отключается после окончания времени. Так вот, необходимо реализовать полное удаление категорий из базы (вместо обычного отключения).

  12. Добрый день. Помогите, мучаюсь уже 3 часа. Возникла необходимость сделать простейший калькулятор стоимости в карточке товара. В языках программирования я полный ноль, поэтому не смейтесь. Смысл таков:

    <div><b>Расчет стоимости</b></div>
    <div><input type="text" value="1" id="num" onblur="Add()"></div>
    <div id="res"></div>
    

    Необходимо, чтобы при введении числа в поле #num в поле #res появлялось #num * $price, т.е. цену товара.

    Пробовал реализовать это с помощью php, но контроллер ругался на переменную. Попробовал сделать с помощью js.

    <script>
    function Add(){
        var Price = document.getElementById('price');
        var Num = document.getElementById('num');
        var Res = document.getElementById('res');
        Res.innerHTML = Price.innerHTML * Num.value;
    }
    </script>
    

    Код почему-то не работает, выдает ошибку.

     

    Дальше пробовал второй вариант:

    <script>
    $(document).ready(function() {
        $("#num").blur(function(){
    price = $("#price").text();
    num = $("#num").val();
    result = parseInt(price)*parseInt(num);
    $("#res").text(result);
    </script>

    Подскажите, где моя ошибка?
     

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.