Osclass forums
Language Specific => Française => Trucs et Astuces => Topic started 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"
<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é
<?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
<p><?php echo osc_item_description(); ?></p>
<div id="custom_fields">
<?php if( osc_count_item_meta() >= 1 ) { ?>
<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
<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() >= 1 ) { ?>
<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
<?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
<div id="left-side">
<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 ;)
-
salut,j'utilise le theme alterego et il n'a pas loop-single.php ce code on peut le mettre aussi sur main.php?
<?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
-
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"
<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é
<?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
<p><?php echo osc_item_description(); ?></p>
<div id="custom_fields">
<?php if( osc_count_item_meta() >= 1 ) { ?>
<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
<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() >= 1 ) { ?>
<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
<?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
<div id="left-side">
<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... ::)
-
Salut,
Si tu suis bien le tuto, cela devrais marcher...
En tout cas pour moi cela marche...
Cdt
-
merci pour ce super tuto, j'ai une question, comment faire pour la page item edit ? quel code mettre ?
merci
vincent