We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 31037
    • 358 Posts
    EDIT: I was very tiered writing this post yesterday, when reading it after a good 8 hours sleep I think my post is pretty idiotic tongue
    The answers to most of my questions are pretty obvious. Still, I’ll leave the post here, maybe editing it a bit. END EDIT

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

    *** Note! - This is not a support request. This is a very long post meant as a general discussion on the issue. Read and answer only if you like to share ideas about best practices building a community in MODx. Moderators, feel free to move this post to another forum if I posted it in the wrong place ***

    *** Note #2 - English isn’t my first language, which you will see reading my post smiley But probably my English is better than your Swedish wink***

    I’ve been playing around with MODx for some time now, and also been studying some PHP (currently on page 302 of 857 in my PHP5/MySql book, I skipped the advanced OOP part though! smiley (Then I’ll continue with books about CSS, Javascript/DOM and Ajax tongue)) Now the time has come to get into business!

    Background
    I have an existing community site for short stories which I built in Mambo (big mistake). There is an add-on to Mambo called "Community Builder" that handles the community part ok, but as usual with Mambo it only works in an easy way if you don’t want to customize the default functions. (Mambo and Mambo add-ons really don’t like to separate function from appearance.) Now I’m going to build a much better community site in MODx, but as this is my first real MODx site there are lots of things I need to figure out how to do in the easiest and best way.

    The site I’ve built in Mambo has more than 5000 members, and the document count is about 500. I need to design the new site to be able to handle many more members than that, in the long run there will be 10.000 to maybe 50.000 members and several thousands document (short stories).

    It is important that I make my design able to handle that amount of members without slowing the site down completely and without making it impossible to find stuff. Everything has to be done from the front end, no one is going to use the manager (well, I am of course smiley).

    From what I understand, handling several thousands of documents is no big problem for MODx, even considering that MODx right now is lacking a good way of browsing that many document (at least imho smiley). And from what I understand the handling of larger sites will improve in 1.0.

    Note: Of course there will take a long time before I even reach my first 5000 members, so before I reach 10.000 members MODx 1.0 will be out. But I think it’s important to design well already now.

    Ok, here is some ideas that I have for the community part of my site:

    * Everyone will have their own (single) page on which they have, among others, these functions:
    - Presentation of them selves with pictures
    - A personal guestbook where others can post a message. When posting in someone’s guestbook they will be able to chose if their guestbook post will be visible for everyone or just for the owner of the guestbook. (Possible, if not to hard, create a function for a direct reply between guest books.)
    - Private messaging
    - Personal photo album where they can choose to whom the photos are visible (all, registered or individual members).
    - Possibilities customizing the appearance of their own page.
    - Also I’m going to implement the possibility to mark individual short stories (documents) as favorites, as "read later" and as "already read" (or don’t read). They must also be able to mark their favorite writhers (publishers).
    - Have a list of their own short stories contributions.
    - Possibly a function to get an e-mail when there is a new story in their favorite categories or by their favorite writers.
    - And more smiley

    It would be very nice to get suggestions of what existing "add-ons" (or core functions) to use for the different parts as listed above. Of course I’ll need to make a lot of my own programming, but I feel it’s unnecessary to spend time programming stuff that it already programmed. For sure Ditto and Jot and the other big "add-ons" are going to be used a lot, but I’m curious how to customize them to work with my "concept", and also curious about other small snippets that could be used in a way one would not think of in the first place. EDIT: Pretty obvious what I should do, just ignore. END EDIT

    I’ve been thinking of using a forum for some of the functions, but I absolutely don’t want the user to get a feeling being on a forum. And the site must be very user friendly, forums usually isn’t.

    Ok, now to the general (and more important) stuff about designing an over all structure for this...

    First of all, can MODx handle that many users?

    What is your opinion, should I make a separate document for every single member, or should I somehow create snippets and chunks that can be identified to each member and loaded dynamically to a template document (or maybe should I just give up wink )?

    If using chunks and snippets for each user, there will be many thousands, seems to me like a nightmare browsing through them in manager.

    I guess I should create a separate table in the database where I store the extra information about every single member? I need to be sure that there will be no problem when upgrading to newer versions of MODx.

    Any thoughts about general structure design are very welcome!

    I’ve found some discussions about similar stuff:

    http://modxcms.com/forums/index.php/topic,6701.0.html
    Interesting ideas, much about creating possibilities for users to have their own blog, but I’m more looking for a one page "presentation" solution for each user. The users should not be able to create/edit their presentation directly, but through form submissions. The page still need to be created. (This sounds confusing I guess tongue)

    Another:
    http://modxcms.com/forums/index.php/topic,7583.0.html

    If anyone knows about more threads that can be of help, please post a link.

    Is there any MODx sites that have many of these functions?

    I could write a lot more about different ways I thought it could work, but this post is way to long already. Feel free to make any comments or suggestions you like, I’m grateful for even the smallest hints. Maybe my post is to complex to be able to answer. I should maybe split it up into smaller pieces, and make a post for each different subject. However, my intentions of this post is to get an over all idea about the main structure of this, my first, MODx project.

    Last note: My plan is to spend *lots of time* making a solution for having communities in MODx (I have several other community sites to make similar to this one in the future).
    Hopefully I’ll be able to give back to MODx community by sharing my solutions, and also maybe create a system that could be used by others.

    Last last note: Maybe there is a project of this kind already in the planning? I believe MODx have more or less ready solutions for everything, with the exception of a "community builder" add-on.

    Thank you very much for reading! smiley
      • 6437
      • 157 Posts
      A very interesting post Uncle68; I have many similar questions to you at the moment, particularly with regard to the merits of using a template and backend database system to dynamically create pages over having a high volume of individual pages already created.

      I recently did a small test and created 3000 pages using the DocMan snippet, and whilst it was possible it caused the backend manager to run very slowly. I’m going to continue this test and attempt to use Ditto to summarise these pages (this is the main advantage i can see to creating pages directly rather than dynamically). I’ll let you know the results.

      Sorry I cant be of much help, I also look forward to the replies from more knowledgable people.

      Steve

      (Very true about your English being better than my Swedish wink)
        • 31037
        • 358 Posts
        Thank you for your reply. I was a bit embarrest over my post when reading it, to much info in the same post and also very confusing! I even tried to delete it, but I didn’t have the rights needed tongue In the future I’ll make short post over more specific pieces of the pussle.

        I’m looking forward to your test results! Nice to know someone else is working with similar stuff, it’s kind of frustrating for me not knowing where to start.

        What I’m doing at this moment is trying to figure out how to handle the user pages. Been reading lots of threads, and checking out many snippets, it’s really confusing how to do all this. Handling user profiles seems to have room for lot of improvements! The original snippet is from 2004, and have not been changed a lot since then.

        My idea so far is to let the user first register with the WebSignup snippet as usual. When done and submitted I’ll direct them to "register page two" where I’m planning to use a combination of eForm and eForm2db to be able to subit user info that isn’t handled by websignup snippet.

        There is a table in the MODx database called web_user_settings that someone suggested should be used for extra fields. I don’t know why not use the web_user_attributes, it should somehow be easier. I could then use existing snippets like Web Edit snippet by customize them.

        But following the advise to use web_user_settings, I must figure out how to populate it with data in a secure way. I’m kind of newbie in this field, so I hope I’ll get it right.

        When I have the user data in the _settings table I don’t need to create seperate documents for all the users, I can use the WebUserInfo snippet (will look in to it next) to let the user see and edit their data.

        Then I must figure out how to let other users see the profile, could be done by using a template document populated with the requested user’s data from both web_user_settings and web_user_attributes tables.

        However, this can’t be the easiest way of solving such a basic thing as let users have a profile accessible to others. I have to use at least 5 different snippets and a lot of customizing code. It will take me forever just to create this basic function. Hopefully someone that already have solved this, or anyone else experienced, will find this little cryout for help smiley

        I’m sure I make it much harder than it need to be, but I’ll continue to read the forum trying to find a better solution than above.

        Tack för ditt svar! smiley

        Now you know some swedish, that means "thank you for your answer" wink

        EDIT: Hey! This is fun! I think I’ll be able to create my own system for this using MODx API and DBAPI smiley I’ll learn a lot while doing it! smiley

        EDIT # 2 (2 hours later): Wow, MODx is fantastic! Although beeing a newbie, in a few hours I’ve learnd how to create a snippet that access a new database table and get the data from that table into placeholders which I can use for making personal homepages for each user smiley (And that time includes some studying on my PHP/MySql book tongue)
        Maybe I’ll create some easy tutorial for newbies like me who wants to do the same! Now there are no limits, this is so fun! laugh
          • 6437
          • 157 Posts
          Glad to see that your getting on well Uncle68!

          It’s nice to see that someone who is in exactly the same situation as me at the moment is succeeding smiley ! I’m currently learning ModX, PHP, MySQL and CSS web design all at the same time, proving quite challenging, but I agree with you that it’s great fun wink

          I would be very interesting in reading any tutorial or write up you did on your experiences in modifying and developing community features.

          I’ve just done a quick and simple test with Ditto and large page numbers. I used the DocMan library to create 6000 pages in a sepcific folder, then made a very simple Ditto call to summarise the folders content. I created them at 1000 intervals and it coped with 3000 but then I got a little carried away and it cannot manage 6000 - it exceeds a maximum execution time of 30 seconds.

          Although the manager copes with listing the folders contents in the site tree, it is very very slow. Obviously I doubt there would ever be any need to make use of this however if pages were generated automatically from a front end (this reflects my own particular purpose for testing this).

          I guess I should point out that I tested this on a local server, I expect there would be futher problems on a hosted site although I’m far to "green" to know for certain.

          I look forward to hearing how you manage to get on developing with Modx.

          Steve

          Edit: Just repeated the test with the Beta Ditto 1.1 and I’m please to say that the page managed to load successfully! (although it doesnt appear to display the "archieve" by default anymore - attempting pagnation to display all 6000 pages now).

          Edit2: Pagnation works like a charm - possibly as all ModX gurus would expect lol. Incidently its now working for 16000 pages wink but the manager is unable to display the site tree sad
            • 31037
            • 358 Posts
            Quote from: DangerMouse1981 at Oct 28, 2006, 04:45 PM
            I’m currently learning ModX, PHP, MySQL and CSS web design all at the same time
            So am I, my head is spinning! huh Don’t forget you have to learn the DOM and some javascript too, to be able to make an cool interactive site. Surely you’ll want some Ajax too! tongue

            I don’t really understand why you want to have that many docs in one folder? Is there a special reason for not being able to split the documents between several folders?

            Sure I’ll let you know of my petty attempts making my site! I might even make a snippet for you to use! tongue
            I already got a working solution where I have an user page that shows data from three different tables. But it will be weeks before I’ve have a ready solution for the personal profile page I’m working on, have to study a lot too! tongue And everything takes such a long time when every little thing I do is the first time I’m doing it!

            And yes, it is nice to have someone else in about the same situation. I read some of your other posts, so I know what your up to! wink
              • 6437
              • 157 Posts
              Quote from: Uncle68 at Oct 28, 2006, 05:19 PM

              Quote from: DangerMouse1981 at Oct 28, 2006, 04:45 PM
              I’m currently learning ModX, PHP, MySQL and CSS web design all at the same time
              So am I, my head is spinning! huh Don’t forget you have to learn the DOM and some javascript too, to be able to make an cool interactive site. Surely you’ll want some Ajax too! tongue

              tongue I’m hoping to cheat on that bit and make use of prepackaged stuff for now. I’m sure I’ll get round to learning it properly eventually. It’s so frustraing knowing what you want to achieve and then looking at the mountain you need to climb to get there - especially when its conceptually quite simple lol.

              Quote from: Uncle68 at Oct 28, 2006, 05:19 PM

              Quote from: DangerMouse1981 at Oct 28, 2006, 04:45 PM

              I don’t really understand why you want to have that many docs in one folder? Is there a special reason for not being able to split the documents between several folders?

              I do plan to create several folders, to represent categories, I’m just working on the basis that if my site is successful I don’t want it to break down if doc count gets too high. Unlikely I know, but I can be optimisitic grin

              I’ve yet to look into User related snippets and functionality yet, I’ve started at the eForm and Doc creation side (using the DocMan library), but if I come across anything that might help you I’ll let you know smiley

              Steve