Category: "EzPlatform / Ibexa"

Speed up eZ publish

The following steps can be taken to make an existing eZ publish installation run more quickly:

  • Empty the trash
  • Clear the collected information
  • Clear the search stats
  • Delete all the drafts, especially those of the administrator

These steps remove unused information from the database and can really help the system run faster.

Application Upgrades - an excellent business opportunity

The web is constantly changing and keeping applications on servers which can support them may be difficult, as hosting companies upgrade the servers to improve security, the applications may fail.

Most web companies are extremely careful and use strategies such as running PHP 5 through php5 extenstions, and leaving PHP 4 as the default, but there does come a time when the server has be upgraded. In addition, it is the responsibility of the application installer to ensure the application is maintained for security and performance.

This creates an excellent business opportunity for web companies, especially for powerful applications with complex hosting requirements, such as eZ publish. The key is careful identification and management of the opportunities.

Once identified, one must look at the site to try to assess the quality of work. Upgrades can be difficult, so the offer to upgrade an eZ installation should be made carefully - so all parties understand the risks and estimated costs.

Bear in mind if the application is running from a subdirectory, this strategy may not work. That’s okay, there are lots of other sites. :)

This approach will work for any application that provides identification information in a publicly accessible area (either the headers or the HTML). It is especially valuable for applications with steep learning curves.

Use curl or wget to get the site headers or HTML.

Notes

An image is worth 1000 pixels

Rich interface applications require careful designs, and should almost always be multi-lingual capable. One of the best ways to achieve this for small page elements is the use of images as labels.

Examples:

  • Red circle with line through it - means ‘you can’t do this’
  • WYSIWYG labels - are so prevalent most people understand all of them, including links, images, bold, italic, etc.

Page layouts

Many times, a page has more content than can be displayed. Accordian panes and tabs are a great way to make additional content available to the page viewer, without requiring them to scroll or navigate away from the page. dojo

eZ publish integration

Add these .htaccess to easily allow additional applications or files to be added to an eZ publish site. I haven’t tried them with eZ yet - but they work with b2evolution. Be sure to place them carefully. :)


# Redirect anything that's not an existing directory or file to index.php
#
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

Rapid Development Strategies

Web sites have become exponentially more complex and the expectations of site visitors have soared as well.

The only way to build powerful pages is to use sophisticated tools, quickly and effectively.

:!: Choose tools that have decent documentation and a good community. You will need help. Be ready to reciprocate.

B) Use sample code. Everytime you have to learn something new, start with someone else’s posted code. It might not work exactly as you want it to, but you can tweak it, one piece at a time, until it does.

:>> Be very aware of the code architecture. Use an MVC approach, since it is likely you will have at least two views - through a template or HTML and AJAX/JSON.

:crazy: Abandon ideas that are too difficult. This isn’t lazy, it is smart. You’re smart, if you can’t get something working quickly, find another one. Many smart people posted great ideas - use them (and share yours). Abandon tools or libraries that don’t work quickly, too. There is one caveat - if you can see a tool’s potential and are humble enough to admit the problem is a learning curve, it may be worth persisting a little longer. eZ publish is a great example of this - it was well worth learning.

:idea: Be creative.

|-| Use abstract data structures and concepts. Multi-dimensional arrays are incredibly powerful.

:lalala: Be persistent, if it is almost working, keep trying. Try things that don’t make sense, because sometimes, they work - and well.

:oops: Don’t be afraid to be wrong.

:!: Use every available resource, carefully. LAMP is a stack of technology and some parts are better suited for tasks than others. Don’t use bash for page design, don’t use javascript to write large amounts of HTML.

:?: Explore, learn, try. Very little of what I have learned has been useless. Even mistakes and bad ideas are valuable, to avoid.

:yes: Be independent. Don’t ask for help right away. Try to solve your own problems, then ask.

eZ publish meta tag class and template

Meta tags may be valuable for SEO. A very nice implementation is to create a class with includes object relation lists to point to nodes that you would like to assign specific tags to.

The way it works is to find the reverse related objects (those objects that point to this node), and then extract out the tags. Depending on the complexity of your content architecture, this may require some tuning, but the basic concept is simple and has been used very successfully.


{* Add these lines to page_head.tpl to use this class *}

    {def $meta_tags=fetch( 'content', 'reverse_related_objects',
           hash( 'object_id',$node.contentobject_id,'all_relations',FALSE))}
 
      {if count($meta_tags)|ne(0)}

      <meta name="keywords" content="{$meta_tags.0.data_map.keywords.content|wash}" />
      <meta name="description" content="{$meta_tags.0.data_map.description.content|wash}" />
      <meta name="robots" content="{$meta_tags.0.data_map.robots.content|wash}" />

      {else}
  
        {section name=meta loop=$site.meta}
        <meta name="{$meta:key|wash}" content="{$meta:item|wash}" />

        {/section}
      {/if}

    {undef}

The package file isn’t posted due to security issues. It is reasonably easy to determine the class attributes from the template code.

1 2 3 5 6