Quote from: Int at Feb 19, 2010, 03:34 AM
письмо с пустой ячейкой приходит.
Я немного неправильно написал. Давайте сделаем так. Способ добавления в админку оставляем как я писал выше. Но остальное делаем по-другому. Ищем в файле nopcart.js в самом начале строку
OutputItemAddtlInfo = 'ADDTLINFO_';
и сразу после нее вставляем
OutputItemAddColor = 'COLOR_';
далее ищем кусок кода
if (PaymentProcessor != '') {
//Process description field for payment processors instead of hidden values.
//Format Description of product as:
// ID, Name, Qty X
strPP += fields[0] + ", " + fields[3];
if (fields[5] != "") strPP += " - " + fields[5];
strPP += ", Qty. " + fields[1] + "\n";
} else {
strOutput += "<input type=hidden name=\"" + OutputItemId + strFooter + "\" value=\"" + fields[0] + "\">";
strOutput += "<input type=hidden name=\"" + OutputItemQuantity + strFooter + "\" value=\"" + fields[1] + "\">";
strOutput += "<input type=hidden name=\"" + OutputItemPrice + strFooter + "\" value=\"" + fields[2] + "\">";
strOutput += "<input type=hidden name=\"" + OutputItemName + strFooter + "\" value=\"" + fields[3] + "\">";
strOutput += "<input type=hidden name=\"" + OutputItemShipping + strFooter + "\" value=\"" + fields[4] + "\">";
strOutput += "<input type=hidden name=\"" + OutputItemAddtlInfo + strFooter + "\" value=\"" + fields[5] + "\">";
}
и сразу после
strOutput += "<input type=hidden name=\"" + OutputItemAddtlInfo + strFooter + "\" value=\"" + fields[5] + "\">";
добавляем
strOutput += "<input type=hidden name=\"" + OutputItemAddColor + strFooter + "\" value=\"" + color + "\">";
Теперь идет в сниппет и ищем
for ($i = 1;$i < $maxpr;$i++) {
$field_name = 'NAME_' . $i;
$field_quantity = 'QUANTITY_' . $i;
$field_price = 'PRICE_' . $i;
$field_id = 'ID_' . $i;
$field_addtlinfo = 'ADDTLINFO_' . $i;
if (isset($_POST[$field_name])) {
if ($_POST[$field_name] != "") {
$NAME[$i] = $_POST[$field_name];
$QUANTITY[$i] = $_POST[$field_quantity];
$PRICE[$i] = $_POST[$field_price];
$ID[$i] = $_POST[$field_id];
$ADDTLINFO[$i] = $_POST[$field_addtlinfo];
}
}
}
После
$field_addtlinfo = 'ADDTLINFO_' . $i;
Добавляем
$field_color = 'COLOR_' . $i;
а после
$ADDTLINFO[$i] = $_POST[$field_addtlinfo];
добавляем
$COLOR[$i] = $_POST[$field_color];
Далее в сниппете после
$tablemail1 = str_replace("[+shop.mail.name+]", $NAME[$i] . $ADDTLINFO[$i], $tablemail1);
добавляем
$tablemail1 = str_replace("[+shop.mail.color+]", $COLOR[$i], $tablemail1);
Теперь доступен плейсхолдер [+shop.mail.color+] в письме.
Осталось только в БД его вписать. Опять идем в файл snippet/shop/include/saveorder_db.inc.php и ищем строку
INSERT INTO `".$shop_order_detail."` ( `numorder` , `quantity` , `price` , `id` , `name`)
VALUES ( '".$numorder."', '".$QUANTITY[$i]."', '".$PRICE[$i]."', '".$ID[$i]."', '".$NAME[$i]."');
и заменяем на
INSERT INTO `".$shop_order_detail."` ( `numorder` , `quantity` , `price` , `id` , `name`, `color`)
VALUES ( '".$numorder."', '".$QUANTITY[$i]."', '".$PRICE[$i]."', '".$ID[$i]."', '".$NAME[$i]."', '".$COLOR[$i]."');
Все, должно работать. Т.е. вместо моего первого примера из предыдущего поста используем этот. А добавление в админку остается без изменения. Везде вместо color и COLOR можно подставляеть свою значение. По такому принципу добавляется неограниченное количество ополнительных ТВ.