osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

6 Pages V   1 2 3 > »   
Reply to this topicStart new topic
> [CONTRIBUTION] iOSC3 - OSCommerce mobile
loran86
posté 21 Nov 2010, 18:20
Message #1


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 17
Inscrit : 3-March 09
Membre no 24685



Bonjour à toutes et à tous,

Je vous livre, en ce dimanche, ma 1ère contribution OSCommerce qui permettra à vos visiteurs sur terminaux mobiles de naviguer et faire leurs achats sur votre boutique, directement sur leur téléphone portable, smartphone...

Cette contribution iOSC3 est basée sur le travail initial de Bumbarash dont la version 2.0c est disponible ici : iOSC v2.0c.

Ayant trouvé l'idée séduisante, j'ai testé sa contribution mais ai décidé de la refaire à ma sauce tant le package original me semblait difficile à prendre en main pour un(e) débutant(e) sur OSC. Attention, le mot débutant(e) n'a rien de péjoratif, faut bien commencer un jour !

Changements iOSC3 vs iOSC2
- full CSS 2 & 3 (quasiment plus aucun tableau)
- ajout d'une nouvelle page : mobile_catalogue.php permettant de naviguer dans les catégories, les sous-catégories etc...
- modification de la page mobile_index.php pour permettre l'intégration d'une page d'accueil au lieu de tomber directement sur les catégories
- résolution des bugs relatifs aux chemins vers les fichiers
- ajouts dans le fichier configure.php (catalog/mobile/includes)

Reste à faire
- module avis et commentaires
- shopping_cart en CSS le cas échéant

Vous pouvez télécharger la contribution ici : iOSC3

ATTENTION

Cette contribution intègre le module MATC (obligation d'accepter les Conditions Générales de Vente avant de pouvoir s'inscrire).
Vous pouvez désactiver cette option dans le fichier mobile_create_account.php.
La contribution n'intègre aucun autre add-on, du type Eco-taxe par exemple. Il vous appartient donc de l'adapter en fonction des autres contributions installées sur votre boutique d'origine.

Terminaux compatibles
- iPhone
- iPod
- BlackBerry
- Nokia
- Sony Ericsson
- Opera Mobi
- Opera Mini
- MAUI WAP Browser
- Android
- Palm

La contribution vous est délivrée telle quelle, les instructions d'installation et la description sont disponibles dans l'archive téléchargeable.
Je ne pourrai être tenu pour responsable d'une mauvaise utilisation et ne peux que vous conseiller d'effectuer une sauvegarde de vos fichiers même si cette contribution n'influe pas directement sur le reste des fichiers de la boutique "originale".

Je vous invite également à me faire part de vos feedbacks tant du côté des développeurs ou des e-commerçants que des utilisateurs, merci à vous.

Voili voilou, amusez-vous bien, l'expérience mobile sur votre boutique devrait être un peu plus agréable pour vos visiteurs ! J'entame de mon côté les surveillances statistiques nécessaires pour connaître les taux de transformation via la version mobile, suite au prochain épisode.
Go to the top of the page
 
FoxP2
posté 21 Nov 2010, 19:13
Message #2


Ceinture marron OSC
Icône de groupe

Groupe : Modérateurs
Messages : 1665
Inscrit : 3-June 09
Membre no 25501



muerf ....
c'est juste une adaptation au gabarit de l'écran d'un cellphone... rien à voir avec une appli dédiée ... le nom est trompeur IOs .... reprenant la terminologie d'Apple(Ios4)
je ne connais pas les chiffres du e-commerce via des appli dédiées aux boutiques (et donc une évolution des habitudes des internautes à réaliser des achats via leur mobile)
je note juste que tous les plus grands médias ont leur propre application (les blogger les plus influant également) et pour cause ! l'interface utilisateur est totalement revue pour s'intégrer à celle du mobile. vu le nombre actuel aujourd'hui d'os disponible (et donc autant d'UI à développer -- donc la maîtrise des système et leurs langages qui vont avec -- Objectif-C-Java-QT-c#+silverlight-symbian avec les restrictions de portabilité et d'intégration de compilo externes + les filtres sur les stores propres aux constructeurs) ça reste une solution, mais pas forcément la plus adéquate.
bref, actuellement c'est le gros bordel.(surtout quand j'ai pris connaissance des contraintes par exemple dans le pdf de microsoft)
donc, je déteste ces systèmes de store, car comment voulez vous faire une app Windows Phone 7 'généraliste' adaptée pour oscommerce ? à ce jour, c peine perdue.(il n'y a guère que androïd qui soit le plus souple)


--------------------


Go to the top of the page
 
rol
posté 21 Nov 2010, 20:19
Message #3


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 272
Inscrit : 31-July 06
Lieu : Dordogne
Membre no 11348



Merci loran86 pour cette contrib m'en vais tester de ce pas.


--------------------
OsCommerce ms2.2fr + admin + Spplus + Discount coupon + SEO ultimate + Sid Killer + Mes modifs
Go to the top of the page
 
Vinyl
posté 21 Nov 2010, 21:39
Message #4


Ceinture jaune+ OSC
Icône de groupe

Groupe : Membres
Messages : 83
Inscrit : 5-July 09
Lieu : Nantes
Membre no 25711



Merci pour la contribution et le travail. Je suis en tain de tester. Ça fonctionne chez vous ? Moi, pas encore, sans doute raté un truc...


--------------------
Go to the top of the page
 
loran86
posté 22 Nov 2010, 09:33
Message #5


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 17
Inscrit : 3-March 09
Membre no 24685



Hello,
Merci à la personne qui a modéré les posts trollesques, ce n'était pourtant pas mon but en postant cette contribution.
1 - il s'agit d'une CONTRIBUTION, jamais je n'ai parlé d'APPLICATION
2 - j'ai respecté le nom ORIGINAL de la contribution puisque mon travail est basé sur une contribution existante, si il semble trop Applesque je n'y suis pour rien et je ne vois pas en quoi cela est dérangeant sur le fond wacko.gif
Merci à celles et ceux qui apprécient la contrib, c'est tout ce qui m'importe smile.gif
Loran

PS : à votre disposition en cas de souci de fonctionnement.

Ce message a été modifié par loran86 - 22 Nov 2010, 09:34.
Go to the top of the page
 
Tennisdvd
posté 22 Nov 2010, 15:00
Message #6


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 27
Inscrit : 3-December 07
Membre no 19973



quand je veux ajouter un produit depuis le telephone dans panier jai l'erreur qui me dit

"warning require (includes/languages/french/mobile_shopping_cart.php ?

alors que j'ai bien uploader tous les mobile.....php ainsi que le dossier "mobile" et fait la modif dans l'index?
Go to the top of the page
 
titi02330
posté 23 Nov 2010, 02:13
Message #7


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 173
Inscrit : 20-January 09
Membre no 24280



Salut,

Ta contrib est vraiment trop belle ! Ça fait une très jolie boutique pour mobiles !

A part un petit problème... l'adresse du fichier french :
Code
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_DEFAULT);

que j'ai du remplacer par :
Code
require('mobile/includes/languages/french.php');

dans les fichiers :
- mobile_products.php
- mobile_product_info.php
- mobile_shopping_cart.php
......

Ainsi que quelques define qui ne sont pas renseignés comme dans mobile_shopping_cart.php ou pratiquement tous les textes sont du genre HEADING_TITLE



Si je peux me permettre une petite idée d'amélioration... :

- Passer de la version normale vers mobile par détection, mais avec un cookie, qui permettrait de repasser vers la version "normale" même avec un terminal mobile...
On aurait donc en bas du site "mobile" un truc du genre :
Version Mobile/Version Classique

Ciao.


--------------------
Ma version : MS2.2, contributions :
- Multi-Store 2.0
- CKeditor et CKfinder en cours
--------------------
Mes sujets du moment :
- un problème avec CKeditor
- Ma solution et un bon conseil après une semaine d'acharnement sur Multi-Stores
Go to the top of the page
 
Tennisdvd
posté 23 Nov 2010, 11:24
Message #8


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 27
Inscrit : 3-December 07
Membre no 19973



parfait merci! comment nommer les "define" ? je les trouve nul part!?
Go to the top of the page
 
Tennisdvd
posté 23 Nov 2010, 14:03
Message #9


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 27
Inscrit : 3-December 07
Membre no 19973



DANS MOBILE SHOPPING CART le total des commandes est ok, mais le detail total reste à 0 ?
Go to the top of the page
 
ZIZOU94
posté 23 Nov 2010, 16:42
Message #10


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 169
Inscrit : 13-April 05
Membre no 5492



Super contrib !!

par contre petit probleme au niveau du shopping cart : le panier est en affichage osc classique. est ce normal ?
Go to the top of the page
 
ZIZOU94
posté 23 Nov 2010, 16:55
Message #11


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 169
Inscrit : 13-April 05
Membre no 5492



oui effectivement il y a deux ou trois bug sur la page shopping cart :

- total de la ligne a 0
- affichage et taille aux couleurs classique oscommerce
Go to the top of the page
 
Tennisdvd
posté 23 Nov 2010, 17:13
Message #12


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 27
Inscrit : 3-December 07
Membre no 19973



j'ai beau chercher je ne trouve pas comment changer les 0 en montant reel!?

apres le checkout confirmation redirection vers paypal en ce qui me concerne mais pas possible de payer car la page reste classique paypal sans facture ni moyen de paiement par carte banquaire comme originalement sur le site "classique" de oscommerce.

Qui a une solution?

Merci,
Arnaud
Go to the top of the page
 
ZIZOU94
posté 23 Nov 2010, 17:19
Message #13


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 169
Inscrit : 13-April 05
Membre no 5492



autre chose : lors de la confirmation de commande on est redirigé vers la page de confirmation classique du site au lieu de la version mobile
Go to the top of the page
 
loran86
posté 23 Nov 2010, 18:09
Message #14


Ceinture blanche OSC
Icône de groupe

Groupe : Membres
Messages : 17
Inscrit : 3-March 09
Membre no 24685



Salut à tous !
Pour répondre rapidement aux différentes questions posées et aux divers bugs exposés, j'ai précisé dans mon post initial que je n'avais pas touché au fichier mobile_shopping_cart.php smile.gif ça, c'est fait.
Toutefois, comme je l'ai déjà indiqué à d'autres utilisateurs, les fichiers shopping_cart, header et footer vont être réécrits en CSS dans les prochains jours (quand j'aurai un peu le temps quoi...). Je posterai un nouveau full package + un package ne contenant que les fichiers modifiés pour celles et ceux utilisant déjà la contrib.
Donc OUI il est normal que le panier aie la tronche du panier de la boutique "normale" smile.gif
Concernant le total ligne à 0, c'est un grand mystère... Je viens de retester tout est ok chez ouam... Avez-vous bien tous ce code ?
Code
<?php
require_once('mobile/includes/application_top.php');

  if ($cart->count_contents() > 0) {
    include(DIR_WS_CLASSES . 'payment.php');
    $payment_modules = new payment;
  }

  require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_SHOPPING_CART);
  $breadcrumb->add(NAVBAR_TITLE, tep_mobile_link(FILENAME_SHOPPING_CART));
    
  require(DIR_MOBILE_INCLUDES . 'header.php');
  $headerTitle->write();
  
?>
<div id="iphone_content">
<?php echo tep_draw_form('cart_quantity', tep_mobile_link(FILENAME_SHOPPING_CART, 'action=update_product')); ?>
    <table border="0" width="100%" cellspacing="0" cellpadding="0">
<?php
  if ($cart->count_contents() > 0) {
?>
      <tr>
        <td>
<?php
    $info_box_contents = array();

    $info_box_contents[0][] = array('params' => 'class="productListing-heading"',
                                    'text' => TABLE_HEADING_PRODUCTS);

    $info_box_contents[0][] = array('align' => 'center',
                                    'params' => 'class="productListing-heading"',
                                    'text' => TABLE_HEADING_QUANTITY);

    $info_box_contents[0][] = array('align' => 'right',
                                    'params' => 'class="productListing-heading"',
                                    'text' => TABLE_HEADING_TOTAL);

    $any_out_of_stock = 0;
    $products = $cart->get_products();
    for ($i=0, $n=sizeof($products); $i<$n; $i++) {
// Push all attributes information in an array
      if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {
        while (list($option, $value) = each($products[$i]['attributes'])) {
          echo tep_draw_hidden_field('id[' . $products[$i]['id'] . '][' . $option . ']', $value);
          $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix
                                      from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa
                                      where pa.products_id = '" . (int)$products[$i]['id'] . "'
                                       and pa.options_id = '" . (int)$option . "'
                                       and pa.options_id = popt.products_options_id
                                       and pa.options_values_id = '" . (int)$value . "'
                                       and pa.options_values_id = poval.products_options_values_id
                                       and popt.language_id = '" . (int)$languages_id . "'
                                       and poval.language_id = '" . (int)$languages_id . "'");
          $attributes_values = tep_db_fetch_array($attributes);

          $products[$i][$option]['products_options_name'] = $attributes_values['products_options_name'];
          $products[$i][$option]['options_values_id'] = $value;
          $products[$i][$option]['products_options_values_name'] = $attributes_values['products_options_values_name'];
          $products[$i][$option]['options_values_price'] = $attributes_values['options_values_price'];
          $products[$i][$option]['price_prefix'] = $attributes_values['price_prefix'];
        }
      }
    }

    for ($i=0, $n=sizeof($products); $i<$n; $i++) {
      if (($i/2) == floor($i/2)) {
        $info_box_contents[] = array('params' => 'class="productListing-even"');
      } else {
        $info_box_contents[] = array('params' => 'class="productListing-odd"');
      }

      $cur_row = sizeof($info_box_contents) - 1;

      $products_name = '<table border="0" cellspacing="0" cellpadding="0">' .
                       '  <tr>' .
                       '    <td class="productListing-data" align="center" rowspan="10"><a href="' . tep_mobile_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '">' . tep_image(DIR_WS_IMAGES . $products[$i]['image'], $products[$i]['name'], SMALL_IMAGE_WIDTH/2, SMALL_IMAGE_HEIGHT/2) . '</a></td>' .
                       '  </tr>' .
                       '  <tr>' .
                         '    <td class="productListing-data" valign="top"><a href="' . tep_mobile_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products[$i]['id']) . '"><b>' . $products[$i]['name'] . '</b></a>';

      if (STOCK_CHECK == 'true') {
        $stock_check = tep_check_stock($products[$i]['id'], $products[$i]['quantity']);
        if (tep_not_null($stock_check)) {
          $any_out_of_stock = 1;

          $products_name .= $stock_check;
        }
      }

      if (isset($products[$i]['attributes']) && is_array($products[$i]['attributes'])) {
        reset($products[$i]['attributes']);
        while (list($option, $value) = each($products[$i]['attributes'])) {
          $products_name .= '<br><small><i> - ' . $products[$i][$option]['products_options_name'] . ' ' . $products[$i][$option]['products_options_values_name'] . '</i></small>';
        }
      }

      $products_name .= '    </td>' .
                        '  </tr>' .
                          '  <tr><td>'.
                          '    <a href="' . tep_mobile_link(FILENAME_SHOPPING_CART,"action=remove_product&products_id=" . tep_get_uprid($products[$i]['id'], $products[$i]['attributes'])) .'">' . TABLE_HEADING_REMOVE . '</a>' .
                          ' </td></tr>' .
                        '</table>';

      $info_box_contents[$cur_row][] = array('params' => 'class="productListing-data"',
                                             'text' => $products_name);

      $info_box_contents[$cur_row][] = array('align' => 'center',
                                             'params' => 'class="productListing-data" valign="top"',
                                             'text' => tep_draw_input_field('cart_quantity[]', $products[$i]['quantity'], 'size="4"') . tep_draw_hidden_field('products_id[]', $products[$i]['id']));

      $info_box_contents[$cur_row][] = array('align' => 'right',
                                             'params' => 'class="productListing-data" valign="top"',
                                             'text' => '<b>' . $currencies->display_price($products[$i]['final_price'], tep_get_tax_rate($products[$i]['tax_class_id']),0, $products[$i]['quantity']) . '</b>');
    }

    new productListingBox($info_box_contents);
?>
        </td>
      </tr>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>
      <tr>
        <td align="right" class="main"><b><?php echo SUB_TITLE_SUB_TOTAL; ?> <?php echo $currencies->format($cart->show_total()); ?></b></td>
      </tr>
<?php
    if ($any_out_of_stock == 1) {
      if (STOCK_ALLOW_CHECKOUT == 'true') {
?>
      <tr>
        <td class="stockWarning" align="center"><br><?php echo OUT_OF_STOCK_CAN_CHECKOUT; ?></td>
      </tr>
<?php
      } else {
?>
      <tr>
        <td class="stockWarning" align="center"><br><?php echo OUT_OF_STOCK_CANT_CHECKOUT; ?></td>
      </tr>
<?php
      }
    }
?>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>
      <tr>
        <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox">
          <tr class="infoBoxContents">
            <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
              <tr>
                <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                <td class="main"><?php echo tep_mobile_button(IMAGE_BUTTON_UPDATE_CART);/*tep_image_submit('button_update_cart.gif', IMAGE_BUTTON_UPDATE_CART);*/ ?></td>
                <td align="right" class="main"></form><?php echo tep_draw_form('cart_quantity', tep_mobile_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')) . tep_mobile_button(IMAGE_BUTTON_CHECKOUT, 'name="checkout"') . '</form>'; ?></td>
                <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
              </tr>
            </table></td>
          </tr>
        </table></td>
      </tr>
<?php
    //$initialize_checkout_methods = $payment_modules->checkout_initialization_method();

    if (!empty($initialize_checkout_methods)) {
?>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>
      <tr>
        <td align="right" class="main" style="padding-right: 50px;"><?php echo TEXT_ALTERNATIVE_CHECKOUT_METHODS; ?></td>
      </tr>
<?php
      reset($initialize_checkout_methods);
      while (list(, $value) = each($initialize_checkout_methods)) {
?>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>
      <tr>
        <td align="right" class="main"><?php echo $value; ?></td>
      </tr>
<?php
      }
    }
  } else {
?>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '2'); ?></td>
      </tr>
      <tr>
        <td align="center" class="main"><?php echo TEXT_CART_EMPTY; ?></td>
      </tr>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '2'); ?></td>
      </tr>
      <tr>
        <td align="center" class="main"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . tep_mobile_button(IMAGE_BUTTON_CONTINUE) . '</a>'; ?></td>
      </tr>
<?php
  }
?>
    </table>
</form>
<?php require(DIR_MOBILE_INCLUDES . 'footer.php'); ?>
</div>

J'ai testé dans tous les sens, en supprimant, en multipliant les quantités et en mettant à jour le panier, ça fonctionne...

@ZIZOU94 : oui j'ai vu ça, c'est un des points faisant partie de ma todo list et dont la correction sera intégrée au prochain package

@TennisDVD : j'ai eu des infos techniques de la part de ma plateforme bancaire et suis en train de remédier au problème du paiement CB en ligne qui génère toujours une erreur de mon côté. Très certainement encore une histoire de lien, je cite la Caisse d'Epargne :

Citation
L'affichage de la page SP+ sur mobile s'effectue comme sur ordinateur, l'application SP+ effectue les mêmes traitements quel que soit le matériel utilisé. Après vérification, le test sur IPhone/Safari ne pose pas de problème, l'erreur reçue peut provenir d'un lien de paiement mal formé.


et, logiquement (hélas), ce problème se répercute sur l'ensemble des modules de paiement CB.

@titi02330 : c'est bizarre, j'ai testé ta solution par acquis de conscience mais je me suis retrouvé avec le problème que tu rencontrais avec ma solution... lol Attention, quand on appelle le fichier de langue dans les pages mobile, on appelle le fichier de la boutique "normale", pour éviter d'avoir à se retaper tout le répertoire french (par exemple) dans le includes/languages. Ceci dit, ton idée d'amélioration est notée !

Voilà pour ce soir, suite au prochain épisode !
Restant à votre disposition.
Loran

Edit : pour celles et ceux que ça intéresse, le sujet (en anglais) sur iOSC2 par son auteur original : iOSC2 Bumbarash

Ce message a été modifié par loran86 - 23 Nov 2010, 18:15.
Go to the top of the page
 
Tennisdvd
posté 24 Nov 2010, 07:47
Message #15


Ceinture blanche+ OSC
Icône de groupe

Groupe : Membres
Messages : 27
Inscrit : 3-December 07
Membre no 19973



Oui j'ai bien ce code, le total lui reste bon, c'est la ligne par detail de produit qui reste a 0, ainsi que dans le checkout avec les produits ou ils sont tous a 0 malgres et un bon total.

Merci de ton aide.
Arnaud
Go to the top of the page
 
oneill
posté 3 Feb 2011, 23:08
Message #16


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 7627
Inscrit : 28-December 03
Lieu : Hollywood les Granits
Membre no 1773



Et depuis ?
Je termine une boutique avec cette contrib. Un plaisir, je dois dire.

Je cale un peu sur le paiement par carte, pour l'instant (SystemPay). Le define manquant pour mobile_checkout_process.php m'a fait tourner chêvre un moment. Il me reste quelques adaptations propres à ma boutique surtout au niveau des affichages, les résultats étants satisfaisants. Je ne sais pas si cela va générer du commerce mais dès que j'annonce un développement sur Smartphone de nos boutiques, ca impressionne le chaland... Et c'est déjà cà tongue.gif

Si vous avez des boutiques qui tournent avec Iosc3, faites nous profiter. wink.gif

Et pour ceux qui n'ont pas d' Ail faune ou autre, je travail avec Opéra Mini (Avec Opera Mobile Launcher) qui est un émulateur et qui donne une bonne idée du rendu mais pas de Dragonfly pour débuguer, les données de Opera Mini étant compressées.
http://dev.opera.com/articles/view/opera-mobile-emulator/

Safari, quant à lui, à une fonction Développement qui, une fois activée, fourni également une aide précieuse.


--------------------
Go to the top of the page
 
brouillard
posté 4 Feb 2011, 08:02
Message #17


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 301
Inscrit : 9-December 09
Membre no 26687



Super contrib, espère que les contribs essentielles (Atos, Colissimo, UPS, ...) sont disponibles ou facilement adaptables.


Merci pour cette super contrib !

@oneill :

Merci pour le lien "Opera Mobile emulator for desktop"

Ce message a été modifié par brouillard - 4 Feb 2011, 08:04.
Go to the top of the page
 
oneill
posté 4 Feb 2011, 22:32
Message #18


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 7627
Inscrit : 28-December 03
Lieu : Hollywood les Granits
Membre no 1773



Pour ton interrogation, les modules dont le traitement ne demande pas à "sortir" de la boutique sont quasi certain de fonctionner. Pour les autres : Atos ou systemPay.... ou encore Socolissimo qui ouvrent des pages en exterieur ce sera plus délicat... J'ai ouïe dire (par mon p'tit doigt) que SystemPay allait sortir une version Mobile pour la fin du mois. (y a déjà une appli dédiée à l'AppStore)


--------------------
Go to the top of the page
 
oneill
posté 5 Feb 2011, 16:27
Message #19


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 7627
Inscrit : 28-December 03
Lieu : Hollywood les Granits
Membre no 1773



SystemPay/Cyberplus fonctionne sur Iosc3
La page de paiement est celle qu'on connait bien sur. On attends la version Smartphone.

Dans mobile_checkout_confirmation.php
Après
Code
<?php
  if (isset($$payment->form_action_url)) {
    $form_action_url = $$payment->form_action_url;
  } else {
    $form_action_url = tep_mobile_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL');
  }
?>
<div id="iphone_content">
<?php
  echo tep_draw_form('checkout_confirmation', $form_action_url, 'post');

  if (is_array($payment_modules->modules)) {
    echo $payment_modules->process_button();
  }
Ajoutez
Code
  if (isset($$payment->form_submit)) {
    $form_submit = $$payment->form_submit;
  }
?>
<div id="iphone_content">
<?php
  echo tep_draw_form('checkout_confirmation', $form_submit, 'post');
?>


Tada !


--------------------
Go to the top of the page
 
oneill
posté 5 Feb 2011, 17:12
Message #20


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 7627
Inscrit : 28-December 03
Lieu : Hollywood les Granits
Membre no 1773



J'oubliais.
Un truc plutôt important qui n'est pas signalé dans la contrib (ou j'ai mal vu)

Le tri suivant qui doit être installé montre vite ses limites.
Code
2. If you need automatic redirect for mobile browsers (of course we need !), add these lines to the top of your
   catalog/index.php file

   if (stristr($_SERVER['HTTP_USER_AGENT'], "iPhone")
|| strpos($_SERVER['HTTP_USER_AGENT'], "iPod")) {
   header("location:mobile_index.php");
}
  if (stristr($_SERVER['HTTP_USER_AGENT'], "Blackberry"))
   {
   header("location:mobile_index.php");
   }
   if (stristr($_SERVER['HTTP_USER_AGENT'], "Nokia"))
   {
   header("location:mobile_index.php");
   }
   if (stristr($_SERVER['HTTP_USER_AGENT'], "SonyEricsson"))
   {
   header("location:mobile_index.php");
   }
   if (stristr($_SERVER['HTTP_USER_AGENT'], "Opera Mobi"))
   {
   header("location:mobile_index.php");
   }
   if (stristr($_SERVER['HTTP_USER_AGENT'], "Opera Mini"))
   {
   header("location:mobile_index.php");
   }
   if (stristr($_SERVER['HTTP_USER_AGENT'], "MAUI_WAP_Browser"))
   {
   header("location:mobile_index.php");
   }
   if (stristr($_SERVER['HTTP_USER_AGENT'], "Android"))
   {
   header("location:mobile_index.php");
   }
   if (stristr($_SERVER['HTTP_USER_AGENT'], "Palm"))
   {
   header("location:mobile_index.php");
   }
  
   just before the DOCTYPE line

Le mieux étant déjà, de le transformer en fonction à mettre dans les general.php
Code
// Le navigateur est-il un Smartphone ?
  function smartphone() {
  $smartphone = false;
   if (stristr($_SERVER['HTTP_USER_AGENT'], "iPhone") || strpos($_SERVER['HTTP_USER_AGENT'], "iPod") || stristr($_SERVER['HTTP_USER_AGENT'], "Blackberry") || stristr($_SERVER['HTTP_USER_AGENT'], "Nokia") || stristr($_SERVER['HTTP_USER_AGENT'], "SonyEricsson") || stristr($_SERVER['HTTP_USER_AGENT'], "Opera Mobi") || stristr($_SERVER['HTTP_USER_AGENT'], "Opera Mini") || stristr($_SERVER['HTTP_USER_AGENT'], "MAUI_WAP_Browser") || stristr($_SERVER['HTTP_USER_AGENT'], "Android") || stristr($_SERVER['HTTP_USER_AGENT'], "Palm")) {
  $smartphone = true;
}
    return $smartphone;
  }
Il suffit ensuite de l'appeler si on veut faire des différences entre l'affichage de la version PC et la version Smartphone.
Code
if(smartphone() == true) {
define('ENTRY_SUBURB', 'Suite adresse:');
}else{
define('ENTRY_SUBURB', 'Compl&eacute;ment d\'adresse:');
}
Histoire de mettre bon ordre dans la mise en page et garder le contrôle.
On peut aussi s'en servir pour choisir les modules de paiement ou de livraison que l'on souhaite
Code
   if (smartphone() == true ) {
     $check_flag = false;
}


Mais il ne faut SURTOUT PAS utiliser cette fonction en entrée de site au risque de voir tous les liens mourir sur mobile_index.php : Les liens du système de paiement en premier lieu mais aussi et surtout liens venants des moteurs de recherche ce qui est beaucoup plus balot. Pour y pallier il faut utiliser la classe mobileRedirect qui est cachée (la vilaine) dans catalog/mobile/includes/classes/mobile_redirect.php. Le plus simple est de copier ce fichier dans catalog/includes/classes/ et de l'appeler en tête d'index.php
Code
  require(DIR_WS_CLASSES . 'mobile_redirect.php');
  $mobileRedirect = new mobileRedirect;
après
Code
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html <?php echo HTML_PARAMS; ?>>
<head>
<?php

Le problème est ainsi résolu. Les liens entrants trouveront la bonne page quelque soit la sortie (sur PC ou Smartphone.)


Gaffe ! J'ai édité 2 ou 3 trucs

Ce message a été modifié par oneill - 5 Feb 2011, 17:24.
Raison de l'édition : $mobileRedirect = new mobileRedirect;


--------------------
Go to the top of the page
 
telede
posté 5 Feb 2011, 17:28
Message #21


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 183
Inscrit : 18-November 09
Membre no 26560



Hello wink.gif

En Juin 2009 j'ai posté un topic sur le forum US concernant le même type d'appli mais peut être dans le cadre d'une autre contribution, je ne saurai dire... je ne retrouve pas le topic mais j'ai le code :
Code
    function needRedirect() {
        if($this->isCancelled()) return false;
        if(strpos($_SERVER['SCRIPT_NAME'],$this->mobileDir . $this->mobileFile) > 0) return false;
        if(tep_browser_detect('iPhone') || tep_browser_detect('iPod')) return 'iPhone';
        if(tep_browser_detect('IEMobile')) return 'iPhone';
        if(tep_browser_detect('Blackberry')) return 'Blackberry';
        if(tep_browser_detect('DoCoMo')) return 'DoCoMo';
        if(tep_browser_detect('Nokia')) return 'Nokia';
        if(tep_browser_detect('SonyEricsson')) return 'SonyEricsson';
        if(tep_browser_detect('Opera Mobi')) return 'OperaMobi';
        if(tep_browser_detect('Opera Mini')) return 'OperaMini';
        if(tep_browser_detect('MAUI_WAP_Browser')) return 'GenericWAP';
        if(tep_browser_detect('alcatel')) return('alcatel'); // Alcatel Browser (PDA/Phone browser)
        if(tep_browser_detect('lg-')) return('lg-'); // LG (PDA/Phone browser)
        if(tep_browser_detect('ericsson')) return('ericsson'); // Ericsson Browser (PDA/Phone browser)
        if(tep_browser_detect('mot-')) return('mot-'); // Motorola Browser (PDA/Phone browser)
        if(tep_browser_detect('panasonic')) return('panasonic'); // Panasonic Browser (PDA/Phone browser)
        if(tep_browser_detect('philips')) return('philips'); // Philips Browser (PDA/Phone browser)
        if(tep_browser_detect('sagem')) return('sagem'); // Sagem (PDA/Phone browser)
        if(tep_browser_detect('samsung')) return('samsung'); // Samsung (PDA/Phone browser)
        if(tep_browser_detect('sie-')) return('sie-'); // SIE (PDA/Phone browser)
        if(tep_browser_detect('sec-')) return('sec-'); // Sony/Ericsson (PDA/Phone browser)
        if(tep_browser_detect('sonyericsson')) return('sonyericsson'); // Sony/Ericsson Browser (PDA/Phone browser)
        if(tep_browser_detect('mmef')) return('mmef'); // Microsoft Mobile Explorer (PDA/Phone browser)
        if(tep_browser_detect('mspie')) return('mspie'); // MS Pocket Internet Explorer (PDA/Phone browser)
        if(tep_browser_detect('wapalizer')) return('wapalizer'); // WAPalizer (PDA/Phone browser)
        if(tep_browser_detect('wapsilon')) return('wapsilon'); // WAPsilon (PDA/Phone browser)
        if(tep_browser_detect('webcollage')) return('webcollage'); // WebCollage (PDA/Phone browser)
        if(tep_browser_detect('up.')) return('up.'); // UP.Browser (PDA/Phone browser)
        if(tep_browser_detect('docomo')) return('docomo'); // I-Mode phone (PDA/Phone browser)
        if(tep_browser_detect('portalmmm')) return('portalmmm'); // I-Mode phone (PDA/Phone browser)
        return false;
}


Ca donne une idée des navigateur a prendre en compte ...

Pour ma part je tiens à saluer le projet car ca apporte un + aux ventes, surtout que quand je l'ai mis en oeuvre je me suis rendu compte que c'était significatif, mais j'avais pas mis de statistiques, mais je me suis rendu compte du phénomène avec les retour de mails de confirmation de commande qui étaient en texte (alors que sur la boutique de base ils étaient en HTML)....

Bref que du bon wink.gif


--------------------
The value of a man resides in what he gives and not in what he is capable of receiving. - Albert Einstein
Go to the top of the page
 
oneill
posté 5 Feb 2011, 17:35
Message #22


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 7627
Inscrit : 28-December 03
Lieu : Hollywood les Granits
Membre no 1773



En effet ! Y a plus qu'à étoffer ma fonction smartphone() et la classe biggrin.gif Et compter le pognon... Je déconne...


--------------------
Go to the top of the page
 
brouillard
posté 5 Feb 2011, 18:02
Message #23


Ceinture orange+ OSC
Icône de groupe

Groupe : Membres
Messages : 301
Inscrit : 9-December 09
Membre no 26687



la fonction tep_browser_detect elle y est dans IOSC3 ?
Go to the top of the page
 
oneill
posté 5 Feb 2011, 18:13
Message #24


5eme dan OSC
Icône de groupe

Groupe : Administrateur
Messages : 7627
Inscrit : 28-December 03
Lieu : Hollywood les Granits
Membre no 1773



Oui dans la classe mobileRedirect justement

http://code.google.com/p/mobile-oscommerce...=svn12&r=12


--------------------
Go to the top of the page
 
telede
posté 5 Feb 2011, 18:50
Message #25


Ceinture orange OSC
Icône de groupe

Groupe : Membres
Messages : 183
Inscrit : 18-November 09
Membre no 26560



Citation (oneill @ 5 Feb 2011, 17:35) *
Et compter le pognon... Je déconne...

Bein moi non, c'est en voyant l'ampleur que ca prenait que j'avais fait cette recherche et l'adaptation lol

les Samsungs et autres commencaient a arriver en puissance ...

wink.gif

@Oneil : la solution la plus performante sera certainement un switch{ case : ...

Exemple de code pas testé :

Code
$navigateur = strtoupper(preg_replace('/[^A-Za-z0-9]/', '', $navigateur_source));
switch($navigateur)
{
case 'BLACKBERRY' :
case 'OPERAMINI' :
case 'OPERAMOBI' :
  traitement ...
case 'IPHONE' :
  traitement
default :
traitement non mobile
}


Assumant ici le fait que le Black Berry / Opéra Mini et Mobi aient les meme css, le iPhone a Part
et en regroupant au maximum les catégories de navigateurs/mobiles au sein du meme "case" ...

Ce message a été modifié par telede - 5 Feb 2011, 18:58.


--------------------
The value of a man resides in what he gives and not in what he is capable of receiving. - Albert Einstein
Go to the top of the page
 

6 Pages V   1 2 3 > » 
Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 20th October 2014 - 18:56
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)