Leaderboard
Popular Content
Showing content with the highest reputation on 10/18/2015 in all areas
-
InputfieldURLChecker This is a tiny module to add a URL check button to InputfieldURL. It's live, meaning that it opens what you just typed in, and visible only if the field is non-empty. It's as unobtrusive as can Modules directory GitHub It would be the best if something similar would be built-in to PW. There will be probably some tweaks and settings in the future. Suggestions welcome (even for module name).3 points
-
Hi all, I thought I'd take this opportunity to announce a module I've been working on for a private project. Although it's not yet complete, I thought I'd take the time out to see if anyone would be interested in it. I only have the module locally on a test site, so if there is any interest, I can upload it somewhere suitable and maybe others can add to it, provide feedback etc. What is HermodBB? Hermod (messenger of the Norse gods) BB (Bulletin Board) is a module that installs a selection of templates and fields that you'd expect for a frontend forum. It also provides some methods to easily save topics and comments. All topics and comments (replies) are simply pages, and are organised like can be seen in the following image. Each forum has checkbox permissions for viewing, posting, pinning etc (see image below). These permissions can then be verified with some simple code (see below). // Use the helper method to pull a list of forum pages $forums = $hbb->forumsRender(); foreach ($forums as $forum) { // Only show the forums to those that are allowed to view them $rolesForumView = $forum->hbb_forum_view; if ($rolesForumView->has('id=' . $user->roles)) { // User has view access for the forum } } HermodBB also makes it easy to add comments to other pages, i.e articles, blogs etc. Comments are added as sub-pages, just like they are for topics. What HermodBB doesn't do HermodBB does not dictate any markup or sanitization. Any sanitization method can be used, and each topic and comment can easily be rendered as required. I'm currently using UIkit and CKEditor, but this can easily be changed to Bootstrap/Foundation etc. It keeps everything simple so that Processwire can do all the heavy lifting. Note: I am aware that there is the excellent comments module by Ryan, and also the Discussions module by Apeisa, but I needed something a little different for my current project, so I decided to have a bash myself. I am by no means on the same level of coding as the majority of members on here, so please be gentle I'd also like to thank Ryan personally for such an excellent framework. Any questions etc, please feel free to ask.3 points
-
It's a syntax error. // This is without the syntax error (note the dots and the single quotes) echo "<a class='link prev' href='" . $page->prev->url . "'>"; BTW: // Potential memory hog $pages->get(1019)->children->first() // This doesn't need to preload all children. The property boolean `true` is to count only the visible. $pages->get(1019)->numChildren(true)3 points
-
So this is basically a recreation of a menu tutorial from W3Bits, tweaked to include the Advanced checkbox hack. Demo. Even the Advanced hack itself was tweaked: apparently this bit is causing issues with Safari, so I removed it: @-webkit-keyframes bugfix { from {padding:0;} to {padding:0;} }I found this particular configuration to work quite nicely. A previous menu I tried had a problem with the menu items staying expanded between media query breakpoints, when resizing the browser. Below is the CSS for the menu. You will notice that it is mobile-first: /* Menu from http://w3bits.com/css-responsive-nav-menu/ */ /* Note: the tutorial code is slightly different from the demo code */ .cf:after { /* micro clearfix */ content: ""; display: table; clear: both; } body { -webkit-animation: bugfix infinite 1s; } #mainMenu { margin-bottom: 2em; } #mainMenu ul { margin: 0; padding: 0; } #mainMenu .main-menu { display: none; } #tm:checked + .main-menu { display: block; } #mainMenu input[type="checkbox"], #mainMenu ul span.drop-icon { display: none; } #mainMenu li, #toggle-menu, #mainMenu .sub-menu { border-style: solid; border-color: rgba(0, 0, 0, .05); } #mainMenu li, #toggle-menu { border-width: 0 0 1px; } #mainMenu .sub-menu { background-color: #444; border-width: 1px 1px 0; margin: 0 1em; } #mainMenu .sub-menu li:last-child { border-width: 0; } #mainMenu li, #toggle-menu, #mainMenu a { position: relative; display: block; color: white; text-shadow: 1px 1px 0 rgba(0, 0, 0, .125); } #mainMenu, #toggle-menu { background-color: #09c; } #toggle-menu, #mainMenu a { padding: 1em 1.5em; } #mainMenu a { transition: all .125s ease-in-out; -webkit-transition: all .125s ease-in-out; } #mainMenu a:hover { background-color: white; color: #09c; } #mainMenu .sub-menu { display: none; } #mainMenu input[type="checkbox"]:checked + .sub-menu { display: block; } #mainMenu .sub-menu a:hover { color: #444; } #toggle-menu .drop-icon, #mainMenu li label.drop-icon { position: absolute; right: 0; top: 0; } #mainMenu label.drop-icon, #toggle-menu span.drop-icon { padding: 1em; font-size: 1em; text-align: center; background-color: rgba(0, 0, 0, .125); text-shadow: 0 0 0 transparent; color: rgba(255, 255, 255, .75); } label { cursor: pointer; user-select: none; } @media only screen and (max-width: 64em) and (min-width: 52.01em) { #mainMenu li { width: 33.333%; } #mainMenu .sub-menu li { width: auto; } } @media only screen and (min-width: 52em) { #mainMenu .main-menu { display: block; } #toggle-menu, #mainMenu label.drop-icon { display: none; } #mainMenu ul span.drop-icon { display: inline-block; } #mainMenu li { float: left; border-width: 0 1px 0 0; } #mainMenu .sub-menu li { float: none; } #mainMenu .sub-menu { border-width: 0; margin: 0; position: absolute; top: 100%; left: 0; width: 12em; z-index: 3000; } #mainMenu .sub-menu, #mainMenu input[type="checkbox"]:checked + .sub-menu { display: none; } #mainMenu .sub-menu li { border-width: 0 0 1px; } #mainMenu .sub-menu .sub-menu { top: 0; left: 100%; } #mainMenu li:hover > input[type="checkbox"] + .sub-menu { display: block; } }Below is the markup outputted using mindplay.dk's method. I found it impossible to output with MarkupSimpleNavigation or MenuBuilder. The homepage is added as the first top-level item. Notice the onclicks that make it work on iOS < 6.0. The clearfix class cf for the top ul is important. Otherwise the element will have no height (got bitten by this..). <nav id="mainMenu"> <label for='tm' id='toggle-menu' onclick>Navigation <span class='drop-icon'>▼</span></label> <input id='tm' type='checkbox'> <ul class='main-menu cf'> <?php /** * Recursive traverse and visit every child in a sub-tree of Pages. * * @param Page $parent root Page from which to traverse * @param callable $enter function to call upon visiting a child Page * @param callable|null $exit function to call after visiting a child Page (and all of it's children) * * From mindplay.dk */ echo '<li><a href="' . $pages->get(1)->url . '">Home</a></li>'; function visit(Page $parent, $enter, $exit=null) { foreach ($parent->children() as $child) { call_user_func($enter, $child); if ($child->numChildren > 0) { visit($child, $enter, $exit); } if ($exit) { call_user_func($exit, $child); } } } visit( $pages->get(1) , function(Page $page) { echo '<li><a href="' . $page->url . '">' . $page->title; if ($page->numChildren > 0) { echo '<span class="drop-icon">▼</span> <label title="Toggle Drop-down" class="drop-icon" for="' . $page->name . '" onclick>▼</label> </a> <input type="checkbox" id="' . $page->name . '"><ul class="sub-menu">'; } else { echo '</a>'; } } , function(Page $page) { if ($page->numChildren > 0) { echo '</ul>'; } echo '</li>'; } ); ?> </ul> </nav>Edit: fixed the end part, thanks er314.2 points
-
@ngrmm: take a closer look at the code Martijn posted and note the semicolon. Looks like your code is still missing that. While developing a site, you should run it in debug mode. This will output errors on screen and make it a lot easier to spot the source of issues like these.2 points
-
This is actually ProcessWire territory and not a Blog one. . I'd suggest that you search and have a read in the forums and docs how ProcessWire implements access controls. As you've figured out, access in ProcessWire is controlled at two levels; the high level (when editing a 'role') and the low level (at the template level).. Also have a good read of the info in the 'role' edit screen. This 'homework' will help you beyond Blog...2 points
-
Just read an interesting article about tungsten.js. Seems to be pretty angularesque with backbone baked in and mustache templating, but more of a focus on server side rendering. Thought I would share it with ya'll if you hadn't seen it yet. Are you interested, I'd like to know why. If you hate it I'd like to hear that too. Article http://www.infoworld.com/article/2993467/javascript/qa-why-tungstenjs-is-not-like-other-javascript-frameworks.html Project link https://github.com/wayfair/tungstenjs2 points
-
If you want to know the source of the error, edit your /site/config.php and set $config->debug = true; Then you should no longer get a white screen on error. Though the fact that you are getting a white screen indicates that maybe the error is occurring before PW even boots. Double check that you replaced your /index.php file with the new one from PW 3.0 as it is completely different (and about 1/4 the size) of the index.php from PW 2.x. I would guess that most likely your white screen is a result of the older index.php still being in place. But if you still get a white screen, edit your /index.php and temporarily add these two lines to the top of the file, after the opening <?php tag: ini_set('display_errors', 1); error_reporting(E_ALL | E_STRICT); Now you should see the source of the error. Those two lines are essentially what debug mode enables, but adding them directly in your index.php means you can get errors that occur before PW even looks at your debug mode setting. Please report back the error message you see.2 points
-
2 points
-
2 points
-
v0.7 is ready. Download link in the first post. Configuration Changelog fixed link height when URL field is under admin tab (works with ajax-loaded tabs) fixed link height when first tab didn't have any URL field namespaced JS new option: ctrl+shift+click and ctrl+shift+enter modes new option: force http prefix new option: limit module to list of enabled fields What I plan to add in the future is opening links in a lightbox, and perhaps allowing all 3 modes to be used at the same time. But I think I'll do these only if there's a demand.2 points
-
Hi Pete, Thanks for the prompt reply (on a Sunday!) I'm using Processwire 2.6.x. I would be hesitant to move to v3.x mainly because it's Alpha software and it's for a site that's already Live at the moment. I also haven't built enough Unit Tests to be confident to doing such a migration. You mentioned Root Namespace in your reply, so I tried to instantiate using \PageArray and it seems to have worked. Thanks again!2 points
-
Take a read... https://processwire.com/talk/topic/2868-count-views-of-post/ https://processwire.com/talk/topic/1618-page-view-counter-and-cache/ just create a field and count the field value while a "guest" is calling the page... even clicks can be counted if you have a one file = one page approach to deliver the file - so on every call the file/page you can count a "click" regards mr-fan Ps.: try out the better and good working google search on this forum... https://cse.google.com/cse/publicurl?cx=014789015761400632609:fxrf0rj4wr42 points
-
FieldtypeRuntimeMarkup and InputfieldRuntimeMarkup Modules Directory: http://modules.processwire.com/modules/fieldtype-runtime-markup/ GitHub: https://github.com/kongondo/FieldtypeRuntimeMarkup As of 11 May 2019 ProcessWire versions earlier than 3.x are not supported This module allows for custom markup to be dynamically (PHP) generated and output within a page's edit screen (in Admin). The value for the fieldtype is generated at runtime. No data is saved in the database. The accompanying InputfieldRuntimeMarkup is only used to render/display the markup in the page edit screen. The field's value is accessible from the ProcessWire API in the frontend like any other field, i.e. it has access to $page and $pages. The module was commissioned/sponsored by @Valan. Although there's certainly other ways to achieve what this module does, it offers a dynamic and flexible alternative to generating your own markup in a page's edit screen whilst also allowing access to that markup in the frontend. Thanks Valan! Warning/Consideration Although access to ProcessWire's Fields' admin pages is only available to Superusers, this Fieldtype will evaluate and run the custom PHP Code entered and saved in the field's settings (Details tab). Utmost care should therefore be taken in making sure your code does not perform any CRUD operations!! (unless of course that's intentional) The value for this fieldtype is generated at runtime and thus no data is stored in the database. This means that you cannot directly query a RuntimeMarkup field from $pages->find(). Usage and API Backend Enter your custom PHP snippet in the Details tab of your field (it is RECOMMENDED though that you use wireRenderFile() instead. See example below). Your code can be as simple or as complicated as you want as long as in the end you return a value that is not an array or an object or anything other than a string/integer. FieldtypeRuntimeMarkup has access to $page (the current page being edited/viewed) and $pages. A very simple example. return 'Hello'; Simple example. return $page->title; Simple example with markup. return '<h2>' . $page->title . '</h2>'; Another simple example with markup. $out = '<h1>hello '; $out .= $page->title; $out .= '</h1>'; return $out; A more advanced example. $p = $pages->get('/about-us/')->child('sort=random'); return '<p>' . $p->title . '</p>'; An even more complex example. $str =''; if($page->name == 'about-us') { $p = $page->children->last(); $str = "<h2><a href='{$p->url}'>{$p->title}</a></h2>"; } else { $str = "<h2><a href='{$page->url}'>{$page->title}</a></h2>"; } return $str; Rather than type your code directly in the Details tab of the field, it is highly recommended that you placed all your code in an external file and call that file using the core wireRenderFile() method. Taking this approach means you will be able to edit your code in your favourite text editor. It also means you will be able to type more text without having to scroll. Editing the file is also easier than editing the field. To use this approach, simply do: return wireRenderFile('name-of-file');// file will be in /site/templates/ If using ProcessWire 3.x, you will need to use namespace as follows: return ProcessWire\wireRenderFile('name-of-file'); How to access the value of RuntimeMarkup in the frontend (our field is called 'runtime_markup') Access the field on the current page (just like any other field) echo $page->runtime_markup; Access the field on another page echo $pages->get('/about-us/')->runtime_markup; Screenshots Backend Frontend1 point
-
What it does: you can easily define replacement-tags in your fields (also descriptions) like this: [demo] => '<span class="demo">some demo markup</span>', [demo2] => '<span class="demo">some other demo markup</span>', [demo3] => '<span class="demo">one more demo markup with a <a href="#" class="pw-modal">modal link</a>!</span>', Screenshot: Why? today i had to (to be more precise: i wanted to) have a link in one of my field-descriptions that opened a modal to a list of icons... basically i just wanted to add a "pw-modal" class to the link what is not possible through markdown [link](http://example.com) i ended up with the following little module: // removed - please see the code on github its also on github: https://github.com/BernhardBaumrock/ProcessWireModules/blob/master/InputfieldTagReplacer.module i know but didn't use RuntimeMarkup because i wanted the link in the description not in a separate field! Questions: would it be possible to get the currently edited $page somehow? the $page object i get now is the admin page with the according process. it would be nice to be able to do things like $page->parent or the like... would there be another method to hook into that would be more efficient or better in any other way? how can i debug the $event object? i tried var_dump($event); die(); but that showed nothing var_dump($event->return); die(); shows the form/field markup would there have been an easier way to achieve this?1 point
-
Would anyone else like to see the ability to make use of PW variables to build up dynamic descriptions and notes for fields? This is a very simplistic example and not that useful, but I do have some use cases where the ability to do something like this would be very handy: $f->description = __('Please make sure you fill out this field based on the content of the {page.parent.title} summary field.'); As I said - a bad example, but I think this could be a powerful addition in some scenarios.1 point
-
Thanks for the offer, however I don't feel that HBB warrants any sort of payment as it is essentially a simple module. I will indeed give access to the code shortly. I'm not sure if it'll dissapoint, but I'll let you be the judge of that. I am interested in finding out what features people would like included. I'm keeping it as simple as possible, but so far there are fields to store the following information: Author's IP address & user agent string Topic / comment message content Creation / edit date (if edited) Pinned status Locked status Who has viewed the topic Which members can view the topic (ideal for private messages) The $page ID of the comment for reply status reference I'm toying with the idea to add fields for images and attachments, thus allowing the option to store images or attachments with comments, a bit like you can do with this forum.1 point
-
Hi Gayan, thank you very much! I'm happy that I found your Blue VR Site, everything must look good with it. I checked the paths and corrected them, now fancybox is working I just don't know how and where to put the .gallery class to. Where can I find the the anchor tag? (I'm sorry, I'm a beginner) I put this into the _done.php, but I think it has to be moved to this anchor tag <script type="text/javascript"> $(document).ready(function() { $(".gallery").fancybox(); });1 point
-
1 point
-
1 point
-
Which version of ProcessWire are you using? I'm guessing 2.x. Version 3.x has namespaces baked in so might be a better way to go to test things - everything starts off in the ProcessWire namespace I believe: https://processwire.com/blog/posts/processwire-2.6.20-and-surprise-processwire-3.0-alpha-1/#processwire-3.0-alpha-1 That topic also explains that 2.x runs in the root PHP namespace, so what you've done above is set your own namespace and then everything that follows is looking for that namespace, but ProcessWire is in the root PHP namespace (2.x) or in the ProcessWire\ namespace (3.x). So any advice will depend on the version you're using really.1 point
-
Changed the best answer because Sinnut is right, scripts that are to alter things after a big import routine should only be run once, not repeatedly. Also, it might be worth having another field called something like "languages_done" so if you do your import of new pages more than once you can store a 1 in that field and skip over the pages that are already done and only do the new pages otherwise you're changing and saving the existing pages too.1 point
-
1 point
-
A million thanks elabx! This sounds pretty logical, I will try it right away. I'm teaching myself webdesign and I still miss a lot of the basic skills. This will take a while1 point
-
Hi Leopold, What you would need to do to add Fancybox is pretty simple, you just have to add the necessary javascript to the template that is rendering the current page (in this profile javascript is added in the _done.php template file, around line 117) and add the necessary CSS classes to your images. For example, in the previous link you posted about making galleries with PW, here is the part that echoes the linked thumbnail: echo "<p><a href='{$image->url}'><img src='{$thumbnail->url}' alt='{$thumbnail->description}' ></a></p>"; Let's say you want to use the CSS class "gallery" to mark which thumbnails will be "fancyboxed": echo "<p><a class='gallery' href='{$image->url}'><img src='{$thumbnail->url}' alt='{$thumbnail->description}' ></a></p>"; And according to the fancybox documentation, you would need to add this line of javascript (for basic functionality): $(".gallery").fancybox(); Just take a good look at where the javascript is added, because there is an IF statement that prepares the template in case the AIOM module is installed.1 point
-
Thanks a lot biotech! I already tried to make a gallerie this way: http://watanabe-yakushima.com/gallerie/ It just doesn't look very good and I thought there has to be a more elegant way to do it. I would really love to use the FancyBox jQuery script/plugin but I don't know how to combine it with the Blue VR Site.1 point
-
If you didn't yet, check the latest post from the blog, Ryan explains a lot there https://processwire.com/blog/posts/processwire-2.6.20-and-surprise-processwire-3.0-alpha-1/ Try setting compatibility with 2x to see if all works $config->compat2x = true If it does, work and you want to try the new features (what would be the point of installing this version if not?), put it back to false and check if you are calling wire() on your templates, if that's the case, either change those call to the equivalent variables ($page, $pages, etc...) or add the PW namespace to the top of those template files namespace ProcessWire; I think you'll have to do this also for each module.1 point
-
Yes, it's working, thank you. Would be good to reflect this behaviour in modules directory (and github).1 point
-
Welcome Leo, The link you posted is a tutorial if you want to make something from scratch. Using what you get with this profile you could make a new page under Home > and call it say "Gallery" and then based on this you can decide what look/template of that page you want ( 'basic' or 'basic w sidebar'). Then you can use Body field to put your images (add image first via image field) using the editor or maybe even better use the 'On Page Blocks' to add image w maybe description to go along. This way you could create a look similar to blog postings. ............ [ image ] [ image ] ............ ............ [ image ] [ image ] ............ This, of course, is the simplest form of 'gallery' without any slideshows and thumbnail approach.1 point
-
SimpleForms Alpha bumped to 0.8.0, featuring support for YAML configuration (proudly powered by symfony/yaml), in addition to JSON. You can now use a config.yaml file instead of config.json. Note that that JSON is preferred over YAML in the case that both files exist. An example YAML config file is in the default-forms directory. As you just noticed, the form directory is no longer named "forms" - it is now named "default-forms". When you install the module, the contents of this directory is copied to site/assets/forms. To me, this seems to be best-practice, considering the fact that the previous directory was wiped out on module upgrade. Lastly, you may find that, in some situations, selected fields need to be disabled when the form is rendered. For example, a "subject" field may need to be pre-populated based on a GET parameter and, therefor, read only. Often, the readonly attribute is enough, but I think disabled is better. Previously, such a field would be re-enabled after the form was processed and validation errors occurred (you may have noticed that the entire form is disabled when the form is processing). Now, these state of these fields persist by adding data-sf-disabled when the form is prepared by the front-end plugin. This makes the behaviour consistent with the intention.1 point
-
I mostly just need a grid and a solid typography solution.1 point
-
This looks great, I'd love to see a full forum system:) Well this is exciting, mind sharing some code or a github so that we can take a peek? The structure looks like it makes sense.1 point
-
Is there any way I can send you money? (On some occasions I believe I have threatened to send money to someone brave enough to take a stab at creating a PW-based forum solution)1 point
-
Hi @Gazley, There is no denying, Semantic UI is very beautiful. However UI Kit has a few more modules that lets me get work out of the door quicker (and make a bigger profit). Here are a few things that I really really like about UI Kit and some things that I don't. Grid 1. data-uk-grid-margin This will add a top margin based on the grid margin when the column is collapsed. This means on mobile no elements are sitting right on top of each other. Instead they have a nice margin between each section. 2. data-uk-grid-match Great for having columns in which you want equal heights, you can do some pretty nice visual designs with this. Such as 50%/50% full width layouts. Components 1. Parallax Like most things with UI Kit it's completely modular and I only include elements I want to use, this makes it super easy. Parallax is one of those elements, it means I can easily add in Parallax elements and still keep it all in the UI Kit Framework. Other useful components include... 2. Dynamic Grid Much like Isotope js, this allows you to create dynamic filterable grids. 3. Sliders There is many options here, there is Slider which allows for mouse scroll and is great for mobile. Slideset which is filterable, great for showing things like clients and Slideshow which is just your usual slider. This comes with plenty of animations, which is all also modular. Core 1. Flex components While not completely supported by older browsers, this gives great control over positioning of content, such as centering content in a div. Combine this with data-uk-grid-match and .uk-flex-middle, you can create absolutely beautiful looking sites. 2. Text Columns Responsive text columns are great, while they are relatively new in not widely supported in browsers, it's great you have that option for modern browsers. 3. Scrollspy Great for the elements that animate on scroll, you can add any class to this also (or even use the javascript event) to have full controls. Javascript Events You can easily hook into Ui Kits javascript events to add custom javascript when certain things happen when using the modules. I know most frameworks have this, but it's a nice things to have. Here is a CodePen showing off a few things that I mentioned (I've tried to put in as many as possible): http://codepen.io/anon/pen/dYVRgQ --- The Bad So here is the bad, not all the components are well polished and require little fixed. For example sliders (used in my example), I much prefer showing them 1 by 1 as it's nice for iPhone uses to use touch controls. However, if there is less than 4 elements, there is sometimes a white flicker on the previous slide as you slide through. It's subtle but it happens. I get around this by making the background black to the slider. It isn't a fix but it makes it less noticeable. The sticky menu doesn't play nicely with the offCanvas and will sometimes stick, I use CSS to get around this applying left: auto !important. Resizing the screen while offCanvas is open will not recalculate the width, breaking the responsive. I got around this by applying width: 100% !important; to the offCanvas overlay. One more thing is that it doesn't apply box-sizing: border-box globally by default, while this isn't much of a problem and more of a personal preference. Overall, these problems are being ironed out and github is getting more active. I do wish for the github community to grow as there are plenty of talented coders out there and UI Kit for me is a great framework which comes with many useful features and most importantly is modular to keep sites lightweight.1 point
-
I'll spend a little snippet to render a nice admin table in such kinds of dashboard.... //lets's show some last events //rootpage of articles is XXXX // Find some pages $events = $pages->find("template=event,check_active=0,limit=5,sort=event_start_date,sort=event_start_time"); $table = $modules->get("MarkupAdminDataTable"); $table->headerRow( ["Title", "Created", "User"] ); $table->setSortable(false); $table->action(array( 'New Event' => $config->urls->admin . 'page/add/?parent_id=XXXX', 'All Events' => $config->urls->admin . 'page/events/', )); foreach($events as $page){ $data = array( // Values with a sting key are converter to a link: title => link $page->title => $config->urls->admin."page/edit/?id=".$page->id, date("F j, Y", $page->created), $page->createdUser->full_name ); $table->row($data); } // $table->footerRow( $someArray ); echo '<div class="someclass">'; ">'; echo $table->render(); echo '</div>'; renders something like this: have fun1 point
-
1 point
-
There are many usefull situations like: 1. If you have a page for settings or tools with general entries/items and you use them on other pages like in a contactform you use the email field from the /settings/ page you could show this general fields on several places/templates 2. more advanced example could be to render statistic like content from subpages - imagine if you have a ad system that is counting views and clicks you could render a little stat with some html and some css/js at the rootpage of the ad's... 3. special for overview pages/rootpages it provides options to put some extra information/logic in such pages without the use of pagetable or something other complex.. 4.... you get the idea regards mr-fan1 point
-
this new module could maybe do the job in most cases: https://processwire.com/talk/topic/10804-module-runtimemarkup-fieldtype-inputfield/1 point
-
1 point
-
This is how we use this: www.maindomain.com // This is the mainsite, runs just like any other pw-site www.campaign.com // This is the first one using multisite, this domain is entered into module settings, but also as page under maindomain.com www.anothercampaign.com // Just like the above Admin for all these pages is accessible from www.maindomain.com/processwire/ First level of site tree from maindomain.com looks like this: About Us News Contact us Sitemap www.campaign.com (hidden) www.anothercampaign.com (hidden) I won't suggest building very complicated setups with this, but it is superb for few specific campaign sites (especially if same people maintain or they reuse the data between). If you have many big sites under same site, you will end up with huge amount of templates & fields.1 point