Grotti 0 Опубликовано 15 апреля, 2013 Жалоба Share Опубликовано 15 апреля, 2013 Здравствуйте! Появилась необходимость добавить собственное поле в админке на странице редактирования товара. Вот так: Это поле не должно быть показано пользователям. На самом деле по значению, в нём заданному, будет производиться сортировка товаров, то есть, это что-то типа рейтинга, который можно редактировать из панели админа. Поле-то я добавил (/admin/includes/modules/new_product.php), сортировку сделал сам, здесь нет никаких вопросов. Причём при загрузке этой страницы в поле даже автоматически вбивается нужное значение для конкретного товара (как здесь 300). Вот только не редактируется оно. Вбив туда какое-то значение, нажимаю кнопку "Сохранить", и ничего. Точнее, всё сохраняется, а мой products_v_rate (так поле в базе зовётся) - нет. Опыт работы с PHP, HTML, MySQL, как можно было догадаться, какой-никакой, да есть. Пробовал ковыряться в /admin/includes/classes/categories.php, но после того, как я там что-то изменил, получаю ошибку MySQL при сохранении. Видимо, сделал что-то не то. Прошу помощи. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 15 апреля, 2013 Жалоба Share Опубликовано 15 апреля, 2013 Ну всё правильно Вы указали, именно эти два файла и нужно править. В первом добавляется вывод нового поля, во втором, в методе insert_product обработка этого поля. Ссылка на сообщение Поделиться на другие сайты
Grotti 0 Опубликовано 15 апреля, 2013 Автор Жалоба Share Опубликовано 15 апреля, 2013 Ну всё правильно Вы указали, именно эти два файла и нужно править. В первом добавляется вывод нового поля, во втором, в методе insert_product обработка этого поля. Я не могу понять, как именно мне нужно "обрабатывать" это самое обычное числовое поле, поэтому и написал. Если добавляю в массив $sql_data_array (на той строке, где происходит его первое вхождение в методе products_insert, в Vam Shop версии 1.58 это 588 строка, самая длинная во всём файле) такой элемент: 'products_v_rate' => vam_db_prepare_input($products_data['products_v_rate']) , получаю ошибку БД при попытке сохранить товар. Если добавляю в массив с тем же названием, но в цикле foreach ($languages AS $lang), (у меня это строка 769) 'products_v_rate' => vam_db_prepare_input($products_data['products_v_rate'][$language_id]) , то нет ошибки БД, но значение, вписанное в поле, игнорируется, вместо него в БД всегда пишется 0. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 15 апреля, 2013 Жалоба Share Опубликовано 15 апреля, 2013 А почему Вы не хотите использовать какое-то из существующих полей, полей же много готовых, наверняка Вы не все их заполняете и используете. И код не придётся править, а новые колонки в базе не придётся добавлять, максимум в языковом файле текст названия поля поменять. Ссылка на сообщение Поделиться на другие сайты
Grotti 0 Опубликовано 15 апреля, 2013 Автор Жалоба Share Опубликовано 15 апреля, 2013 А почему Вы не хотите использовать какое-то из существующих полей, полей же много готовых, наверняка Вы не все их заполняете и используете. И код не придётся править, а новые колонки в базе не придётся добавлять, максимум в языковом файле текст названия поля поменять. Хотя бы потому, что если, скажем, через 5 лет я захочу что-то снова в движке поменять, начну в нём копаться, буду долго разбираться, почему у меня, к примеру, products_ean в базе есть не штрих-код, а рейтинг, если вообще это пойму. Это неверный путь, в любом случае. Как лапшу кушать ложкой. Да и для кого-то же эти поля придуманы. Вдруг потребуется заполнять когда-нибудь? UPD: Кстати, заметил, что после добавления элемента массива в 769 строку, при сохранении, устанавливается не всегда 0. Если ввёл многозначное число, то вторая по счёту цифра сохраняется. К примеру, если введу 3825, это будет 8. Вот только это не сильно помогает, потому что v_rate - обычно является многозначным числом. А потом понял, почему: 'products_v_rate' => vam_db_prepare_input($products_data['products_v_rate']) Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 16 апреля, 2013 Жалоба Share Опубликовано 16 апреля, 2013 Если у Вас поле не мультиязычное, т.е. не нужны значения на разных языках, то Вы берите за пример поле products_model в таблице products и делайте по аналогии. Ссылка на сообщение Поделиться на другие сайты
KoVaLsKy 59 Опубликовано 2 мая, 2014 Жалоба Share Опубликовано 2 мая, 2014 Саш, создал поле в таблице с товаром product_creator_id в admin/includes/modules/new_product.php кроме if ($product['product_creator_id'] =='') {$product_creator_id = $_SESSION['customer_id'];}; echo vam_draw_hidden_field('product_creator_id', $pInfo->product_creator_id); Это Я по аналогии с датой создания сделал. 150 строка, примерно. Мне нужно отслеживать id создателя товара что еще добавлять нужно? не заносятся данные в БД из этого поля Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 2 мая, 2014 Жалоба Share Опубликовано 2 мая, 2014 Нужно ещё править /admin/includes/classes/categories.php insert_product метод. Что б сохранялись данные в базу из нового поля. Ссылка на сообщение Поделиться на другие сайты
KoVaLsKy 59 Опубликовано 3 мая, 2014 Жалоба Share Опубликовано 3 мая, 2014 Работает. Спасибо Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 3 мая, 2014 Жалоба Share Опубликовано 3 мая, 2014 Не за что Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения