3 votes

Magento - Module VS Dataflow

Magento - Module VS Dataflow

J'envisage la possibilité de ---- d'utiliser Magento DataFlow pour extraire des informations d'une base de données afin d'établir un lien avec un CMS vidéo.

Cela pourrait permettre de gagner du temps de développement - ou peut-être pas.

Il pourrait être plus stable - ou peut-être pas.

La question est de savoir s'il est préférable d'intégrer étroitement le système vidéo à magneto sous la forme d'un module qui ne modifie pas le noyau de ---- ou d'interroger directement la base de données, ce qui permet de travailler en dehors du noyau de magneto tout en interagissant avec lui.

Je dois décider si c'est mieux du point de vue du développement et du point de vue de la fonctionnalité, de l'utilisation quotidienne et de la maintenance.

--

UPDATE ONE :

"votre message ne dit pas clairement où ces données aboutiront ou si vous écrivez dans la base de données, etc.

si cela est fait dans Magento en tant que module, les vidéos et les playlists seront configurées dans l'admin.

il s'agira d'une sorte de "configurateur de médias" capable de prendre en charge des sources multi-protocoles (par ex. http://erlyvideo.org/files , aws cloudfront, wowza, any server, brightcove, youtube. etc) et cracher / configurer des blocs de code (par exemple flash, html5 vidéo, js, php). cela se fera en collant du code / des urls et/ou en téléchargeant du contenu.

--

si ce n'est pas fait dans Magento, le même type de chose aura lieu dans un autre CMS (personnalisé ou quelque chose comme drupal ou wordpress).

--

je ne connais pas avec certitude toutes les interactions possibles qui devraient avoir lieu mais - dans la galerie média - il y a un système de favoris, des sessions sauvegardées, des permissions de groupes d'utilisateurs, l'abonnement au contenu (vod).

des instances vidéo uniques seront également servies sur la page du magasin et sur le blog : mais l'interaction se limitera à servir la vidéo.


DEUXIÈME MISE À JOUR :

"A quoi sert Magento dans ce scénario ?"

D'après ce que je peux dire actuellement, des sessions sauvegardées (tout utilisateur), un système de favoris (utilisateur connecté), des préférences sauvegardées (utilisateur connecté), des autorisations de groupes d'utilisateurs (tout utilisateur ou utilisateur connecté + avec divers types d'utilisateurs).

Mais à part les instances de VOD, le but de la galerie média est :

A. offrant des clips vidéo gratuits.

B. pour permettre aux utilisateurs de voir les bandes-annonces des produits DVD des clients.

Aucun des deux ne semble, en soi, nécessiter beaucoup d'interaction. Mais pour des raisons de continuité, il serait peut-être préférable de tout garder dans une seule base de données configurée par un seul administrateur, qu'elle soit plus étroitement intégrée par nécessité ou par commodité.

Mais comme indiqué à l'origine, peut-être que quelque chose de plus robuste/versatile ou simplement plus stable par son indépendance serait réalisable en dehors de db/store. Peut-être que cette dernière solution est promue par ceux qui ne comprennent vraiment pas Magento ou qui ont des limites à leur compréhension et conseillent donc la séparation. Je ne sais pas.

--

"A moins que les vidéos ne soient liées à des produits, il n'y a aucune raison de les étiqueter à des produits".

C'est logique pour les bandes-annonces et les vidéos gratuites, comme nous venons de le mentionner. Je suppose qu'une exception possible serait une vidéo VOD ou un groupe de vidéos VOD. Dans ce cas, je suppose que vous voulez dire qu'il serait préférable que la vidéo soit un produit spécialement configuré qui, entre autres choses, apparaîtrait également dans la galerie de médias ?

Dans ce cas, la VOD, le clip vidéo lui-même (ou son conteneur) serait un produit. Il pourrait être visualisé, acheté et placé n'importe où, selon les besoins, et disposer de sa propre page produit (si nécessaire). La question est de savoir comment cela est "fait" du point de vue du code.

Une autre approche possiblement différente serait comme celle-ci : (la page a disparu) http://workbookproject.com/newbreed/2010/06/21/build-your-own-vod-portal/ Essayez ceci : http://filmutopia.typepad.com/lone_gun_manifesto/2010/07/how-to-build-your-own-vod-portal-in-a-matter-of-hours-for-less-than-100-lgm.html . Lorsqu'un utilisateur achète réellement l'accès à une page.

Zac a fait un excellent travail sur son site et dans l'article, et je pourrais envisager de faire ce genre de choses avec Magento, mais comme Zak le souligne à la fin de son article, il utilise Flash. Ma solution irait donc plus loin et fournirait des vidéos en HTML5 et/ou [tout protocole].

Donc je ne sais pas si Magneto serait trop encombrant pour ce genre de chose VS utilisant WP comme Zak l'a fait, ou autre chose.

--

"Il est possible de créer des modèles de données ordinaires dans Magento pour envelopper les appels de base de données, et s'il n'y a pas d'interaction entre les vidéos et les produits, la création d'un de ces modèles devrait faire l'affaire plus proprement."

J'ai lu des articles sur les "modèles de données dans Magento", mais je ne vois pas à quoi ils se rapportent ou en quoi ils consistent physiquement dans le schéma de cette spécification.

Il existe manifestement de nombreuses façons de faire les choses dans Magento.

DataFlow, modèles de données, modules Magento... pourquoi ne pas ajouter les widgets ? :)

--

Un autre avis sur la question ? J'apprécie beaucoup.

1voto

Nic Points 4705

Je ne suis pas sûr que Dataflow soit la réponse. Dataflow ressemble plus à un import/export cron, ce qui serait génial pour les mises à jour de masse, l'exportation vers quelque chose comme un ERP, etc. - si vous cherchez des données en direct, vous allez devoir vous connecter à l'API et extraire les informations dont vous avez besoin, ce qui semble beaucoup plus pratique, et c'est en temps réel. Votre investissement en temps n'est pas non plus trop ridicule en termes de temps de développement.

1voto

Joseph Mastey Points 17871

Dans la plupart des cas, rester à l'intérieur du cadre (par opposition au piratage de la base de données) est votre meilleure option du point de vue des maux de tête. Si vous le pouvez, créez un module qui gère l'interaction et consommez-le à volonté (votre message n'indique pas clairement où ces données aboutiront, si vous écrivez dans la base de données, etc.)

L'exception à l'utilisation du framework se produit lorsque les performances sont essentielles, par exemple lorsque vous avez des milliers ou des dizaines de milliers d'enregistrements à extraire. Dans ce cas, l'extraction de la base de données (et l'écriture dans celle-ci) est parfois la seule option possible.

J'espère que cela vous aidera !

Merci, Joe


En ignorant les autres fonctionnalités (comme les commentaires, les favoris, etc., consultez les tutoriels d'Alan Storm sur l'enregistrement des données dans la base de données), conserver les vidéos en tant que produits peut être accompli en utilisant les attributs eux-mêmes, dans ce cas toutes les données peuvent rester dans Magento (enregistrées dans l'administration, affichées sur le frontend). De cette façon, l'objet catalogue fera la médiation avec la base de données pour vous, ce qui vous évitera bien des soucis.

Quoi qu'il en soit, il ne semble pas y avoir de problèmes de mise à l'échelle pour le moment, donc l'utilisation de la structure (objets produits pour les informations principales, création de vos propres objets pour les favoris et autres) devrait être un bon moyen d'accomplir cela.


En fait, je suis en train de me faire un peu tourner en bourrique là. À quoi sert Magento dans ce scénario ? À moins que les vidéos ne soient liées à des produits, il n'y a aucune raison de les associer à des produits. Il est possible de créer des modèles de données ordinaires dans Magento pour envelopper les appels de base de données, et s'il n'y a pas d'interaction entre les vidéos et les produits, la création d'un de ces modèles devrait faire l'affaire plus proprement.

1voto

Jonathan Day Points 12496

En règle générale, je vous conseille vivement d'écrire un module. DataFlow peut être un peu opaque, et est conçu (comme déjà dit) pour des transferts de données par lots, et non pour des requêtes "transactionnelles" en temps réel, ce qui est, je pense, ce que vous demandez.

L'écriture directe dans la base de données contournera toute la logique intégrée de la couche métier et de la couche de données qui existe dans Magento pour de bonnes raisons - par exemple, la mise à jour des index pour la performance, la vérification des ACL, etc. Vous devriez donc utiliser l'approche Mage::getModel('module/model') pour votre développement. Cela vous fournira également beaucoup de méthodes de commodité pour sélectionner, filtrer, manipuler des objets.

Si vous écrivez votre propre module, vous serez beaucoup plus à même de comprendre ce qui se passe, de déboguer votre code et d'observer l'effet des changements. En utilisant le créateur de module vous donnera une bonne longueur d'avance sur ce point.

Lorsque vous rédigerez votre module, je vous suggère de suivre la suggestion de Joseph d'ajouter vos informations en tant qu'attributs aux produits liés. Ceci article de blog vous accompagne dans cette démarche.

Bonne chance ! JD

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X