Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 03/09/2016 in all areas

  1. The ability to add tabs not specific to ProDrafts. Create a new field called "sidebar" with the type FieldsetTabOpen. ProcessWire will automatically add another field "sidebar_end". Go to a template and add those fields. Add some fields between sidebar and sidebar_open and you will have a tab for that specific template. You can also group fields with FieldsetOpen.
    8 points
  2. Hi all! Here is a very small website that we made for this event promoted by two landscape architects. This is a one day event where private gardens in Freiburg are open to the public. There are also some planned workshops and other activities. http://freiburger-gaerten.de/ This is one of the simplest websites we did. A one pager with smooth scrolling based on anchor links. The PW part was very easy, the content of each section is in a children of home, so on the home template we simply have to iterate all the children and render them.
    6 points
  3. Update: I've added a "Media" admin page with a quick create option for new library pages.
    5 points
  4. dropped a first prototype onto github some minutes ago. very early stage, developed and barely tested under PW 3.0.9. Reuses some stylesheets from CKEditor, so be sure you have installed that as well, if you want to test it. https://github.com/nikosch/ProcessWireImageLink [edit] not sure, if this works in other versions of PW and how it behaves with additional image processors. But the code is no rocket science, so the chances are not too bad
    5 points
  5. To expand on arjen's answer: I had use cases where I had to add more than one tab to several templates. To avoid creating too many individually named fields of type FieldsetTabOpen, I did the following: Create fields of type FieldsetTabOpen with generic names, like tab1, tab2 etc. Apply the field to template A and in the template override for the field label name it e.g. "Sidebar Left" Apply the same field to template B and in the template override for the field label name it e.g. "Sidebar Right" This way you only have one field of type FieldsetTabOpen but can use it for differently named Tabs in different temp[lates.
    5 points
  6. The GD now has complete memory checking before loading images into memory. It has had memory checking since some time already, but I have overseen two points in the code for this, what is now fixed with PW 3.0.10 too. In regard of the IMagick bug with PNG8 with transparency, we only can and will change this if we are able to detect if IMagick can handle this correct. Otherwise it will be handed over to GD.
    4 points
  7. SiteGround also offers a 1 click install for shared hosting accounts: https://www.siteground.com/blog/lets-encrypt/ more: https://www.siteground.com/kb/can-i-get-lets-encrypt-certificates-at-siteground/
    3 points
  8. Here's how I set up the editor protocol handler on Windows 8. I started out using this but needed to modify a few things. Note that I'm using a portable version of PhpStorm (using my own yaP launcher), so installed versions may need some modifications. Module settings, "Editor protocol handler" field: pstorm://open/?url=file://%file&line=%line There's "editor.reg" file with these contents: REGEDIT4 [HKEY_CLASSES_ROOT\pstorm] @="URL:pstorm Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\pstorm\shell\open\command] @="wscript \"D:\\portables\\PhpStorm\\run-editor.js\" \"%1\"" and also its counter-part, which removes registry key, "editor-unreg.reg": REGEDIT4 [-HKEY_CLASSES_ROOT\pstorm] The "editor.reg" needs to be merged to the registry - double click on it, or using regedit.exe and "Import" from the menu. Note that you need to do this in admin mode, otherwise registry settings won't be added. "editor-unreg" is only needed to clean the registry, possibly you won't ever need this. Then you'll need a file named "run-editor.js" in the directory you've set in "editor.reg" There's some hardcoded paths, project name and window title in the code below - these still need revisit. "run-editor.js" file contents: var settings = { // Set to 'true' (without quotes) if run on Windows 64bit. Set to 'false' (without quotes) otherwise. x64: true, // Set to folder name, where PhpStorm was installed to (e.g. 'PhpStorm') folder_name: 'PhpStorm 9.0', // Set to window title (only text after dash sign), that you see, when switching to running PhpStorm instance window_title: 'PhpStorm PS-145.61.14', // In case your file is mapped via a network share and paths do not match. // eg. /var/www will can replaced with Y:/ projects_basepath: '/YOUR_PATH_HERE', projects_path_alias: 'D:/Projects/YOUR_PROJECT_NAME' }; // don't change anything below this line, unless you know what you're doing var url = WScript.Arguments(0), match = /^pstorm:\/\/open\/\?url=file:\/\/(.+)&line=(\d+)$/.exec(url), project = '', editor = "D:\\portables\\PhpStorm\\PhpStormPortable.exe"; if (match) { var shell = new ActiveXObject('WScript.Shell'), file_system = new ActiveXObject('Scripting.FileSystemObject'), file = decodeURIComponent(match[1]).replace(/\+/g, ' '), search_path = file.replace(/\//g, '\\'); if (settings.projects_basepath != '' && settings.projects_path_alias != '') { file = file.replace(new RegExp('^' + settings.projects_basepath), settings.projects_path_alias); } // note: uncomment to see the popup message (for testing) //shell.Popup(file, 0, "My Title", 64); while (search_path.lastIndexOf('\\') != -1) { search_path = search_path.substring(0, search_path.lastIndexOf('\\')); if(file_system.FileExists(search_path+'\\.idea\\.name')) { project = search_path; break; } } if (project != '') { editor += ' "%project%"'; } editor += ' --line %line% "%file%"'; var command = editor.replace(/%line%/g, match[2]) .replace(/%file%/g, file) .replace(/%project%/g, project) .replace(/\//g, '\\'); shell.Exec(command); shell.AppActivate(settings.window_title); } That's all. Clicking on a Tracy error line load PhpStorm at the file/line specified, and also brings the application to the front (activates it). If you encounter errors, try to "debug" using popup messages (see "shell.Popup(..." line in the js file).
    3 points
  9. Hello Ryan. I'm really looking forward to use ProDrafts in our 3.x installation of PW. Can you make any commitments when it will support the field type "RepeaterMatrx"? Right now i am building our new website. Almost all visible page components (text-/image-blocks, galleries, videos, slide shows, teaser, tables, etc.) are based on the new "RepeaterMatrix" field type. In my opinion, it really rocks and provides the easiest and fastest way for our designers to create very modular page compositions. And so, it is very easy for me to develop and deploy new page components. It would be so great, if ProDrafts would support the new field type "RepeaterMatrix" soon. Hopefully and all the best LaDev aka kbreynck
    3 points
  10. foreach($grandparent->find("template=product") as $product) { ... } should do the trick.
    2 points
  11. Can you make sure it isn't a permissions issue (e.g. /styles/base/black being hidden)?
    2 points
  12. I analyzed the GitHub issues and PRs situation again and it is getting worse and worse. We have now 525 open issues and 48 open PRs. I searched through the labels which could IMHO be (quite immediately) closed, and I found this: 2 already fixed 1 can be closed 24 completed 2 feature not a bug 7 fixed! please confirm 64 fixed 11 not a bug 37 can't reproduce So around 150 of the issues/PRs could be closed. Doesn’t this situation concern anyone? I think what to do is clear: either Ryan himself immediately closes issues/PRs once they are fixed in his view, or a dedicated team does this for him. If nothing is done, the open issues list will grow and grow and grow and soon we'll have 1000+ open issues. That just doesn’t look right to me. :-(
    2 points
  13. Finally got the protocol handler thing to work on Win(8), thanks!
    2 points
  14. I am not sure about passing variables to field->renderValue. But adding your JS and CSS dependencies to custom arrays is pretty straightforward. In config.php you can define your custom JS and CSS arrays like $config->customJs = new FilenameArray; $config->customCss = new FilenameArray; Then in your template file where you want to include your dependency you do $config->customJs->add('pathtoyourscriptfile'); $config->customCss->add('pathtoyourstylefile'); In the head section of your html you then render them with <?php if(count($config->customCss)) foreach($config->customCss->unique() as $file) echo "\n\t<link type='text/css' href='$file' rel='stylesheet' />"; ?> and in the head or end of body section render your JS <?php foreach($config->customJs->unique() as $url) echo "<script src='$url'></script>"; ?>
    2 points
  15. Hi everyone, Thanks to prompting from a good friend who is doing his first site with PW, I have added the ability to completely lock/prevent changing of the page name. This is achieved by a new option: "Automatically rename the name field to match the title" - this is checked by default as this is the whole reason this module was created. But now by unchecking this, you can revert to PW's default behavior. Why not just uninstall once the site is live you ask? Good question The reason is that now you can use the "Prevent Manual Changes" options along with this to make it impossible to change the name of the page. The default PW behavior allows all site editors to change the name - but if you want to prevent this, you can now do it easily. You can also add superusers (and other roles) to the list of roles that are exempt from the "Prevent Manual Changes" option. Anyway, hopefully others will find this useful as well.
    2 points
  16. Looking again at my above implementation for additional content in the marker popup feels a bit hacky because the content of the popup is being constructed in MarkupLeafletMap.js I think the cleaner and proper way of doing it would be to construct the HTML that goes into the popup on the template file level and then pass it to the map render function. Something like this: $options = array(); $options["markerPopupContent"] = "<b><a href='{$page->url}'>{$page->title}</a></b>{$page->body}"; // ... more options $map = $modules->get('MarkupLeafletMap'); echo $map->render($items, 'map', $options); Hope to get your opinion on this. I would then implement the code into my fork of this module.
    2 points
  17. Hello everybody, It's another day - so it's time for a new module and this module is all about helping your site's visitors to store the pages they want to visit. Bookmarks is a module that delivers a straightforward API for storing pages, adding bookmark-comments and tags to them. You can create a bookmark for the current user for a page with a single line of code: $page->bookmark->save(); You can also add comments and tags to it: $page->bookmark->comment = 'Early in the morning'; $page->bookmark->tags = array('sleepy', 'bashful', 'sneezy'); $page->bookmark->save(); After having stored some bookmarks, you can fetch a user's bookmarks in this way: $user->bookmarks; You can find a live demo of the module here: http://nickel-1vn.lightningpw.com/ You can find the module and additional APIs here: https://github.com/conclurer/PageBookmarks The module is submitted for the module directory and should appear soon. Please leave a comment below to add feedback and / or feature wishes. Thanks in advance, Marvin
    1 point
  18. I agree it's not optimal either, but the best way to do this is to click on "Jo" to highlight it before dragging "Dateityp" under it. Think of it as expanding the tree below "Jo". Even though it has no children yet, you have to "open" them before you can put one in. It makes a lot of sense but I agree it's not the most intuitive experience. With Ryan adding long-click actions now, I think this would be a use case worth considering. I. e., dragging and holding a page on top of another page for one second could make it expand.
    1 point
  19. You'd know the line numbers from any error messages that Tracy has reported. You can of course always enter line #1 for some scenarios. Maybe it would be nice if I had a trigger for inserting at the last line as well? But, agreed it is probably a little obscure as a feature - I'll see how much I end up using it and see if others find a use for it.
    1 point
  20. Interesting feature though not sure if I would ever use it. Btw, having no access to the remote files, how would you know the line numbers? (and without being a PHP guru )
    1 point
  21. Here's an old thread and Ryan's response A quick note for newbies....be careful not to invite the whole family ($page->find()) if you don't have enough room (memory)...you might need to limit numbers
    1 point
  22. hi nikosch, thank you for your effort on this. it would be really great to give everyone a quick and easy impression of your module with a tool like licecap. example & link are here: https://processwire.com/talk/topic/11757-page-add-comfort-option/ thank you again
    1 point
  23. Please update AIOM to the latest version 3.2.3. This problem has been fixed with the chmod and uses ProcessWire-own functions for it. This should not happen anymore.
    1 point
  24. Thanks @adrian, it's working.
    1 point
  25. Thanks for your writeup also @matjazp - great to have this stuff documented! I have committed a fix for the blank line number issue you were having. Please let me know if it works now. New Feature I have just added a new feature - it's a bit experimental, and I am not sure just how useful it is so would appreciate feedback. It provides the ability to insert debugging statements (actually any code you want) at designtaed lines in the compiled template at runtime. I see this as useful if you want to quickly debug something on a live site without having to edit the files on the server. In this example I am inserting two barDump (bd) statements into the home.php template file at lines 61 and 63 and noting which one is before the variable is iterated and which one is after. The code for the home.php file looks like this: And this is the result in the dumps panel: Obviously the scenario and the inserted debug statements could be quite different, but hopefully you get the idea. Note: Any lines of code inserted like this are only executed for superusers, so you could even use this as a way to insert lines of code that affect the output on the page without it affecting other users and guests. Also, be sure to remove any statements when you are done debugging, because the template file is re-compiled every time the page is loaded when this field is populated.
    1 point
  26. Because the markup is so simple, and the sections have all the same structure, I'm actually not using the render() function, so the children template simply doesn't have a template file. But if you are using the render() there are still some possibilities: — The most immediate is to set those pages to hidden; — Another option is to check if the page is being called by the render() function, you can do this by checking for the presence of the $options array if( isset( $options ) { // spit the content } else { // redirect to home or throw a 404 }
    1 point
  27. Yes, I was talking about template files. Huh, didn't know the file was there , I was using https://pla.nette.org/en/how-open-files-in-ide-from-debugger (link provided by @tpr) and modified just a little. My .js file is very simple, @tpr went few steps forward, here are the files: editor.reg: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\editor] @="URL:editor Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\editor\shell\open\command] @="wscript //E:jscript \"D:\\editor.js\" \"%1\"" and editor.js: // full path to the editor, you have to use double backslash var editor = '"C:\\Program Files\\IDM Computer Solutions\\UltraEdit\\uedit64.exe" "%file%" -l%line%'; var url = WScript.Arguments(0); var match = /^editor:\/\/open\/\?file=(.+)&line=(\d*)$/.exec(url); if (match) { var file = decodeURIComponent(match[1]).replace(/\+/g, ' ').replace(/\//g, "\\"); var command = editor.replace(/%line%/g, match[2]).replace(/%file%/g, file); var shell = new ActiveXObject("WScript.Shell"); shell.Exec(command.replace(/\\/g, '\\\\')); }
    1 point
  28. I think that looking at the amount of issues present is like judging a book by its cover. So long as the issues are being managed properly by means of the correct labels and follow-ups, then the count of issues should not be seen as an issue itself. Regarding issues that cannot be reproduced, I think there should be a time-delay in terms of leaving it open. It should be labelled first, and then closed, say, after 30 days if there is no reply. If the author of the issue can prove production of the problem on their end, then it shouldn't be closed, because the issue does exist.
    1 point
  29. You'd probably mix WillyC's code with the option to run the PageAction on a batch of pages if you want to circumvent memory issues.
    1 point
  30. I'm playing with Editor Protocol Handler set to "editor://open/?file=%file&line=%line" using UltraEdit. The problem I have is that editor won't open correct file if %line is empty string. So editor://open/?file=myfile.txt&line=1 is ok, while editor://open/?file=myfile.txt&line= is not ok. This is bug in UltraEdit. Can you help by providing line number 1, if there is no line number?
    1 point
  31. In PHP 5, list() assigns the values starting with the right-most parameter. In PHP 7, list() starts with the left-most parameter. But I see that adrian fixed it...
    1 point
  32. Same here with Dreamhost. I was a skeptic at first, however I'm starting to like the whole process. I've converted quite a few domains over to Let's Encrypt and plan to convert all others when possible.
    1 point
  33. 1 point
  34. Woot - Dreamhost are offering free 1-click installation of Let's Encrypt certs (ok, almost 1-click.) I've tried it out on a few domains and it works really well for the most part. I've had an install fail on one domain but they are working to fix the problem. Update: Looks like the failure was a user error - I deleted the certificate when installing PW
    1 point
  35. HELLO! Just in case anyone's interested I've just started this podcast http://www.machine-ethics.net/ I sent less than a day building the site so be kind. I'm looking to improve it and make it available as a site profile as it has an rss feed that itunes can pick up and use which may be useful for anyone else creating podcasts. cheers
    1 point
  36. Well spotted Willy! Cintia, before translating from portuguese to english, make sure you don't have mistakes on the portuguese words because it messes up the translation even more than usually. For instance, you missed the R in "Brasileia" and the G on "seuinte", and there are more. edit: Duh, you won't understand this probably , here you go: Cintia, antes de traduzires para inglês verifica que não tens erros no português. Isso vai tornar a tradução ainda mais caótica do que já fica normalmente. Por exemplo, falta o R em "Brasileia" e o G em "seuinte", e há mais assim.
    1 point
  37. include("/home/shutterblue/public_html/content/index.php"); $wire->pages->setOutputFormatting( true ); // u cansadd.this when boot trap $homepage = $wire->pages->get(1);
    1 point
  38. #7 of 50: http://dailycodex.com/top-content-management-systems/ http://www.queness.com/post/14579/6-lightweight-flexible-php-cms/page/1 http://preludi.fi/blog/processwire-julkaisujarjestelma-6-syyta-valintaan
    1 point
  39. Nice one Jan Romero - I hadn't seen the use of the Selectors class and PageFinder like that. Putting it all together: $selectors = new Selectors("template=basic-page"); $pagefinder = new PageFinder(); $sql = $pagefinder->getQuery($selectors->getArray(), array("returnVerbose" => false))->getQuery(); $result = $database->query("SELECT SUM(data) AS sum_amount FROM field_amount WHERE pages_id IN ($sql)"); $sum = $result->fetch(PDO::FETCH_COLUMN); echo $sum; Note that I had an SQL error regarding "SQL_CALC_FOUND_ROWS" when I included a limit in the selector. If I removed the SQL_CALC_FOUND_ROWS then it complained of not allowing limit in IN. Remove the limit from the selector and things work just fine. Also, note that you need to specify "returnVerbose" => false - otherwise you get a php NOTICE: https://github.com/ryancramerdesign/ProcessWire/issues/1734
    1 point
  40. Here is a better comparision, including all 4 sharpening modes and with 280px images output. I only post the link of an PNG screenshot here, because it is 8MB: http://images.pw.nogajski.de/assets/screen_255.png Here are the values, without the thumbnail images:
    1 point
  41. Yes, there's obviously a danger to add too many files to a library and make things convoluted. There's a point where simple dropdowns aren't practical anymore, but then, structuring information always is an ongoing task. That's a reason why one of the next points on my todo-list at work is a small module to show file usage (i.e. which pages' html fields link to a given pagefile), though that's probably going to be less pratical as I'll use a custom link and image url extractor in our OpenSearchServer to get quick results and avoid parsing multiple fields in a few thousand pages in the database for every file. I haven't read that book, but getting acquainted with tool sets and release procedures before forming bad habits sounds like a good plan, even if not everything (like e.g. composer use) can be used for every project. It's often harder to un-learn a bad habit than learn it the right way first.
    1 point
  42. For those interested, I've released a new prerelease and dropped the PHP 5.5.0 requirement. I've also added a few features and will be creating a forum thread soon.
    1 point
  43. If someone really needs lots of free emails (100.000): https://www.sparkpost.com/pricing And a blogpost regarding future plans https://www.sparkpost.com/blog/my-promise-to-developers-sparkpost-pricing/
    1 point
  44. You did it again adrian Thanks a lot! Regarding protocol handlers, these links might be of interest too: https://pla.nette.org/en/how-open-files-in-ide-from-debugger and https://github.com/aik099/PhpStormProtocol
    1 point
  45. Hey are there any drupal convert/devs in here? I have been having an ongoing discussion with a number of firms about Processwire. I am always pushing Processwire pretty hard. I feel like I can do anything with PW! Faster and more elegant than with any other CMS. What I notice is that most good size firms that I talk to are heavily invested in Drupal. Every discussion I have had with developers and stakeholders is the same. They say that Drupal is pretty much the only option for large websites and that it allows them to produce anything extremely fast with all the modules etc. that people have produced... that they never have to reinvent the wheel. My experience with Drupal is that it is extremely cumbersome, produces pretty much the worst output I have ever seen. Has a very poor user experience for managing/organizing and editing content. And makes you work 5 times harder. Granted, you can click a lot of buttons and produce views and get content on the screen... but it seems like so much extra work.. almost like you spend all your time trying to clean up the mess Drupal makes with endless overrides and pounds and pounds of HTML & CSS... gah.... It seems a lot like the way Wordpress works... "there is probably a plugin for that...." But I feel so frustrated with CMSs that have your functionality, workflow, and user experience predefined. I am so tired of fighting a CMS. That is exactly why I love PW... It's never in the way. Let's me work the way I do. Almost all of the larger business/organization websites that I come across are Drupal... So I don't want to be biased and hate on it, that's not my intention. So I guess I am looking for feedback from people who know... Is there really anything in Drupal you cannot do with PW? Is PW a capable platform for large scale websites? (I believe it is, but I am having trouble demonstrating it to people) Is it really less work and more efficient to implement advanced functionality with Drupal vs PW? Thanks in advance for any feedback and contributions to this discussion.
    1 point
  46. 1,5 month later, after I did most of the project and be sure that I understand PW system, I finally finished that part. It's not perfect of course but it's working fine. Here is how I did it: Templates And Fields: I created 2 templates: grid and grid_item and 1 pagetableextended field grid_items. In grids page I can enter grid_items like below: Title, summary, featured_image for content on the grid items, external url for obvious reasons, grid_ratio is to determine size of item. Design is limited with ratios from 1x1 to 3x3, so I made it selectable page items from options use_border : for images with white bg, so they don't look like they are floating Modules I have created 3 modules. InputfieldGridBuilder,FieldtypeGridBuilder and GridBuilder. Whenever I save the page, new items from grid_items pagetable are available to use like below. I can order items, add new rows, delete row etc. Whenever I change something, there is a method that works to serialize data to the hidden input field,InputfieldGridBuilder. Also, just in case I call the function it every 5 seconds. I make a small fixed grid that is very similar to the one used in the frontend. So anything that you can do here with jQueryui sortables, it's available for using in the frontend. Last module GridBuilder is used for mostly utility purposes for both frontend and backend. It has methods like getItemSize, getItemImage, build etc. Frontend Normally these will be used in homepage but I made the view of page available to users with editing roles, so before using them they can see that it look like. For example this one in the gif above looks like this. So even with the empty rows, it works. And for using in the homepage, I added a multiple selection page field. So they can use more than one grid, or with the location options we already added they can select to have a different view for different countries. (I added Location settings is globally for every page) Questions, critics, feedbacks or "hi,there buddy"'s are highly welcomed.
    1 point
  47. None that I'm aware of. Of course you can always use PageFinder for this, but it's going to look a bit hacky: $selectors = new Selectors("template=blog-post, limit=5, sort=name"); $pagefinder = new PageFinder(); $options = array('returnVerbose' => true); $sql = $pagefinder->getQuery($selectors->getArray(), $options)->getQuery(); // .. and so on, depending on what exactly you're looking for
    1 point
  48. The short answer is yes and no. What you can't do is run PHP or mySQL on a phone, but you can create an app that pulls data from an online database. You would likely be developing in HTML and Javascript if using Phonegap though and using AJAX requests to fetch the data from the website. The alternative is to create a static HTML site and package that as a phone app using PhoneGap or some other program, but that's a bit limiting. Setting up Phonegap took me ages as there are a lot of other things you also need to set up and the documentation can be a bit unhelpful in places (out of date instructions or bits missing when I last followed the instructions), but it can be fun once you get going - not something you would do unless you enjoy a challenge though in my opinion. The real question is: if this is a normal website then why have an app unless there is something special you want to do with the app? Making the website layout responsive would work just as well on mobile with less hassle, so I think we need to know a bit more about why you want it to be an app before being able to help further.
    1 point
  49. Read about the new way of installing CKE plugins over here: http://www.flamingruby.com/blog/processwire-weekly-13/#1-2 and more here http://www.flamingruby.com/blog/processwire-weekly-14/#1-4 There's a forum post that I can't find now....
    1 point
  50. Interesting topic, thanks for creating it Joshua. We have had similar talks since Drupal seems to be a platform that many organisations know in Finland. Big boys only talk about Drupal or Sharepoint. I have had my talks with our clients about "PW vs Drupal"... today I just do what Ryan once suggested: show them PW - build something quick, let them see how you develop with it and how quickly you can make things. You know you can build the whole backend of "events management" or "custom application never build before" in just about 30 minutes. Just build it. But if you do want talk about PW and Drupal, you should mention these things (I am by no means a Drupal expert and too lazy to check all the facts, so take this with grain salt and please do correct me if I am telling lies): Drupal release cycle is too fast for many. They try to get new major release every two year and only two latest are supported. Also major releases do break APIs, so probably most of the custom development need to be redone at least every four year. This might be fine on some projects, but for our clients that is usually an impossible schedule. It helps a little that new versions usually don't ship on time, though - and also some community efforts are trying to keep older versions secure. Ask people about their Drupal projects... most are not too proud of those: "This is little hacky" or "We didn't follow most of the best practices here, since we were in hurry". Those comments we got from the company, that we bought to teach us Drupal development and wanted them to show us their best work... Many people build sites with Drupal without really knowing how it works... which is understandable since it takes about 6 months to learn that beast (heard that 6 months estimate from CEO of biggest Drupal company in Finland and my initial feeling and personal experience suggest that it is pretty accurate). Drupal development is very different from normal PHP coding: If you (and your co-workers) have invested 6 months to "unlearn" PHP development and learned Drupal, you don't want to think about alternatives on that point. Drupal projects are expensive. In Finland ie. "The cost of Drupal web projects usually begins at about 20,000 euros, but projects best suited to Drupal generally cost more than 100,000 euros." (source: http://northpatrol.c...nal-products-2/). I usually draw a picture where PW is lots of tiny blocks, that cover 80% of needs and very little goes away. So you just build the remaining 20% and you get exactly what is needed. With Drupal (or any other "big" platform) you do get big block that goes well over 100%, but has more than 20% of holes. So you do have to build the remaining 20%, but also end up more than what is needed. So if you want to get rid of all the bloat, you do have more work to do. I have personally tried and wanted to learn Drupal for many many times. I always end up with big frustration and sites that were "nearly there". That was before PW, of course. EDIT: This was all very technical, so might want to talk this language only with tech orientated clients. With others, I would focus on PW admin usability and flexibility on frontend.
    1 point
×
×
  • Create New...