Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 11/05/2015 in all areas

  1. Here are some links to keep you busy amigo! In no particular order: grunt-gulp-something-else menu-builder making-pw-more-userfriendly fieldtype-matrix process-blog tutorial-approaches-to-categorising-site-content product-catalog-with-a-twist Basic_Website_Tutorial grouped-forum-posts-links-articles-tutorials-code-snippets writing-from-front-end-to-back-end integrating-a-member-visitor-login-form Creating Pages via API Tutorial: Approaches to categorising site content Create simple forms using API Creating Pages via API Developer centric form processor galleries-short-and-long Markup Simple Navigation multilevel-menu dropdown-menu responsive-vs-adaptive-pw-approach processwire-as-backend-for-android processwire-on-nginx what-filesfolders-should-be-added-to-gitignore-for-regular-development continuous-integration-of-field-and-template-changes tutorials: hello-worlds process-google-analytics
    5 points
  2. Helllllo! I am working on a simple module / pet project for a module that inserts custom classes into specific templates for forms that are generated via the api. I use bootstrap a bunch and am always messing with the defaults in processwire, now it should be a simple manner to tweak my settings in the admin area. As this seems to be something that I keep needing I thought that others might as well. Right now the functionality is pretty simple: Select the templates that you want to override the default styling on. Set your new defaults .... Proffit. What I would like is maybe some suggestions for options or functionality that I should try for. I have never really deep dived into modules so this is a bit new to me, but as I am looking for a new development job I would push myself for something cool. https://github.com/MuchDevelopment/FormStyler/tree/master
    3 points
  3. Update version 1.0.4 (Dev only for now) Note: Haven't had time to update README Changes Import Mode for file/copy-pasted CSV: Two options, 'append' and 'overwrite'. Default setting set in Field's Details tab. The setting can be overridden at page-edit level. Default setting is append (sorry guys, you will have to inform your clients of the changes. The prospect of data loss inherent in the overwrite mode outweighed the inconvenience of re-teaching your clients about the new default append mode). Append: In this mode, the module will look for the last available empty/blank row in the matrix. If it finds one, imported rows will be inserted from that point forward. Any subsequent rows (i.e. rows beneath that 'last blank row') will be overwritten. Any rows above the 'last blank row' will have their values preserved (untouched). When in append mode, the 'last blank row' will always be highlighted. The modules (jQuery) monitors any live changes to the table rows (typing and clear data) and the highlight will shift accordingly if the 'last blank row' changes. If there is no 'last blank row' and you attempt to save in this mode, you will get an PW error message and your older values will be preserved in the matrix. Used wisely, append can actually mimic an insert. Btw, for an empty matrix, append doesn't make much sense since data will only be inserted in the very last row of the matrix . Overwrite: What was the default behaviour; incoming values overwrite existing values. Ignore first row and/or column: Default set independently at Field setting (i.e. can ignore one but not the other if you wish). Default is ignore both first row and column. Both settings can be independently by-passed at page-edit level. In real world examples, first rows usually store column headers/labels and first columns usually store row headers/labels. Export checked rows: You can now export only the rows you want by checking them. If nothing is checked and you attempt to export you will get a JS error alert. The 'set range to export' setting became redundant and I removed it. Shift + Click enables the selection of a range of rows. The checkbox for toggling select all still works. Lots of code re-factoring Thanks to @adrian for suggesting all of the above features . Please test and let me know. I think I have given this module enough love for now. MenuBuilder has refused to talk to me until the situation improves. So, for now, there's a feature freeze on this one and let's see if I can get MenuBuilder to smile again .
    3 points
  4. Both ready.php and init.php are not loaded in 2.2.17 Upgrading is not possible at the moment due to several reasons. 1st) the site is hosted on a dedicated server and upgrading PHP might jeopardise the working of the other sites on the server. 2nd) in version 2.2.17 multi language was not integrated in the core yet, altough the client wanted a multi language site, so its build in manualy. I'm worried that upgrading to a newer version of PW, the manualy build multi-language functionality might stop to work. Thanks all for the suggestions and pointing in the right direction. I came up with a simple module that sets the template folder to /site/templates-dev/ for all superusers. class DevelopmentTemplates extends WireData implements Module { /** * getModuleInfo is a module required by all modules to tell ProcessWire about them * * @return array * */ public static function getModuleInfo() { return array( 'title' => 'Development Templates', 'version' => 001, 'summary' => 'Overrules the config templates folder for development purpouses', 'href' => 'http://www.processwire.com', 'singular' => true, 'autoload' => true, ); } /** * Initialize the module * */ public function init() { if (!$this->user->isSuperuser()) return; $this->addHookBefore('Page::render', $this, 'setDevTpl'); } public function setDevTpl($event) { $page = $event->object; if ($page->template == 'admin') return; $config = wire('config'); $config->urls->templates = 'site/templates-dev/'; $config->paths->templates = $config->paths->root . 'site/templates-dev/'; $config->debug = true; } } Note: only need this on older versions of PW, in my case 2.2.17. For newer PW versions use the following method as described on ProcessWire Recipes where you coudl use if($user->isSuperuser()) https://processwire-recipes.com/recipes/use-different-sets-of-template-files/
    3 points
  5. Looking a bit at the request and response headers of that site, the only thing i can think of that is causing this problem is Cloudflare, which seems to play a role. Is this somehow turned on for the problem domains? Try turning it off? Have a look here http://stackoverflow.com/questions/25927260/cloudflare-bug-random-302-redirections , these look a lot like your random 5 character folders.
    3 points
  6. I had this kind of issue with cached navigation (one for desktop, one for mobile = mmenu), and wanted to make sure the database cache is removed as soon i save one of the pages displayed in the navigation. I came up with a module that hooks in to page save. It removes the necessary cache items asfollow: - when pages with template settings_socialmedia or settings_textblocks are saved it removes the main.footer cache entry - when pages with template list_agenda or item_agenda are saved it removes the block.agenda cache entry - when any of the pages in $navigationPages are saved it removes both the man.navbar and main.mmenu cache entries <?php /** * ProcessWire Save Actions * * Actions to be run on page save * * @ 2015 Raymond Geerts * * ProcessWire 2.x * Copyright (C) 2014 by Ryan Cramer * Licensed under GNU/GPL v2, see LICENSE.TXT * * http://processwire.com * */ class SaveActions extends WireData implements Module { /** * Return information about this module (required) * */ public static function getModuleInfo() { return array( 'title' => 'Save Actions', 'summary' => 'Actions to be run on page save', 'version' => 1, 'autoload' => "template=admin", 'singular' => true, 'author' => 'Raymond Geerts', 'icon' => 'floppy-o' ); } public function init() { $this->pages->addHookAfter('save', $this, 'actionsAfterSave'); } public function actionsAfterSave($event) { $page = $event->arguments[0]; if ($page->template == 'settings_socialmedia' || $page->template == 'settings_textblocks' ) { $this->cache->delete("main.footer"); $this->message("Cleaned WireCache for front-end footer HTML"); } elseif ($page->template == 'list_agenda' || $page->template == 'item_agenda' ) { $this->cache->delete("block.agenda"); $this->message("Cleaned WireCache for front-end agenda block HTML"); } else { $homepage = $this->pages->get('/'); $navigationPages = $homepage->and($homepage->children); foreach($homepage->and($homepage->children) as $item) { if ($item->template->altFilename == "clickthrough" && $item->hasChildren() ) { $navigationPages->append($item->children); } } if ($navigationPages->has($page)) { $this->cache->delete("main.navbar"); $this->cache->delete("main.mmenu"); $this->message("Cleaned WireCache for front-end navbar HTML"); } } } } It saved some page-loading time when caching navigations. Because they are displayed on every page, its a smart thing to do. A trick to make the current page (and parents) have a selected / active class i did the following: in the head of the _main.php <script> var globalJS = <?php $globalJS = array(); $globalJS['parents'] = $page->parents()->remove($homepage)->append($page)->each('id'); echo json_encode($globalJS, JSON_FORCE_OBJECT); ?> </script> in the navigation i put the page ID in each <li> item like this: echo "<li id='navbar-pageID-{$item->id} role='presentation'>"; (and in mmenu as follow:) echo "<li id='mmenu-pageID-{$item->id}'>"; In my main.js file i have the following: (function() { // set navigation menu items active $.each(globalJS.parents, function(key, value){ $('#navbar-pageID-'+value).addClass('active'); $('#mmenu-pageID-'+value).addClass('current'); }); }());
    3 points
  7. I noticed that this site was featured on http://weekly.pw/. Thank you everyone who commented with your feedback, it's much appreciated. This made me very happy
    3 points
  8. It wasn't so hard in the end. I decided not to store the rank in the database, but just constructing it from the user points. I solved the problem of users with the same rank position in this way // I get the players pages and sort them by points $players = $users->find("sort=-user_points, sort=name"); // I explode the players into a scores array $scores = $players->explode("user_points"); // Using array_unique to remove duplicated scores $unique_scores = array_unique($scores); // With array_unique previous key are preserved so i need to create a new array with new keys $reindexed_scores = array_values($unique_scores); // I cycle through players foreach($players as $player) { // I get the key of the user pointe in the array $position = array_search($player->user_points, $reindexed_scores); echo $position; echo " - "; echo $player; echo " - "; echo $player->user_points; } Hope this could help someone else with the same need.
    2 points
  9. I'm assuming this is a Process module, since that's the only one that supports nav arrays. The arrays provided in your getModuleInfo (like the 'nav' array) are not called at runtime, instead they are stored in the DB. As a result, there's no reason to make those labels translatable–actually you should avoid it, otherwise the wrong language translation might end up stored in the DB. Instead, just make them regular strings like 'Enter Order' rather than __('Enter Order'). Then, somewhere else in your module, make them translatable. It can even be in a PHP comment. For instance, you could add this at the top of your module file: /* * __('Enter Order'); * __('Enter User'); * and so on... * */ These should be in your 'default' language. Make sure the phrases are identical to those in your 'nav' array. Doing this just ensures that the language parser knows they are translatable phrases. After making that change, do a Modules > Refresh, then go back and translate the file (Setup > Languages > language > your file), and save. Now it should work. If using AdminThemeReno, it won't work, unless you upgrade to the latest dev version. I just fixed that issue in AdminThemeReno yesterday actually. Since it looks like you are using Reno, you'll want to grab the latest dev branch.
    2 points
  10. Hi Raymond, The problem is that the config file is parsed by ProcessWire before the API is ready, so the user object is not yet accessible. I suppose you could create an autoload module and set/overwrite config values there, based on the user. Cheers
    2 points
  11. Ok, you did not mention that. But at least both sites seem to be working fine when i check them now. So this is a pretty strong indication that somehow Cloudlfare (or better, the way it's set up) is at the root of the problems and not some weird hack.
    2 points
  12. Okay, I have turned Cloudflare off and it seems okay - but I also tried that yesterday with no result. So, confused? You bet I am!
    2 points
  13. I'm not sure if you can access these items with the array notation, try $input->get('keyword') or $input->get->keyword. Edit: And just as I thought, only $pages and $page are available as local variables. All the other api variables need to be accessed as $this->input or wire('input').
    2 points
  14. Tom. identified you as spam, as will I. Your profile states you are from Saratoga, CA. yet you mention Alexa ranking of ProcessWire in India. Why India? I'm on to you from the get-go, as WE say in the U.S. Your Twitter username is brand new, only several days old with 3 tweets and 8 users. All of whom seem to be WordPress related. By the way, nobody from Saratoga California ends their comments with the salutation, "Cheers!" It's not rad enough!
    2 points
  15. 2 points
  16. 2 points
  17. AvbImage - Image Manipulator Module for ProcessWire This module using Intervention Image PHP image handling and manipulation library. Update Status Module and InterventionImage Library update - 10-12-2015 More performance imporements - 18-11-2015 Module Update and Performance Improvements - 17-11-2015 First Commit - 28-10-2015 RequirementsProcessWire >= 2.5.11 PHP >=5.4 Fileinfo Extension Supported Image LibrariesGD Library (>=2.0) Imagick PHP extension (>=6.5.7) For usage and methods please look githup repo : README.md > For issues and fix and corrections please use Githup Repo
    1 point
  18. Have you checked the copied site using http://isit.pw/? If you update content on your client's site, is it coming up on the copied site; or is the content "as it was" at the time it was copied? Are you able to access the control panel with your known credentials? Is there a chance that the new domain is "pointing" to your client's site? It depends. If the servers are behind a load balancer or caching server, then many websites would appear to use the same IP. It would all depend on the hosting provider's configuration and DNS configuration of the domains in question.
    1 point
  19. Beautiful work! I think I might have said this just recently to some of your other new features, but it is true - this has become one of my favourite field types. Now go spend some time on some of those commercial modules you have cooking
    1 point
  20. I was about to change it on cheatsheet. But now it's because it's only a set and default is ON. Hence there's two entries in cheatsheet and not (true|false). So a $parent->setTrackChanges(false); ... $parent->setTrackChanges(); would be sufficient.
    1 point
  21. Great - just committed a new version of BCE (master branch) with those changes - thanks for figuring this out!
    1 point
  22. Just tried a $parent->setTrackChanges(false); $parent->addStatus(Page::statusUnpublished); $parentEditable = $parent->editable(); $parent->removeStatus(Page::statusUnpublished); $parent->setTrackChanges(true); and it wouldn't track it. I think it's something we want to hide from the track change system. What if I'm listening to page changes in my module? Edit1: I noticed recently that there's really a lot of such changes going on in PW. Only opening a page editor does change the created_users_id for example. Huh? Edit2: well I guess it's because I'm tracking every change to page object, so I guess there's maybe some way around it (using page type, template etc, and fields). But still I think such back and forth changing to archive something, those should be hidden from track changing. What you think?
    1 point
  23. Thanks for spotting Soma - it seems to come from this code: // temporarily put the parent in an unpublished status so that we can check it from // the proper context: when page-publish permission exists, a page not not editable // if a user doesn't have page-publish permission to it, even though it may still // be editable if it was unpublished. $parent->addStatus(Page::statusUnpublished); $parentEditable = $parent->editable(); $parent->removeStatus(Page::statusUnpublished); This is part of a method called getAllowedTemplatesAdd that determines whether the user is allowed to add a template to this parent. It is a modified version of this method: https://github.com/ryancramerdesign/ProcessWire/blob/cffb682836517065d7dd7acf187545a4a80f1769/wire/modules/Process/ProcessPageAdd/ProcessPageAdd.module#L191 I am not sure how to avoid this check. Do you think it is a major concern? I guess it's not ideal that there is a recorded change to a page when saved, even though there are effectively no changes. Any thoughts?
    1 point
  24. I've come back to this topic myself about 3 years after having a similar need in a different thread. This code, from Tom's activity log module and altered slightly, gets both an old and new version of the page when hooking before saveReady: $clone = clone($page); $this->pages->uncache($clone); $old = $this->pages->get($clone->id); // Now just echo both the fields you are interested in: echo $old->field_of_interest . " becomes " . $page->field_of_interest; exit; On save, that should give you access to the old and new versions of the page where you want to compare just one or a few fields and you know which ones you're interested in already. Seems to simple now when you see the use of clone()
    1 point
  25. Loving what is going on here. Excited to soon see the product
    1 point
  26. Nope, it would give you the same copy that you already have. Unless something cleared the page cache between the time you loaded $page and the time you did your $pages->get(). PW clears the page cache after every save() or delete(), so if you found it was working in your case then chances are there was a save() that occurred after you loaded $page, but before you tried to retrieve $oldPage.
    1 point
  27. But not on such an old installation. 2.2.17 is definitely before 2.6.7.
    1 point
  28. To be fair, i've already set this module to be deleted 2 times, but somehow it won't delete. Better to go for other options like Kongondo's matrix field or use the Profields. There's big change that there will be Data loss when using this module as it relies heavily upon Javascript.
    1 point
  29. Hey johnstephens, How large/complex is the Textpattern site? I moved a bunch of sites a few years back, and they were all pretty simple transfers. I didn't try to write any kind of importer, I was done with the transfers manually faster than I could write the importer.
    1 point
  30. Check out Linode also. They have a datacenter in London and I'm very happy with them. edit: there is a managed solution.
    1 point
  31. @Tom. My apologies for the previous posting. I dig the site man. Really fresh. Loving the colors! My only negative comment: the hamburger menu. After clicking it, it becomes an 'X'. Can you make the 'X' remain in the exact same place as the cursor, after clicking the hamburger icon? So the user doesn;t have to move left to close the menu? And the social icons, that appear in the menu? Probably make them hover UP or DOWN, instead of from the side. It's a little jarring and visually "OFF" to have them slide in and out from the side. Perhaps make them the same as in the footer?!
    1 point
  32. Love the people on here - so warmly encouraging!
    1 point
  33. You could always use an bootstrap script, which does connect to the Textpattern database, reads the data by mysql queries and then use the processwire api to fill those data into the pages you need.
    1 point
  34. I think cache purging will be done automatically, so no need to care about that. To invalidate by save and today at midnight I'd just add the following to the cache key: $key = "news_"; // You key properties $key .= $page->modified . "_"; $key .= date("Y-m-d"); $page->modified will not match if a page got saved since the last cache and date won't match if – guess what – the date has changed and therefore today at midnight has passed.
    1 point
  35. Since this topic popped up I have been thinking on how to help PW grow from my possibilities. I am no whizz coder, but surely I can pull off some websites and maybe some other tricks, but in the end I'm rather a designer that deals with small to mid size business demands. I try to participate as much as I can supporting users, but I find that most of the times my experience is not enough, so maybe I can put my other "stuff I know how to do" to help. PW seems to already have an experienced audience, that are migrating from other software some more complex, some from the popular systems available, but I don't really think there's much material for people who handle front end technologies with average skills who want to transition into server side solutions to achieve a full stack developer status that let's them take on bigger projects and not just pure front end. I think Processwire is a killer weapon for that type of developer because of all the heavy lifting from Processwire without compromising flexibility, makes it really friendly who people who already know the basics of coding and probably has experience with javascript. So after explaining a bit where I stand, I had this ideas for tutorials series: - How to make a one page website with Processwire. - Portfolio from scratch with Processwire. (here goes my blog!) - How to make your comic book website with Processwire. I think this kind of "generic" type of tutorial, will attract people starting with frontend technologies and middle to advance users will get the grasp of how things work in Processwire and just dive into it. So, that's why I'm making all this noise about the live coding and stuff haha, I just think Processwire needs more media out there that shows solutions for practical problems that learning web developer's could be potentially searching for. Sorry if the conversation drifted away, just wanted to expose my goals. What do you guys think?
    1 point
  36. Thanks for pointing me to the Translator. That definitively answers my question. I like the idea of @Can to use _init.php for language strings. I'll try that out.
    1 point
  37. I know the topic regarding a forum solution has popped up a few times, and I understand that existing solutions are often better suited. However, I just love PW and wanted to have a go at creating a forum module, as I'm becoming more familiar with how PW works. My plan was never to create a forum like this one, but rather a forum that could utilise the power of PW to handle membership, permissions, which in turn would save a lot of time. Basically a functional forum that isn't bloated and doesn't get in the way of the front-end design. Nothing too fancy, but something that has the expected features. I also wanted it to use the same principle so that it can be used to add comments to other pages etc. At present, the forum has potential, but obviously one of the main issues is the amount of installed fields, but custom Fieldtypes are beyond me at the moment. I like the idea that everything is a page as it makes it easy to deal with, but I'm always open to criticism and suggestions. I'd love others to get involved with this as I can see it as a useful addition, but I understand that people don't always have the time. So maybe I will keep tinkering with it and keep the updates coming here, but if others are interested in joining in, we can take it from there. Again thanks for your comments and encouragement as it means a lot. Yeah, I've been watching Flarum since it was announced and it's looking great. I'd just prefer a PW alternative though, just to keep everything feeling the same.
    1 point
  38. I know the feeling . ...If you haven't worked with Fieldtypes before, there is some learning curve..Onto the main question, given the task involved in developing a forum (depending on whether it is basic or has advanced features, is modular, etc.. [have a read here btw]), I think we have about 3 options: Given the time constraints we (most of us) face, proceed as you originally intended. A basic forum is better than none Ask guys who has some time to spare if we shared the work, e.g. somebody to deal with the model (data), another to deal with permissions and security, another with membership + login, another with...etc... If there is enough demand for a more than basic, scalable modular forum, and the community is willing to raise some funds to support its development, get a couple of heads (and hands!) together to work on this thing. The sponsorship really would be about compensation for time taken away from client work. #3 is probably the most difficult to organise but if it works, would probably bear most fruit. These are just my thoughts. Don't feel pressured by any of them . Even if we ended up taking option #1, I'd welcome it. You've made a good start and yours is probably the attempt that has come farthest to date (IIRC). So unless something shifts soon, I'd go ahead and release your module as is. It's not the end of the world if it doesn't have native Fieldtypes . It is a working solution. We appreciate your efforts and thank you for giving it to us gratis
    1 point
  39. ProcessWire is that CMS/CMF for real craftsman! Other CMS give you the structure (mostly strange and not comprehensible) - and PW gives you the toolkit to build up websites along with your actual knowlegde and learning process. There will always be room for new improvments and enhancements in your skills while you building websites with PW, without break something or "crying on a update"...a little bit like playing a game and level up with every project/website that you learn something new. Best hint at start is to change general thinking. Much more reflect the basic structure, data and possible enlargements on your project, than simple installing plugins. Build your website just with HTML/CSS like you need it and then carve out the needed data and form it with PW templates and fields. First important advice on the forum is to search with google and not use the forum search itself, since this search is not that good. Second important advice is to wish you the same fun that i have after switched to Processwire - you will get some great moments if you are open to the basic concepts and ideas behind this piece of software. best regards mr-fan
    1 point
  40. Great morning read, thanks for that And welcome to PW, you'll love it here.
    1 point
  41. I always find that the majority of a webdev work with PW is about front-end stuff and backend work with PW is a minor issue, at least compared to the systems. Of course this probably won't be the case on your first project but it will be soon. So if you know html and CSS (Js?) well, your learning curve won't be that steep.
    1 point
  42. John, welcome to ProcessWire, and to the forums. As said already, great intro. I find it fascinating that you've gone from one end of the spectrum to the other. You just don't see that often. That said, with your confidence (and seemingly good general knowledge regarding this end of the spectrum), you'll do just fine. And, of course, we'll all be willing to help you whenever you need it. So welcome, and enjoy the ride. (Hmm, so I'm busy thinking about this electric sign for PW - imagination running wild... )
    1 point
  43. Welcome John! Indeed great intro! As Adrian stated, here is full of really helpful folks if you show the right attitude. Get ready, you are about to experience blissful webdev, best luck on your new career!
    1 point
  44. Welcome to ProcessWire and the forums John! Loved your intro!
    1 point
  45. Looks really great I would love to see the possibility to subscribe to a topic and get notified by email when an answer is posted
    1 point
  46. Hello again, I'm just a beginner with regex. I had found the code via Google. The "$1" part seemed a bit strange to me (in this case). It normally corresponds to the first "capturing group" (that you sometimes/always? put between parenthesis). Perhaps a slash was needed before en or se(?). "- Will also redirect any URL that starts with letters "en" on "se" in the default language, for example "/enigma" or "/second"." This seems normal as .* = .{0,} = match any char zero or more times, and there is no slash after en or se. You normally need a slash before (.*), in your case. You could use (en|se) also apparently or [a-z]{2} (Limits to 2 characters. With or without parenthesis, it depends on the case). You can test regex codes at https://regex101.com/, http://regexr.com/ or elsewhere. There is also, for instance, http://regex.learncodethehardway.org/book/. I don't remember if I finished reading everything. I'll probably have to start all over again (one day).
    1 point
  47. Personally, I think PW is better off focusing on the CMS rather than worrying about building a forum solution. This just distracts and removes time better spent on expanding and improving an already excellent CMS. There are plenty of exceptional forum solutions out there already, why not use one of them? A native one just become a lot more work starting from scratch when tons of options already exist. That's my two cents.
    1 point
  48. Thanks, Hani. PHP 5.5 dropped JSON support due to the developer's aesotheric license. But those of us who are not yet at the front line are fine
    1 point
  49. Hani, ProcessWire will scale pretty infinitely in terms of pages, but not in terms of fields or templates. The same can be said of databases in general–you can have millions of rows in a table, but probably don't want millions of tables. I would say you've gone beyond what may be practical for long term use and maintenance of the site. At least, I have never tested ProcessWire with any more than 200 fields (and I thought that was an insane amount). I would be curious why so many fields are necessary? It might be good for us to get a list of all the fields, which may lead to some good suggestions on alternatives. But this is a situation where I think you might really benefit from making your own Fieldtype and Inputfield combinations. It is surprisingly simple to do, and can represent any DB table, no matter how many columns it needs. There is far less overhead in having a custom Fieldtype that represents a table with 100 columns, than there is in having 100 separate fields. Have a look at Adrian's new FieldtypePhone/InputfieldPhone module for a good example of how to represent a DB table with a Fieldtype. Some other options I can think of relate to ProFields, a pack of modules I've been working on to release soon (probably as commercially supported like FormBuilder and ProCache). It includes FieldtypeMultipler, FieldtypeTable, FieldtypeTextArray and FieldtypeTextareas, among others. These enable you to have a single field that can to represent any quantity of inputs. Though they all do it in a little bit different ways. FieldtypeMultiplier lets you take any other Fieldtype (that isn't already multi-value) and turn it into a multi-value field. FieldtypeTable is a multi-value compound type that lets you keep a user-defined combination of fields contained in a group… not quite as powerful as a repeater, but it's only 1 field and has far less overhead. FieldtypeTextArray lets you have a defined quantity of inputs for any text field… like say you needed a field to represent 3 email addresses, for instance. Lastly, FieldtypeTextareas lets you have 1 field that can represent any number of named textareas while having them all be searchable from the same field. For example, you could have a single field called "content" that contains separate inputs for body, sidebar, summary and about_the_author or something like that, but they only consume 1 field, accessed via $page->content->body, $page->content->sidebar, etc. All of these Fieldtypes/Inputfields are aimed at really reducing the overall quantity of fields necessary to represent lots of data. I developed this set because I had a site with lots of similar fields, and this group of modules helped me to reduce the quantity of fields by more than 70%. However, these aren't ready for production use, so it may be a little while before I have them ready. But if you'd be interested in helping to beta test them, your use case might be about perfect.
    1 point
  50. Hi and welcome not sure if this is what you looking for: http://processwire.com/talk/index.php/topic,171.0.html
    1 point
×
×
  • Create New...