[CONTRIBUTION] iOSC3 - OSCommerce mobile |
Bienvenue invité ( Connexion | Inscription )
[CONTRIBUTION] iOSC3 - OSCommerce mobile |
21 Nov 2010, 18:20
Message
#1
|
|
Ceinture blanche OSC 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. |
|
21 Nov 2010, 19:13
Message
#2
|
|
Ceinture marron OSC Groupe : Membres 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) |
|
21 Nov 2010, 20:19
Message
#3
|
|
Ceinture orange OSC 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
|
|
21 Nov 2010, 21:39
Message
#4
|
|
Ceinture jaune+ OSC Groupe : Membres Messages : 85 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...
-------------------- |
|
22 Nov 2010, 09:33
Message
#5
|
|
Ceinture blanche OSC 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 Merci à celles et ceux qui apprécient la contrib, c'est tout ce qui m'importe Loran PS : à votre disposition en cas de souci de fonctionnement. Ce message a été modifié par loran86 - 22 Nov 2010, 09:34. |
|
22 Nov 2010, 15:00
Message
#6
|
|
Ceinture blanche+ OSC 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? |
|
23 Nov 2010, 02:13
Message
#7
|
|
Ceinture orange OSC 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 |
|
23 Nov 2010, 11:24
Message
#8
|
|
Ceinture blanche+ OSC Groupe : Membres Messages : 27 Inscrit : 3-December 07 Membre no 19973 |
parfait merci! comment nommer les "define" ? je les trouve nul part!?
|
|
23 Nov 2010, 14:03
Message
#9
|
|
Ceinture blanche+ OSC 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 ?
|
|
23 Nov 2010, 16:42
Message
#10
|
|
Ceinture orange OSC 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 ? |
|
23 Nov 2010, 16:55
Message
#11
|
|
Ceinture orange OSC 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 |
|
23 Nov 2010, 17:13
Message
#12
|
|
Ceinture blanche+ OSC 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 |
|
23 Nov 2010, 17:19
Message
#13
|
|
Ceinture orange OSC 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
|
|
23 Nov 2010, 18:09
Message
#14
|
|
Ceinture blanche OSC 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 ç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" 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. |
|
24 Nov 2010, 07:47
Message
#15
|
|
Ceinture blanche+ OSC 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 |
|
3 Feb 2011, 23:08
Message
#16
|
|
5eme dan OSC Groupe : Administrateur Messages : 7634 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à Si vous avez des boutiques qui tournent avec Iosc3, faites nous profiter. 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. -------------------- |
|
4 Feb 2011, 08:02
Message
#17
|
|
Ceinture orange+ OSC 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. |
|
4 Feb 2011, 22:32
Message
#18
|
|
5eme dan OSC Groupe : Administrateur Messages : 7634 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)
-------------------- |
|
5 Feb 2011, 16:27
Message
#19
|
|
5eme dan OSC Groupe : Administrateur Messages : 7634 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 Ajoutezif (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(); } 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 ! -------------------- |
|
5 Feb 2011, 17:12
Message
#20
|
|
5eme dan OSC Groupe : Administrateur Messages : 7634 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 ? Il suffit ensuite de l'appeler si on veut faire des différences entre l'affichage de la version PC et la version 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; } Code if(smartphone() == true) { Histoire de mettre bon ordre dans la mise en page et garder le contrôle. define('ENTRY_SUBURB', 'Suite adresse:'); }else{ define('ENTRY_SUBURB', 'Complément d\'adresse:'); } 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'); après$mobileRedirect = new mobileRedirect; 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;
-------------------- |
|
5 Feb 2011, 17:28
Message
#21
|
|
Ceinture orange OSC Groupe : Membres Messages : 183 Inscrit : 18-November 09 Membre no 26560 |
Hello
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 -------------------- The value of a man resides in what he gives and not in what he is capable of receiving. - Albert Einstein
|
|
5 Feb 2011, 17:35
Message
#22
|
|
5eme dan OSC Groupe : Administrateur Messages : 7634 Inscrit : 28-December 03 Lieu : Hollywood les Granits Membre no 1773 |
En effet ! Y a plus qu'à étoffer ma fonction smartphone() et la classe Et compter le pognon... Je déconne...
-------------------- |
|
5 Feb 2011, 18:02
Message
#23
|
|
Ceinture orange+ OSC Groupe : Membres Messages : 301 Inscrit : 9-December 09 Membre no 26687 |
la fonction tep_browser_detect elle y est dans IOSC3 ?
|
|
5 Feb 2011, 18:13
Message
#24
|
|
5eme dan OSC Groupe : Administrateur Messages : 7634 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 -------------------- |
|
5 Feb 2011, 18:50
Message
#25
|
|
Ceinture orange OSC Groupe : Membres Messages : 183 Inscrit : 18-November 09 Membre no 26560 |
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 ... @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
|
|
Version bas débit | Nous sommes le : 29th March 2024 - 17:03 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |