1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

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

Тема в разделе "Joomla", создана пользователем a777d2, 27 сен 2015.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
Модераторы: arman29, DMS, Genk0
  1. a777d2

    a777d2 Создатель

    Регистр.:
    17 сен 2012
    Сообщения:
    32
    Симпатии:
    7
    Добрый день, решил поделиться если кому понадобится, темой создания дополнительных полей компонента 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{}?> 
    Вот и все, всем спасибо) Если возникнут вопросы, с радостью отвечу!