Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 09/10/2017 in all areas

  1. I've just upgraded the forums due to an important security patch being released. There was a bit of a dilemma in that the forum upgrade was guaranteed to break the theme that blended the forum software into the rest of the site design as it was a fairly major release that contained the fix. I chose to upgrade the forums anyway as the security issue was big enough to warrant a little discomfort in the short-term. Please bear with me over the next 24 hours as I get things looking back to normal again.
    7 points
  2. Well, if you're going to get your hands dirty, can I make a request? This has been bothering me for a long time. https://processwire.com/talk/topic/15983-better-mobile-reading-experience-for-code-snippets-in-forum/
    3 points
  3. @bernhard, I've found a way. Hooking ProcessPageEdit::buildForm works wire()->addHookAfter('ProcessPageEdit::buildForm', function (HookEvent $e) { /** @var ProcessPageEdit $edit */ $templates = ['post', 'basic']; $edit = $e->object; $page = $edit->getPage(); if (!in_array($page->template->name, $templates)) return; /** @var InputfieldForm $form */ $form = $e->return; /** @var InputfieldImage $imageField */ $imageField = $form->children->findOne('name=images'); if (!$imageField) return; $imageField->maxFiles = 1; }); When I try to add more images, field just replaces the first one, not allowing more than one. If there were multiple images before, they disappear after page save, only the first one remains.
    3 points
  4. While I was reading Smashing Magazine, I discovered this handy tool called XRespond that lets you load webpages in iframes that are designed to simulate different devices, (similar to how browsers' mobile simulators work). I think it's quite useful for local development. In fact it works for any website as long as it doesnt have `X-Frame-Options` headers set to `sameorigin`. I highly recommend using it with browser-sync with live loading as well. I use this settings when using it with PHPStorm to live reload my dev site on pw.dev. // remember set cwd to /site/templates/ or call it from templates directory path/to/browser-sync.cmd start --proxy pw.dev --port 8080 --files "**/*.php" --files "assets/**/*.css" --files "assets/**/*.css" What other tools/utilities do you use for testing your responsive designs?
    2 points
  5. @abdus i like the idea of using only one field and adding options via hooks, but i don't think it's the most userfriendly to throw an exception after pagesave in case someone uploads more than 1 image. i guess it should be possible to set the max-file setting and show the upload on the client side before upload?
    2 points
  6. I've updated the download thread with v2 of FieldtypeFieldsetGroup, which I think should fix the issue mentioned here. This version also excludes the _END field per abdus request.
    2 points
  7. I can't duplicate that one here yet, but InputfieldFieldsetOpen is a quasi module, so starting to see how that might happen. Wondering if you change line 472 to this, if that fixes it? $inputfield = parent::getInputfield($page, $field); You are right there's no reason for it to show that, so I'll update to exclude it. The working solution you found is the way I usually do it. However, you could also do if($f->type instanceof FieldtypeFieldsetClose). It will add the fields, but you have to hit "Save" first. So add the FieldsetGroup field to your template, then Save, and then you'll see the fields in the fieldset.
    2 points
  8. Hey @bernhard - I took another look at the $wire variable not being available in ready.php (and init.php / finished.php) and this has been fixed in the latest version. Please confirm it all works at your end please.
    2 points
  9. Should both be set to 14px now on mobile/tablet sizes.
    1 point
  10. Okay, I think the main offending items have been dealt with in terms of odd/broken layouts since the upgrade aside from one or two things like new fonts creeping in. If you spot anything that I've missed that looks obviously broken, please post it here. It may be that some are new design choices by the forum software developers but please list them anyway and I'll look at each of them as soon as possible.
    1 point
  11. I dont think it's too bad, I kinda like it.
    1 point
  12. You're absolutely right, @bernhard. It's certainly possible. When an exception is thrown, page doesn't save and whatever changes has been made will be reverted back. It was more of a proof of concept. I guess showing a warning instead of throwing exception would be a better, non-destructive way of warning the editors. I'm not sure if I can hook into ProcessPageEdit and change image field settings before it's rendered. I'm going to look into it.
    1 point
  13. Here's what I think : I had an 'old' processwire directory which I downloaded through Git and which I thought was up-to-date with master (not dev branch) so I really imagined I was with 3.0.62. (I'm sure I did a git pull but I guess not...) And today I added PW version in my footer and saw 3.0.36 and imagined I forgot about the version number _ must have been 3.0.32 and they've already made some changes and now it's 3.0.36... Anyway, you see how good I am with Git and some stuff So I'm really sorry about all these issues which shouldn't have happened if I had done things correctly. I'll update for real (!) and see how it goes. Thanks again for your help and time. I appreciated a lot ! And about my Tracy 'theme' : I just use my computer 'negative' mode because I have eyesight problems and I feel better this way. So no leaking, don't worry EDIT : 3.0.62 installed : I can confirm, there is no more a bug with the 2 forms of 'find' statements.
    1 point
  14. Thanks - I took a look and your /wire/config.php file is missing these lines: https://github.com/processwire/processwire/blob/57b297fd1d828961b20ef29782012f75957d6886/wire/config.php#L869-L906 I just realized the issue - you mentioned that you are running PW 3.0.36. The latest stable version is 3.0.62 and the latest dev is 3.0.74. If you update to either one of those, all your errors should go away. I am curious how you ended up with 3.0.36 - where did you download that from? OT - did you intentionally restyle (colors) the Tracy console panel, or is that CSS leaking through from your site somehow?
    1 point
  15. Luckily, we have more than a dozen real devices. We don't rely on just desktop browser resizing and emulation. Only exception being responsive HTML emails, where we use Litmus - but thank God we only do such stuff like once a year.
    1 point
  16. I'm currently using the Window Resizer Chrome extension.
    1 point
  17. Maybe one can make optional module settings for this problem. Listing every language used on the website and a field for the ISO and a checkbox. When checked it renders the "custom" ISO for this language.
    1 point
  18. @Mike Rockett There are 3 problems with the module: 1. The iso for the default language as @maxf5 mentioned. 2. Some pages are completely ignored 3. Wrong sitemap markup. Each link must have it's alternate links not just the default one. I'm currently using the below method for a proper multi-language sitemap. 1st step Create a php file "sitemap-xml-multilanguage.php" with the below code and add it on /site/templates/ folder. <?php namespace ProcessWire; if (!wire('modules')->isInstalled('LanguageSupportPageNames')) throw new WireException('Missing module: LanguageSupportPageNames'); // Exclude pages here function selectors() { $selectors = array( '', // E.g. template!=variations ); return implode(',',$selectors); } function renderSitemapPage(Page $page) { $out = ''; foreach (wire('languages') as $lg) { if (!$lg->isDefault() && !$page->{"status$lg->id"}) continue; $out .= "\n<url>" . "\n\t<loc>" . $page->localHttpUrl($lg) . "</loc>" . renderSitemapAlternateLangs($page) . "\n\t<lastmod>" . date("Y-m-d", $page->modified) . "</lastmod>" . "\n</url>"; } return $out; } function renderSitemapChildren(Page $page) { $out = ''; $newParents = new PageArray(); $children = $page->children(selectors()); foreach($children as $child) { $out .= renderSitemapPage($child); if($child->numChildren) $newParents->add($child); else wire('pages')->uncache($child); } foreach($newParents as $newParent) { $out .= renderSitemapChildren($newParent); wire('pages')->uncache($newParent); } return $out; } function renderSitemapAlternateLangs(Page $page) { $out = ''; foreach(wire('languages') as $lg) { if (!$lg->isDefault() && !$page->{"status$lg->id"}) continue; $iso = $lg->language_iso_code; // Custom text field for ISO under system's language template $out .= "\n\t<xhtml:link rel=\"alternate\" hreflang=\"$iso\" href=\"".$page->localHttpUrl($lg)."\"/>"; } return $out; } function renderSitemapXML(array $paths = array()) { $out = '<?xml version="1.0" encoding="UTF-8"?><urlset xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns="https://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="https://www.w3.org/1999/xhtml" xsi:schemaLocation="https://www.sitemaps.org/schemas/sitemap/0.9 https://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd">'; array_unshift($paths, '/'); foreach($paths as $path) { $page = wire('pages')->get($path); if(!$page->id) continue; $out .= renderSitemapPage($page); if($page->numChildren) $out .= renderSitemapChildren($page); } $out .= "\n</urlset>"; return $out; } header("Content-Type: text/xml"); echo renderSitemapXML(); Note: The above code if I remember correctly is based on @ryan and @kixe code. 2nd step Add the new template "sitemap-xml-multilanguage" in PW and under URLs tab on "Should page URLs end with a slash?" select "No". 3rd step Create a new page under "Home" with the title "sitemap.xml" by using the "sitemap-xml-multilanguage" template. Final step Create a text field with the name "language_iso_code" and add it under system's language template under "Setup > Templates > Show system templates? > Yes. Then on each language under "Setup > Languages" you will have to add the iso name. This is useful for the default language. Here are the results I'm getting on http://localhost/mysite/sitemap.xml with my method: <urlset xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns="https://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="https://www.w3.org/1999/xhtml" xsi:schemaLocation="https://www.sitemaps.org/schemas/sitemap/0.9 https://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd"> <url> <loc>http://localhost/mysite/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/"/> <lastmod>2017-09-02</lastmod> </url> <url> <loc>http://localhost/mysite/en/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/"/> <lastmod>2017-09-02</lastmod> </url> <url> <loc>http://localhost/mysite/nea/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/nea/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/news/"/> <lastmod>2017-08-27</lastmod> </url> <url> <loc>http://localhost/mysite/en/news/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/nea/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/news/"/> <lastmod>2017-08-27</lastmod> </url> <url> <loc>http://localhost/mysite/parastaseis/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/parastaseis/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/shows/"/> <lastmod>2017-08-07</lastmod> </url> <url> <loc>http://localhost/mysite/en/shows/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/parastaseis/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/shows/"/> <lastmod>2017-08-07</lastmod> </url> <url> <loc>http://localhost/mysite/omada/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/omada/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/meet-the-team/"/> <lastmod>2017-08-25</lastmod> </url> <url> <loc>http://localhost/mysite/en/meet-the-team/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/omada/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/meet-the-team/"/> <lastmod>2017-08-25</lastmod> </url> <url> <loc>http://localhost/mysite/epikoinwnia/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/epikoinwnia/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/contact/"/> <lastmod>2017-09-02</lastmod> </url> <url> <loc>http://localhost/mysite/en/contact/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/epikoinwnia/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/contact/"/> <lastmod>2017-09-02</lastmod> </url> <url> <loc>http://localhost/mysite/nea/test-4/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/nea/test-4/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/news/test-4/"/> <lastmod>2017-08-14</lastmod> </url> <url> <loc>http://localhost/mysite/en/news/test-4/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/nea/test-4/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/news/test-4/"/> <lastmod>2017-08-14</lastmod> </url> <url> <loc>http://localhost/mysite/nea/test-3/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/nea/test-3/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/news/test-3/"/> <lastmod>2017-08-11</lastmod> </url> <url> <loc>http://localhost/mysite/en/news/test-3/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/nea/test-3/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/news/test-3/"/> <lastmod>2017-08-11</lastmod> </url> <url> <loc>http://localhost/mysite/nea/test-2/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/nea/test-2/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/news/test-2/"/> <lastmod>2017-08-11</lastmod> </url> <url> <loc>http://localhost/mysite/en/news/test-2/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/nea/test-2/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/news/test-2/"/> <lastmod>2017-08-11</lastmod> </url> <url> <loc>http://localhost/mysite/nea/test-1/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/nea/test-1/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/news/test-1/"/> <lastmod>2017-08-11</lastmod> </url> <url> <loc>http://localhost/mysite/en/news/test-1/</loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/nea/test-1/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/news/test-1/"/> <lastmod>2017-08-11</lastmod> </url> <url> <loc> http://localhost/mysite/parastaseis/test/ </loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/parastaseis/test/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/shows/test/"/> <lastmod>2017-09-04</lastmod> </url> <url> <loc> http://localhost/mysite/en/shows/test/ </loc> <xhtml:link rel="alternate" hreflang="el" href="http://localhost/mysite/parastaseis/test/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/shows/test/"/> <lastmod>2017-09-04</lastmod> </url> </urlset> and here are the results from your module: <urlset xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns="https://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="https://www.w3.org/1999/xhtml" xsi:schemaLocation="https://www.sitemaps.org/schemas/sitemap/0.9 https://www.sitemaps.org/schemas/sitemap/0.9/siteindex.xsd"> <url> <loc>http://localhost/mysite/</loc> <lastmod>2017-09-02T05:37:50+03:00</lastmod> <xhtml:link rel="alternate" hreflang="home" href="http://localhost/mysite/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/"/> </url> <url> <loc>http://localhost/mysite/parastaseis/</loc> <lastmod>2017-08-07T09:51:08+03:00</lastmod> <xhtml:link rel="alternate" hreflang="home" href="http://localhost/mysite/parastaseis/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/shows/"/> </url> <url> <loc> http://localhost/mysite/parastaseis/test/ </loc> <lastmod>2017-09-04T11:06:36+03:00</lastmod> <xhtml:link rel="alternate" hreflang="home" href="http://localhost/mysite/parastaseis/test/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/shows/test/"/> </url> <url> <loc>http://localhost/mysite/omada/</loc> <lastmod>2017-08-25T20:27:09+03:00</lastmod> <xhtml:link rel="alternate" hreflang="home" href="http://localhost/mysite/omada/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/meet-the-team/"/> </url> <url> <loc>http://localhost/mysite/epikoinwnia/</loc> <lastmod>2017-09-02T04:10:51+03:00</lastmod> <xhtml:link rel="alternate" hreflang="home" href="http://localhost/mysite/epikoinwnia/"/> <xhtml:link rel="alternate" hreflang="en" href="http://localhost/mysite/en/contact/"/> </url> </urlset> I hope it can help you fix your module.
    1 point
  19. Dear Abdus, That worked! Thank you! Really appreciate help from you, and BitPoet, and OF COURSE, Ryan and team for making such a great CMF! Peter
    1 point
  20. Does this help? In many core modules @ryan uses this method to build multi-instance aware modules. Give your object to wire() function, it injects a specific instance to it $d1Page = $DOMAIN_1_site->wire(new Page()); $d2Page = $DOMAIN_2_site->wire(new Page()); /** * Get an API variable, create an API variable, or inject dependencies. * * This method provides the following: * * // ... * * // Inject dependencies during construct * $newPage = $this->wire(new Page()); * ~~~~~ * * @param string|object $name Name of API variable to retrieve, set, or omit to retrieve the master ProcessWire object. * @param null|mixed $value Value to set if using this as a setter, otherwise omit. * @param bool $lock When using as a setter, specify true if you want to lock the value from future changes (default=false). * @return ProcessWire|Wire|Session|Page|Pages|Modules|User|Users|Roles|Permissions|Templates|Fields|Fieldtypes|Sanitizer|Config|Notices|WireDatabasePDO|WireHooks|WireDateTime|WireFileTools|WireMailTools|WireInput|string|mixed * @throws WireException * * */ public function wire($name = '', $value = null, $lock = false) { if(is_null($this->_wire)) { // this object has not yet been wired! use last known current instance as fallback // note this condition is unsafe in multi-instance mode $wire = ProcessWire::getCurrentInstance(); if(!$wire) return null; // For live hunting objects that are using the fallback, uncomment the following: // echo "<hr /><p>Non-wired object: '$name' in " . get_class($this) . ($value ? " (value=$value)" : "") . "</p>"; // echo "<pre>" . print_r(debug_backtrace(), true) . "</pre>"; } else { // this instance is wired $wire = $this->_wire; } if(is_object($name)) { // make an object wired (inject ProcessWire instance to object) if($name instanceof WireFuelable) { if($this->_wire) $name->setWire($wire); // inject fuel, PW 3.0 if(is_string($value) && $value) { // set as new API var if API var name specified in $value $wire->fuel()->set($value, $name, $lock); } $value = $name; // return the provided instance } else { throw new WireException("Wire::wire(\$o) expected WireFuelable for \$o and was given " . get_class($name)); } } // ... }
    1 point
  21. Some points: You can get inputs in an array if you name them as profession[] instead of profession_1, profession_2 ... etc. $input->post->profession will give you an array directly Using this method for the input field outside foreach() block (one with count + 1) will achieve what you want without using indices. Also you can clone that field indefinitely to let user create as many jobs as he/she wants Is there a reason why you're outputting professions on the frontend, only to replace with $page's on form submit? Thrashing and creating a lot of pages at once will probably slow the page down to a crawl. I simplified the code a bit <?php namespace ProcessWire; /** @var $input WireInput */ /** @var $page Page */ if ($input->post->submit) { // check if there are any professions if ($input->post->professions && count($input->post->professions)) { $page->of(false); $newItems = []; foreach ($input->post->professions as $val) { // always sanitize user input /** @var $sanitizer Sanitizer */ $val = $sanitizer->entities1($val); $val = $sanitizer->text($val); if (!$val) continue; $item = $page->professions->getNewItem(); $item->profession = $val; $item->save(); $newItems[] = $item; } if (count($newItems)) { $page->professions->removeAll($newItems); $page->professions->add($newItems); $page->save('professions'); } } } ?> <form method="post"> <?php foreach ($page->professions as $i => $prof): ?> <input type="text" name="professions[]" value="<?= $prof->profession ?>"/> <?php endforeach; ?> <!-- I guess for a new profession? --> <input type="text" name="professions[]" value=""/> <input type="submit" name="submit" value="submit"/> </form> Frankly, I can't say I fully understand what this form really does, so it'd be better if you explain your requirements a bit more
    1 point
  22. Let me introduce you to Field - Template Contexts https://processwire.com/videos/field-template-context/ As for the multiple/single image fields, I usually have a single image field that is set to return an array, and use only what I need by getting the first image or filtering with tags. I rarely, if ever need to create a second images or files field. With template contexts, change the description and notes to guide the editor and use it in the templates however you want. You might add some checks with hooks and throw error if someone added more than one image to a template. wire()->addHookBefore('Pages::saveReady', function (HookEvent $e) { $limitedTemplates = ['post', 'event']; // limit to only one image /** @var Page $page */ $page = $e->arguments('page'); if(!in_array($page->template->name, $limitedTemplates)) return; if ($page->images->count > 1) throw new WireException('Only one image is allowed'); });
    1 point
  23. I have the TracyDebugger installed and I'll try to do what you're asking me with pleasure, but I have to stop right now (time to eat at home, daughters hungry... ) I'll do that tomorrow and keep you updated about my progress. And I agree with your advice about installing modules directly from within ProcessWire. It is indeed quite simple
    1 point
  24. That fatal error is an interesting one and suggests a possible bug in ProcessWire. You should not have to (and probably shouldn't) disable that mysql setting. I would like to know what selector in your template (that calls the PageFinder) is resulting in that error. Is it possible for you to narrow that error down to a specific $pages->find selector?
    1 point
  25. Before you buy you can see all options for the module on the skyscrapers demo website. http://demo.processwire.com/admin/
    1 point
  26. First of all thank you @ryan. This is why I love ProcessWire: The community requests a feature and instead of just realizing it, you come up with multiple solutions to this request. I have tried the new FieldsetGroup and it comes in really handy. I had only two issues: The bug @abdus mentioned earlier in line 475. I have commented it out in the module for now, to get the module working, but hopefully it wasn't anything necessary and will be fixed. Is it correct, that the fields inside the FieldsetGroup only get added to the template, if you use the actions tab inside the field configuration? I tried adding it in the template configuration, but it only added the fieldset, not the fields inside the fieldset. Maybe it is a bug, but I would have expected it to add all the fields. Regards, Andreas
    1 point
  27. If the two domains point to the same server and document root, then you should probably just do a wildcard redirect. Or, even better, make it redirect if the non-IDN is not being accessed (seeing as it's the only domain in your hosts array): RewriteCond %{HTTP_HOST} !muehldorf\.de$ [NC] RewriteRule ^ http://muehldorf.de%{REQUEST_URI} [R=302,L] I'd recommend that you make this one of the first condition/rule sets, just under RewriteEngine On.
    1 point
  28. Hello, this module has been updated and it is now compatible with Graph API version 2.10. Parameters 'description' and 'name' are not supported by the new Graph API version. Therefore, fields for description and name cannot be provided anymore.
    1 point
  29. You will get better answers but here are some examples...All these assume these code is being called in another page other than the one you are after...(pages..) $city = $pages->get("template=city, title=Doha");//get one specific city $cities = $pages->get("template=cities, title=Cities")->children("limit=10");//get 10 of all cities $cities = $pages->get("/path/to/cities/page/")->children("limit=10");//get 10 of all cities If you are able to follow, have a look at the code in the Blog Profile (maybe even the Skyscrapers profile)
    1 point
×
×
  • Create New...