Search

I'm new(ish) here, so hello to all and hopefully I can get the same type of fantastic response as I had to my first request for help. I am approaching things from a WP background so apologies if I mix terminologies and I am hoping that Symphony-CMS will become my first-line development framework.

Over the next few months I am building a very complex site (in my spare time, though it may become a bit of an obsession!). Besides web development, my other passion is football (soccer) and betting on football. I want to build a site that combines the two and passes on some of the techniques I use to make money from betting, albeit for a membership fee!

Before I start connecting to my huge hoard of football data and various API's, I have to get the site structure right and build the site. I am finding some aspects of Symphony very different to the PHP/MySQL of WP and its hooks and rigid structures (though custom taxonomies have helped in that respect). Hence my request for help.

GIT

Git seems to be a recurring theme in Symphony, especially when it comes to updating extensions and custom work. Am I right in thinking that I should maintain my own (local) repositories both for Symphony (and future versions) and Extensions (and future versions), treating them all as submodules of the Site Repository that I keep both locally and at BitBucket?

Site Structure

I feel comfortable with Sections and being able to pull Sections into the Pages. My concern comes with building complex URL's and then using the URL structure to pull data into the sections of a page. I have enclosed a Site Structure Diagram but the important "2nd PAGE" is missing, this is where I need some help! Where can I find tutorials and information that will help me build my "complex url's" and use them to access data sources? I have also enclosed a couple of wireframes as I think they help to show the way the site works.

I would welcome any advice on moving forward with my site structure.

One more question, has anybody built "sliders" into a site and can I have the url to see the site working?

Regards to all.

Attachments:
Match Page.jpg, Home Page.jpg and Site Structure.png

Hi Neil,

Welcome to the forum.

Repos are stored online at github or as you say bitbucket (offering free private repos) but last time I checked BitBucket didn't support submodules (may be wrong now though) so it may not work out as you planned. Repos will live online and you pull those repos into your local projects.. if there are any changes made along the way (improvements to those extensions/workspace repos) then you push the changes back up to github 'et al' for future use.

With regards to complex url structure. I'm guessing you mean dynamic? i.e parts of the url are pulling from external services right?

Could you provide a little more explanation of the type of service you are likely to pull into the site? There are many way to accomplish what you are trying to achieve and I'm sure others will have way more in depth explanations for you but a small example would help put it into perspective as to where the bottle neck is.

Submodules do indeed work with BitBucket.

Thanks for that, though submodules dont work in NetBeans the way I imagined, as per Netbeans Forum . I think I have to use a terminal window for submodule updates.

URL's

Yes, I mean dynamic URL's, using the parameters of

  • Countries
  • Leagues or Cup Competitions
  • Seasons
  • Matches
  • Clubs
  • Players
  • plus others

to determine the page contents that will be pulled from a series of MySQL databases and XML files.

I will be caching some data for speed of access in temporary tables or files and some data will come from "offsite" such as live match data (goal updates, substitutions, bookings, sending off) by various means and some other data will be live from API's provided by bookmakers (odds).

So I guess I am looking for resources that show me how to use dynamic URL's to define page contents and in particular resources that show me how to sensibly define my site structure and URL structure for each page-type.

Dynamic URL's are actually really not that hard: if you know how to filter your datasources you are already half way there.

Let's take your players as an example. I assume you are trying to get a player profile of some kind, so you probably have a "players" section, which contains all relevant information about a player. Now, there are different ways to get the player you are looking for: by name, by club and number, by goals, by position, by age, etc.

Let's start by name, as this is the easiest and most common. First, you want to create a page for your players (/players). What I normally do is combine two pages in one: the version without any parameter is used as an index, showing all players, while the parameters act as a filter to get all relevant details from a single player (/players/mario-balotelli for example) .

So, to do this, create the page, and in the url parameters box, fill in player-name. Now, create a datasource player-details, use your players section, and create a filter on name: {$player-name}. This player-name parameter will be taken from the url and used to filter the results.

The last thing to do is to check the "return a 404 error if no results are found" checkbox. What this does is it will give you the page not found error if you were looking for the English football player called Huib Keemink.

Now, attach the datasource to your page, and you are pretty much done! Check out the debug page for the /players and the /players/name-of-player page, to see the results.

@creativedutchmen Brilliant, Thank You! As with many things, I was over-complicating the issue! I had visions of PHP scripts to create the URL and then multiple scripts to drag in the data based on parsing the URL ! I am blaming it on my WP background! I forgot that my datasources are whatever I choose to make them, rather than being confined to a fixed set of database queries. The power of Symphony in a project like this is now beginning to dawn on me! I am really enjoying the CMS so thanks for all the help folks.

As mentioned at many points in the documentation, it seems that the planning and "structure design" phases are critical. So far I have only drilled down to the "parent page" level. Now I have to finish working out all of the sections, where the data for those sections comes from (datasources) and where and how the data is stored for maximum efficiency.

The URL Router extension can be helpful. Check it out.

Thanks @vladG. I will give it a try. Just completing a test install on a local server (with Git configured correctly!) that should enable me to test some of these ideas and recommendations.

I think I may have chosen a particularly complex project for my first Symphony-CMS attempt! But I always find that "doing" and "trying" are the best way to learn. Also this is a personal project, so no deadlines, timescales or customer hassles!

I actually keep quite a detailed "Development Diary", so maybe in the future it can provide a reference for other newbs if I prettify it and and add some screen shots and code examples.

I think I may have chosen a particularly complex project for my first Symphony-CMS attempt!

Hmm, yes you have.

@vladG I did some tests with WP and it just didnt meet the needs, so the project is well defined, its the technology that supports it that required a rethink.

I use Pivotal Tracker and I find it helps to focus on the important stuff and define a sensible path for development, as well as giving the usual project management benefits of reporting, scheduling, document and reference storage etc.. Anybody looking for a Project Management tool should check it out. I start by defining my "Epics" and then a number of "Stories" within each Epic and the "Tasks" for each story (sometimes the tasks arent well defined at this stage, they may be a vague "check out URL ROUTER EXTENSION" or something similar.

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