Drupal: jak znovu upotřebit použité obrázky

Při tvorbě webových magazínů se opakovaně setkávám s požadavkem na opětovné vložení obrázků coby ikonky článku, které jsou na serveru již nakopírovány z minula. Donedávna jsem znal jediné řešení v podobě poněkud nepohodlného modulu Image. Dnes však již existuje pohodlnější alternativa.

Reklama

Ikonky článků jsou velmi populárním vylepšením, na které se v diskuzi zde na webu i jinde ptá spousta začínajících Drupalistů. Několik tipů k tomu, jak ikonky článků na webu s Drupalem zprovoznit po technické i vizuální stránce, najdete i v mé čerstvé knize 333 tipů a triků pro Drupal.

Pokud chcete opakovaně vkládat obrázek ikonky, která je již na serveru jednou použita, nemáte moc možností. Přitom je taková možnost velice žádoucí. Proč zbytečně nahrávat několikrát do měsíce se opakující obrázek, když se daný soubor již na serveru vyskytuje?

Opakované použití obrázku z modulu Image

Nejprve si v rychlosti popíšeme řešení, které jsem používal až do nedávna. Modul Image obsahuje součást Image Attach, která umožňuje připojit obrázek k článku. V editaci vám přibude rozbalovací nabídka s názvy všech obrázků, které kdy byly na server pomocí modulu Image nahrány.

Toto řešení je funkční, stejný obrázek tak lze připojit k několika různým článkům. Máte-li omezenou sadu ikonek, ze kterých si průběžně vybíráte, není problém. I na Maxiorlovi takové řešení jistou dobu existovalo - pamatujete kreslené ikonky?

Nevýhodou Image a Image Attach je již z principu, jak tento modul funguje. Pro každý obrázek totiž vytváří nový uzel, což s sebou nese potřebu ošetřit, aby si jej uživatel nezobrazoval. Minimálně je třeba zakázat zobrazování uzlů typu Image na titulní straně webu. Rozbalovací nabídka Image Attach může časem nabýt obludných rozměrů a výběr obrázků z ní bude nepohodlný.

Lepší řešení: FileField, ImageField a FileField Sources

Ikonky článků, respektive upoutávky a další obrázkové prvky, které se nevyskytují přímo v textu, je možné řešit také pomocí modulu ImageField. Jedná se o doplnění CCK a modulu FileField. Když si nainstalujete FileField a ImageField, přibude vám v definici políček položka Soubor a widget Obrázek. Pomocí šablony vzhledu nebo modulu Contemplate pak obrázek nahraný tímto způsobem snadno umístíte na požadované místo například ve výpisu článků.

Já toto řešení ještě doplňuji o kombinaci modulů Pathauto, Transliteration, Token a především FileField Paths. Umožní vám to nastavit pravidla pro automatické třídění nahrávaných obrázků do různých složek. Nehrozí tak, že byste po roce provozu webu zjistili, že máte v jediné složce nakopírovány stovky souborů s obrázky. Doporučuji je třídit do automaticky vytvořených složek podle roku a měsíce, kdy jsou obrázky (nebo jiné soubory) nahrávány. Díky modulu Transliteration je také možné automaticky odstranit diakritiku z názvů souborů.

ImageField, respektive FileField však poskytuje pouze klasické políčko s tlačítkem Procházet, kterým vyberete soubor pro nakopírování na web. Není zde žádná možnost, jak znovu použít již existující soubor nebo obrázek. Naštěstí se objevil modul FileField Sources, který tuto funkcionalitu doplňuje.

Jak nastavit modul FileField Sources

Po aktivaci modulu FileField Sources se vám při vytváření nebo editaci políčka vytvořeného coby FileField objeví nová položka File Sources. Když ji rozbalíte, zjistíte, že obsahuje tři volby. Ty určují, jakým způsobem bude možné již existující obrázek políčku přiřadit.

Nastavení modulu FileField Sources

Nastavení modulu FileField Sources

Mým nejoblíbenějším způsobem vkládání již existujících obrázků je automaticky se doplňující políčko. Jednoduše začnete psát název soubor, FileField Sources vám dá na výběr z vyhovujících souborů a vy svůj výběr potvrdíte. Kromě toho můžete vybírat již existující soubory/obrázky pomocí správce souborů IMCE nebo prostě jen zadáním URL adresy vzdáleného obrázku.  IMCE využijete při implementacích Drupalu pro méně zkušené uživatele, podporu vzdálených URL zase pro automatické stažení obrázku z jiného serveru.

Jakmile povolíte alespoň jednu z těchto voleb pro FileField Sources, přejděte do editace některého uzlu, který toto políčko využívá. Objeví se vám tam samozřejmě standardní políčko modulu FileField, které je však doplněno o odkaz Reference existing. Když na něj klepněte, zobrazí se možnosti vložení existujícího obrázku podle nastavení, které jsem popsal výše.

Práce s modulem FileField Sources

Práce s modulem FileField Sources

Zatím jsem toto řešení použil jen na jednom webu, modul FileField Sources je poměrně nový. Podle prvních reakcí však funguje bez problémů a především jednou pro vždy elegantně řeší problém s opakovaným výběrem již nahraných souborů.

Tagy: 

Reklama

Komentáře

Používám tyto moduly podobně, akorát na Transliteration mi vadilo, že nahrazuje mezery, pomlčky a další znaky za podtržítko. To se mi z hlediska SEO nezdá dobré, vyhledávač to bere jako řetězec a ne více slov. Naštěstí stačilo trochu překonfigurovat Pathauto a pustit ho i na úpravu jmen souborů (Filefield source dává na výběr Pathauto i Transliteration) a s Transliteration jsem se mohl rozloučit. O modul méně je vždy dobrý výsledek ;).

Zajímavý článek.

Zajímalo by mě, jestli Drupal 7 už má implementovaný Transliteration (nebo jiný na podobné bázi). Myslím, že by to měl být standart pro všechny soubory a když je CCK v Drupalu 7, mohlo by to tam být ne?

Díky. Co se týče Transliteration, tak pokud vím, Drupal 7 jej v sobě nemá.

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

Nainstaloval jsem to podle návodu, bez problémů funguje Remote URL.

IMCE jsem předtím nepoužíval, nainstaloval jsem ho tedy taky. Procházení adresářů je ok, ale pokud vyberu nějaký soubor/obrázek v tom pravém okně IMCE, tak ho v dolním okně nevidím zobrazený, je tam jen název souboru. Pokud na ten název kliknu, objeví se hláška "Vybraný soubor nemůže být použit, protože neexistuje v databázi. Fyzicky v tom adresáři ty obrázky ale jsou.

Když zkouším odkázat na existující soubor, nedělá to vůbec nic. Když začnu psát název obrázku, který na webu už existuje, je tam sice podobný boxík jako v článku i s tím kolečkem. To se jakoby točí, ale nic to nenajde. Zkoušel jsem v nastavení změnit volby z Start with strings na Contains string, ale nemělo to na to vliv. Keše jsem vyprázdnil a už nevím, kde by mohla být chyba. Nepřehlédl jsem někde něco?

Jinak dík za vaše články, hoidně mi pomohly a díky vašemu webu jsem mnohem dál, než bych byl bez nich :-)

Zkuste mrknout na .htacess ve složce se soubor. Pokud jeho tři řádky nejsou zakomentovány mřížkou #, udělejte to a zkuste znovu.

Tvořím weby. Nabízím poradenství pro Drupal. Jsem na Twitteru.

Zkusil jsem to zakomentovat, ale bohužel, ani tak jsem to nerozchodil. Budu zkoušet dál, díky za radu.

problém souvisel s chybou ve FileFieldu. V případě, že byl zároveň aktivní modul FileField Meta, tak to nechodilo, stačilo FileField Meta vypnout - viz (http://www.maxiorel.cz/mizejici-popisky-title-alt-obrazku-u-imagefieldu-0 )

Je to asi záležitost IMCE. Je možné sice procházet adresář sites/default/files a vložené adresáře, soubory jsou sice vidět, ale netvoří se vůbec náhledy obrázků. A po pokusu o vložení obrázku hodí systém chybovou hlášku "The selected file could not be used because the file does not exist in the database." To samé se stane, i když zkouším vybrat obrázek přes IMCE, konkrétně přes záložku "File browser", která je v administraci účtu. Někde v nastavení je chyba, budu rád za každou radu.
(D6.17, FileField 6.x-3,5, FileField Sources 6.x-1,1, IMCE 6.x-2.0-beta3)

Přidat komentář