cms icon indicating copy to clipboard operation
cms copied to clipboard

variable mount is null on every page

Open lostika86 opened this issue 4 years ago • 22 comments

Bug Description

Mount variable is missing from collections entries. It is attached as in the docs. Last time worked correctly,

How to Reproduce

  1. Create new collection, and define the mount
sites:
  - default
  - hungarian
template: default
layout: layout
mount: 28124839-6062-43bd-8e4e-ca7a11af3b7a
revisions: false
route: '{{mount}}/{{slug}}'
sort_dir: asc
date_behavior:
  past: public
  future: private 
  1. Create an entry and go to url ({{mount}}/{{slug}})

Extra Detail

Few weeks ago worked correctly

Environment

Statamic 3.1.11 Pro Laravel 8.40.0 PHP 7.3.12 doublethreedigital/duplicator 1.3.1

Install method (choose one):

  • Fresh install from statamic/statamic

lostika86 avatar Apr 30 '21 16:04 lostika86

Hmmm, seems to work fine here with this syntax: /{mount}/{slug}.

robdekort avatar May 05 '21 20:05 robdekort

Can you reach the mount variable? {{ mount | dump }} is null for me. Debugbar shows on mount null too

lostika86 avatar May 06 '21 19:05 lostika86

The mount is set on a collection level and I don't think you can reach it in your template. But your issue is about the actual route giving a 404 right?

So when you visit yoursite.test/mount-slug/entry-slug you got a 404 is what I got from your initial issue.

I noticed you used a different syntax. Have you tried my suggestion?

robdekort avatar May 06 '21 20:05 robdekort

mount will be the handle of the collection on the entry that has been mounted to it.

Seems to work fine.

In your example, within entry 28124839-6062-43bd-8e4e-ca7a11af3b7a, {{ mount }} will be the handle of whatever collection's yaml file you pasted.

jasonvarga avatar May 06 '21 20:05 jasonvarga

I'm not sure what the real issue is tbh. Can you explain in detail what you are trying to achieve and what you think is the issue?

robdekort avatar May 06 '21 20:05 robdekort

The mount is set on a collection level and I don't think you can reach it in your template. But your issue is about the actual route giving a 404 right?

So when you visit yoursite.test/mount-slug/entry-slug you got a 404 is what I got from your initial issue.

I noticed you used a different syntax. Have you tried my suggestion?

The route works fine. I want to reach it in my template, there is a variable, mount:null if I check variables on debugbar

lostika86 avatar May 10 '21 19:05 lostika86

I want to simply use in my template for example: {{ mount:title }} .

lostika86 avatar May 10 '21 19:05 lostika86

another way to explain: current entry belongs into categories collection image the mount variable is null image

lostika86 avatar May 10 '21 19:05 lostika86

What's the id for the current entry in that same debugbar list?

jasonvarga avatar May 10 '21 19:05 jasonvarga

The id is image

---
title: 'Marmolitové omietky'
structures:
  - product_category
updated_by: 20691469-4788-4708-8dee-2c59bc9e1b41
updated_at: 1617195948
id: 8d01eeef-1113-4596-8716-e96a6d94b0ed
---

I thought commit b3b4a179 is for enable mounted entry in template. Maybe I think it wrong...

lostika86 avatar May 10 '21 19:05 lostika86

I'm not sure what the real issue is tbh. Can you explain in detail what you are trying to achieve and what you think is the issue?

  1. Create a new collection, dont forget to setup mount.
  2. Create a new entry 'Mountains' in collection
  3. Go to template, where you can reach/use 'Mountains' entry
  4. You will see in debugbar available variables for entry, but variable mount is null

lostika86 avatar May 12 '21 07:05 lostika86

I think it's supposed to work like that. It's only available on the entry where you mounted the collection on. I've been in multiple use cases where I need to get a collection's mount entry URL so you can do stuff like "Go back to all news" / "Go back to all mountains".

There's no native tag for this. There is a FR out: https://github.com/statamic/ideas/issues/301 and a solution in the comments (link to forum).

Hope this helps!

robdekort avatar May 12 '21 08:05 robdekort

Closing this, feel free to reopen if I'm wrong.

robdekort avatar May 12 '21 08:05 robdekort

I'm in a multi-site and the mount var is null on career entry pages (which are mounted to a careers page).

IMO it should be the entry to which that collection is mounted.

edalzell avatar Feb 02 '23 18:02 edalzell

This has been reverted in #9145 as it causes some issues. We'll revisit it in another version.

jasonvarga avatar Dec 06 '23 23:12 jasonvarga

I'm running into this same issue. If the mount is null, how can I access the page data the collection is mounted on? I too want to be able to do mount:title or something similar.

isaackearl avatar Apr 13 '24 22:04 isaackearl

I'm looking for the same. Seems no good way to get say the mount title. Doing this as work-around:

{{ if {mount_url:{collection}} }}
    {{ get_content from="{{mount_url:{collection}} | replace("/" + site:handle + "/", "/")}" }}
        {{ title }}
    {{ /get_content }}
{{ /if }}

The string replacement stuff seems necessary also, since mount_url returns full path for multisite, and get_content needs it without.

925dk avatar Aug 14 '24 07:08 925dk

The workaround from this issue is not available anymore.

I want to do the same thing, any updates on this?

carstenjaksch avatar Dec 08 '24 18:12 carstenjaksch

@carstenjaksch Have you seen @925dk's workaround above? Does it work for you?

duncanmcclean avatar Dec 09 '24 11:12 duncanmcclean

@duncanmcclean Yeah, I tried and mentioned it in this discussion: https://github.com/statamic/cms/discussions/11237

It works for now, I was just curious if the official solution would return.

carstenjaksch avatar Dec 09 '24 12:12 carstenjaksch

The previous fix broke a bunch of things so it had to be reverted. We might fix it another way in the future, but I don't have an ETA on that.

duncanmcclean avatar Dec 09 '24 12:12 duncanmcclean