Перейти к содержимому


Фотография
- - - - -

Добавление текстового поля при редактировании категории


Сообщений в теме: 14

#1 zeus07

zeus07

Отправлено 21 February 2016 - 12:49

Здравствуйте! 

 

Необходимо при редактировании статьи чтобы было ещё одно текстовое поле, которое будет содержать уникальный код категории. Естественно, само поле я добавлю в БД, но нужно, чтобы при обновлении Zoo оно не перезаписалось.

 

Для чего это необходимо?

 

Для одного из магазинов в данный момент разрабатывается связь с 1С (версия 7.7), и это поле у категории необходимо, чтобы туда записывать уникальный код категории, который записан в 1С.

 

Если с карточкой товара всё просто. Просто создаётся текстовое поле, и туда вписывается этот код, то для категории это нужно где-то в шаблоне категории добавлять, как я понимаю.

 

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


  • 1

#2 zeus07

zeus07

Отправлено 21 February 2016 - 17:36

Итак, разобрался, как это реализовать. 

 

1. Прежде всего заходим в phpMyAdmin, и открываем таблицу *ваш-префикс*_zoo_category и жмём Структура.

 

3uCKAf9.jpg

 

 

2. Добавляем поле, для этого просто жмём на ОК.

 

3uCKPmU.jpg

 

3. Указываем настройки для нашего поля (имя можно указать любое), и жмём Сохранить

 

3uCL5eu.jpg

 

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

 

4. Далее открываем на редактирование файл administrator/components/com_zoo/views/category/edit.php 

 

И вставляем кусок кода: 

<div class="element element-unique-id">
	<strong><?php echo JText::_('Unique-ID'); ?></strong>
	<input class="inputbox" type="text" name="unique-id" id="unique-id" size="60" value="<?php echo $this->params->get('unique-id;'); ?>" />
</div>

Я вставил это поле перед описанием категории.. Это просто вопрос удобства, вы можете вставить где захотите. 

 

Теперь поле у нас появилось в шаблоне редактирования категории. И даже сохраняется в БД )) Единственное, что теперь можно сделать, это добавить языковую переменную, чтобы поле имело человеческое русское название.

 

Переменную нужно будет добавить в файл media/zoo/applications/jbuniversal/language/ru-RU/ru-RU.com_jbzoo.ini

 

В итоге, у меня получилось вот так: 

 

3uCTynd.png


Сообщение отредактировал zeus07: 21 February 2016 - 17:37

  • 3

#3 zeus07

zeus07

Отправлено 21 February 2016 - 18:16

Всё работает, но есть одна мелкая загвоздка с содержанием поля. В данный момент прописано: 

<?php echo $this->params->get('unique-id;'); ?>

И при этом содержимое записывается в БД. Но при повторном открытии категории на редактирование, эта информация обнуляется. 

 

Как правильно задать этот параметр у поля? 


  • 0

#4 zeus07

zeus07

Отправлено 24 February 2016 - 13:03

Денис, подскажите пожалуйста, как сделать так, чтобы значение не стиралось из БД при открытии категории на редактирование?


  • 0

#5 SmetDenis

SmetDenis

Отправлено 24 February 2016 - 17:28

А поле обязательно должно быть отдельной колонкой в базе данных?

Может проще добавить доп поле в параметры категории?

В корневом файле application.xml
В блок category-content
8n89_200x0.png

<param name="my_param" type="text" label="My Param" />
После этого можно обратить к параметру
$myParam = $category->params->get('my_param');
Ваш вариант подразумевает изменение модели категорий, процесса сохранение, чтения из базы итд.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#6 zeus07

zeus07

Отправлено 24 February 2016 - 18:38

А поле обязательно должно быть отдельной колонкой в базе данных?

Может проще добавить доп поле в параметры категории?

В корневом файле application.xml
В блок category-content
8n89_200x0.png
 

<param name="my_param" type="text" label="My Param" />
После этого можно обратить к параметру
$myParam = $category->params->get('my_param');
Ваш вариант подразумевает изменение модели категорий, процесса сохранение, чтения из базы итд.

 

 

Если сделать как вы предлагаете, то в каком файле тогда выводить эту переменную и где прописывать эту строку: 

$myParam = $category->params->get('my_param');

  • 0

#7 SmetDenis

SmetDenis

Отправлено 24 February 2016 - 18:47

$myParam = $category->params->get('my_param');

Это можно сделать в шаблоне categoru/_default.php например.

А в админке поле выведется справа, в гармошке.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#8 zeus07

zeus07

Отправлено 24 February 2016 - 18:52

Не очень удобно конечно выводить его там в аккордеоне....Да и файл при обновлениях JBZoo будет перезаписываться всегда. 

 

Если в базу это писать отдельным полем, как-то всё-таки можно сделать? Просто то же имя категории, к примеру является текстовым полем, и пишется в базу. Хотелось бы именно так сделать.


  • 0

#9 SmetDenis

SmetDenis

Отправлено 24 February 2016 - 18:59

Тогда стоит добавить поле в этот класс
administrator\components\com_zoo\classes\category.php

Учесть в запросах (убедится что сохранение точно работает)
administrator\components\com_zoo\tables\category.php

Выводится в форме редактирования - $this->category->myfield
administrator\components\com_zoo\views\category\tmpl\edit.php

Убедится что save() нормально сработает с вашим полем.
administrator\components\com_zoo\controllers\category.php
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#10 zeus07

zeus07

Отправлено 24 February 2016 - 19:09

Получается вот так: 

 

1. Я объявляю переменную с этим полем в этом файле

administrator\components\com_zoo\classes\category.php

 

2. Нужно написать функцию, которая будет делать запрос к БД к этому полю и получать из него значение

administrator\components\com_zoo\tables\category.php

 

3. Вывести поле в форме редактирования (уже сделано)

administrator\components\com_zoo\views\category\tmpl\edit.php

 

4. Вот по этому пункту не очень понял. Как именно убедиться, что всё работает?  


  • 0




Click to return to top of page in style!