Обновление прикрепленного изображения новости не очищает масштабированное изображение от лака, а только просмотр новости
Всякий раз, когда пользователь заменяет / обновляет изображение, прикрепленное к элементу новостей, представление элемента новостей и список папок, приведенные выше, удаляются (обновляются) в кэше лака, но само прикрепленное изображение - нет.
Как я могу сделать plone.app.caching, чтобы также очищать / обновлять не только <mysite>/news/
а также <mysite>/news/news-item/
но и изображения под <mysite>/news/news-item/image_news_scale
а также <mysite>/news/news-item/image_even_smaller_news_scale
?
Фон: с помощью Plone 4.3.2 я настраиваю свои собственные пользовательские масштабы изображения, например news_scale
с помощью <mysite>/@@imaging-controlpanel
, Эта шкала используется для отображения прикрепленных изображений в новостях, например, как <mysite>/news/news-item/image_news_scale
, Кроме того, у меня также есть другой пользовательский масштаб изображения, как even_smaller_news_scale
для использования в списках папок, например как <mysite>/news/news-item/image_even_smaller_news_scale
, Я создал эти взгляды через <mysite>/portal_skins/custom
и зарегистрировал их как виды по умолчанию под <mysite>/portal_types/
а также select_default_view
действие.
PS Я только что видел, потому что я использую https://pypi.python.org/pypi/raptus.multilanguageplone, URL изображений доступны даже под более сложным URL, который зависит от выбранного языка: <mysite>/news/news-item/image___de____news_scale
а также <mysite>/news/news-item/image___de____even_smaller_news_scale
(de
также может быть en
в зависимости от языка)
1 ответ
Если вы уже настроили очистку кэша в plone.app.caching правильно, вы заметите, что newsitem/image_thumb и другие размеры изображений будут очищаться правильно по умолчанию.
plone.app.caching не знает о пользовательских URL для изображений из-за raptus.linguaplone. так что вам придется создать свой собственный адаптер, который реализует IPurgePaths
для ваших новостей
что-то вроде этого должно сделать свое дело:
from z3c.caching.interfaces import IPurgePaths
class ItemImagePurgePaths(object):
"""additional paths to purge not covered by
plone.app.caching default adapters i.e. ObjectFieldPurgePaths
"""
implements(IPurgePaths)
adapts(IYourConentType)
def __init__(self, context):
self.context = context
def getRelativePaths(self):
prefix = self.context.absolute_url_path()
return [prefix + '/image____de____news_scale',
prefix + '/image____de____even_smaller_scale']
def getAbsolutePaths(self):
return []