Forums / Developer / image alias deleted after clearing cache

image alias deleted after clearing cache

Author Message

Marcus M.

Monday 08 September 2008 12:51:10 am

hi all,

at the moment I'm facing a strange behaviour with the handling of image_alias.
I created a custom module which creates an xml-output in order to interact with flash. I created an image alias which is only needed by the flash.
The URL to the image ist created by following snippet:

        $object = $item->object();
        $dataMap = $object->dataMap();
        
        $image = $dataMap['image']->content();
        $aliasList = $image->aliasList();
        
        print($aliasList['consultant_flash']['full_path']);

To create the Images I build an temporary template which contains the image alias for the xml-output. At this point the module works fine and the path to the image will be displayed.

After clearing the cache the module displays no url. A var_dump of the $aliasList array displays only the original "image alias", even though the image alias exists in the var directory. Unless I call the temporary template only the original image alias is displayed.

I use ezpublish 4.0.1rc1 and according to this issue http://issues.ez.no/IssueView.php?Id=13191 this should be fixed or this is no bug? I'm not sure. So maybe someone has an idea.

Thanks in advance,
Marcus

Xavier Serna

Monday 08 September 2008 1:05:55 am

We have suffered similar problems here with image alias, and were solved upgrading to the official 4.0.1.

hth!

--
Xavier Serna
eZ Publish Certified Developer
Departament de Software
Microblau S.L. - http://www.microblau.net
+34 937 466 205

Marcus M.

Monday 08 September 2008 1:47:18 am

I'm not sure about the correct way to deal with image aliases in custom modules / extension.

I've read this article http://ez.no/doc/ez_publish/technical_manual/4_0/reference/scripts/generic/ezcache_php and there is a image alias cache. Therefore I guess its correct that after clearing cache no aliases are available. But how to access the desired one?

The class eZImageAliasHandler has methods to check if a image alias exists and to get the full path to the desired image.

        $dataMap = $object->dataMap();

        $aliasHandler = new eZImageAliasHandler( $dataMap['image'] );
        $imgAlias = $aliasHandler->attribute( 'consultant_flash' );
        
        ezDebug::writeDebug($imgAlias['full_path']);