BenSlayers Posted October 26, 2019 Share Posted October 26, 2019 27 minutes ago, dragan said: @Ben Sayers I'm by no means an expert on hooks, but I usually put hooks in ready.php, not init.php. Hi Dragan, I'm not sure if it matters, but I use the beginner profile, I don't see a ready.php file - I only see that file in the Default or Regular profiles. Link to comment Share on other sites More sharing options...
teppo Posted October 27, 2019 Share Posted October 27, 2019 11 hours ago, Ben Sayers said: I don't understand why the Jumplinks work with any page that doesn't contain "blog/". Edit: I had the file named incorrectly (/site/_init.php) so I removed the underscore in the name and now I can see the dump is working but only for URLs that don't have "blog/" in them and I'm not redirected to the blog landing page, I get a 404. If I try a link with "blog/" in it, I see the blog landing page but the URL is still the old one instead of domain.com/blog/. I have no experience with the blog module(s), but if a hook method attached to ProcessPageView::pageNotFound doesn't get executed at all for /blog/ URLs, this likely means one of two things: either there's no 404 exception when the user visits those URLs (i.e. the template of the page at /blog/ has URL segments enabled, but it isn't throwing 404 exception when a non-existing URL segment is accessed), or the module itself has some hook that prevents this from working. The first option seems more likely to me, but again I don't have any experience with this module, so can't say for sure. This could also be by design, so maybe @kongondo could step in and see if he has an idea about what's going on here? ? 1 Link to comment Share on other sites More sharing options...
kongondo Posted October 27, 2019 Share Posted October 27, 2019 (edited) 43 minutes ago, teppo said: This could also be by design, so maybe @kongondo could step in and see if he has an idea about what's going on here? ? 43 minutes ago, teppo said: module itself has some hook that prevents this from working. Blog has only one hook, used in the backend, limited to save of a single blog post (addHookAfter) to set its blog published date (@note: this is NOT the PW published field but the blog pages date field) 43 minutes ago, teppo said: (i.e. the template of the page at /blog/ has URL segments enabled, but it isn't throwing 404 exception when a non-existing URL segment is accessed), The following blog templates have URL segments enabled: Blog Archives (blog-archives) [virtual parent of blog archives; virtual since no real children; works becaue of URL Segments] Blog Authors (blog-authors) [virtual parent of blog authors; can also display multiple authors] Blog Comments (List) (blog-comments) [virtual parent of blog comments; can also display multiple comments] Blog Posts (blog-posts) [parent of posts; can also display all posts] Blog Tag (blog-tag) [a single blog tag] Cross-reference Edited October 27, 2019 by kongondo 1 Link to comment Share on other sites More sharing options...
kongondo Posted October 28, 2019 Share Posted October 28, 2019 (edited) @teppo, @Ben Sayers, Given my conversation with Ben in the blog module forum and given the correction made therein (?what?) and given Teppo's suspicion of URL Segments, I now wonder whether Ben's issue has to do with the term 'blog' at all. I suspect it is the 'posts' in the URL Segment since the posts templates utilises URL Segments as I listed above. Edit: for clarification, Ben's correct address to the blog posts, is, f.ex. domain.com/blog/posts/some-post/ Edited October 28, 2019 by kongondo Link to comment Share on other sites More sharing options...
BenSlayers Posted October 28, 2019 Share Posted October 28, 2019 (edited) 1 hour ago, kongondo said: Given my conversation with Ben in the blog module forum and given the correction made therein (?what?) and given Teppo's suspicion of URL Segments, I now wonder whether Ben's issue has to do with the term 'blog' at all. I suspect it is the 'posts' in the URL Segment since the posts templates utilises URL Segments as I listed above. Edit: for clarification, Ben's correct address to the blog posts, is, f.ex. domain.com/blog/posts/some-post/ My apologies for the confusion, Kongondo. I updated the post format in my original post on this forum. So if my issue is indeed related to the 'posts' URL segment, do you (or anyone else) have any idea how to resolve it? All suggestions are welcome, I've been fiddling with this for almost two weeks, lol. Edit: I can confirm that it is the "posts" part of the URL that is causing the issue, I tried redirecting "blog/test/" and it redirected just fine but "blog/posts/test/" does not. Edited October 28, 2019 by kongondo Further explanation of issue Link to comment Share on other sites More sharing options...
kongondo Posted October 28, 2019 Share Posted October 28, 2019 (edited) 1 hour ago, Ben Sayers said: I can confirm that it is the "posts" part I edited this to read "posts" NOT "post" to avoid further confusion ?. 1 hour ago, Ben Sayers said: do you (or anyone else) have any idea how to resolve it? I think the key is in what @teppo stated above: On 10/27/2019 at 8:42 AM, teppo said: if a hook method attached to ProcessPageView::pageNotFound doesn't get executed at all for /blog/ URLs, this likely means one of two things: either there's no 404 exception when the user visits those URLs (i.e. the template of the page at /blog/ has URL segments enabled, but it isn't throwing 404 exception when a non-existing URL segment is accessed) Your blog-posts template (file) is not throwing a 404 exception for the missing (deleted) posts. I am not sure whether manually throwing a 404 will resolved the issue but I am sure the other guys will have better knowledge of this. Meanwhile, please show us the contents of your blog-posts template file. Edited October 28, 2019 by kongondo Link to comment Share on other sites More sharing options...
BenSlayers Posted October 28, 2019 Share Posted October 28, 2019 34 minutes ago, kongondo said: Meanwhile, please show us the contents of your blog-posts template file. Sure thing, here is my 'blog-posts' template file, it's identical to my 'blog' template file. <?php namespace ProcessWire; include('./_head.php'); // include header markup ?> <!-- Page title --> <section id="page-title"> <div class="container-fluid"> <div class="page-title"> <?php echo "<h1>" . $page->get('headline|title') . "</h1>";?> </div> <div class="breadcrumb"> <?php echo "<ul>"; $parents = $page->parents; foreach($parents as $parent) { $url = $parent->url; echo "<li><a href='$url'>{$parent->title}</a></li>\n"; } // show current / "we are here" page as well, but not as link: (last element) echo "<li>{$page->title}</li>\n"; echo "</ul>"; ?> </div> </div> </section> <!-- end: Page title --> <!-- Content --> <section id="page-content"> <div class="container-fluid"> <!-- post content --> <?php // Change options for pagination $options = array( 'numPageLinks' => 5, 'listMarkup' => "<ul class='pagination justify-content-center'>{out}</ul>", 'itemMarkup' => "<li class='page-item {class}'>{out}</li>", 'linkMarkup' => '<a href="{url}" class="page-link">{out}</a>', 'currentItemClass' => 'active', 'separatorItemLabel' => '...', 'separatorItemClass' => 'page-link', 'currentLinkMarkup' => '<a href="{url}" class="page-link">{out}</a>', 'nextItemLabel' => '<i class="fa fa-angle-right"></i>', 'nextItemClass' => '', 'previousItemLabel' => '<i class="fa fa-angle-left"></i>', 'previousItemClass' => '', 'lastItemClass' => '', ); $blogposts = $pages->find("template=blog-post, sort=-blog_date, limit=9"); setlocale(LC_ALL,"en_US.UTF8"); $pagination = $blogposts->renderPager($options); ?> <?php if(count($blogposts)): ?> <!-- Blog --> <div id="blog" class="grid-layout post-3-columns m-b-30" data-item="post-item"> <?php foreach ($blogposts as $b) { if(count($b->blog_images)) { $firstimage = $b->blog_images->first(); $thumb = $firstimage->width(640); } echo "<div class='post-item'> <div class='post-item-wrap border shadow'>"; if(count($b->blog_images)) { echo "<div class='post-image'><a href='{$b->url}'><img alt='{$b->title}' src='{$thumb->url}'></a></div>";} echo "<div class='post-item-description'> <span class='post-meta-date'><i class='fa fa-calendar-alt'></i>{$b->blog_date}</span> <span class='post-meta-comments'><a href='{$b->blog_author->url}'><i class='fa fa-user-circle'></i>{$b->blog_author->title}</a></span> <h2><a href='{$b->url}'>{$b->title}</a></h2> <p>{$b->summary}</p> <a href='{$b->url}' class='item-link'>Read More <i class='fa fa-arrow-right'></i></a> </div> </div> </div>"; } ?> </div> <!-- end: Blog --> <?php echo $pagination; ?> <?php endif; ?> </div> <!-- end: post content --> </section> <!-- end: Content --> <?php include('./_foot.php'); // include footer markup ?> Link to comment Share on other sites More sharing options...
adrian Posted October 28, 2019 Share Posted October 28, 2019 On 10/25/2019 at 8:54 PM, Mike Rockett said: @adrian Page identifiers were never intended to be used as part of a destination. These identifiers use the full, absolute URL of the page being identified. Perhaps destination selectors could come in handy here? Haven't ever tried it this way before, but I imagine redirecting subscribe/{all} to [[1495]]{all} (or [[1495]]/{all}} if trailing slashes are turned off) would work. Anything inside the square braces is passed to pages->get and replaced with page->url, which is why I believe this will work. Thanks @Mike Rockett - using the page ID like that does work. This was the combo I needed: Note that the first one showing "sign-up/" is from the selected page, not manually entered. With this, all seems to work as expected. 1 Link to comment Share on other sites More sharing options...
Mike Rockett Posted October 29, 2019 Author Share Posted October 29, 2019 @adrian — Glad you're all sorted there ? Link to comment Share on other sites More sharing options...
adrian Posted November 6, 2019 Share Posted November 6, 2019 @Mike Rockett - I've come across an issue with the way that Jumplinks sanitizes the URL. I have partners linking in to the site with campaign info in the query string, but Jumplinks is removing the "?" so that: mysite.com/subscribe/partner/?utm=123 becomes: mysite.com/sign-up/partner/-utm-123 which of course looks like a second urlsegment to PW and therefore breaks things. Any chance of revising the sanitizer that makes that change please? Link to comment Share on other sites More sharing options...
Mike Rockett Posted November 6, 2019 Author Share Posted November 6, 2019 Hey @adrian Super odd, that. Will take a look. Link to comment Share on other sites More sharing options...
Mike Rockett Posted November 6, 2019 Author Share Posted November 6, 2019 @adrian I wonder if database->escape_string is playing a role here? I think I'm doing it differently in JL2, but that's nowhere near done in terms of a frontend. ? Scratch that, it's being used in the importer. Long day I tell you Link to comment Share on other sites More sharing options...
adrian Posted November 6, 2019 Share Posted November 6, 2019 6 minutes ago, Mike Rockett said: Hey @adrian Super odd, that. Will take a look. Thanks very much - let me know if you have any trouble reproducing. Link to comment Share on other sites More sharing options...
adrian Posted November 6, 2019 Share Posted November 6, 2019 3 minutes ago, Mike Rockett said: @adrian I wonder if database->escape_string is playing a role here? I think I'm doing it differently in JL2, but that's nowhere near done in terms of a frontend. ? I just removed all those calls and it doesn't seem to be coming from them as it didn't help. Actually, those calls only seem to be in the import from csv logic, so I don't think they are relevant at all, are they? Link to comment Share on other sites More sharing options...
Mike Rockett Posted November 6, 2019 Author Share Posted November 6, 2019 3 minutes ago, adrian said: Thanks very much - let me know if you have any trouble reproducing. Going to have to spin this up and see what's going on. Mind sharing your source/destination with me? Just now, adrian said: I just removed all those calls and it doesn't seem to be coming from them as it didn't help. Sorry, I edited that post as you were replying 1 Link to comment Share on other sites More sharing options...
adrian Posted November 6, 2019 Share Posted November 6, 2019 Source: subscribe/{all} Destination: [[1495]]{all} Link to comment Share on other sites More sharing options...
Mike Rockett Posted November 6, 2019 Author Share Posted November 6, 2019 4 minutes ago, adrian said: Source: subscribe/{all} Destination: [[1495]]{all} Ah of course - didn't click that it would be the same as the previous query ? ? Ok I'm able to reproduce, will investigate 1 Link to comment Share on other sites More sharing options...
Mike Rockett Posted November 6, 2019 Author Share Posted November 6, 2019 @adrian Ok so this seems to be the wildcard cleaner. Because {all} is the equivalent of .*, it includes the query string in this case and therefore cleans it like a normal wildcard. The only option for the time being is to disable cleaning of {all}, by changing it to {!all} in the destination. I know it's not perfect, but JL doesn't actually handle query strings very well – they should actually be handled separately somehow. Edit: I'm actually going to see if I can update the cleaner to prevent query string character cleaning. 1 Link to comment Share on other sites More sharing options...
adrian Posted November 6, 2019 Share Posted November 6, 2019 Thanks @Mike Rockett - the {!all} does the trick, but thanks for looking into updating the cleaner! Thanks for the superfast response! Link to comment Share on other sites More sharing options...
Mike Rockett Posted November 6, 2019 Author Share Posted November 6, 2019 3 minutes ago, adrian said: Thanks @Mike Rockett - the {!all} does the trick, but thanks for looking into updating the cleaner! Thanks for the superfast response! Any time ? I've rolled out 1.5.57 with a fix, so you should be good to go without the {!all}, which is somewhat unsafe IMO. 1 Link to comment Share on other sites More sharing options...
adrian Posted November 6, 2019 Share Posted November 6, 2019 You're a legend - thank you - works perfectly! 1 Link to comment Share on other sites More sharing options...
Mike Rockett Posted November 6, 2019 Author Share Posted November 6, 2019 3 minutes ago, adrian said: You're a legend - thank you - works perfectly! You're welcome. JL2 (when I get there ?) will give some more control here. This case would be covered by subscribe/{path} --> @[1495]/{path}, and then there'd either be a {query} wildcard or an option on the jumplink itself to automatically carry it over. 1 Link to comment Share on other sites More sharing options...
BenSlayers Posted November 8, 2019 Share Posted November 8, 2019 On 10/28/2019 at 11:10 AM, kongondo said: Meanwhile, please show us the contents of your blog-posts template file. Hi @kongondo, did you have a chance to review my blog-posts template above? Link to comment Share on other sites More sharing options...
kongondo Posted November 8, 2019 Share Posted November 8, 2019 14 hours ago, Ben Sayers said: Hi @kongondo, did you have a chance to review my blog-posts template above? Hi @Ben Sayers. Actually, yes, I have. I was to write something earlier this week but didn't get time to get to it. I have two suggestions. Could I please get back to you here over the weekend? Thanks. Link to comment Share on other sites More sharing options...
BenSlayers Posted November 8, 2019 Share Posted November 8, 2019 26 minutes ago, kongondo said: Could I please get back to you here over the weekend? Thanks. Hi @kongondo, no problem at all! I'm just happy to have your support ? - I'll stay tuned, thanks!! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now