Search

Yep, a common drag&drop reordering solution would be good to have. From a database/field architecture point of view a nested set and a adjacency implementation are quite different. The former is slower in writing entries but quicker in getting the tree information.

I'm just back taking another look at Symphony and I just wandered where this conversation had gone since this time last year when I first posted? Is there a good way to provide a hierarchical page view to users yet? Have any of the above mentioned extensions made it into a stable working release or are there any new alternatives which have cropped up?

This is probably the main sticking point in making Symphony a default CMS for agencies I work with. They're all used to various hierarchical page views in virtually all other CMS's with easy drag and drop re-ordering. When I tell them they wont have that with Symphony it means I'm back to fighting battles. I can understand that from a client's perspective it's something they can get and relate to as what they see in the visual structure reflects the hierarchy on the front-end of the site.

Personally I LOVE the way that Symphony handles data in such a clean manor my perspective and understanding of data handling is at a very different level to that of the vast majority of clients. They're mainly visual and relate to what they see — not underlying structures. If I can give them this then (XSLT aside ;) ) I may actually be able to get away from the cookie-cutter monstrosities of WordPress and the like that are forced upon me and actually have a decent system to work with.

I guess the one did Sitemap extension could do the same for tree based view.

Hi @slip, I have attempted to replicate the Blueprints > Pages setup in the past and included a textarea with WYSIWYG attached to the textarea. This has proved useful for my needs and does allow such things as drag and re-order and page hierarchy when required. This is purely for my needs and is in no state of a release as such as it has hard coded fields to retrieve multilingual content from the database.

Also it really does go against the grain of Symphony in it's application of simplicity in the way my code is setup (Replication of code, using my own table for writing and reading data instead of symphony entry data table).

Jonas had a concept in the works which was viewed at the Symposium 2012 and looked like just the ticket. But all involved are tied up with daytime jobs and workload, so don't expect to see anything in the short term.

Double post... again.. Chrome?

Is the tree view idea dead?

This thread has had no posts whatsoever and it seems Breadcrumbfields is now abandoned and broken on Symphony 2.3

I'm trying to hack into it to try and make usable on 2.3. If I have any success I'll fork it into Git

What are you trying to achieve? I'm using parent_field at the moment to display nested Entry (page) type entries.. And have it filtering with deep url params (it's a hack though at the moment as a proof of concept)

As been mentioned in this thread the objective would be to have something that at least mimicks a sort of tree view with drag and drop so to make it easier for a less technical client to understand relations between pages

I usually opt for a few lines of javascript available through this extension + SBL field (to explain the relationship) + order extension for the drag & drop ordering of things [note you still need the good parent selected for this].

Note: I have not written proper documentation as it was for personal use before; currently it requires your section to be named pages and for you to have a parent field linked to the same section. You should obviously modify for the purposes of your project.

Nice one @gunglien! Was looking at marcos video which had achieved this, but as he mentioned it was for his company and wasn't for public release.. Would love to combine efforts to build something similar to 'Structure' for Expression Engine.

How do you achieve the nested nature of the entries on the front end i.e. URL params/ pretty URL's ? Or does this not bother you?

Many ways to Skin a Cat and all that, but nested tree view is one of the most requested topics for newcomers here.

@moonoo2, its quite easy actually. I create a page named static; and I redirect everything which is not a Symphony page there, using url-router. This page takes 3(or more) parameters usually page1/page2/page3 and I use the last parameter to match the datasource.

So my datasource would have something like

{$page3:$page2:page1:$current-page}

I use current page so the datasource would still match if I opt to use a Symphony page to style the page differently. Works like a charm. (might require some additional checks to be sure you can't do /page3 and still works but its fine most of the time. Especially if you build proper canonicals etc.

Interesting approach.

So adding another level, would be as simple as $page4:$page3:$page2:$page1:$current-page right?

yes exactly :) you can extend as deep as you'd like (not sure the javascript takes that many levels but should still work)

@gunglien, I'd like to see this approach written up if you have time, it's quite a good idea. I have an approach that I'm writing up too, but the more we have the better.

@designermonkey yes sure; for work purposes I have a whole ensamble set up like this; which we have just started using to clone for new projects. Saves us quite some time in setting up.

Either over the weekend or next week I should have some time to write-up and explain how it works.

Edit:

Actually I've had mentioned something about this during the Symphony Symposium in Boston, you can find the presentation here I mention it in slides 8/9 I think. I'll work on a proper write-up so its more comprehensive.

Good call! a write up would be ace! thanks both.

Great stuff @gunglien. Looking forward to the write-up. Thanks!

I've posted an article/tutorial on how to achieve page hierarchy in symphony. Currently it only covers the backend stuff; I'll cover the front-end in a separate post as it was becoming a bit too long.

Additionally I have mention the Entry URL extension, however didn't go in detail as to build urls I currently have a multilingual fork which uses XSLT & datasources to build these links. The original one wouldn't quite work. Maybe if it gather's interest and Nick agrees I would port these changes into the original one too.

Thanks for this Jon,

Gonna install a quick symphony build and try it out! appreciate your time to write this up! woop :)

you're welcome; note I didn't explain how to build links actually (though probably you could figure that bit out) I'll give you a snippet of XSLT here before I finish the post.

<xsl:template match="*[section/@handle='pages']/entry" mode='link'>
    <xsl:param name='domain' select="$root"/>
    <xsl:choose>
        <xsl:when test="parent/item">
            <xsl:apply-templates select='../../navigation/entry[@id=current()/parent/item/@id]' mode='link'>
                <xsl:with-param name='domain' select="$domain"/>
            </xsl:apply-templates>
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select='$domain'/><xsl:text>/</xsl:text>
        </xsl:otherwise>
    </xsl:choose>

    <xsl:choose>
        <xsl:when test='url-handle/@handle = "home"'>
            <!-- home page do not append a handle -->
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="url-handle/@handle"/>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

Create an account or sign in to comment.

Symphony • Open Source XSLT CMS

Server Requirements

  • PHP 5.3-5.6 or 7.0-7.3
  • PHP's LibXML module, with the XSLT extension enabled (--with-xsl)
  • MySQL 5.5 or above
  • An Apache or Litespeed webserver
  • Apache's mod_rewrite module or equivalent

Compatible Hosts

Sign in

Login details