The simpler media website CMS
hi
several themes uses gallery.php as index page for their gallery (as offical zenpage and garland themes).
rewriteToken plugin allows to change some rewrited url.
but it doesn't allow to rewrite gallery url and it remains page/gallery
if you think it's a good idea, could you update this plugin to enable a token to change gallery url as needed?
Comments
The reason there is no rewrite token is that this is a plain custom page ulr (in theme terms).
We will probably not add anything for it at this time as we have other ideas for this page going on. Since there is a mismatch in url structure if this is the base gallery url in relation to album pages anyway. It may be decoupled from the custom page url just like Zenpage pages are in the future. Then there will be surely a way to define its name.
thanks Stephen.
my final plugin is as following:
but it doesn't work.
I have this in my admin:
and
and
but the rewrited url remains
[domain_name]/page/gallery/
How are you creating the url?
I suppose it is linked with this function
getGalleryIndexURL()
.there is this code:
I really don't know if it follows the internal rewrite engine of Zenphoto and if rewrite token may be applied in that case.
Yes, that function does not do the rewrite rules. You should use the function getCustomPageURL() instead.
Really, the getGalleryIndexURL() function should only return the index.php page. Themes should know if they are having a "gallery" page for the albums and act accordingly using getCustomPageURL('gallery') for the link. That is how it is with ZenPhoto20. Much less prone to error.
something goes wrong somewhere...
I use
printCustomPageURL(gettext('Gallery'), 'gallery');
in my theme, but it doesn't display the rewrited link.I add
var_dump($_zp_conf_vars['special_pages']['gallery']);
in my header and it returnNULL
.so it seems that plugin doesn't add values to
$_zp_conf_vars['special_pages']
and in the other hand, in this template function
we are allways in the
else
statement.Are you sure the galleryToken plugin is enabled? Sure sounds like it is not. Also check the rewriteTokens plugin options to be sure that "gallery" is shown and has a value.
I think also that the script above has an error. Probably should read
$plugin_is_filter=5|CLASS_PLUGIN;
to be sure it is loaded on the front end.actually, the line should be as I originally quoted it:
$plugin_is_filter=5|ADMIN_PLUGIN;
but CLASS_PLUGIN should work as well.Woops. forgot to check the text paste. Should be
$plugin_is_filter=5|FEATURE_PLUGIN;
yes, galleryToken plugin is enabled.
I change
$plugin_is_filter
as described and it works now.But I have a new trouble:
get/printCustomPageURL()
doesn't manage page number for gallery pages.Actually it has a second parameter to append extra queries such as the page number. That should be something like
&page=<number>
actually.Btw, we have some plans with the gallery page that will also involve changes to the "galleryindex" page handling in the future.
yes of course.
the fact is that
getGalleryIndexURL()
displays the page number organically, while withget/printCustomPageURL()
, we have to calculate it before we call the function.I will be patient and I will waiting for the major release...
Internally
getGalleryIndexURL()
just does this:if (in_context(ZP_ALBUM) && $_zp_gallery_page != 'index.php') { $album = getUrAlbum($_zp_current_album); if (($page = $album->getGalleryPage()) > 1) { <link here> } }
It also would use a custom index page if the the option
custom_index_page
is set.We have some term issues since normally "gallery" means the Zenphoto site in total so by default the home page isthe gallery index (= top level albums). Using a gallery page it is not or you even have two "gallery index" pages depending on the theme used.
Thanks for the patience though. I would love it to happen faster.
I am a little confused here. Can you explain more on how you are using this? Normally the getGalleryIndexURL() and getCustomPageURL() are used when you are NOT on the target page. If that is the case how do you determine which page of the gallery the link should point to?
If you are on the albums pages then the breadcrumbs functions should give you the correct (rewritten) links to other pages within the "gallery." However, that seems not the case. So a bug in those functions?
hi
have a look on zenpage theme.
in gallery.php, album.php and image.php, breadcrumb uses
printGalleryIndexURL()
, and in sidebar.php, the link to the gallery usesprintCustomPageURL()
.if you have a gallery with more than one page, and your are on an album of the 2nd page, the gallery link in the breadcrumb gives you this url
page/gallery/2/
and the gallery link in the sidebar gives youpage/gallery/
.for me it's OK because in the breadcrumb, I want to know on witch page I am (and go back to the right gallery page) and in sidebar, I don't want pagination (I only want to point to the root of the gallery).
BUT, the
printGalleryIndexURL()
link can't be rewrited contrary toprintGalleryIndexURL()
.This function allows any page to be the index page. It simply does not know which page it is going to use until it gets the name set via the "custom_index_page" option which usees the page name and does not know about any rewriting. This is in this case "gallery".
To rewrite this you need to hook into the
getLink
filter and modify the link there. That's called after the link is generated within that function.unfortunatly, I don't understand nothing :-(
you have to be more clear within an example
You need a plugin that also hooks on the
getLink
filter and then modify the url before returning it to match the rewritten one.zp_register_filter('getLink', 'modify_url'); function modify_url($link, $page) { if($page == "index.php") { // $link the is the url you need to modify to your rewrittten one } return $link; }
Very quick example offhand, not tested.
There are two problems (bugs) that need to be fixed. First, the template-functions.php function getPageNumURL() needs to be fixed to handle custom pages:
$pg = stripSuffix($_zp_gallery_page); if (array_key_exists($pg, $_zp_conf_vars['special_pages'])) { $pagination1 = preg_replace('~^_PAGE_/~', _PAGE_ . '/', $_zp_conf_vars['special_pages'][$pg]['rewrite']) . '/'; } else { $pagination1 = '/' . _PAGE_ . '/' . $pg . '/'; }
Then the galleryToken plugin needs to have added a rewrite rule for handling the page numbers:
$_zp_conf_vars['special_pages'][] = array('define' => false, 'rewrite' => '%GALLERY_PAGE%/([0-9]+)', 'rule' => '^%REWRITE%/*$ index.php?p=gallery&page=$1' . ' [L,QSA]');
Thanks for this actual contribution. Will look into that as soon as I get the time.
@vincent3569 I have decided I will add this to core tomorrow.
thanks Malte and Stephen!
I made a pull request to fix a typo on the new
getCustomGalleryIndexPage()
function.with that, it works fine for my needs.
I do not see a "PAGE/gallery" value in admin>options>extensions>rewriteToken.
Is it the right place to set the gallery url ?
I use Zenphoto 1.4.14
The change discussed is not in 1.4.14 but in the coming version 1.5. You can preview that as the support build (or master) from Github.
That's that, I just understand that the master branch is the one with the last commits. I have tested it, it's ok.
The zip linked on the homepage is Zenphoto 1.4.14 Jan 28, 2017, and the new function since october 2017, so I mistakenly thought it was included.
We only will change the numer when we actually release it. Until then we keep the old version. Remember to re-run setup in case it doesn't request to run automatically.