Jump to content
quickjeff

Landing Page Issues

Recommended Posts

Hi Guys, 

I am running into a bit of an odd problem. 

I have setup a landing pages section for another site without any issues. 

Therefore instead of having a ton of landing pages they all reside under /landing-pages/  and will redirect to the short URL. 

Example:  Instead of root/landing-page/page it will be root/page.

In my first site it works perfect!

In repeating the same setup for another site I encounter the following problem:

ERR_TOO_MANY_REDIRECTS

Here is what I am doing:

Created a Landing Pages Section

Landing Pages Reside Under this Section with the landing-page template

In the home template I have turned on segments, in landing-page template I have also turned on segments.

In the top of the home template I have placed the following code:

<?php  if(strlen($input->urlSegment2)) {
  // we only accept 1 URL segment here, so 404 if there are any more
  throw new Wire404Exception();

} else if(strlen($input->urlSegment1)) {
  // render the landing page named in urlSegment1 
  $name = $sanitizer->pageName($input->urlSegment1);
  $post = $pages->get("/landing-pages/")->child("name=$name");
  
  if($post->id) echo $post->render();
    else throw new Wire404Exception();
  

} else {
 

?>

In the top of the landing-page template I have placed the following code:

<?php 
// Redirect to the fake URL if real URL is accessed
if(!$input->urlSegment1) {
	$session->redirect($page->url);
}
include("inc/head.inc");		
?>

If I go to the shorter url it works fine, if I attempt the /landing-pages/page url it wont redirect, it just causes the error. 

Now I tested replacing $session->redirect($page->url); with  throw new Wire404Exception(); and then it will work with showing the 404 therefore my conclusion is the session is not catching the short url. 

Any help? 

I have checked htaccess, index and config, all are setup right. 

Running: PW 2.7

Share this post


Link to post
Share on other sites

There are some nice modules out there to solve this in a better way. For example:
http://modules.processwire.com/modules/process-redirects/
http://modules.processwire.com/modules/process-jumplinks/
https://processwire.com/talk/topic/9436-page-path-history-manager/

 

For sure there is an endless redirect if you do

$session->redirect($page->url);

If you want to stay with your method you can do something like the following in your landing-page template

<?php 
// Redirect to the fake URL if real URL is accessed
if (strpos($page->url,'landing-pages')) $session->redirect('/'.substr($page->url,13));       
?>
  • Like 1

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By rjgamer
      Hi,
      is there a hook after the current (active) page got created? Or which method got called in the Page class after the Constructor of the current page got initialized?
      Thanks.
       
    • By killedfriendz
      I am very sorry for asking this but i totally do not understand how to set values of checbox using API. 
      I have checbox field on my page with name "order_status". 
      So i've tried few ways to make it checked but it still doesn't work:
       
      $userPage->order_status->value = 1; $userPage->order_status->add(1); $userPage->order_status->add(true); Could you please tell me how to do it?
    • By rjgamer
      Hi guys,
      the field "redirect_last" of type DateTime got not updated. The update on the field "redirect_counter" works and got saved.
      Does anybody know what I did wrong in my code?
      if ($input->urlSegment(1) === 'redirect') { $page->of(false); $page->redirect_last = time(); $page->redirect_counter += 1; if ($page->save('redirect_counter')) { $session->redirect($page->website_url, 302); } } Thanks.
    • By totoff
      Dear all,
      I'm upgrading an older side with the new custom fields for images feature as of 3.0.142. My image field is set to "Automatic" and holds a bunch of images together with their respective description on each page. New custom fields include "caption" among others and to make my live easier I I'm trying to populate "caption" with the value from the (default) description field. But unfortunately I can't seem to find out how to save the newly set values. This is my code:
      <?php foreach (page()->images as $image) { $image->set('caption', $image->description); bd($image->caption); echo files()->render("markup/views/view-card-image-fancybox.php", array('image'=>$image)); } ?> <?php $page->save(); bd($page->save()); ?> This sets the value as intended (see screenshot) but doesn't save it permanently to the database. What am I doing wrong?
      Thanks!
       

    • By SwimToWin
      As an admin I want to use the API to ask if a page is published - using the $page->isPublished() method - so that I know it's published - as opposed to unpublished or trashed pages. That includes hidden pages.
      This method will correspond to Settings -> Status when editing pages:

      (Published is also mentioned explicitly where the edit page says "Published on [?]".)
      I would expect the API - and specifically the $page->hasStatus() method - to ask if a page has status published.
      But as I can see, it's only possible to ask for exceptions such as isUnpublished() and isHidden().
      <?php // This fails with "Fatal Error: Uncaught Error: Undefined class constant 'statusPublished'" if($page->hasStatus(Page::statusPublished)) { echo 1; } ?> PS: My current use case is that I want to count number of published vs. unpublished pages. I can only do that by getting all pages (include=all), then subtract any unpublished pages.
×
×
  • Create New...