Advertisement:

Author Topic: Créer un champs téléphone...  (Read 3534 times)

Nicolas30

  • Sr. Member
  • ****
  • Posts: 295
Créer un champs téléphone...
« on: April 07, 2014, 06:58:01 pm »
Bonjour,

Par défaut il n'y a pas de champs "téléphone" dans le dépôt d'une annonce...

Nous allons donc créer ce champs...

Tout d'abord éditez le fichier : oc-include/osclass/installer/struct.sql
Code: [Select]
CREATE TABLE /*TABLE_PREFIX*/t_item (
    pk_i_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    fk_i_user_id INT(10) UNSIGNED NULL,
    fk_i_category_id INT(10) UNSIGNED NOT NULL,
    dt_pub_date DATETIME NOT NULL,
    dt_mod_date DATETIME NULL,
    f_price FLOAT NULL,
    i_price BIGINT(20) NULL,
    fk_c_currency_code CHAR(3) NULL,
    s_contact_name VARCHAR(100) NULL,
    s_contact_email VARCHAR(140) NULL,
    s_contact_phone VARCHAR(45) NULL,        <------------ insérez cette ligne
    s_ip VARCHAR(64) NOT NULL DEFAULT '',
    b_premium TINYINT(1) NOT NULL DEFAULT 0,
    b_enabled TINYINT(1) NOT NULL DEFAULT 1,
    b_active TINYINT(1) NOT NULL DEFAULT 0,
    b_spam TINYINT(1) NOT NULL DEFAULT 0,
    s_secret VARCHAR(40) NULL,
    b_show_email TINYINT(1) NULL,
    dt_expiration datetime NOT NULL DEFAULT '9999-12-31 23:59:59',
En ce qui concerne la BDD, voici ce que j'ai fais :
je suis allez sur ma BDD, j'ai ouvert la table oc_t_item --> Ajouter après s_contact_email et j'ai rempli les champs :

Validez
---
Éditez le fichier : oc-includes/osclass/model/item.php
Code: [Select]
function __construct()
        {
            parent::__construct();
            $this->setTableName('t_item');
            $this->setPrimaryKey('pk_i_id');
            $array_fields = array(
                'pk_i_id',
                'fk_i_user_id',
                'fk_i_category_id',
                'dt_pub_date',
                'dt_mod_date',
                'f_price',
                'i_price',
                'fk_c_currency_code',
                's_contact_name',
                's_contact_email',
                's_contact_phone', <---------------- insérez cette ligne
                'b_premium',
                's_ip',
                'b_enabled',
                'b_active',
                'b_spam',
                's_secret',
                'b_show_email',
                'dt_expiration'
            );
            $this->setFields($array_fields);
        }
      
Éditez le fichier : oc-includes/osclass/helpers/hitems.php
Insérez ce code
Code: [Select]
function osc_item_contact_phone() {
        return (string) osc_item_field("s_contact_phone");
    }
   
Éditez le fichier : oc-includes/osclass/helpers/hpremium.php
Insérez ce code
Code: [Select]
function osc_premium_contact_phone() {
        return (string) osc_premium_field("s_contact_phone");
    }
   
Éditez le fichier : oc-includes/osclass/ItemActions.php
Remplacez le code
Code: [Select]
$contactName       = strip_tags( trim( $aItem['contactName'] ) );
            $contactEmail      = strip_tags( trim( $aItem['contactEmail'] ) );
            $aItem['cityArea'] = osc_sanitize_name( strip_tags( trim( $aItem['cityArea'] ) ) );
            $aItem['address']  = osc_sanitize_name( strip_tags( trim( $aItem['address'] ) ) );
Par
Code: [Select]
$contactName       = strip_tags( trim( $aItem['contactName'] ) );
            $contactEmail      = strip_tags( trim( $aItem['contactEmail'] ) );
            $contactPhone      = strip_tags( trim( $aItem['contactPhone'] ) );
            $aItem['cityArea'] = osc_sanitize_name( strip_tags( trim( $aItem['cityArea'] ) ) );
            $aItem['address']  = osc_sanitize_name( strip_tags( trim( $aItem['address'] ) ) );
---
ce code
Code: [Select]
$this->manager->insert(array(
                    'fk_i_user_id'          => $aItem['userId'],
                    'dt_pub_date'           => date('Y-m-d H:i:s'),
                    'fk_i_category_id'      => $aItem['catId'],
                    'i_price'               => $aItem['price'],
                    'fk_c_currency_code'    => $aItem['currency'],
                    's_contact_name'        => $contactName,
                    's_contact_email'       => $contactEmail,
                    's_secret'              => $code,
                    'b_active'              => ($active=='ACTIVE'?1:0),
                    'b_enabled'             => $enabled,
                    'b_show_email'          => $aItem['showEmail'],
                    'b_spam'                => $is_spam,
                    's_ip'                  => $aItem['s_ip']
                ));
par
Code: [Select]
$this->manager->insert(array(
                    'fk_i_user_id'          => $aItem['userId'],
                    'dt_pub_date'           => date('Y-m-d H:i:s'),
                    'fk_i_category_id'      => $aItem['catId'],
                    'i_price'               => $aItem['price'],
                    'fk_c_currency_code'    => $aItem['currency'],
                    's_contact_name'        => $contactName,
                    's_contact_email'       => $contactEmail,
                    's_contact_phone'       => $contactPhone,
                    's_secret'              => $code,
                    'b_active'              => ($active=='ACTIVE'?1:0),
                    'b_enabled'             => $enabled,
                    'b_show_email'          => $aItem['showEmail'],
                    'b_spam'                => $is_spam,
                    's_ip'                  => $aItem['s_ip']
                ));
---
Le code
Code: [Select]
$_meta = Field::newInstance()->findByCategory($aItem['catId']);
            $meta = Params::getParam("meta");
par
Code: [Select]
$flash_error .=
                ((!osc_validate_text($aItem['contactPhone'], 7, false)) ? _m("Phone Number too short.") . PHP_EOL : '' ) .
                ((!osc_validate_max($aItem['contactPhone'], 20)) ? _m("Phone Number too long.") . PHP_EOL : '' );
           
            $_meta = Field::newInstance()->findByCategory($aItem['catId']);
            $meta = Params::getParam("meta");
---
Le code
Code: [Select]
if($aItem['userId'] != '') {
                    $user = User::newInstance()->findByPrimaryKey( $aItem['userId'] );
                    $aItem['userId']      = $aItem['userId'];
                    $aItem['contactName'] = $user['s_name'];
                    $aItem['contactEmail'] = $user['s_email'];
                } else {
                    $aItem['userId']      = NULL;
                }
par
Code: [Select]
if($aItem['userId'] != '') {
                    $user = User::newInstance()->findByPrimaryKey( $aItem['userId'] );
                    $aItem['userId']      = $aItem['userId'];
                    $aItem['contactName'] = $user['s_name'];
                    $aItem['contactEmail'] = $user['s_email'];
                    $aItem['contactPhone'] = ($user['s_phone_mobile'])? $user['s_phone_mobile'] : $user['s_phone_land'];
                } else {
                    $aItem['userId']      = NULL;
                }
---
le code
Code: [Select]
if( $this->is_admin ) {
                    $aUpdate['fk_i_user_id']    = $aItem['userId'];
                    $aUpdate['s_contact_name']  = $aItem['contactName'];
                    $aUpdate['s_contact_email'] = $aItem['contactEmail'];
                } else {
                    $aUpdate['s_ip'] = $aItem['s_ip'];
                }
par
Code: [Select]
if( $this->is_admin ) {
                    $aUpdate['fk_i_user_id']    = $aItem['userId'];
                    $aUpdate['s_contact_name']  = $aItem['contactName'];
                    $aUpdate['s_contact_email'] = $aItem['contactEmail'];
                    $aUpdate['s_contact_phone'] = $aItem['contactPhone'];
                } else {
                    $aUpdate['s_ip'] = $aItem['s_ip'];
                }
---
le code
Code: [Select]
$_meta = Field::newInstance()->findByCategory($aItem['catId']);
            $meta = Params::getParam("meta");
par
Code: [Select]
$flash_error .=
                ((!osc_validate_text($aItem['contactPhone'], 7, false)) ? _m("Phone Number too short.") . PHP_EOL : '' ) .
                ((!osc_validate_max($aItem['contactPhone'], 20)) ? _m("Phone Number too long.") . PHP_EOL : '' );
           
            $_meta = Field::newInstance()->findByCategory($aItem['catId']);
            $meta = Params::getParam("meta");
---
le code
Code: [Select]
if($userId != null) {
                $aItem['contactName']   = $data['s_name'];
                $aItem['contactEmail']  = $data['s_email'];
                Params::setParam('contactName', $data['s_name']);
                Params::setParam('contactEmail', $data['s_email']);
            } else {
                $aItem['contactName']   = Params::getParam('contactName');
                $aItem['contactEmail']  = Params::getParam('contactEmail');
            }
par
Code: [Select]
if($userId != null) {
                $aItem['contactName']   = $data['s_name'];
                $aItem['contactEmail']  = $data['s_email'];
                $aItem['contactPhone']  = ($data['s_phone_mobile'])? $data['s_phone_mobile'] : $data['s_phone_land'];
                Params::setParam('contactName', $data['s_name']);
                Params::setParam('contactEmail', $data['s_email']);
                Params::setParam('contactPhone', ($data['s_phone_mobile'])? $data['s_phone_mobile'] : $data['s_phone_land']);
            } else {
                $aItem['contactName']   = Params::getParam('contactName');
                $aItem['contactEmail']  = Params::getParam('contactEmail');
                $aItem['contactPhone']  = Params::getParam('contactPhone');
            }
         
Éditez le fichier : oc-includes/osclass/frm/item.form.class.php
insérez le code
Code: [Select]
static public function contact_phone_text($item = null) {
    if($item==null) { $item = osc_item(); };
    if( Session::newInstance()->_getForm('contactPhone') != "" ) {
        $item['s_contact_phone'] = Session::newInstance()->_getForm('contactPhone');
    }
   parent::generic_input_text('contactPhone', (isset($item['s_contact_phone'])) ? $item['s_contact_phone'] : null);
    return true;
}

Nicolas30

  • Sr. Member
  • ****
  • Posts: 295
Re: Créer un champs téléphone... (Suite)
« Reply #1 on: April 07, 2014, 06:58:56 pm »
Éditez le fichier : oc-content/themes/bender/item-sidebar.php
Sous le code
Code: [Select]
<h2> <?php _e "Contact publisher" 'bender' ); ?> </h2>
<p class="name"> <?php echo osc_item_contact_name (); ?> <p>
Insérez
Code: [Select]
$phoneuser = osc_item_contact_phone();
    if ($phoneuser != "") { ?>
    <p>Phone: <?php echo $phoneuser ?> </p>
<?php ?>

Éditez le fichier : oc-content/themes/bender/item-post.php
Remplacez le code
Code: [Select]
<div class="control-group">
    <label class="control-label" for="contactEmail"> <?php _e 'E-mail' 'bender' ); ?> </label>
    <div class="controls">
<?php ItemForm :: contact_email_text (); ?>
    </div>
</div>
par
Code: [Select]
<div class="control-group">
    <label class="control-label" for="contactEmail"> <?php _e 'E-mail' 'bender' ); ?> </label>
        <div class="controls">
<?php ItemForm :: contact_email_text (); ?>
        </div>
</div>
<div class="control-group">
    <label class="control-label" for="contactPhone"> <?php _e 'Phone' 'bender' ); ?> </label>
<div class="controls">
<?php ItemForm :: contact_phone_text (); ?>
    </div>
</div>
                     
Éditez le fichier : oc-admin/themes/modern/items/frm.php
Remplacez le code
Code: [Select]
<div class="input-has-placeholder input-separate-top">
    <label> <?php _e 'E-mail' ); ?> </label>
<?php ItemForm :: contact_email_text (); ?>
</div>
par
Code: [Select]
<div class="input-has-placeholder input-separate-top">
    <label> <?php _e 'E-mail' ); ?> </label>
<?php ItemForm :: contact_email_text (); ?>
</div>
<?php if( osc_item_user_id () == null ) { ?>
<div class="input-has-placeholder input-separate-top">
    <label> <?php _e 'Phone' ); ?> </label>
<?php ItemForm :: contact_phone_text (); ?>
</div>
<?php ?>

Voila normalement si vous avez tout suivi... vous devriez voir apparaitre un case "téléphone" dans l'ajout d'annonce...

Cordialement

Source : http://forums.osclass.org/themes/add-phone-number-field-for-bender-theme (en anglais)

tlvfinder

  • Guest
Re: Créer un champs téléphone...
« Reply #2 on: November 30, 2014, 09:13:26 pm »
Super merci pour ce tuto, le numero s'affiche t'il aussi dans l'annonce? si oui , ou?

Nicolas30

  • Sr. Member
  • ****
  • Posts: 295
Re: Créer un champs téléphone...
« Reply #3 on: November 30, 2014, 10:32:45 pm »
Bonsoir,

Le téléphone s'affiche à droite sous le Nom de la personne

Cdt

FlOs

  • Newbie
  • *
  • Posts: 19
Re: Créer un champs téléphone...
« Reply #4 on: April 23, 2015, 01:42:36 pm »
Bonjour,

Je souhaiterai afficher un numéro de téléphone mais je me pose deux questions :

- Dans les fichiers de traduction, le "Téléphone" apparaît, y-a t'il désormais moyen de l'avoir dans les fonctionnalités natives d'Osclass ?

- Si j'applique la solution de ce topic, que va t'il se passer lors des mises à jour futures d'OsClass sur mon site (je parle bien d'OsClass et non pas du thème pour lequel me doute du résultat)

Merci d'avance,