Aide - Recherche - Membres - Calendrier
Version complète : [résolu] titre produit
Forum osCommerce-fr > Adapter OsCommerce MS2 > Design
cetanne
Bonjour tout le monde,

Voici mon problème. Je voudrais ajouter un sous-titre à mes produits. Pour l'instant, je passe par un encodage html du titre dans le champ de l'admin (<p>, <br>…). J'aimerai un deuxième champ dans l'admin.
Quelqu'un a-t-il une piste ?

merci
Quentin de Montargis
Il faut ajouter dans la table "TABLE_PRODUCTS_DESCRIPTION" de la BDD ce champ :
Code
  `products_cplmt_name` varchar(64) default NULL,


Dans le fichier catalog/admin/categories

chercher cette ligne (252) :
Code
            $sql_data_array = array('products_name' => tep_db_prepare_input($HTTP_POST_VARS['products_name'][$language_id]),

Ajouter dessous cette ligne :
Code
                                    'products_cplmt_name' => tep_db_prepare_input($HTTP_POST_VARS['products_cplmt_name'][$language_id]),

chercher cette ligne (300) :
Code
              tep_db_query("insert into " . TABLE_PRODUCTS_DESCRIPTION . " (products_id, language_id, products_name, products_description, products_url, products_viewed) values ('" . (int)$dup_products_id . "', '" . (int)$description['language_id'] . "', '" . tep_db_input($description['products_name']) . "', '" . tep_db_input($description['products_description']) . "', '" . tep_db_input($description['products_url']) . "', '0')");

La remplacer par celle-ci :
Code
              tep_db_query("insert into " . TABLE_PRODUCTS_DESCRIPTION . " (products_id, language_id, products_name, products_cplmt_name, products_description, products_url, products_viewed) values ('" . (int)$dup_products_id . "', '" . (int)$description['language_id'] . "', '" . tep_db_input($description['products_name']) . "', '" . tep_db_input($description['products_cplmt_name']) . "', '" . tep_db_input($description['products_description']) . "', '" . tep_db_input($description['products_url']) . "', '0')");

Chercher cette ligne (369) :
Code
    $parameters = array('products_name' => '',

Ajouter dessous cette ligne :
Code
                       'products_cplmt_name' => '',

Chercer cette ligne (394) :
Code
      $products_name = $HTTP_POST_VARS['products_name'];

Ajouter dessous cette ligne :
Code
      $products_cplmt_name = $HTTP_POST_VARS['products_cplmt_name'];

Chercher ces lignes (508) :
Code
          <tr>
            <td class="main"><?php if ($i == 0) echo TEXT_PRODUCTS_NAME; ?></td>
            <td class="main"><?php echo tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('products_name[' . $languages[$i]['id'] . ']', (isset($products_name[$languages[$i]['id']]) ? stripslashes($products_name[$languages[$i]['id']]) : tep_get_products_name($pInfo->products_id, $languages[$i]['id']))); ?></td>
          </tr>

Ajouter ces lignes dessous :
Code
          <tr>
            <td class="main"><?php if ($i == 0) echo TEXT_PRODUCTS_CPLMT_NAME; ?></td>
            <td class="main"><?php echo tep_image(DIR_WS_CATALOG_LANGUAGES . $languages[$i]['directory'] . '/images/' . $languages[$i]['image'], $languages[$i]['name']) . '&nbsp;' . tep_draw_input_field('products_cplmt_name[' . $languages[$i]['id'] . ']', (isset($products_cplmt_name[$languages[$i]['id']]) ? stripslashes($products_cplmt_name[$languages[$i]['id']]) : tep_get_products_cplmt_name($pInfo->products_id, $languages[$i]['id']))); ?></td>
            </tr>

Chercher ces lignes (619) :
Code
      if (isset($HTTP_GET_VARS['read']) && ($HTTP_GET_VARS['read'] == 'only')) {
        $pInfo->products_name = tep_get_products_name($pInfo->products_id, $languages[$i]['id']);
        $pInfo->products_description = tep_get_products_description($pInfo->products_id, $languages[$i]['id']);
        $pInfo->products_url = tep_get_products_url($pInfo->products_id, $languages[$i]['id']);
      } else {
        $pInfo->products_name = tep_db_prepare_input($products_name[$languages[$i]['id']]);
        $pInfo->products_description = tep_db_prepare_input($products_description[$languages[$i]['id']]);
        $pInfo->products_url = tep_db_prepare_input($products_url[$languages[$i]['id']]);
      }

Les remplacer par celles-ci :
Code
      if (isset($HTTP_GET_VARS['read']) && ($HTTP_GET_VARS['read'] == 'only')) {
        $pInfo->products_name = tep_get_products_name($pInfo->products_id, $languages[$i]['id']);
        $pInfo->products_cplmt_name = tep_get_products_cplmt_name($pInfo->products_id, $languages[$i]['id']);
        $pInfo->products_description = tep_get_products_description($pInfo->products_id, $languages[$i]['id']);
        $pInfo->products_url = tep_get_products_url($pInfo->products_id, $languages[$i]['id']);
      } else {
        $pInfo->products_name = tep_db_prepare_input($products_name[$languages[$i]['id']]);
        $pInfo->products_cplmt_name = tep_db_prepare_input($products_cplmt_name[$languages[$i]['id']]);
        $pInfo->products_description = tep_db_prepare_input($products_description[$languages[$i]['id']]);
        $pInfo->products_url = tep_db_prepare_input($products_url[$languages[$i]['id']]);
      }

Chercher cette ligne (716) :
Code
        echo tep_draw_hidden_field('products_name[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_name[$languages[$i]['id']])));

Aouter celle-ci, dessous :
Code
        echo tep_draw_hidden_field('products_cplmt_name[' . $languages[$i]['id'] . ']', htmlspecialchars(stripslashes($products_cplmt_name[$languages[$i]['id']])));

Chercher ces lignes (817) :
Code
    if (isset($HTTP_GET_VARS['search'])) {
      $products_query = tep_db_query("select p.products_id, pd.products_name, p.products_quantity, p.products_image, p.products_price, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status, p2c.categories_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and p.products_id = p2c.products_id and pd.products_name like '%" . tep_db_input($search) . "%' order by pd.products_name");
    } else {
      $products_query = tep_db_query("select p.products_id, pd.products_name, p.products_quantity, p.products_image, p.products_price, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and p.products_id = p2c.products_id and p2c.categories_id = '" . (int)$current_category_id . "' order by pd.products_name");
    }

Les remplacer par celles-ci :
Code
    if (isset($HTTP_GET_VARS['search'])) {
      $products_query = tep_db_query("select p.products_id, pd.products_name, pd.products_cplmt_name, p.products_quantity, p.products_image, p.products_price, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status, p2c.categories_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and p.products_id = p2c.products_id and pd.products_name like '%" . tep_db_input($search) . "%' order by pd.products_name");
    } else {
      $products_query = tep_db_query("select p.products_id, pd.products_name, pd.products_cplmt_name, p.products_quantity, p.products_image, p.products_price, p.products_date_added, p.products_last_modified, p.products_date_available, p.products_status from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_PRODUCTS_TO_CATEGORIES . " p2c where p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and p.products_id = p2c.products_id and p2c.categories_id = '" . (int)$current_category_id . "' order by pd.products_name");
    }

Chercher cette ligne (843) :
Code
                <td class="dataTableContent"><?php echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $products['products_id'] . '&action=new_product_preview&read=only') . '">' . tep_image(DIR_WS_ICONS . 'preview.gif', ICON_PREVIEW) . '</a>&nbsp;' . $products['products_name']; ?></td>

La remplacer par celle-ci :
Code
                <td class="dataTableContent"><?php echo '<a href="' . tep_href_link(FILENAME_CATEGORIES, 'cPath=' . $cPath . '&pID=' . $products['products_id'] . '&action=new_product_preview&read=only') . '">' . tep_image(DIR_WS_ICONS . 'preview.gif', ICON_PREVIEW) . '</a>&nbsp;' . $products['products_name'] . '</a>&nbsp;' . $products['products_cplmt_name']; ?></td>
Quentin de Montargis
Dans le fichier catalog/admin/includes/languages/french/categories.php, il faut ajouter cette ligne :
Code
define('TEXT_PRODUCTS_CPLMT_NAME', 'Complèment :');

Dans le fichier catalog/product_info.php
J'ai ajouté le complément de nom entre le nom et le modèle, pour cela il faut :
Chercher cette ligne (84) :
Code
      $products_name = $product_info['products_name'] . '<br><span class="smallText">[' . $product_info['products_model'] . ']</span>';

Et la remplacer par cette ligne :
Code
      $products_name = $product_info['products_name'] . '<br><span class="main">' . $product_info['products_cplmt_name'] . '</span><br><span class="smallText">[' . $product_info['products_model'] . ']</span>';
cetanne
Wow !! impressionnant. merci, je vais tester ça de suite. Et pour l'intégrer dans mes pages, ça se passe au cas par cas dans chacune d'entre elles ?
cetanne
ha, je vois, la suite arrive. Merci !!!
Quentin de Montargis
oui, il faut suivre pas à pas ces modifications. Les N° de lignes sont informatives car elles peuvent être différentes si tu as ajouté une contribution qui touche ce fichier.
cetanne
pour la bdd, j'aurais dans la colonne null oui et dans default NULL ?
cetanne
arg, j'ai cette erreur :


Fatal error: Call to undefined function: tep_get_products_cplmt_name() in /homepages/14/d238472327/htdocs/catalog/walhalla/categories.php on line 558
cetanne
j'ai résolu ce problème, mais pas moyen de l'afficher dans mes pages.

(ma solution : dans /catalog/admin/includes/functions/general.php, après
Code
function tep_get_products_name($product_id, $language_id = 0) {
    global $languages_id;

    if ($language_id == 0) $language_id = $languages_id;
    $product_query = tep_db_query("select products_name from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$product_id . "' and language_id = '" . (int)$language_id . "'");
    $product = tep_db_fetch_array($product_query);

    return $product['products_name'];
  }
ajouter
Code
function tep_get_products_cplmt_name($product_id, $language_id = 0) {
    global $languages_id;

    if ($language_id == 0) $language_id = $languages_id;
    $product_query = tep_db_query("select products_cplmt_name from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$product_id . "' and language_id = '" . (int)$language_id . "'");
    $product = tep_db_fetch_array($product_query);

    return $product['products_cplmt_name'];
  }
)
Quentin de Montargis
Tout à fait j'avais oublié, dans le fichier catalog/admin/include/functions/general.php après ces lignes :
Code
  function tep_get_products_name($product_id, $language_id = 0) {
    global $languages_id;

    if ($language_id == 0) $language_id = $languages_id;
    $product_query = tep_db_query("select products_name from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$product_id . "' and language_id = '" . (int)$language_id . "'");
    $product = tep_db_fetch_array($product_query);

    return $product['products_name'];
  }

Il faut rajouter ces lignes :
Code
  
  function tep_get_products_cplmt_name($product_id, $language_id) {
    global $languages_id;

    $product_query = tep_db_query("select products_cplmt_name from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . (int)$product_id . "' and language_id = '" . (int)$language_id . "'");
    $product = tep_db_fetch_array($product_query);

    return $product['products_cplmt_name'];
  }
Quentin de Montargis
Il y a une omission.

Dans le fichier catalog/admin/categories

Chercher cette ligne (602) :
Code
      $products_name = $HTTP_POST_VARS['products_name'];

Ajouter cette ligne dessous :
Code
      $products_cplmt_name = $HTTP_POST_VARS['products_cplmt_name'];
Quentin de Montargis
Tu peux aussi mettre le complément de nom dans le listing des nouveautés, pour cela, il faut

Dans le fichier catalog/products_new.php

Chercher cette ligne (56) :
Code
  $products_new_query_raw = "select p.products_id, pd.products_name, p.products_image, p.products_price, p.products_tax_class_id, p.products_date_added, m.manufacturers_name from " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on (p.manufacturers_id = m.manufacturers_id), " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added DESC, pd.products_name";

Et la remplacer par celle-là :
Code
  $products_new_query_raw = "select p.products_id, pd.products_name, pd.products_cplmt_name, p.products_image, p.products_price, p.products_tax_class_id, p.products_date_added, m.manufacturers_name from " . TABLE_PRODUCTS . " p left join " . TABLE_MANUFACTURERS . " m on (p.manufacturers_id = m.manufacturers_id), " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' order by p.products_date_added DESC, pd.products_name";

Chercher ces lignes (87) :
Code
          <tr>
            <td width="<?php echo SMALL_IMAGE_WIDTH + 10; ?>" valign="top" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products_new['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $products_new['products_image'], $products_new['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>'; ?></td>
            <td valign="top" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products_new['products_id']) . '"><b><u>' . $products_new['products_name'] . '</u></b></a><br>' . TEXT_DATE_ADDED . ' ' . tep_date_long($products_new['products_date_added']) . '<br>' . TEXT_MANUFACTURER . ' ' . $products_new['manufacturers_name'] . '<br><br>' . TEXT_PRICE . ' ' . $products_price; ?></td>
            <td align="right" valign="middle" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_NEW, tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $products_new['products_id']) . '">' . tep_image_button('button_in_cart.gif', IMAGE_BUTTON_IN_CART) . '</a>'; ?></td>
          </tr>

Et les remplacer par celles-là :
Code
          <tr>
            <td width="<?php echo SMALL_IMAGE_WIDTH + 10; ?>" valign="top" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products_new['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $products_new['products_image'], $products_new['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>'; ?></td>
            <td valign="top" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products_new['products_id']) . '"><b><u>' . $products_new['products_name'] . '</u></b></a><br><u><i>' . $products_new['products_cplmt_name'] . '</i></u><br>' . TEXT_DATE_ADDED . ' ' . tep_date_long($products_new['products_date_added']) . '<br>' . TEXT_MANUFACTURER . ' ' . $products_new['manufacturers_name'] . '<br><br>' . TEXT_PRICE . ' ' . $products_price; ?></td>
            <td align="right" valign="middle" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCTS_NEW, tep_get_all_get_params(array('action')) . 'action=buy_now&products_id=' . $products_new['products_id']) . '">' . tep_image_button('button_in_cart.gif', IMAGE_BUTTON_IN_CART) . '</a>'; ?></td>
          </tr>

cetanne
Merci Quentin, ça marche !!!
je classe en résolu…
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2013 Invision Power Services, Inc.