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


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

Подставить данные в элемент


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

#1 woodman

woodman

Отправлено 10 February 2016 - 22:32

У меня есть простой элемент "текстовое поле", есть и его ID.

Как мне подставить данные в этот элемент автоматически, например, ID материала ($item->id), чтоб при создании нового материала это поле заполнялось самостоятельно?


  • 0

#2 Ёшкин Кот

Ёшкин Кот

Отправлено 11 February 2016 - 00:21

На сколько я понимаю, то ID материала не существует до тех пор, пока вы его не создали. То есть придется подставлять не существующее значение..  

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


Сообщение отредактировал Ёшкин Кот: 11 February 2016 - 00:22

  • 0

#3 woodman

woodman

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

Вопрос не с том, как именно ID подставить, а в том, как подставить значение внутрь элемента текста?


  • 0

#4 alexmixaylov

alexmixaylov

Отправлено 11 February 2016 - 12:01

Если это только в админке нужно

то проще всего яваскриптом сделать

 

если нужно чтобы при импорте и подаче с фронта - тогда только плагин

 

мне тоже сильно нужно, никак не могу заставить работать плагин

http://forum.jbzoo.c...ateriala-event/


  • 0

#5 CB9TOIIIA

CB9TOIIIA

Отправлено 11 February 2016 - 12:41

Вопрос не с том, как именно ID подставить, а в том, как подставить значение внутрь элемента текста?

 

Я делал через API

 

В общем у дискуса есть ограничение по API, думал обходить его записью ID (ветки комментариев) в поле, но потом отказался - т.к. по API все равно проседал, но код 100% рабочий.

$element = $item->getElement('4b120e6e-a0b0-4373-8601-4e36b521da56'); // element id получаем так
$linktodisqussiteend = 'b10e17026e364442aef61f1d7d9e2b0e'; //тут например Ваш ID статьи
$data = $element->data(); // получаем данные
//echo "<pre>";
//print_r($data);
//echo "</pre>";
$element->bindData(array(array('value' => $linktodisqussiteend)));
$this->app->table->item->save($item);

Все это советую обернуть в проверку на empty в поле.

 

ну как-то так... тестово.

$element = $item->getElement('cb86f1fe-c933-439b-ac40-7730d8b749b5');

$data = $element->data(); // получаем данные
if (empty($data[0]['value'])) {
$element->bindData(array(array('value' => $linktodisqussiteend)));
$this->app->table->item->save($item);
} else {

}


  • 2

#6 woodman

woodman

Отправлено 11 February 2016 - 13:37

Спасибо, сейчас попробую


  • 0

#7 woodman

woodman

Отправлено 11 February 2016 - 14:32

Вариант с php не подходит, т.к. подразумевает динамическое подставление значения при рендере шаблона, а мне нужно в админке во время создания заказа явно указывать значение в поле.

На JS я сделал скрипт и все отлично работает, поле индексируется и по нему можно искать, осталось придумать как 13-ти значное число миллисекунд преобразовать во что-то более "читаемое" :)


  • 1

#8 SmetDenis

SmetDenis

Отправлено 11 February 2016 - 19:17

Приложил в этом топике http://forum.jbzoo.c...ateriala-event/ рабочий вариант плагина на PHP.

Он меняет имя материала при сохранении.

 

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


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



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


#9 woodman

woodman

Отправлено 11 February 2016 - 20:15

Fuck yeah! Получилось. Спасибо большое alexmixaylov за плагин и Вам, Денис, за доработку.

Мой ленивый клиент, который в упор отказывался вписывать артикул вручную сейчас доволен.

Теперь у меня после сохранения материала в текстовое поле элемента "text" сохраняется ID материала. Это текстовое поле я использую как элемент поиска и теперь у меня живой поиск, который AJAX Live Search умеет искать по названию и артикулу в одном поле и показывать ништяковые "подсказки" с картинкой, названием, ценой и артикулом.

 

11-02-2016 21-13-55.png


  • 2




Click to return to top of page in style!