Перейти к содержанию
Форум поддержки пользователей VamShop

Добавить поле в админке для товара


Рекомендуемые сообщения

Здравствуйте! Появилась необходимость добавить собственное поле в админке на странице редактирования товара. Вот так:
XlyR6UbP.png
Это поле не должно быть показано пользователям. На самом деле по значению, в нём заданному, будет производиться сортировка товаров, то есть, это что-то типа рейтинга, который можно редактировать из панели админа. Поле-то я добавил (/admin/includes/modules/new_product.php), сортировку сделал сам, здесь нет никаких вопросов. Причём при загрузке этой страницы в поле даже автоматически вбивается нужное значение для конкретного товара (как здесь 300). Вот только не редактируется оно. Вбив туда какое-то значение, нажимаю кнопку "Сохранить", и ничего. Точнее, всё сохраняется, а мой products_v_rate (так поле в базе зовётся) - нет. Опыт работы с PHP, HTML, MySQL, как можно было догадаться, какой-никакой, да есть.

Пробовал ковыряться в /admin/includes/classes/categories.php, но после того, как я там что-то изменил, получаю ошибку MySQL при сохранении. Видимо, сделал что-то не то. Прошу помощи.

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

Ну всё правильно Вы указали, именно эти два файла и нужно править.

В первом добавляется вывод нового поля, во втором, в методе insert_product обработка этого поля.

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

Ну всё правильно Вы указали, именно эти два файла и нужно править.

В первом добавляется вывод нового поля, во втором, в методе 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.

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

А почему Вы не хотите использовать какое-то из существующих полей, полей же много готовых, наверняка Вы не все их заполняете и используете.

 

И код не придётся править, а новые колонки в базе не придётся добавлять, максимум в языковом файле текст названия поля поменять.

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

А почему Вы не хотите использовать какое-то из существующих полей, полей же много готовых, наверняка Вы не все их заполняете и используете.

 

И код не придётся править, а новые колонки в базе не придётся добавлять, максимум в языковом файле текст названия поля поменять.

 

Хотя бы потому, что если, скажем, через 5 лет я захочу что-то снова в движке поменять, начну в нём копаться, буду долго разбираться, почему у меня, к примеру, products_ean в базе есть не штрих-код, а рейтинг, если вообще это пойму. Это неверный путь, в любом случае. Как лапшу кушать ложкой.

Да и для кого-то же эти поля придуманы. Вдруг потребуется заполнять когда-нибудь?

 

UPD: Кстати, заметил, что после добавления элемента массива в 769 строку, при сохранении, устанавливается не всегда 0. Если ввёл многозначное число, то вторая по счёту цифра сохраняется. К примеру, если введу 3825, это будет 8. Вот только это не сильно помогает, потому что v_rate - обычно является многозначным числом. А потом понял, почему:

'products_v_rate' => vam_db_prepare_input($products_data['products_v_rate'])
Ссылка на сообщение
Поделиться на другие сайты

Если у Вас поле не мультиязычное, т.е. не нужны значения на разных языках, то Вы берите за пример поле products_model в таблице products и делайте по аналогии.

Ссылка на сообщение
Поделиться на другие сайты
  • 1 year later...

Саш, создал поле в таблице с товаром 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 создателя товара

 

что еще добавлять нужно? не заносятся данные в БД из этого поля

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

Нужно ещё править /admin/includes/classes/categories.php

 

insert_product метод.

 

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

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...