Добавляем новое дополнительное поле в категории для магазина на системе управления WebAsyst.
Мы расскажем Вам как просто и без привлечения программистов или других людей можно добавить дополнительные поля к вам на сайт.
Мы не будем расписывать предисловий много, а сразу расскажем по шагам, что необходимо делать.
Итак, мы решили сделать, например второе текстовое поле.
Шаг 1.
Заходим базу данных mysql, находим таблицу SC_Categories и добавляем туда, новое поле, мы в своем примере добавляем два поля, т.к хотим сделать мультиязычными их.
Назовем их description_two_en и description_two_ru, так как это будут текстовые поля, ставим им тип text
Все работа с базой данных готова.
Шаг 2.
Добавляем в панели управления сайтом поле, чтобы его можно было заполнять.
Открываем файл category.html (прим. Файл находится тут /published/SC/html/scripts/templates/backend/) находим место, где будет выводиться наше новое поле и добавляем туда запись. В наше случае мы хотим сделать второе описание, следовательно делаем его с редактором и добавляем запись
{html_textarea name="description_two" rows="7" class="mceEditor" cols="40" values=$CategoryInfo}
Внимание, если вы делаете поле мультиязычным, то указывайте общую только часть имени, например, у нас поля description_two_en и description_two_ru общее у них description_two это и пишем, почему именно так, потом расскажем, в следующих шагах.
Проверяем на сайте, если поле появилось, то, все хорошо, этот шаг завершен.
Шаг 3.
В шаге 3 будьте аккуратным, не ошибайтесь, и не удаляйте или не забывайте ни единого стиля, делайте все по примеру тех полей на которые ориентируетесь
Итак начинаем правку php кода.
Для, того, чтобы данные после создания и редактирования передавались открываем следующие файлы
/public_html/published/SC/html/scripts/classes/class.category.php
В него добавляем переменную с нашим названием var $description_two;
/public_html/published/SC/html/scripts/classes/class.languagesmanager.php
Находим строку и в нее добавляем наше новое поле.
CATEGORIES_TABLE => array(
'name', 'description', 'description_two', 'meta_title', 'meta_description', 'meta_keywords'
),
Далее открываем
/public_html/published/SC/html/scripts/classes/class.importcatalog.php
находим список
$categoryEntry = new Category;
$categoryEntry->__use_cache = false;
if ($currentCategoryID){//update category
$categoryEntry->loadByID($currentCategoryID);
$fields_names = array_merge(array('sort_order','picture','slug'),
LanguagesManager::ml_getLangFieldNames('description'),
…
и продолжающийся вниз и добавляем в него запись
LanguagesManager::ml_getLangFieldNames('description_two'),
Запись LanguagesManager::ml_getLangFieldNames позволяет нам как раз использовать общее имя для двух переменных, и система видит сама когда какое заполняется поле, и в какое она потом добавит данные
Необязательно, но можно добавить, данные и в файл
/published/SC/html/scripts/cfg/database_structure.xml
Находим строку
<table name='SS_categories' alias='CATEGORIES_TABLE' PRODUCTANDCATEGORYSYNC='true' >
и добавляем запись такого содержания <column TYPE='text' ML='1'>description_two</column>
ВНИМАНИЕ
Если вы не знаете какую делать запись или делаете другое поле не как у нас в примере, старайтесь делать простым копированием у похожих полей, на то, которые вам нужно, меняя только поле name="" на то, что добавили.
Список всех статей Просмотров: 23970 раз