Advertisement:

Author Topic: Créer un champs "select" (item-post.php) et récuperer sa valeur (item.php)  (Read 3567 times)

Nicolas30

  • Sr. Member
  • ****
  • Posts: 295
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


Tout d'abord créez un champs personnalisé et dans options avancées donnez lui un nom d'identifiant


É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é
ou


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



Voila... amusez vous bien  ;)

romantica

  • Premium
  • Hero Member
  • *****
  • Posts: 1092
  • salut tout le monde
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

amoric69

  • Full Member
  • ***
  • Posts: 185
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


Tout d'abord créez un champs personnalisé et dans options avancées donnez lui un nom d'identifiant


É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é
ou


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



Voila... amusez vous bien  ;)
Merci quand même... ::)

Nicolas30

  • Sr. Member
  • ****
  • Posts: 295
Salut,

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

En tout cas pour moi cela marche...

Cdt

yellow53

  • Full Member
  • ***
  • Posts: 142
merci pour ce super tuto, j'ai une question, comment faire pour la page item edit ? quel code mettre ?


merci
vincent