/var/log/life.log
Блог программиста из солнечной Бурятии

Новое поле в com_contacts, joomla 15

Способ добавления нового поля в com_comtacts для joomla 1.5 , на примере добавления поля Jabber ID

Добавляем поле в таблицу:

1
ALTER TABLE `jos_contact_details` ADD `jid` VARCHAR( 255 ) NULL DEFAULT NULL

administrator/components/com_contact/tables/contact.php

1
var $jid    = null;

Добавляем новые параметры для компонента:
administrator/components/com_contact/config.xml

1
2
3
4
<param name="show_jid" type="radio" default="1" label="Show Jabber ID" description="Show/Hide the Jabber ID">
    <option value="0">Hide</option>
    <option value="1">Show</option>
</param>

administrator/components/com_contact/contact_items.xml

1
2
3
4
<param name="show_jid" type="radio" default="1" label="JID" description="Show/Hide JID">
    <option value="0">Hide</option>
    <option value="1">Show</option>
</param>

Добавляем поле для заполнения в админке:
administrator/components/com_contact/admin.contact.html.php
после

1
2
3
4
5
6
7
8
9
10
<tr>
    <td class="key">
        <label for="webpage">
            <?php echo JText::_( 'Webpage' ); ?>:
        </label>
    </td>
    <td>
        <input class="inputbox" type="text" name="webpage" id="webpage" size="60" maxlength="255" value="<?php echo $row-/>webpage; ?>" />
    </td>
</tr>

добавляем

1
2
3
4
5
6
7
8
9
10
<tr>
    <td class="key">
        <label for="jid">
            <?php echo JText::_( 'JID' ); ?>:
        </label>
    </td>
    <td>
        <input class="inputbox" type="text" name="jid" id="jid" size="60" maxlength="255" value="<?php echo $row-/>jid; ?>" />
    </td>
</tr>

Показываем информацию пользователю:
components/com_contact/views/contact/tmpl/default_address.php
после

1
2
3
4
5
6
7
8
9
10
<?php if ( $this->contact->fax && $this->contact->params->get( 'show_fax' ) ) : ?>
<tr>
    <td width="<?php echo $this->contact->params->get( 'column_width' ); ?>" >
        <?php echo $this->contact->params->get( 'marker_fax' ); ?>
    </td>
    <td>
        <?php echo nl2br($this->contact->fax); ?>
    </td>
</tr>
<?php endif; ?>

вставить

1
2
3
4
5
6
7
8
9
10
<?php if ( $this->contact->jid && $this->contact->params->get( 'show_jid' ) ) : ?>
<tr>
    <td width="<?php echo $this->contact->params->get( 'column_width' ); ?>" >
        <?php $jid = split('@',$this->contact->jid);echo "<img src='http://presence.jabber.ru/{$jid[0]}/{$jid[1]}/image' />"; ?>
    </td>
    <td>
        <?php echo $this->contact->jid; ?>
    </td>
</tr>
<?php endif; ?>

Для отображения состояния в виде изображения используется сервис от jabber.ru.