Osclass forums

Language Specific => Française => Trucs et Astuces => Topic started by: Nicolas30 on April 03, 2014, 03:34:42 am

Title: Créer un champs "select" (item-post.php) et récuperer sa valeur (item.php)
Post by: Nicolas30 on April 03, 2014, 03:34:42 am
Bonjour à tous,

Je lance la première astuce, afin de créer un champs "liste déroulante" dans l'ajout d'une annonce et de récupérer sa valeur pour l'ajouter dans le détail de l'annonce (ou/et ailleurs).

Merci à :
- @zasami
- @emanwebdev
Pour leur aide précieuse...
---
Cette astuce permet de créer une liste déroulante avec le choix Offre et Demande
(http://i58.servimg.com/u/f58/18/57/20/27/presse15.png)

Tout d'abord créez un champs personnalisé et dans options avancées donnez lui un nom d'identifiant
(http://i58.servimg.com/u/f58/18/57/20/27/presse17.png)

Éditez le fichier : \oc-content\themes\bender\item-post.php
Placez ce code ou vous voulez voir apparaitre votre "liste déroulante"
Code: [Select]
<label for="meta_typeannonce">Type d'annonce: </label>
<div class="controls">
<select id="meta_typeannonce" name="typeannonce" class="valid">
<option value="Offre">Offre</option>
<option value="Demande">Demande</option>
</select>
</div>


Éditez le fichier \oc-content\themes\bender\item.php
Placez ce code, là ou vous souhaitez voir apparaitre la valeur du champs récupéré
Code: [Select]
<?php
$typeannonce Field::newInstance()->findBySlug('typeannonce');
$dao = new DAO();
$dao->dao->select('*');
$dao->dao->from(DB_TABLE_PREFIX.'t_item_meta');
$dao->dao->where('fk_i_field_id'$typeannonce['pk_i_id'] );
$dao->dao->where('fk_i_item_id'osc_item_id() );
$result $dao->dao->get();
      if( 
$result == false ) {
         return array();
      }
$custom_data $result->result();
$typeannonce['s_value'] = $custom_data[0]['s_value'];
View::newInstance()->_exportVariableToView('metafields', array($typeannonce));
?>

<strong><?php echo osc_item_meta_name(); ?> :</strong>  <?php echo osc_item_meta_value(); ?><br />


un peu plus bas changer le code
Code: [Select]
        <p><?php echo osc_item_description(); ?></p>
        <div id="custom_fields">
            <?php if( osc_count_item_meta() >= ) { ?>
                <br />
                <div class="meta_list">
                    <?php while ( osc_has_item_meta() ) { ?>
                        <?php if(osc_item_meta_value()!='') { ?>
                            <div class="meta">
                                <strong><?php echo osc_item_meta_name(); ?>:</strong> <?php echo osc_item_meta_value(); ?>
                            </div>
                        <?php ?>
                    <?php ?>
                </div>
            <?php ?>
        </div>

par
Code: [Select]
        <p><?php echo osc_item_description(); ?></p>
<?php View::newInstance()->_exportVariableToView('metafields'Item::newInstance()->metaFields(osc_item_id()) );?>
        <div id="custom_fields">
            <?php if( osc_count_item_meta() >= ) { ?>
                <br />
                <div class="meta_list">
                    <?php while ( osc_has_item_meta() ) { ?>
                        <?php if(osc_item_meta_value()!='') { ?>
                            <div class="meta">
                                <strong><?php echo osc_item_meta_name(); ?>:</strong> <?php echo osc_item_meta_value(); ?>
                            </div>
                        <?php ?>
                    <?php ?>
                </div>
            <?php ?>
        </div>

Et là vous verrez apparaitre dans le détail de l'annonce, le champs récupéré
(http://i58.servimg.com/u/f58/18/57/20/27/presse18.png) ou (http://i58.servimg.com/u/f58/18/57/20/27/presse19.png)


ENCORE PLUS LOIN...
Faire apparaitre la valeur récupéré sur la page d'Accueil
Éditez le fichier \oc-content\themes\bender\loop-single.php (bender) et placer ce code ou bon vous semble
Code: [Select]
<?php
$typeannonce Field::newInstance()->findBySlug('typeannonce');
$dao = new DAO();
$dao->dao->select('*');
$dao->dao->from(DB_TABLE_PREFIX.'t_item_meta');
$dao->dao->where('fk_i_field_id'$typeannonce['pk_i_id'] );
$dao->dao->where('fk_i_item_id'osc_item_id() );
$result $dao->dao->get();
      if( 
$result == false ) {
         return array();
      }
$custom_data $result->result();
$typeannonce['s_value'] = $custom_data[0]['s_value'];
View::newInstance()->_exportVariableToView('metafields', array($typeannonce));
?>

<strong><?php echo osc_item_meta_name(); ?> :</strong>  <?php echo osc_item_meta_value(); ?><br />


ÉGALEMENT POUR LA PARTIE ADMIN
Éditez le fichier \oc-admin\themes\modern\items\frm.php
et placer ce code sous
Code: [Select]
<div id="left-side">
Code: [Select]
<label for="meta_typeannonce">Type d'annonce</label>
       <div class="controls">
  <select id="meta_typeannonce" name="meta[43]" class="valid">
<option value="Offre">Offre</option>
<option value="Demande">Demande</option>
</select>
</div><br />

Et vous aurez ceci, lors d'une modification d'annonce
(http://i58.servimg.com/u/f58/18/57/20/27/presse20.png)


Voila... amusez vous bien  ;)
Title: Re: Créer un champs "select" (item-post.php) et récuperer sa valeur (item.php)
Post by: romantica on April 24, 2014, 11:59:12 am
salut,j'utilise le theme alterego et il n'a pas loop-single.php ce code on peut le mettre aussi sur main.php?
Quote
<?php
   $typeannonce = Field::newInstance()->findBySlug('typeannonce');
   $dao = new DAO();
   $dao->dao->select('*');
   $dao->dao->from(DB_TABLE_PREFIX.'t_item_meta');
   $dao->dao->where('fk_i_field_id', $typeannonce['pk_i_id'] );
   $dao->dao->where('fk_i_item_id', osc_item_id() );
   $result = $dao->dao->get();
      if( $result == false ) {
         return array();
      }
   $custom_data = $result->result();
   $typeannonce['s_value'] = $custom_data[0]['s_value'];
      View::newInstance()->_exportVariableToView('metafields', array($typeannonce));
?>
<strong><?php echo osc_item_meta_name(); ?> :</strong>  <?php echo osc_item_meta_value(); ?><br />

merci
Title: Re: Créer un champs "select" (item-post.php) et récuperer sa valeur (item.php)
Post by: amoric69 on May 04, 2014, 09:34:16 pm
Ca ne fonctionne pas si il y a plusieurs champs personnalisés. Je viens de tester.

Bonjour à tous,

Je lance la première astuce, afin de créer un champs "liste déroulante" dans l'ajout d'une annonce et de récupérer sa valeur pour l'ajouter dans le détail de l'annonce (ou/et ailleurs).

Merci à :
- @zasami
- @emanwebdev
Pour leur aide précieuse...
---
Cette astuce permet de créer une liste déroulante avec le choix Offre et Demande
(http://i58.servimg.com/u/f58/18/57/20/27/presse15.png)

Tout d'abord créez un champs personnalisé et dans options avancées donnez lui un nom d'identifiant
(http://i58.servimg.com/u/f58/18/57/20/27/presse17.png)

Éditez le fichier : \oc-content\themes\bender\item-post.php
Placez ce code ou vous voulez voir apparaitre votre "liste déroulante"
Code: [Select]
<label for="meta_typeannonce">Type d'annonce: </label>
<div class="controls">
<select id="meta_typeannonce" name="typeannonce" class="valid">
<option value="Offre">Offre</option>
<option value="Demande">Demande</option>
</select>
</div>


Éditez le fichier \oc-content\themes\bender\item.php
Placez ce code, là ou vous souhaitez voir apparaitre la valeur du champs récupéré
Code: [Select]
<?php
$typeannonce Field::newInstance()->findBySlug('typeannonce');
$dao = new DAO();
$dao->dao->select('*');
$dao->dao->from(DB_TABLE_PREFIX.'t_item_meta');
$dao->dao->where('fk_i_field_id'$typeannonce['pk_i_id'] );
$dao->dao->where('fk_i_item_id'osc_item_id() );
$result $dao->dao->get();
      if( 
$result == false ) {
         return array();
      }
$custom_data $result->result();
$typeannonce['s_value'] = $custom_data[0]['s_value'];
View::newInstance()->_exportVariableToView('metafields', array($typeannonce));
?>

<strong><?php echo osc_item_meta_name(); ?> :</strong>  <?php echo osc_item_meta_value(); ?><br />


un peu plus bas changer le code
Code: [Select]
        <p><?php echo osc_item_description(); ?></p>
        <div id="custom_fields">
            <?php if( osc_count_item_meta() >= ) { ?>
                <br />
                <div class="meta_list">
                    <?php while ( osc_has_item_meta() ) { ?>
                        <?php if(osc_item_meta_value()!='') { ?>
                            <div class="meta">
                                <strong><?php echo osc_item_meta_name(); ?>:</strong> <?php echo osc_item_meta_value(); ?>
                            </div>
                        <?php ?>
                    <?php ?>
                </div>
            <?php ?>
        </div>

par
Code: [Select]
        <p><?php echo osc_item_description(); ?></p>
<?php View::newInstance()->_exportVariableToView('metafields'Item::newInstance()->metaFields(osc_item_id()) );?>
        <div id="custom_fields">
            <?php if( osc_count_item_meta() >= ) { ?>
                <br />
                <div class="meta_list">
                    <?php while ( osc_has_item_meta() ) { ?>
                        <?php if(osc_item_meta_value()!='') { ?>
                            <div class="meta">
                                <strong><?php echo osc_item_meta_name(); ?>:</strong> <?php echo osc_item_meta_value(); ?>
                            </div>
                        <?php ?>
                    <?php ?>
                </div>
            <?php ?>
        </div>

Et là vous verrez apparaitre dans le détail de l'annonce, le champs récupéré
(http://i58.servimg.com/u/f58/18/57/20/27/presse18.png) ou (http://i58.servimg.com/u/f58/18/57/20/27/presse19.png)


ENCORE PLUS LOIN...
Faire apparaitre la valeur récupéré sur la page d'Accueil
Éditez le fichier \oc-content\themes\bender\loop-single.php (bender) et placer ce code ou bon vous semble
Code: [Select]
<?php
$typeannonce Field::newInstance()->findBySlug('typeannonce');
$dao = new DAO();
$dao->dao->select('*');
$dao->dao->from(DB_TABLE_PREFIX.'t_item_meta');
$dao->dao->where('fk_i_field_id'$typeannonce['pk_i_id'] );
$dao->dao->where('fk_i_item_id'osc_item_id() );
$result $dao->dao->get();
      if( 
$result == false ) {
         return array();
      }
$custom_data $result->result();
$typeannonce['s_value'] = $custom_data[0]['s_value'];
View::newInstance()->_exportVariableToView('metafields', array($typeannonce));
?>

<strong><?php echo osc_item_meta_name(); ?> :</strong>  <?php echo osc_item_meta_value(); ?><br />


ÉGALEMENT POUR LA PARTIE ADMIN
Éditez le fichier \oc-admin\themes\modern\items\frm.php
et placer ce code sous
Code: [Select]
<div id="left-side">
Code: [Select]
<label for="meta_typeannonce">Type d'annonce</label>
       <div class="controls">
  <select id="meta_typeannonce" name="meta[43]" class="valid">
<option value="Offre">Offre</option>
<option value="Demande">Demande</option>
</select>
</div><br />

Et vous aurez ceci, lors d'une modification d'annonce
(http://i58.servimg.com/u/f58/18/57/20/27/presse20.png)


Voila... amusez vous bien  ;)
Merci quand même... ::)
Title: Re: Créer un champs "select" (item-post.php) et récuperer sa valeur (item.php)
Post by: Nicolas30 on May 04, 2014, 09:40:11 pm
Salut,

Si tu suis bien le tuto, cela devrais marcher...

En tout cas pour moi cela marche...

Cdt
Title: Re: Créer un champs "select" (item-post.php) et récuperer sa valeur (item.php)
Post by: yellow53 on July 04, 2014, 12:31:04 am
merci pour ce super tuto, j'ai une question, comment faire pour la page item edit ? quel code mettre ?


merci
vincent