Обсуждение k2 создание дополнительных полей

a777d2

Создатель
Регистрация
17 Сен 2012
Сообщения
31
Реакции
10
Добрый день, решил поделиться если кому понадобится, темой создания дополнительных полей компонента k2, к примеру мы хотим создать 2 поля: первое будет цена (price), второе будет скидка (sale) скидка будет выбираться, да или нет, для отображения картинки на фото.

Первое что нам нужно будет сделать, это создать в базе данных 2 поля:
Заходим в базу данных, ищем таблицу k2_items,
добавляем поля
price - varchar(255) - по умолчанию (нет)
sale - smallint(6) - по умолчанию (0)


Далее выходим из базы и идем править код, для начала идем сюда administrator/components/com_k2/tables/k2item.php

Добавляем поля в код
Код:
?php
defined('_JEXEC') or die ;

class TableK2Item extends K2Table
{

    var $id = null;
    var $title = null;
    var $price = null;   
    var $sale= null;   
    var $alias = null;
    var $catid = null;
    var $published = null;
    var $introtext = null;
    var $fulltext = null;
    var $image_caption = null;
    var $image_credits = null;
    var $video = null;
    var $video_caption = null;
    var $video_credits = null;
    var $gallery = null;
    var $extra_fields = null;
    var $extra_fields_search = null;
    var $created = null;
    var $created_by = null;
    var $created_by_alias = null;
    var $modified = null;
    var $modified_by = null;
    var $publish_up = null;
    var $publish_down = null;
    var $checked_out = null;
    var $checked_out_time = null;
    var $trash = null;
    var $access = null;
    var $ordering = null;
    var $featured = null;
    var $featured_ordering = null;
    var $hits = null;
    var $metadata = null;
    var $metadesc = null;
    var $metakey = null;
    var $params = null;
    var $plugins = null;
    var $language = null;


Далее нужно поправить следующий файл administrator/components/com_k2/views/item/view.html.php

Номер строки 205 для sale
Код:
$document->addScriptDeclaration("function onK2EditorSave(){ ".$onSave." }");

$lists['published'] = JHTML::_('select.booleanlist', 'published', 'class="inputbox"', $item->published);

$lists['featured'] = JHTML::_('select.booleanlist', 'featured', 'class="inputbox"', $item->featured);

$lists['sale'] = JHTML::_('select.booleanlist', 'sale', 'class="inputbox"', $item->sale);

$lists['access'] = version_compare(JVERSION, '3.0', 'ge') ? JHTML::_('access.level', 'access', $item->access) : JHTML::_('list.accesslevel', $item);

Номер строки 551 для price
Код:
        $this->assignRef('extraFields', $extraFields);
        $this->assignRef('options', $options);
        $this->assignRef('row', $item);
        $this->assignRef('lists', $lists);
        $this->assignRef('params', $params);
        $this->assignRef('user', $user);
        (JRequest::getInt('cid')) ? $title = JText::_('K2_EDIT_ITEM') : $title = JText::_('K2_ADD_ITEM');
        $this->assignRef('title', $title);
        $this->assignRef('price', $price);               
        $this->assignRef('mainframe', $mainframe);


Теперь добавим поля в шаблон item: administrator/components/com_k2/views/item/tmpl/default.php
Код:
    <tr>
                                    <td class="adminK2LeftCol">
                                        <label for="price">Цена</label>
                                    </td>
                                    <td class="adminK2RightCol">
                                        <input class="text_area k2TitleBox" type="text" name="price" id="price" maxlength="250" value="<?php echo $this->row->price; ?>" />
                                    </td>
                                </tr>
<tr>
                                    <td class="adminK2LeftCol">
                                        <label for="sale">Скидка</label>
                                    </td>
                                    <td class="adminK2RightCol">
                                        <?php echo $this->lists['sale']; ?>
                                    </td>
                                </tr>


Для вывода на сайте идем в файл шаблона, и добавляем код в любое место
Для цены
Код:
<?php echo $item->price; ?>
Для скидки
Код:
<?php if($item->sale== 1) {?>
<img class="sale" src="sale.png" />
<?php}else{}?>

Вот и все, всем спасибо) Если возникнут вопросы, с радостью отвечу!
 
Назад
Сверху