PDA

Zobacz pełną wersję : Plugin K2. Własne pole + zapisywanie do bazy



washingtonplx
19-05-2016, 13:17
Chciałem dodać do formularza tworzenia artykułu w K2 kilka pól typu lista. Z listy miano wybierać kilka wartości zapisanych wcześniej przez użytkowników w innym komponencie. Wartość ta ma być zapisana w bazie _k2_items w kolumnie którą utworzyłem pod nazwą "mycatid" To mi się udało. Wszystko działa OK. tyle że wszystkie modyfikacje wprowadzałem w kodzie komponentu. Wolę stworzyć jakiś plugin pod k2 aby uniknąć problemów z aktualizacją. I tu mam problem., jak mogę to zrobić. Męczę się i męczę. Pobrałem plugin udostępniony przez K2 dla programistów, ale on mi zbyt wiele nie przybliżył. Umiem utworzyć w pluginie dodatkowe pole, które będzie wyświetlane w konkretnym miejscu i to chyba tyle. Nie wiem jak mogę pobrać dane do listy i później to zapisać w bazie danych w konkretnym miejscu. Może ktoś może pomóc, albo polecić jakiś plugin pod K2 na którym mogę się wzorować?

Pliki jakie edytowałem:
htdocs\components\com_k2\templates\default\itemfor m.php
Wyświetla w formularzu pole

<td class="adminK2LeftCol">
<label><?php echo JText::_('K2_MyCatID'); ?></label>
</td>
<td class="adminK2RightCol">
<?php echo $this->lists['mycatlistform']; ?>
</td>

htdocs\administrator\components\com_k2\views\item\ view.html.php

$mycat_options = $categoriesModel->mycatlistform(NUll, true, false);
$mycat_options = @array_merge($mycat_options);
$lists['mycatlistform'] = JHTML::_('select.genericlist', $mycat_options, 'mycatid', '', 'value', 'text', $item->mycatid); // Zapis do _k2_items mycatid



htdocs\administrator\components\com_k2\models\cate gories.php
Pobiera dane z innego komponentu, które później są wyświetlane są w formularzu K2 jako lista

function mycatlistform($row = NULL, $hideTrashed = false, $hideUnpublished = true)
{

$address = JRequest::getVar('myid', '0');
$db = JFactory::getDBO();
$query = "SELECT m.* FROM #__nazwaKOMPONENT_fields_item m WHERE field_id = 19 AND item_id = '$address'"; // nazwaKOMPONENT Podac nazwę komponentu


$query .= " ORDER BY field_id";
$db->setQuery($query);
$listmycatload = $db->loadObjectList();


if ($listmycatload)
{
foreach ($listmycatload as $v)
{

$listmycat[] = JHTML::_('select.option', $v->value, $v->value);

}
}
else {

$listmycat[] = JHTML::_('select.option', 0, 'Brak kategorii');
}

return $listmycat;
}