创建关系n:n并为每个关系指定属性 -- 7 领域 drupal 相关 的问题

Create relation N:N and specify properties for each relation


1
vote

问题

中文

我有两个内容类型:"汽车" 和"选项" 。 我的车可以有不同的选择,因此我可以将选项与参考模块相关联到汽车。但我的问题是我想指定每辆车/每种关系的选项的价格。

示例:

  Seat    - Airbag - 100 €   Citroen - Airbag - 88 €   

关系不仅是节点引用,它具有"元达托" 。

目前,我计划开发自己的模块,也许"关系" 模块将是解决方案,但我尝试过它没有成功。

如何解决这个问题?

英文原文

I have two content types: "Car" and "Options". My cars can have different options, so I could associate options to a car with References Module. But my problem is I'd like to specify the price of the option for each car/each relation.

Example:

Seat    - Airbag - 100 xe2x82xac   Citroen - Airbag - 88 xe2x82xac 

The relation is not only a node reference, it has "metadatas".

For the moment, I plan to develop my own module, maybe "Relations" module will be the solution, but I tried it with no success.

How can I solve this problem?

  

回答列表

3
 
vote

如果存在现有的controw模块,那将是关系。它适用于实体的水平。它应该提供可用于您描述的内容的通用API /框架。

如果关系不适合您的需求或对您没有准备,那么编写自定义模块将是唯一的选项。对于自定义模块,我会在实体级别工作(在实体 API模块)上工作,不是直接在SQL中。虽然Drupal没有提供实体的脚手架,但它提供了辅助功能,例如 field_attach_form()或 field_atth_insert()处理实体上的字段。不幸的是,关于如何正确使用实体的文档仍然是稀缺的。 模型模块是一种尝试在那里帮助,因为它瞄准提供模型实体和实体管理键启动您的实体开发

 

If there is an existing contrib module for that, that would be Relation. It works at the level of Entities. It should provide a generic API/framework that can be used for what you describe.

If Relation doesn't fit your needs or is not ready for you, then writing a custom module would be the only option. For a custom module, I would work at the Entities level (with the help of the Entity API module), not directly in SQL. While Drupal doesn't provides scaffolding for Entities, it provide helper functions such as field_attach_form() or field_attach_insert() to deal with fields on entities. Unfortunately, the documentation on how to properly use entities is still scarce. The Model module is an attempt to help there since it aims to provide a model entity and entity administration interface to kick-start your entity development.

 
 
 
 
1
 
vote

字段集合是另一个选项。 imo它具有比框的关系更好的用户界面,特别是如果关系可以被视为定向。

 

Field Collection is another option. IMO it has a better user interface than Relation out of the box, especially if the relationships can be considered directional.

 
 
0
 
vote

一个好的模块是动态属性模块,它确切地完成了你想要的东西。有演示。

也许您想检查实体建设套件(eck),帮助您开发实体,以及多个值字段集合的规则和关系集成。

 

A good module is the Dynamic properties module which does exactly what you want. There is a demo.

Maybe you would like to check the Entity Construction Kit (ECK), which helps you to develop entities, and maybe rules and relation integration for multiple values field collection.

 
 
 
 
-1
 
vote

正如您所指出的那样,您可以选择开发自己的模块。在这种情况下,这将是我的建议。

nodeReference模块(在CCK捆绑包中打包)是 not 一个通用关系模块。它可以用于描述所描述的是:定义了用于从另一个引用一个节点的字段类型。 有一些创造力,可以滥用这一点以创建通用n:n和1:n甚至是多态关系,但这绝不是最佳;技术/性能是可用性的。

您无法执行的事情(嗯)使用此模块:

  1. 将事物与事物相关联,然后将节点节点为节点。
  2. 保持SQL和TableDefinitions为您的特定情况,过滤器和搜索最佳。
  3. 跨关系验证:如果孩子遗漏了必填字段,请勿使用父级。
  4. 原子更新和插入:如果关系x失败,请不要将其父y写入(或滚动它)
  5. 实施BusinessLogic:例如订单是不起作用的或有关联的送货地址。
但是,写自己的解决方案有很多缺点,最值得注意的是:
  1. Drupal(6)没有ORM,Drupal 7有一个,但未被用。您将通过手头进行所有DBA互动。在"框架" 中可能无法期待需要的努力
  2. drupal没有脚手架,apis和crud-actions:您将通过手编写所有表格,页面,存储和更新处理程序。显然使用Drupal-API,但仍然通常超过2000行PHP,只是为了管理一些"物品" 及其关联。另一方面, do 具有这样的好处"免费" 。
  3. Drupal几乎没有验证助手。您将在您自己的PHP中写下所有验证。 Formapi具有基本的(但坚固的)质量分配保护,但在日期,长度[1],尺寸,等等等内容上提供了很少的验证。

[1]因此,许多贡献的模块(甚至核心)通常具有错误的错误,其中输入允许更长的文本或数字,然后数据库可以根据其模式存储:仅仅因为开发人员没有为它们编写验证器。

 

As you point out, you have the option to develop your own module. In this case, that would be my advise.

Nodereference module (packaged in the CCK bundle) is not a generic relations-module. It can be used for what the description says it is: Defines a field type for referencing one node from another. With some creativity one can abuse this to create generic N:N and 1:N and even polymorphic relations, but that is never optimal; both technical/performancewise as usabilitywise.

Things you cannot do (well) with this module:

  1. Associate things to things other then nodes-to-nodes.
  2. Keep the SQL and tabledefinitions optimal for your specific cases, filters and searches.
  3. Validate across relations: If child misses a required field, don't proceed with parent.
  4. Atomic updates and inserts: If Relation X fails, don't write its parent Y (or roll it back)
  5. Implement businesslogic: e.g. An order is either unshippable OR has a shipping-address associated.

However, Writing your own solution comes with a lot of downsides, most notably:

  1. Drupal (6) has no ORM, Drupal 7 has one, but is underused. You will be doing all the DBA interaction "by hand". Required effort one might not expect in a "framework"
  2. Drupal gives no scaffolds, APIs and such for CRUD-actions: you will be writing all the forms, pages, storage- and update- handlers by hand. Obviously using Drupal-APIs, but nonetheless, often over 2000 lines of PHP just to manage some "items" and their associations. Nodes on the other hand, do come with such benefits "for free".
  3. Drupal has little or no validation-helpers. You will be writing all your validations in your own PHP. The FormAPI comes with basic (but solid) mass-assignment-protection, but offers little validations on things like dates, lengths[1], sizes, ranges etceteras.

[1] As such, many contributed modules (and even core) have quite often bugs where the input allows a lot longer texts or numbers then the database can store according to its schema: simply because developers did not write validators for them.

 
 
 
 

相关问题

2  使用模块获取QueryString  ( Getting querystring from with a module ) 
我正在尝试从模块中获取QueryString。 我已经尝试了以下内容。但是以下始终返回 出口商/目录?l = o my-twig-extension: version: VERSION js: js/myTwigExtension.js: {} dependencies: - co...

1  如何在Drupal 7网站中围绕所有内容进行圆润的边界? [关闭]  ( How do i make rounded borders around everything in a drupal 7 site ) 
关闭。这个问题是 off-topic 。它目前不接受答案。 想要改进这个问题? 更新问题所以它是 - 主题用于卸妆答案。 关闭 9年前。 ...

2  如何将ID或类添加到辅助选项卡?  ( How should i add id or classes to secondary tabs ) 
我在Drupal 7中开发一个网站。我看到函数 theme_menu_local_tasks()包含/ menu.inc负责生成辅助选项卡。但是 <li> 元素没有任何ID或类。如何开始向列表元素添加ID和类? ...

3  如何在导航项目中显示视图的视图?  ( How can i display a views count in a navigation item ) 
如何在导航项中显示视图的计数? 我有一个视图显示故事列表(内容类型),我在一个菜单中有一个项目链接到该视图。我需要显示在网站的所有页面上链接到它的菜单项旁边的该视图返回的项目数。 到目前为止我想到的解决方案已经是: 向视图添加一个块,并将其阻止显示在所有页面上的隐藏区域中,然后使用 99887660 或 num_...

0  drupal_get_form renders空白页  ( Drupal get form renders blank page ) 
我正在为每个节点呈现形式的基本电子邮件共享构建一个模块。因此,我挂入节点并添加一个名为 share_form 的新变量,该变量应该包含从 email_share_node_form 中获取 drupal_get_form 之后。 我一直在检查大量的例子,据我所知,我正在做正确的事情。但页面完全空白,报告或页面上没有...

1  规则 - 页面重定向未在“保存新内容之后”  ( Rules page redirect not working on after saving new content ) 
使用Drupal 7.7和规则7.x-2.0-beta3 规则设置为: 事件:保存新内容后 条件:内容是类型的新闻 操作:重定向到URL新闻 添加新闻故事并单击提交时,重定向不会发生,并且在浏览器中,我以"连接重置" 错误。 有其他人这个问题吗? 任何想法如何克服这个? ...

0  自定义内容类型和字段:如何正确设置它?  ( Custom content types and fields how do i set it up properly ) 
我正在寻找一种校验列表样式,但如果可能,我如何创建此自定义内容类型。 我正在从外部网站刮掉数据(它完美无瑕疵),我将它存储在我自己的数据库表中( 998876614 等),我将它显示为我的配置页面桌子。使用内置于Drupal中的队列API,在Cron上重新刮擦数据。 所有这些都很好。现在,我的下一步是将此数据变为N...

7  自定义菜单链接输出  ( Customizing menu link output ) 
在drupal 7中,我如何在模板中拦截菜单呈现.PHP并在菜单链接后添加管道? 我尝试了使用template_preprocess_menu_tree但我不认为这就是我正在寻找的。我想改变几种菜单的HTML结构。 ...

0  使用节点参考字段嵌套视图  ( Nesting views with a node reference field ) 
我正在创建一个用作任务管理器的Drupal网站;每个任务节点都有能力引用另一个任务节点作为父节点。 在任务列表视图中,我想在每行中嵌套相同或相似的视图,显示该任务子项。 我在主题之前做了类似的东西;但是,我想知道是否有一个标准或新兴的方法可以在与第三方模块中完成视图接口中的态度。 ...

2  PHP字段视图中的未定义属性  ( Undefined property in a views php field ) 
我需要使用用户的图片URL字段。我正在尝试用一个观点的php字段构建它。 字段的值是定义 $account = user_load($row->uid); $uri = $account->picture->uri; $url = image_style_url('avatar', $uri); return $...

0  如何使用URL参数将节点放在菜单中?  ( How to put a node in a menu using an url parameter ) 
在创建一个新节点时,我想在URL中传递参数: 99887667 ,以便将新创建的节点放在此菜单项中作为其子项。 我试过 hook_form_alter() 节点形式,但我无法填充菜单部分,也想将这部分隐藏到最终用户,因为它们不应该改变它。 应该在 hook_node_insert() 中完成这个答案:如何启用菜单链接...

1  如何从Drupal 6到7导入博客?  ( How do i import blogs from drupal 6 to 7 ) 
如何将在Drupal 6站点中创建的博客导入Drupal 7站点?我不希望升级Drupal 6站点,因为Drupal 7网站是一个完全重新设计的旧版本,我想要一个干净的开始。我不得不手动将所有博客复制到新站点。 ...

1  无法添加新内容[已关闭]  ( Impossible to add new content ) 
这个问题不太可能帮助任何未来的访客;它仅与小地理区域,特定时刻及时的特定时刻或非常狭窄的情况,这些情况通常不适用于互联网的全球观众。有关帮助提出这个问题更广泛适用,请访问帮助中心。 ...

1  如何关线页?  ( How theming off line page ) 
我读取 api 文件主题文件夹。 maintenance-page.tpl.php 工作井, 但 maintenance-page--offline.tpl.php 不起作用。 如何关线页? ...

1  drupal_add_js和内联代码  ( Drupal add js and inline code ) 
我正在尝试使用内联的javascript,添加了 hook_alpha_preprocess_page ,向IE添加支持。 drupal_add_js(' jQuery(document).ready(function () { if (jQuery.browser.msie && jQuery.brow...

1  编辑器角色只能管理页面的正确区域,不允许其他区域  ( Editor role can only manage right region of page no other region allowed ) 
在Drupal 7中,我有一个有3个区域的页面:标题,右侧栏和页脚。我还有2个用户角色:admin和编辑器。管理员应该能够在所有三个区域中创建内容,编辑内容,发布内容和管理块。编辑器应该能够创建内容,编辑内容,而不是发布内容,并且仅在他创建和编辑的页面的右侧栏中管理块。 我使用修订模块来防止编辑器发布内容。所以现在管...

1  Ajax JSON观看  ( Ajax json views ) 
在Drupal 7中我如何将视图数据编码为JSON?有内置的<代码> localhost/de/de7 URL,它将将视图数据返回为HTML。例如它将返回: localhost/de/de8 localhost/de/de9 是正确的,但它被格式化为html - 它如何格式化为json? ...

107  上下文过滤分类名称  ( Contextual filters taxonomy name ) 
我将一个上下文过滤器添加到具有分类字段的自定义内容类型的视图。上下文过滤器允许我由分类标签ID过滤,但不是由分类标签名称进行过滤。意思是分类学中给定的标签: 1 | test1 2 | another tag 3 | taggy ...... 99 | coolness 我可以生成一个上下文过滤器,该...

0  更新到Drupal 7.x-dev直到下一个稳定版本  ( Updating to drupal 7 x dev until next stable release ) 
我目前正在使用Drupal Core 7.7和Commerce 7.x-1.0-RC3,这需要目前仅存在于Drupal Core 7.x-Dev中的更改。 如果我升级到7.x-dev现在才能获得最新商业版本需要的更新,我将我的项目提交给追随Dev分支,并且没有能够重新稳定的危险干净利地,当下一个稳定的释放出现时? ...

0  Geshi在Drupal 7上没有检测图书馆  ( Geshi does not detect libraries on drupal 7 ) 
我已安装Geshi过滤器和字段模块,但Drupal不会检测到Geshi库。 我从 sourceforge 。要肯定,我把它放在了: /sites/all/libraries/ , /sites/all/modules/libraries/ 和 /sites/all/modules/geshifilter/ ...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.