Персональные инструменты
Вы здесь: Главная Форум Поддержка Как изменить поведение ATLink?

Как изменить поведение ATLink?

Автор: CIV Последнее изменение: 2010-09-28 14:28
Вверх к Поддержка

Как изменить поведение ATLink?

Послано CIV в September 28. 2010

На моем Plone 3.3.5 (и на ранее пользованных 2.x, 3.x) тип ATLink при обращении к нему из навигации генерирует страничку с бессмысленной надписью "Адрес ссылки" и далее указанный для экземпляра объекта ATLink URL... Как заставить экземпляр ATLink вести себя, при обращении, как ссылка - т.е. выполнять переход по указанному URL? Или же, как добавить в навигацию якорь с внешним URL?

Спасибо.

Re: Как изменить поведение ATLink?

Послано CIV в September 28. 2010

Пожалуй отвечу сам себе (т.к. ответа на такой вопрос в сети не нашеёл)... Ответ нашёл посмотрев как работает метод объекта ATLink. Для того чтобы выполнялся редирект (для анонима) нужно чтобы у анонима небыло прав редактирования контента для этого экземпляра объекта. Нужно чтобы в /portal_types/Link в свойстве "Available view methods" имелось значение (строка) link_redirect_view и чтобы свойство "Default view method" было установлено в link_redirect_view. Кроме этого в /portal_properties/site_properties должно быть свойство redirect_links (булево или строковое - без разницы) установленное в enabled.

Re: Как изменить поведение ATLink?

Послано Ирина Бессарабова в September 28. 2010

Да, такой метод наверно лучше. Я делала проще (или наоборот сложнее :) ). Переопределяла класс  для рендеринга шаблона портлета  как-то так:

<plone:portletRenderer
      portlet="plone.app.portlets.portlets.navigation.INavigationPortlet"
      layer=".interfaces.IThemeSpecific"
      class=".navigation.SmolnyNavRenderer"
/>

В этом классе определяла свои шаблоны для вывода дерева рекурсивно:

from plone.app.portlets.portlets.navigation import Renderer
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile

class SmolnyNavRenderer(Renderer):
    _template = ViewPageTemplateFile('templates/navigation.pt')
    recurse = ViewPageTemplateFile('templates/navigation_recurse.pt')


А в navigation_recurse.pt просто проверяла какой тип, если ATLink, то href подставляется значение getRemoteUrl

<li tal:define="show_children   node/show_children;

                 ...
                remote_url      node/getRemoteUrl;
                is_link         python:node['item'].portal_type == 'Link';> 

...         <a  tal:attributes="href python:is_link and remote_url or item_url;
                           title node/Description;
                           class string:$item_class${li_class}${li_extr_class}${li_folder_class};
                           target python:is_link and '_blank' or '_parent'">
                    ...
        </a>

</li>

 

Это, естественно только для меню подходит.

 

Re: Как изменить поведение ATLink?

Послано CIV в September 28. 2010

:) По такому пути я не пошёл (хотя это, действительно, первое, что приходит в голову) т.к. помню что на одном из моих старых сайтов, работавших на Plone2.x ссылки работали правильно, потом (возможно после очередного апгрэйда движка) поведение ссылок изменилось, а потом и сайт стал не нужен (возиться с ним я не стал). А теперь проблема появилась снова - и решение ее оказалось довольно простым - изменились свойства ссылки установленные по-умолчанию и исчезли из стандартных настроек сайта и ссылки те которые отвечают за поведение объекта-ссылки.

Разработано Ploneboard
Действия с Документом