Leaderboard
Popular Content
Showing content with the highest reputation on 01/16/2015 in all areas
-
I'm not quite sure if this is worth to be a module. But I needed it... This Fieldtype creates a select list (drop down) in relation to another field (you can restrict the list by setting up certain templates and / or pages). Installation: 1. Clone the module and place FieldtypeSelectRelation in your site/modules/ directory. git clone https://github.com/justonestep/processwire-fieldtypeselectrelation.git your/path/site/modules/FieldtypeSelectRelation (or get it from the module page) 2. Login to ProcessWire admin and click Modules. 3. Click "Check for new modules". 4. Click "install" next to the new FieldtypeSelectRelation module. Usage: After installation, you'll have a new "Select" fieldtype that will allow you to define the items you'd like in the drop down depending on another field. Create a new field and assign type SelectRelation Click on the Details tab, there you find different fields to create your select list Field: required, choose another field you created before from which the select list should be populated Repeater: optional, if the field you chose is included in a repeater, select the repeater here Template(s): optional, restrict your result by setting certain template(s) Page(s): optional, restrict your result by setting certain page(s) Unique Values: optional, check this field if you want to avoid duplicate values (If you enable this, the string value will be saved instead of the ID. You will not be able to reference via ID.) Including not only visible pages: optional, include all hidden and unpublished pages and pages that user doesn't have access to view Multiple Output: optional, multiple selection (using ASMSelect) Unique Values Disabled If this field is not enabled the key is the pages_id and the value is the value from the other field. <select id="Inputfield_chosen_fruit" name="chosen_fruit"> <option value=""></option> <option selected="selected" value="1026">Strawberry</option> <option value="1030">Apple</option> <option value="1031">Banana</option> <option value="1032">Lemon</option> </select> Note: If you change the value of a field the value changes too. If you deleted a value the value now is empty and multilingualism works like a charm. Accessing the value: // single select echo $pages->get((int)$page->chosen_color)->color; // multiple select foreach ($page->chosen_color as $p) { echo $pages->get((int)$p)->color; } `chosen_fruit` and `chosen_color` are of the type SelectRelation. `title` is the page title and `color` a simple input field (TextLanguage for example). In `chosen_fruit` the selected field is `title`. And in `chosen_color` the selected field is `color`. Unique Values Enabled If this field is checked the key as well as the value are the value from the other field. <select id="Inputfield_chosen_color" name="chosen_color"> <option value=""></option> <option value="red">red</option> <option value="green">green</option> <option selected="selected" value="yellow">yellow</option> </select> If you don't check this box you might have duplicate colors (because there is more than one fruit which has a yellow color for example). BUT if you change the value of an field, your already chosen value stays the same, because there isn't a relation via ID. Access such a field like you are used to: // single select echo reset($page->chosen_color); // multiple select foreach ($page->chosen_color as $p) { echo $p; } TL;DR: I tried to save a comma separated list for duplicate values .It works until you change anything. For example, if you have two times the color yellow a key of the kind '1034,1036' may get saved. Now assume you change a basic color (the banana turns brown ), the selected value is now empty because a key like '1034,1036' doesn't exist anymore. And in the frontend you may get a wrong output.11 points
-
To kind of return back to topic, here's a little write-up on ProcessWire and ProcessWire Recipes: http://bigger-on-the-inside.net/articles/processwire-recipes (again shameless plug™)10 points
-
Just wanted to share a simple bash script I've been using lately to make installing ProcessWire a little faster. Feel free to modify it to your taste! Just copy everything into a simple text file, I call mine "preparepw". Optionally, set this file to executable (chmod -x preparepw) and put it somewhere into your path to be able to load it as a regular command without the need to call it from sh ~/preparepw for example. To run, first cd to where you want to install PW's root, e.g. /sites/mysite/ then call the script. It will create a /sites/mysite/wwwroot/ directory containing all of PW's files from current master, set the required permissions and rename htaccess. It has an option to set the directory that, when unset, will default back to ./wwwroot. (e.g. preparepw public would install PW in ./public/). #!/bin/bash # Version 2.0 INPUT=$1 if [[ -z $INPUT ]]; then INPUT="wwwroot" printf "Directory option not set, installing into ./$INPUT/...\n" else printf "Installing in to ./$INPUT/...\n" fi # Select a version printf "\nWhich ProcessWire branch do you want to install?\n" options=("master" "dev" "devns") select BRANCH in "${options[@]}"; do test -n "$BRANCH" && break; echo ">>> Invalid selection, please try again"; done printf "\nDownloading ProcessWire $BRANCH branch, please hold on...\n" # Get ProcessWire master and prepare files if [ "$BRANCH" == "master" ]; then curl -o processwire.zip https://github.com/ryancramerdesign/ProcessWire/archive/master.zip -# -L fi if [ "$BRANCH" == "dev" ]; then curl -o processwire.zip https://github.com/ryancramerdesign/ProcessWire/archive/dev.zip -# -L fi if [ "$BRANCH" == "devns" ]; then curl -o processwire.zip https://github.com/ryancramerdesign/ProcessWire/archive/devns.zip -# -L fi unzip -q processwire.zip rm processwire.zip if [ "$BRANCH" == "master" ]; then mv ProcessWire-master $INPUT fi if [ "$BRANCH" == "dev" ]; then mv ProcessWire-dev $INPUT fi if [ "$BRANCH" == "devns" ]; then mv ProcessWire-devns $INPUT fi chmod -R u+rwX,go+rX,go-w $INPUT mv $INPUT/htaccess.txt $INPUT/.htaccess cd $INPUT # Prompt for site profile printf "\nWhich site profile will you be using?\n" select d in site-*/; do test -n "$d" && break; echo ">>> Invalid selection, please try again"; done mv $d site/ rm -rf site-*/ # Set permissions chmod 777 site/assets chmod 777 site/modules chmod 666 site/config.php printf "\n" read -p "Press [Enter] once you've finished the installation process to remove the install files..." rm install.php rm -rf site/install printf "\nInstallation files removed.\n" printf "\nDirectory \"$INPUT\" all set for ProcessWire. Have fun! \n"8 points
-
I would imagine something more like this, where one could drag and drop from the fields list to the templates. The fields are only there as list to choose from. Click on the title could open a modal edit. Maybe two buttons on the bottom, to add Fields / Templates to it. Edit: It's just so cool to have this mockup build faster than I could have in some design software.8 points
-
I would try something like this: http://stackoverflow.com/questions/8432601/wamp-xampp-localhost-responding-very-slow5 points
-
So I spent some time fiddling around with this tonight and managed to get modal editing of page field pages working with the addition of just a few lines of code in InputfieldPage.module: InputfieldPage.module The modified file is attached. I commented the lines that I added with /* MJS 1/15/15 */ You'll want to put this file into /site/modules/ so you don't overwrite the core. Once it's up there, you should see an option in the field config settings for your page field that says 'Allow pages to be edited from field?' Check the box. This only works if you're using ASMSelect with your page field. The catch is that you have to save the page before the modal edit links become available (like when editing fields in the template editor). I think the only way around this would be to significantly re-engineer the ASMSelect inputfield with some AJAXy stuff. Not my strong suit. EDIT: There is a module for this now with more features. Use it instead! https://processwire.com/talk/topic/9857-module-page-field-edit-links/4 points
-
Do you have template caching enabled? By default it's only enabled for guests, so this would explain your experience. Also a cached html page would not parse any form inputs.3 points
-
Must be something with you locall server. Sometimes excessive virtual hosts or inefficient hosts settings can cause slowdown. I wouldnt look in PW.3 points
-
If you have template cache enabled you have additonal options appearing for defining GET or POST variables on which cache is not enabled. So enter some GET or POST vars you have in your form and it works.2 points
-
Nothing of note. Optimizing those blog tables seemed to have an effect and it's noticably faster now.2 points
-
@Peter If you are talking about the DB diagnostics pages of ProcessDiagnostics then the warning about the need for optimisation is down to reclaiming wasted space in the tables - not about how fast queries will run. Have you tried setting debug to true in your config file and looking at the timings in the foot of the offending admin page?2 points
-
Mass editing view! Clicking field name on left would open field settings in modal - clicking field name on right would open template context field edit in modal. Interesting concept! It also shows nicely, that same field can belong to multiple template (ie. field is independent from template).2 points
-
I think kongondo is close You can build top level entries using a PageArray. Only top level items are supported, once MSN got a PageArray it will recursively parse the tree from those top level entries. You could do this $items = new PageArray(); // add pages to PageArray $home = $pages->get("/"); $items->add($home); $events = $pages->get("/events/"); $items->add($events); $photos = $pages->get("/photos/"); $items->add($photos); $options = array( "selector_field" => "nav_selector" ); $nav->render($options, null, $items); but now make use of the "selector_field" option https://github.com/somatonic/MarkupSimpleNavigation#added-support-for-nav_selector-propertyfield-and-selector_leveln-new-in-121 default it is "nav_selector". When MSN finds a page with this property (either field or added at runtime) it will take that value as a selector to find/filter the children (if it has any). So if you want to have a custom selector on the "/events/" page it would look like this: $items = new PageArray(); // add pages to PageArray $home = $pages->get("/"); $items->add($home); $events = $pages->get("/events/"); $events->nav_selector = "limit=5, sort=-eventdatefield"; // define a selector $items->add($events); $photos = $pages->get("/photos/"); $items->add($photos); $options = array( "selector_field" => "nav_selector" ); $nav->render($options, null, $items); Now adding a additional item at the end is something I would add using JS (jquery). And also let the "Events" top menu entry link to the full list anyway. To get something to target the JS script you could use "inner_tpl" with a placeholder to add name or id to ul's and add that to the options array: $options = array( 'selector_field' => 'nav_selector', 'outer_tpl' => '<ul id="nav">||</ul>', 'inner_tpl' => '<ul id="{name}">||</ul>', ); Then do something like this with JS $("#nav ul#events").append($("<li><a href='/events/'>more</a></li>"));2 points
-
Hi everyone, I did a little thinking and coding on this issue last night. There is a gist on this post (https://processwire.com/talk/topic/8605-user-editsaddsmove-only-his-own-page/?p=84835) which hides uneditable pages, but be sure to read my comments in that post. And based on my comment about the issues with "is editable" checks and the need to display non-editable parents to allow a user to access editable grandchildren, here is a much more comprehensive module that allows the ability to hide specific pages (and obviously their entire branch of children/grandchildren) based on the user role. It is based off my Page Protector module so it will look familiar to anyone who have used that. It is just a first draft, so test carefully It is attached here for now. Any thoughts? AdminPageHider.zip2 points
-
There is probably a more robust way to do this, but, uh, I tried $this->addHookAfter('InputfieldPageTable::render', $this, 'PageTableRender'); public function PageTableRender($event) { $return = $event->return; $from = strrpos($return, "<div class='InputfieldPageTableButtons"); $to = strrpos($return, "</button></span></div>", $from); $buttons = substr($return, $from, $to-$from) . "</button></span></div>"; $event->return = $buttons . $event->return; } The Inputfield’s original render method puts the button html in the variable $btn, but I suppose there’s no way to just access that one. Another way to duplicate the button elements would be to just copy the code that generates them.1 point
-
Hello everybody, our next module is an performant manipulator for Pageimages. It is called GIM. GIM is basically a wrapper for the PHP library Gregwar's image class, which performs many image manipulations. The wrapper is written in a way that is compatible with Horst's PageImageManipulator's (PIM) syntax. How does it work? GIM extends ProcessWire's Pageimage objects. You can load every image with the method gim(), perform some operations and save the image with the save() method: $image = $page->image->gim()->grayscale()->save(); The save() method returns another Pageimage object, so you can use it with other native ProcessWire methods and hooks. Methods GIM includes a lot of methods for image manipulations. You can find them in more detail on our module page. You can crop, resize, flip and rotate the image in several ways You can apply filters like sepia to the image You can add texts and shapes to the image You can merge multiple images in multiple ways Compatibility with Horst's PageImageManipulator (PIM) You can just use GIM instead of PIM by replacing pim with gim: $image1 = $page->image->pimLoad('prefix') ->setOptions(array('outputFormat'=>'jpg')) ->brightness(-10) ->contrast(15) ->grayscale() ->width(600) ->pimSave(); // uses PageImageManipulator $image2 = $page->image->gimLoad('prefix') ->setOptions(array('outputFormat'=>'jpg')) ->brightness(-10) ->contrast(15) ->grayscale() ->width(600) ->gimSave(); // uses GIM GIM includes every method from PIM, so it just works. Also GIM and PIM share the same variation naming scheme, so when you start using GIM, the transition is seamless and does not need to recreate every image. Having the same naming schemes means, that GIM and PIM can also work side-by-side. For a full list of compatibility and migration notes, please check out our module page. Performance The reason why we created GIM is that we were looking for a more performant PHP image library for converting lots of images at once. After using Gregwar's image class for a few images, we thought that this library should find its way into ProcessWire. After testing GIM on a few sites, this is what we found out: GIM handles already manipulated images around 40% faster GIM is able to heavily manipulate at least 15 large images (> 2000px) in one request (more weren't tested yet) GIM is slightly faster than PIM for single image operations I hope this is a great addition to the ProcessWire module ecosystem and you can enjoy it. Thanks in advance, Marvin P.S.: Horst, I hope you don't see this as offense. PIM is a great module!1 point
-
Check out the folder called “errors” in your template directory. You’ll find 500.html and a readme.txt. This html file will be displayed when a fatal error occurs, and you can customize it. To manually cause the 404 page to show, you can throw this exception in your template code: throw new Wire404Exception(); However, it sounds like this recipe might suit your needs better than a 404 error page: First child redirect on ProcessWire Recipes. It’s just a single line: if($page->numChildren) $session->redirect($page->child()->url); die();1 point
-
You are great!! This seems to work for me. To hide all other branches under /home/ like visitenkarte, it´s correct to exclude this line, isn´t it? if($c->parent->name != 'visitenkarte') continue;1 point
-
How about this: https://gist.github.com/adrianbj/6fd1b770d9ce7a7252b6 It hides pages that don't match the user's name unless you are logged in as a superuser. It is currently hardcoded to only check pages with parent named: visitenkarte Does that work for you?1 point
-
1 point
-
Wow, that sounds like the solution to my problem. Okay, here is a reminder: reminder! ;-) Thanks renobird!1 point
-
I'll see what I can do. I think the saving part will be the most complex thing of such a module.1 point
-
1 point
-
Hi Peter, This is what I mostly use for tuning websites, it may show you in your case any bottlenecks. http://loadimpact.com/1 point
-
You're welcome! I don't know what happened, this sounds strange. But you could try to create the table manually. Here's the SQL statement from the module code: https://github.com/apeisa/ProcessRedirects/blob/master/ProcessRedirects.module#L326 If you have phpMyAdmin installed or any other MySQL database administrator, execute it there. CREATE TABLE ProcessRedirects ( id int unsigned NOT NULL auto_increment, counter int unsigned DEFAULT 0, redirect_from varchar(255) NOT NULL DEFAULT '', redirect_to varchar(255) NOT NULL DEFAULT '', PRIMARY KEY(id), UNIQUE KEY(redirect_from) ) ENGINE = MYISAM;1 point
-
1 point
-
OK, I just read the link that I posted and that isn't what I meant to link to. I just found the documentation page that I had read earlier - http://processwire.com/docs/tutorials/default-site-profile/page3 We are developing using PHP 5.6 and the latest version of Processwire. We are seasoned PHP vets but new to ProcessWire and it was our understanding that having a _init.php and _main.php would lead the loading pattern of _init.php --> template.php --> _main.php and I'd rather not dig through the source code to figure out how it works / why it's not working for us. I was hoping that someone here might have some insight. The code I posted above should not simply output 'test' as _main.php is an entire coded design that makes use of the $variables $that $we $have $defined in _init.php and $overridden in home.php Basically - Why isn't PW autoloading the _init and _main files like the docs say it should? See https://processwire.com/talk/topic/7743-getting-my-head-around-the-intermediate-default-profile/?p=75043 - This is EXACTLY how we have our template set up, except it doesn't actually work unless we manually include _init.php and _main.php from the template.php file, which defeats the purpose. And I just figured out the solution. If you want to use this style of templating, you have to update config.php's $config->prependTemplateFile = '_init.php'; $config->appendTemplateFile = '_main.php'; Since we started with an empty template, those variables had to be updated from their '' value to the new values.1 point
-
If you don’t set a template file, the URL will show the 404 page, as if the page didn’t exist. Logged in users would still be able to view the page’s content in the admin backend. If you want to have a page with a visible template that can’t be accessed by guest users, you can check if the user is logged in. If not, you throw a 404 Exception. <?php if($user->isLoggedin() != true) { throw new Wire404Exception(); } // normal template code1 point
-
The only annoying thing about git branches is managing the database, especially in the early stages, where content may not be present from the beginning. But everything else is super easy. You could even use webhooks (github and gitlab) to call a php file on your server, which than pulls changes after each push from your local machine to the remote repo.1 point
-
The password protected domain part sounds REALLY interesting! I have terribly slow (under 2Mb/s internet speed) so I am gonna guess that the tunneling would kill my internet speed. We can't even have two devices on YouTube at the same time, lol. haha, yup, I just saw that this morning. Another great way! This makes the most sense to me and it's a good way to learn s'more GIT, lol. Thank you!!!1 point
-
Update: Blog version 2.3.1 Bugfixes Thanks to @matulkum, fixed this bug (thanks @bwakad) where...unparsed HTML would be output in Blog Posts/Categories/Tags Dashboards in multilingual ProcessWire environments. Additions As per https://processwire.com/talk/topic/7403-module-blog/?p=83971. Thanks to @Gazley, added 'post_small_tag' option to renderPosts(). Enables developer to select HTML tag to wrap around a 'small' Blog Post, i.e. a post excerpt/summary. Value should be left blank if no tag is desired. Especially useful if using the option 'post_small_allowable_tags'. The default tag is '<p>'. Use option as: //$options = array('post_small_tag' => 'div');//note we enter the tag only without the angle brackets! //render a limited number of summarised posts $content .= $blog->renderPosts("limit=5", true, $options); Requests Thanks to @loopyloo, added MarkupBlog frontend demo screenshot to README. See post #304-312 for why...1 point
-
Ask and you shall receive! Check out today's dev commits https://github.com/ryancramerdesign/ProcessWire/commits/dev "Add Adrian's ProcessTemplateFieldCreator for quick access to create new fields in ProcessTemplate."1 point
-
You can always revert updates of processwire by replacing wire/, index.php and .htaccess with the old ones. If you're using this https://processwire.com/talk/topic/7525-module-processwire-core-upgrade/ than these files should be there already as hidden files. The modules additionally does a optional database backup on updates.1 point
-
People who are just one step ahead of the newbies are the best teachers for those newbies. Those newbies will be the next teachers for the new generation. We have a healthy forum and I love the way it goes.1 point
-
A quick callout in defense of us 'starters'! My current process before asking a question in the forum is to: 1. google the forums, if I find code: 2. test the code on my site, noodling around for a few hours usually. If I don't find code, or can't get it to work: 3. google php references (I'm new to php, but fine with html & css) 4. test code I found at php references, if that doesn't work 5. google pw forums again 6. ask question on the forums If there is something else I should be doing to avoid being typified as 'jumping in and expecting an answer' or being 'lazy' or 'impatient', please let me know! I think we have a great dev community here, and I look forward to one day knowing enough to help others. Please don't hate on newbies... we're trying. On another topic earlier in this thread... as for tech wars... I think this is an archetypal theme (battle to the death! Who! Is! Deadliest!) that will always make money, and is therefore never going away. The important thing is that we recognise it for what it is - a distraction - and work on feeding the good community vibe here in spite of such distractions.1 point
-
if anyone fancies posting a comment, you might like to say something about the community being so good that no one feels the need to post on stackOverflow....1 point
-
Almost You need only one remote repository where the code lives, but with two branches. It's the same git model as ProcessWire uses: The master branch contains the latest stable code, whereas the dev branch contains all the new features. Live Website (e.g. www.yourdomain.com): - master branch is checked out, to get new commits from origin: git pull origin master Test Website (e.g. dev.yourdomain.com): - dev branch is checked out, to fetch the new commits: git pull origin dev Yep, but totally separated, not the dev version inside a sub folder. Also separate databases.1 point
-
Just thinking about it again jan's example, I think you guys are right in that if the php is in the cached template itself it wouldn't work as that code would never get executed, but remember that you can define GET vars on template settings, where when present to not cache the page. But you can also use a page for those calls without caching or use a php script bootstrap PW. Considering using template cache with a js inline call to a url that is current page with a GET var "mysnippet". Enter a cache time and add "mysnippet" to the "Cache disabling GET variables" appearing underneath. Now consider this snippet: $content .= "<script src='{$page->url}?mysnippet=bit'></script>"; if($input->get->mysnippet == "bit"){ header("Content-Type: application/javascript"); echo "document.write('<div class=\"bit\">');\n"; foreach($page->images->find("sort=random") as $img) echo "document.write(\"<img src='$img->url'>\");\n"; echo "document.write('</div>');"; exit(); } Will output random sorted images from the page in a template cached page. Edit: This only works when you use delayed output, hence the $content .= opposed to the direct echo "..." inside the condition, since this allows you to exit the script and not get other markup output before or afterwards. Same example $content .= $page->body; $content .= "<script src='{$page->url}?mysnippet=bit'></script>"; if($input->get->mysnippet == "bit"){ $images = ''; foreach($page->images->find("sort=random") as $img) { $images .= '<img src="' . $img->url . '">'; } header("Content-Type: application/javascript"); echo <<<_MKP document.write('<div class="bit">$images</div>'); _MKP; exit(); } $content .= $page->sidebar;1 point
-
Finally bit the bullet and started learning ProcessWire with my own website. I've been using WordPress for about 10 years (and B2/cafelog before that!) but I really like what I see out of ProcessWire. I figured I should eat my own dog food so to speak before trying to use PW on a client site, so I present my redesigned portfolio site. http://builtbydavid.com/ BTW thanks go to everyone in this forum that contributes information. Whenever I wasn't sure how to do something, the site documentation here helped, and the forum posts helped where the documentation left off.1 point
-
An image is a already separate file from the HTML page, so it will be served independently anyways. You can keep the HTML img tag static and just swap out the image by doing something like this: <img src="/penguin/?of=d00m.jpg" /> <?php if ($input->get->of == 'd00m.jpg') { header("Content-type: image/jpeg"); readfile($page->pics->getRandom()->size(50,50)->url); die(); } Pros: – that url serves a random image every time, no matter how you access it Cons: – the url serves a random image every time, no matter how you access it I’m not really sure how this technique competes against a JS solution, but it’s an approach you can take.1 point
-
I don't know how this is triggered but under version 2.5.14 dev does not add related language page IDs to the database. // ensure all languages are loaded and get instantiated versions of system/default languages foreach($languages as $language) { if($language->id == $defaultLanguagePageID) { $this->defaultLanguagePage = $language; } else if($language->name == 'default') { $_default = $language; // backup plan } } if(!$this->defaultLanguagePage) { if($_default) $this->defaultLanguagePage = $_default; else $this->defaultLanguagePage = $languages->getAll()->first(); } $this->defaultLanguagePage->setIsDefaultLanguage(); $languages->setDefault($this->defaultLanguagePage); Wire::setFuel('languages', $languages); /** * Hook before Inputfield::render to set proper default language value * * Only applies to Inputfields that have: useLanguages == true * */ public function hookInputfieldBeforeRender(HookEvent $event) { $inputfield = $event->object; if(!$inputfield->useLanguages) return; $userLanguage = $this->wire('user')->language; if(!$userLanguage) return; // set 'value' attribute to default language values if($userLanguage->id !== $this->defaultLanguagePageID) { $t = $inputfield->trackChanges(); if($t) $inputfield->setTrackChanges(false); $inputfield->attr('value', $inputfield->get('value' . $this->defaultLanguagePageID)); if($t) $inputfield->setTrackChanges(true); } } The error-causing part is checking the defaultLanguagePageID which wasn't automatically added to the modules table for the LanguageSupport class, hence a quick hack, which is manually finding page IDs and entering the correct info into the data field of LanguageSupport class, as follows, temporarily solves the issue and your install starts working again, since it was a fatal error affecting whole system this may be a lifesaver. You'll see something like this: {"otherLanguagePageIDs":[4220]} Find page IDs and change it to this: {"languagesPageID":4181,"defaultLanguagePageID":4182,"otherLanguagePageIDs":[4219],"languageTranslatorPageID":4183} Trying to add another 3rd language triggers the issue again, changing user default language is harmless. Edit: Trying to delete a language clears whole data field.1 point
-
only way to handle such big images would be a normal file field prepared to load the big ones to have it for download or something else....and save them while uploading in a smarter size in a image field....?1 point
-
Php has to load the image uncompressed to the memory, so you need to have lots of ram and this will be needed everytime you generate a thumbnail. So if you ever have a situation, where multiple thumbnails would be generated, this will slow down the server considerably.1 point
-
I do not know if it is an easter egg or our competitors intrigues, but when i write f-a-s-t a-n-d f-u-r-i-o-u-s without the hythens in personal manager, I get "Drupal and Joomla"))))))) Here too! What should I write to get "ProcessWire"? Maybe "Bigger, Faster, Stronger, Easier"?? Or "Faster and more furious"?.. Didn't work .1 point
-
Have you already tried this https://processwire.com/talk/topic/8007-markupseo-the-all-in-one-seo-solution-for-processwire/?1 point
-
Hi Guys, So we have been working with ProcessWire for sometime now. We absolutely love ProcessWire so much that we have changed our site from a custom build on a custom CMS to WordPress and now ProcessWire and will never go back to anything else. We launched a small version of our site to test the migration from WordPress a couple months ago and now have finalized a new look and feel. We are a small team based out of the Chicagoland area that is eager to grow. Our go to CMS is ProcessWire for our clients. Please take a peak at: QuickToImpress.com We are currently running the latest version of ProcessWire with Template Editor Module. We are looking to start building some of our own modules in the near future. Ryan Cramer, thank you for such an incredible CMS. ProcessWire community, thank you for such an amazing group of fellow developers, designers and SEOS. You guys are all great and have helped us grow so much with answers to API questions, suggestions and advice.1 point
-
@Marvin: thanks for this, the module looks great! Would be interesting to see some sort of a comparison between GIM and PIM features, though, as it's not really obvious from a quick glance what the differences are Would you mind adding a link to this support thread to the modules directory page, by the way?1 point
-
This is affecting certain other modules too - https://processwire.com/talk/topic/7588-admin-custom-files/?p=84276 I'll see if I can find some time later to figure out what changed and see about fixing things, either at the module side, or a core fix from Ryan.1 point
-
Hi, there is a problem with lastest pw dev. After the update I cannot see my rules in the settings page. Save operation works (overwrite all). Tested with 0.4.2 and 0.4.3.1 point
-
Just thought I'd share my git hook (post-receive) that I've been successfully using for a few months now to update my beta site and production site via git (no more ftp!). Might help someone else. As you can see, I only have the "site" folder under version control. But now when I'm thinking about it, site/templates should probably be enough. #!/bin/bash while read oldrev newrev ref do if [[ $ref =~ .*/master$ ]]; then echo -e "Master ref received. \e[42mDeploying master branch to production site...\e[0m" WORKTREE=../site # define your work tree, where you want to push the files cd $WORKTREE # navigate to the work tree GITDIR=../mysite.git # in relation to the "cd" command above # update the working tree git --work-tree=./ --git-dir=$GITDIR checkout -f master git --work-tree=./ --git-dir=$GITDIR clean -fd master # return to git directory cd $GITDIR else echo -e "Ref $ref received. \e[104mDeploying $ref branch to beta site\e[0m" WORKTREE=../beta/site cd $WORKTREE GITDIR=../../mysite.git # in relation to the "cd" command above # update the working tree git --work-tree=./ --git-dir=$GITDIR checkout -f stage git --work-tree=./ --git-dir=$GITDIR clean -fd stage # return to git directory cd $GITDIR fi done1 point