Skip to content

Instantly share code, notes, and snippets.

// Store templates:
object.find(settings.templates).each(function(position) {
var template = jQuery(this).remove();
var header = template.find(settings.headers).addClass('header');
var option = widgets.selector.append('<option />')
.find('option:last');
var header_children = header.children();
if (header_children.length) {
header_text = header.get(0).childNodes[0].nodeValue + ' (' + header_children.filter(':eq(0)').text() + ')';
public function frontendInitialised(&$context) {
$uri = getCurrentPage();
$uri = trim($uri, '/');
// is the request for a specific render resource (HTML or RDF)
if (preg_match('/(rdf|html)$/', $uri)) {
$extension = end(explode('.', $uri));
}
<?
public function frontendInitialised(&$context) {
$uri = getCurrentPage();
$uri = trim($uri, '/');
// is the request for a specific render resource (HTML or RDF)
if (preg_match('/(rdf|html)$/', $uri)) {
$extension = end(explode('.', $uri));
}
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
xmlns:str="http://exslt.org/strings"
extension-element-prefixes="exsl str">
<xsl:template match="data">
<xsl:call-template name="split-into-spans">
<xsl:template match="data">
<xsl:variable name="number-of-entries" select="count(my-datasource/entry)"/>
<xsl:variable name="per-column" select="ceiling($number-of-entries div 3)"/>
<xsl:for-each select="my-datasource/entry[position() mod ($per-column - 1)]">
<xsl:variable name="position" select="position()"/>
<xsl:variable name="start" select="($per-column * $position) - ($per-column - 1)"/>
<xsl:variable name="end" select="($per-column * $position)"/>
<?php
include_once(TOOLKIT . '/class.sectionmanager.php');
include_once(TOOLKIT . '/class.textformattermanager.php');
include_once(TOOLKIT . '/class.entry.php');
Class EntryManager{
var $_Parent;
var $formatterManager;

Building Big Sites with Symphony

Planning

  • building sitemaps from Pages
  • planninga clean URL structure
  • domain-driven design

Complex Data

  • recursive field/section relationships
  • many sections (project: TCT)

Article/tutorial ideas

Caching

  • performance gains in 2.0.7
  • some DSs simply take a while, abstractions, ORMS. We can mitigate
  • ?profile: query count, time. Check profile as often as debug!
  • keep fields to a minimum in DSs. use required url params. danger of filters fallback
  • 2.0.7 option to disable entry counts
  • mysql query caching in config
  • memcached?
@nickdunn
nickdunn / symphony-extensions.markdown
Created August 28, 2010 10:01
Symphony extension ideas

Extension todo list

  • check fork queue for ALL repos!

Map Location Field

  • add Required option to allow for no markers
  • add Allow Multiple option to allow for multiple markers (series?)

Order Entries

  • custom edit mode

SSRC

Ravi: My name is Ravi Rajakumar and I am the lead web developer for the Social Science Research Council (SSRC). The SSRC is an organisation that was founded in 1923 that was created around the idea of formalising the practice of social science research.

Craig: I am the communications co-ordinator. What that means is that I do a lot of everything! Quite frankly I don't know what we would have done — if we we not discovered Symphony I can;t imagine how we'd be trying to build the website now.

Ravi: Because the system isn't fettered by a whole a whole set of prefabricated templates, you have a lot of flexibility. You can start with something very raw and just go from input to output and see what you're going to get, without a lot of decoration that you then have to dismantle.

Craig: It's actually not even of how Symphony does it better than other systems... it's just that we could not do it with any other system.