Instead of page, story etc let's have a module with which you can add simple body only nodes. At least moshe and I frequently copy story.module to have a new simple module. For example, event needs this. For permissions it's great to have multiple node types. So I downloaded a copy of content.module from CCK, pressed delete a lot, copied hook_form from story and then rename the stuff to simplenode.module. Then I reviewed the thing but it was really not much, so credit goes to JonBob and jvandyk.
MySQL is:
CREATE TABLE node_type (
type_name varchar(31) NOT NULL default '',
label varchar(255) NOT NULL default '',
description mediumtext NOT NULL,
help mediumtext NOT NULL,
PRIMARY KEY (type_name)
) TYPE=MyISAM;
Comments
Comment #1
chx commentedTo save a couple hundred bytes of code and also a lot in DB I removed hard caching of node types. It's surely needed for CCK, not for us.
Comment #2
kbahey commented+1.
This is something needed a lot and will save a lot of code duplication, and tricks like two stub event sumodules.
since CCK will not make it to 4.7, this is the way to go.
Comment #3
Cvbge commentedPlease change the file name extension, as now it's hard to download.
Maybe we could make type_name longer? 64 or even 128 seems practical (hell, it's VARCHAR, there should be no difference between 31 and 255).
I've skimmed sql part of module, you do
INSERT INTO {node_type} (type_name, label, description) VALUES ('%s', '%s', '%s'), what about help column? It's NOT NULL, has no DEFAULT and you don't provide any value for it.The
SELECT * FROM {node_type} nt WHERE 1 ORDER BY nt.type_name ASCwon't work in postgres, you need to changeWHERE 1to for exampleWHERE 1=1. Why do you need WHERE anyway?Comment #4
eaton commented+1 I'm very much in favor of it. Already using it in a site I'm mocking up.
Comment #5
chx commentedComment #6
jvandyk commentedCvbge, no need to make type_name longer. We just changed this to go from 8 to 32 chars.
Maybe you're thinking of the label field, which is already 255.
Please keep this as compatible as possible with CCK. Download CCK from CVS, add a new content type and see how it works.
Comment #7
chx commentedComment #8
Cvbge commented@#6:
I was thinking about type_name (as posted in the first issue post). I assume that it's displayed somewhere on the page. If it is shown to normal user, one who browses the web page, it contains/can contain informative content. As such, I think we should not limit the admin to 31 characters.
If it is not shown to users, then 31 characters is probably enough.
Comment #9
jvandyk commentedtype_name is the internal name. It is used in urls like node/add/foo where type_name is foo. The foo content type also has a friendly name called label. Note the second column in the table. The label is used when displaying to the user.
Comment #10
chx commentedUpon Dries word, this module is called content. I have fiddled with field names and such to be more in line with current node.module.
Comment #11
chx commentedAlso, Dries said that he'd like to see "create $type content" instad of 'create '. $type .' content'. Who am I disagree with easier to read and shorter code?
Comment #12
kbahey commentedBut isn't the name "content" going to be used by the CCK module?
Comment #13
chx commentedI think I told Dries that CCK is already called content....
Comment #14
m3avrck commentedGetting this error:
Seems line 266 should be type_name and not type. Or is the SQL create wrong?
Comment #15
m3avrck commentedAlso getting this error which is related:
Line 185. What is the correct SQL create code? Or is the module code wrong? Please clarify!
Comment #16
m3avrck commentedAlso, the settings is a bit confusing because Drupal already has Settings > Content-Types ... and now there is Content > Content-Types ... confusing as to what the difference is for each. Also, should the settings for this module go under Settings or be part of the main Administer menu?
Comment #17
chx commentedWe can talk about the menu placement when it's in. That's something that can tweaked after the freeze.
Comment #18
m3avrck commentederror in that SQL, should the primary key be (type,name) I'm assuming?
Comment #19
m3avrck commentedI've tried this module but having some problems. I've created a content type but when I goto Create Content, I don't see this new type listed. Also, on the content page, shouldn't this be listed in the drop downs for "show content as..." since this is a new type as well?
Comment #20
jose reyero commentedA big +1 for this new module.
chx, why dont you extend it a little bit, with some blocks (latest, active for each type) and custom pages (listing by type), so it could be a core replacement for blog, story and page ?? -- and maybe for forum, with some other small extensions..
We could provide this extended module and some pre-configured node types for that.
However, I think we better let this in into core, and then study that possible replacements, case by case.....
Comment #21
moshe weitzman commentedgood idea, but is now old
Comment #22
gábor hojtsySome points now that this topic is hot again (IMHO):
Comment #23
chx commentedOK, here we come. DB structure:
CREATE TABLE page_type (
type_name varchar(32) NOT NULL default '',
label varchar(255) NOT NULL default '',
description mediumtext NOT NULL,
`help` mediumtext NOT NULL,
title_label varchar(255) NOT NULL default '',
body_label varchar(255) NOT NULL default '',
PRIMARY KEY (type_name)
);
of course, a proper upgrade patch will follow when this is ironed out. For now, this is for new websites only.
Comment #24
chx commentedComment #25
dries commentedTested the patch. Seems to work but we'll want to work out some usability glitches.
Comment #26
dries commentedComment #27
chx commentedDries, thanks for the review. Add another content-review and you will get content-review_1 . I will talk w/ JonBob about naming this content module and providing hooks for his fields.
Comment #28
gábor hojtsyIndeed, page type is misleading, either content type should be renamed to something, or this should also be under the content type name (which concept is extended with addon possibilities by CCK, when installed). Content types with the same name should not be allowed. My review on the interface later.
Comment #29
drummI would really like to see this built into node.module.
That will make UI development easier since there is already a content types screen there.
Comment #30
chx commentedThe issue is continued in http://drupal.org/node/62340 . This is the #30 comment and we are now very pretty far from where I originally wanted to be.