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

Редактирование цен прямо в админке


autodetacker

Recommended Posts

Ребята, вот тут много видел модулей всяких придумано, примочек типа Экспорт / импорт. Помнится в ХТ-комерц когда-то юзал примочку удобную, прямо в админке можно было цены менять, а потом нажать на кнопочку сохранить. А редактировать любой товар можно было прямо с морды магазина, предварительно залогинившись. Опенкарт лучше XT-commerce тем что в нем нет гемора с сессиями. Однако весь функционал, который ребята пишут для Опенкарта в подобном направлении "слегка неудобен", либо "малоработоспособен". Нельзя ли просто в каталоге товаров админки прописать формы для редактирования тех или иных параметров? Есть же модуль прописывания пути к картинке прямо на странице товара в админке. Нельзя ли как-нить с ценами также? (хотя-бы)

Узкое место опенкарта - невозможность быстро и сравнительно удобно редактировать товар.

ЗЫ: Попробовал Fastedit - модуль несомненно хороший... Но, блин! Ребята! Ну не гинеколог я в таком малюсеньком всплывающем окошечке ковырять описание товара с таблицами, и т.д.

Извините если че за флуд... Не со зла я...

Надіслати
Поділитися на інших сайтах


Product status & price quick changer

admin\controller\catalog\product.php

add

public function status() {
    if ($this->request->server['REQUEST_METHOD'] == 'POST') {
      $this->db->query("UPDATE " . DB_PREFIX . "product SET status = '" . (int)$this->request->post['status'] . "' WHERE product_id = '" . (int)$this->request->post['product_id'] . "'");
      $this->cache->delete('product');
    }
  }
  
  public function price() {
    if ($this->request->server['REQUEST_METHOD'] == 'POST') {
      $this->db->query("UPDATE " . DB_PREFIX . "product SET price = '" . (float)$this->request->post['price'] . "' WHERE product_id = '" . (int)$this->request->post['product_id'] . "'");
      $this->cache->delete('product');
    }
  }

admin\view\template\catalog\product_list.tpl

replace status table column with

<td class="left">
              <label><input type="checkbox" name="status" value="<?php echo $product['product_id']; ?>" <?php echo ($product['status'] == 'Включено' ? 'checked="checked"' : ''); ?> /><span><?php echo $product['status']; ?></span></label>
            </td>

and price column with

<td>
              <input type="text" name="price" value="<?php echo $product['price']; ?>" size="10" id="price<?php echo $product['product_id']; ?>" /> <a onclick="updatePrice(<?php echo $product['product_id']; ?>);$(this).fadeTo(250, 0.2);$(this).fadeTo(150, 0.7);" class="save">Save</a>
            </td>

append

<script type="text/javascript"><!--
  $(document).ready(function() {
    
    $('input[name=\'status\']').change(function() {
      $.post('index.php?route=catalog/product/status', 'status=' + ($(this).attr('checked') ? '1' : '0') + '&product_id=' + $(this).val());

      var text = $(this).next().text() == 'Отключено' ? 'Включено' : 'Отключено';
      $(this).next().text(text);
    });
  });
  
  function updatePrice(product_id) {
    var price = $('#price' + product_id).val();

    $.post('index.php?route=catalog/product/price', 'price=' + price + '&product_id=' + product_id);
  }

//--></script>
Надіслати
Поділитися на інших сайтах

оставил только цену и добавил использование токенов

admin\controller\catalog\product.php

добавить

public function price() {

if ($this->request->server['REQUEST_METHOD'] == 'POST') {

$this->db->query("UPDATE " . DB_PREFIX . "product SET price = '" . (float)$this->request->post['price'] . "' WHERE product_id = '" . (int)$this->request->post['product_id'] . "'");

$this->cache->delete('product');

}

}

admin\view\template\catalog\product_list.tpl

заменить:

<td class="left">

<?php if ($product['special']) { ?>

<span style="text-decoration:line-through"><?php echo $product['price']; ?></span><br/><span style="color:#b00;"><?php echo $product['special']; ?></span>

<?php } else { ?>

<?php echo $product['price']; ?>

<?php } ?>

</td>

на

<td>

<input type="text" name="price" value="<?php echo $product['price']; ?>" size="10" id="price<?php echo $product['product_id']; ?>" /> <a onclick="updatePrice(<?php echo $product['product_id']; ?>);$(this).fadeTo(250, 0.2);$(this).fadeTo(150, 0.7);" class="save">Save</a>

</td>

в конце где скрипты добавил:

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

function updatePrice(product_id) {

var price = $('#price' + product_id).val();

$.post('index.php?route=catalog/product/price&token=<?php echo $token; ?>', 'price=' + price + '&product_id=' + product_id);

}

//--></script>

к скрипту который описал SOOR добавил &token=<?php echo $token; ?>

на версии 0.2.0 работает

SOOR в очередной раз спасибо

  • +1 2
Надіслати
Поділитися на інших сайтах

  • 1 month later...

Не удается поменять статус продукта. После выполнения всех действий по изменению файлов напротив статуса появился чекбокс. Можно поставить в нем галочку, но на включение и отключение продукта это никак не влияет. Версия 1.5.1

Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

для версии 0.2

Дополнение.

Добавил кнопку отменить, и сделал активацию поля формы редактирования по клику на текстовый блок.

Поле в шаблоне меняем вот на это!

<td>
<div id="<?php echo $product['product_id']; ?>" class="inlineEdit"><?php echo $product['price']; ?></div>
</td>

А скрипт меняем на этот:

<script type="text/javascript"><!--
  $(document).ready(function() {
        $('input[name=\'status\']').change(function() {
         $.post('index.php?route=catalog/product/status&token=<?php echo $token; ?>', 'status=' + ($(this).attr('checked') ? '1' : '0') + '&product_id=' + $(this).val());
         var text = $(this).next().text() == 'Отключено' ? 'Включено' : 'Отключено';
          $(this).next().text(text);
    });
  });
  
  $(".inlineEdit").bind("click", updateText);
	function updateText() {
			$(this).removeClass("inlineEdit");
			OrigText = $(this).html();
			OrigId = $(this).attr("id");
			Save = '<a class="save">Сохранить</a> ';
			Revert= '<a class="revert">Отменить</a>'
			$(this).addClass("selected").html('<input type="text" name="price"  value=' + OrigText + ' size="10" id="price' + OrigId + '" /><br/>' + Save + Revert).unbind('click', updateText);
		};
  
    
	$(".revert").live("click", function () {
        $(this).parent().html(OrigText).removeClass("selected").bind("click", updateText);
    });
	
	
		$(".save").live("click", function updatePrice(product_id) {
			 	
		var price = $('#price' + OrigId).val();
		$.post('index.php?route=catalog/product/price&token=<?php echo $token; ?>', 'price=' + price + '&product_id=' + OrigId);
	    alert('Цена успешно изменена. Новая цена:' + price);
        $(this).parent().html(price).removeClass("selected").bind("click", updateText);
});
//--></script>

И не забываем вносить изменения в контроллер!

admin\controller\catalog\product.php

  • +1 1
Надіслати
Поділитися на інших сайтах


  • 2 months later...
  • 2 months later...
  • 6 months later...
  • 1 year later...
  • 5 years later...
В 21.08.2011 в 23:20, snastik сказал:

оставил только цену и добавил использование токенов

admin\controller\catalog\product.php

добавить

public function price() {

if ($this->request->server['REQUEST_METHOD'] == 'POST') {

$this->db->query("UPDATE " . DB_PREFIX . "product SET price = '" . (float)$this->request->post['price'] . "' WHERE product_id = '" . (int)$this->request->post['product_id'] . "'");

$this->cache->delete('product');

}

}

admin\view\template\catalog\product_list.tpl

заменить:

<td class="left">

<?php if ($product['special']) { ?>

<span style="text-decoration:line-through"><?php echo $product['price']; ?></span><br/><span style="color:#b00;"><?php echo $product['special']; ?></span>

<?php } else { ?>

<?php echo $product['price']; ?>

<?php } ?>

</td>

на

<td>

<input type="text" name="price" value="<?php echo $product['price']; ?>" size="10" id="price<?php echo $product['product_id']; ?>" /> <a onclick="updatePrice(<?php echo $product['product_id']; ?>);$(this).fadeTo(250, 0.2);$(this).fadeTo(150, 0.7);" class="save">Save</a>

</td>

в конце где скрипты добавил:

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

function updatePrice(product_id) {

var price = $('#price' + product_id).val();

$.post('index.php?route=catalog/product/price&token=<?php echo $token; ?>', 'price=' + price + '&product_id=' + product_id);

}

//--></script>

к скрипту который описал SOOR добавил &token=<?php echo $token; ?>

на версии 0.2.0 работает

SOOR в очередной раз спасибо

Благодарочка!
работает на 1.5.5.1.2
но с маленькой проблемой
При фильтрации, например по модели, редактирование слетает

Как поправить? 

Надіслати
Поділитися на інших сайтах


В 03.11.2011 в 07:09, Yoda сказал:

для версии 0.2

Дополнение.

Добавил кнопку отменить, и сделал активацию поля формы редактирования по клику на текстовый блок.

Поле в шаблоне меняем вот на это!

 


<td>
<div id="<?php echo $product['product_id']; ?>" class="inlineEdit"><?php echo $product['price']; ?></div>
</td>

А скрипт меняем на этот:

 


<script type="text/javascript"><!--
  $(document).ready(function() {
        $('input[name=\'status\']').change(function() {
         $.post('index.php?route=catalog/product/status&token=<?php echo $token; ?>', 'status=' + ($(this).attr('checked') ? '1' : '0') + '&product_id=' + $(this).val());
         var text = $(this).next().text() == 'Отключено' ? 'Включено' : 'Отключено';
          $(this).next().text(text);
    });
  });
  
  $(".inlineEdit").bind("click", updateText);
	function updateText() {
			$(this).removeClass("inlineEdit");
			OrigText = $(this).html();
			OrigId = $(this).attr("id");
			Save = '<a class="save">Сохранить</a> ';
			Revert= '<a class="revert">Отменить</a>'
			$(this).addClass("selected").html('<input type="text" name="price"  value=' + OrigText + ' size="10" id="price' + OrigId + '" /><br/>' + Save + Revert).unbind('click', updateText);
		};
  
    
	$(".revert").live("click", function () {
        $(this).parent().html(OrigText).removeClass("selected").bind("click", updateText);
    });
	
	
		$(".save").live("click", function updatePrice(product_id) {
			 	
		var price = $('#price' + OrigId).val();
		$.post('index.php?route=catalog/product/price&token=<?php echo $token; ?>', 'price=' + price + '&product_id=' + OrigId);
	    alert('Цена успешно изменена. Новая цена:' + price);
        $(this).parent().html(price).removeClass("selected").bind("click", updateText);
});
//--></script>

И не забываем вносить изменения в контроллер!

admin\controller\catalog\product.php

тоже самое
при фильтрации не работает

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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