Legal
The views expressed in this blog are my own and do not necessarily reflect the views of Adobe Systems Incorporated.
Search
August 8, 2009
Linked Smart Objects (kinda)
Geoff Badner, the art director to whom I owe the start of my career, recently asked a good question:
I know I can do multiple iterations of the same Smart Object within the SAME document and have it change all instances, but what about Smart Objects placed across DIFFERENT documents? That would be pimp.I know. My quick advice: You can convert any layer to being a Smart Object (or place a file as one), then choose "Layer->Smart Objects->Replace Contents..." That way you can suck in another file as an update/replacement. If it's a command you perform frequently, you can assign a keyboard shortcut to it.I ask because I'm designing an iPhone app and it uses the same modules over and over across different screens. There are dozens of screens and each time I needs to change a button or text field in a module, I need to fix it one at a time in each file. Sucks!
Upshot: Edit your external file, then hit Shift-Cmd-R (or whatever) once per Smart Object instance to replace each. Kinda clunky, I know, but depending on the edits you do per SO, this approach may be more efficient.
Someday Photoshop needs to support proper linked files, period. (Dirty-ish little secret: it already does, in the form of video layers; your MOV, etc. source files are never embedded in a PSD.) For that to happen, it needs the right infrastructure--a Links panel, the ability to resolve broken links, etc. None of that is rocket science, but it's worth taking the time to get right.
Comments
Photoshop does have a feature similar to that already though: Variables. They're much more obscure and harder to set up, but once they're working you can basically update all the linked files with a single click.
[Oh man, Philipp: if I had prizes to give out on this blog, you'd get one for knowing about a deeply obscure feature! I think PS variables are great, but I sure don't meet many people who talk about using them. (Of course, the foolproof way to meet every such person would just be for us to cut the feature! That always pulls 'em out of the woodwork. ;-)) --J.]
Lots of details, lots of things that users expect to "just happen". Sigh.
[And that, Chris, is why they you & me the mid-sized bucks. :-) --J.]
If there were a "Photoshop CSn Wish List", that would be my #1 request (but wait, THERE IS a list!)
Can we talk about CS5? Or 6? Please?? ;)
[Well, *you* can talk about whatever you'd like... ;-) --J.]
Or you could just make your life easier by designing an iPhone app as a web app prototype, using CSS, XHTML, etc.
You change one single CSS property and magic! everything changes. Save a lot of money by not buying photoshop, etc...
And you get the opportunity of having the base to develop a mobile web app that is compatible with a lot more devices out there.
Geoff would need to combine all is different screen into one document but I would bet if he did he could use variables or layer comps(with smart objects) to make quick and easy changes to all his screens.
It's not official and it mostly deals with scripting but there is a list at http://ps-scripts.com/bb/viewtopic.php?t=2816.
You are welcome to post a wish there even if it's not script related.
"None of that is rocket science, but it's worth taking the time to get right."
HA!! You just admitted that it is easy to code Photoshop! =)
Having to get a layers Id without having to load the layer descriptor would be nice, as would getting the layer from its Id without selecting it at the same time.
Looks like your trying to break the Mold Testing would be another option, in my opinion.
I would love it if smart objects just linked to an external file - it would save so much hassle. And since my files run too slowly when I try to cram multiple 'pages' via layer comps or folders into them, this Variables tip is a goldmine.
Although Philipp, I'm not sure how to update across multiple files "in one click" still - do you have a script set up? I still need to update each individual PSD with the 'Apply Data Set' command. Then again, I'm still new to variables so there's probably something I'm missing in the setup there as well. Anyway, THANKS!