-ѕодписка по e-mail

 

 -ѕоиск по дневнику

ѕоиск сообщений в vitaly80

 -—татистика

—татистика LiveInternet.ru: показано количество хитов и посетителей
—оздан: 30.08.2006
«аписей:
 омментариев:
Ќаписано: 9080



ѕроект на Plone 2.5

—реда, 31 ќкт€бр€ 2007 г. 10:29 + в цитатник
„тобы не забыть и дл€ тех, кому может понадобитьс€!

Ќачало...

„то сделано

—оздан тестовый портлет portlet_business

—делан он на основе portlet_news и помещен в папку portal_skins/custom

Ётот портлет сделан дл€ тестинга. ¬ нем подразумеваетс€ агрегаци€ деловых новостей. ƒумаетс€, на основе его будут созданы остальные портлеты. Ќапример, верхний портлет, где будет агрегироватьс€ сама€ интересна€ информаци€. »ли другие (статьи там, репортажи, да и из других рубрик: политика, общество, криминал и остальное).

„то было интересного:

¬ ленте новостей картинки делались из image_thumb. Ќачал искать. ѕоиск по содержимому (контейнинг). выдал portal_skins/plone_content/folder_summary_view (Summary view). Ќачал его гл€деть.

ќчень интересным показалось место



¬з€л его:

¬место иконочки поставил



Ѕез гетобжекта() выдает ошибку или одинаковые (если на новости - то именно этой новости) картинки.

ѕотом (вернее до этого) обрамил в таблицу внутренность портлета. “о есть кажда€ новость с картинкой стала строкой со столбцом. »наче картинки налаживаютс€ друг на друга.

“уду: сейчас новости берутс€ в портлет все.  стати, тот портлет, который был сделан, был прописан в Plone (им€ портала) - вкладка пропертиз и в левые слоты как here/portlet_business/macros/portlet. ѕоэтому начал отображатьс€. “ак вот. Ќужно вместо вызова обычной функции (класса), сделать, чтобы вызывалс€ ѕортал_сеарч дл€ нужного места. √де-то это уже сделано, нужно поискать. (по-моему, так сделано в портлет-ньюз).

ƒалее нужно сделать верхний слот. Ћибо вручную, или его нужно будет прописывать в свойствах портала.

„е еще? —делал глубину видимых элементов в навигации 3??? «ачем так много? ¬роде можно 2 но чего-то не получалось. ѕќэтому сделал 3 и отменил в отображаемых элементах все, кроме папок, больших папок и программируемых папок.

јх, да.

ќткастомил /Plone/portal_skins/custom/columns.css

—делал

#portal-column-one {
vertical-align: top;
width: "50em">;
}

#portal-column-two {
vertical-align: top;
width: "50em">;
}

50 ем - пойдет. “олько се-равно сдвигаетс€ чего-то все. ѕричем, плоне по-началу, самое обидное, не показывал откастомленного. ѕришлось плоне снести и поставить заново. ѕосле этого все стало нормуль. ¬роде.

≈ще туду:

Ќужно попробовать откастомить –——, так как в плоне по-умолчанию –ƒ‘ (это конечно, круто, но не дл€ €ндекса - дл€ артлебедева это верх крутости :)

«аметил, кстати, что при CTRL+S в блокноте курсор уходит несколько влево. :(

„его-то еще хотел написать - не помню

11 окт€бр€.

—делал еще один портлет (интервью). “естирую дату (чтобы показывал врем€, а не дату)

May 5

’отел переименовать ссылку (написать "»нтервью"), выдал ошибку, похоже не хочет воспринимать русский €зык. ≈-мое.

„иню –——. ƒату исправил на рфц822

Modification date

ƒальше причесываю. ”бираю ненужное и привожу рдф1 к рсс2. ≈сть интересные плюшки, например вот так реализовываетс€ ситуаци€, когда у одной новости несколько сабжектов


Item

¬ принципе у новости может быть несколько чего чего много, например, картинок или категорий (типа, бизнес, общество, еще чего...)

≈ще интересное туду: как делать камменты в плоне? на тале?


“ак? л€л€л€?


без replace="nothing" чего-то плохо отрабатывал!

ѕришлось кастомить

и /Plone/portal_skins/custom/rss_template

и /Plone/portal_skins/custom/RSS

Ўапку он берет из RSS. ј контент из rss_template

 то он?
без

xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"

ругаетс€ на экспат!

ƒальше. „е интересно, обычные папки нельз€ рсс-сить. “аким образом, пришлось делать программируемые (у них –—— позволено).

Ќапример, создал программируемую папку "ƒеловые новости", критерии поиска - искать в папке (и подпапках) Business документы типа Ќовость. “о есть два критери€ поиска - местоположение и тип. ≈сли тип не указывать, то показывает саму папку.

ј, еще смотрю критерии дл€ NEWS - еще нужно состо€ние

≈ще гл€жу на пор€док сортировки - там по дате вступлени€ в силу и обратный пор€док

»нтересно, дл€ NEWS картинки есть, а дл€ обычной программируемой папки - нет :(

Ќадо сделать, чтобы у каждой программируемой папки р€дом с описанием новости была картинка (если она есть, конечно). CTRL+S идет на 3 символа назад.

≈ще туду: RSS дл€ €ндекса с yandex:full-text. “олько откудова брать этот фулл-текст и нужно специальный шаблок Page temlate, например yandex-rss, сделать его на основе шаблона RSS, только он же использует rss_template.  ак-то нужно пон€ть: как они друг с другом св€зываютс€?! »ли же сделать один скрипт, где будет все, и не использовать макро?

„его-то все в одном не получаетс€. “ам чего-то много всего дифайнитс€! :(
ўа сделаю копию и того и другого и подправлю.

rss_template стал rss-fulltext_template
RSS станет сейчас rss-fulltext.

“еперь нужно rss-fulltext_template править насчет полного текста новости. ¬з€ть его в шаблоне отображени€ новости. ўа посмотрим, как эта переменна€ (или функци€) называетс€.

√л€дим
/Plone/portal_skins/plone_content/newsitem_view

и видим



“ак, вставл€ем и угораем. ћен€ю, думаю: в чем € дурак? ј оказываетс€ надо линки на макросы в новых шаблонах исправить. вызываю rss-fulltext а он использует старый rss_template, а надо rss-fulltext_template.

ѕравлю rss-fulltext.


мен€ю на


¬ставл€ем в rss-fulltext_template

Full text for yandex.news

(пока пусть в теге будет дескрипшн, который мы заменим на полный текст новости).

¬ыдаетс€ ошибка. ѕосле некоторых мучений добавл€ем в заголовок

xmlns:yandex="http://news.yandex.ru"

ќ, теперь он понимает. » мы немного начинаем въезжать.

“ак, переменна€ text в новостном шаблоне определ€етс€ вначале как
text python:here.CookedBody(stx_level=2)

Ѕудем использовать CookedBody(stx_level=2).

“аким образом полный текст дл€ €ндекса будет выгл€деть так:
Full text for yandex.news

¬сЄ отлично. ѕолный текст фигаритс€!

ћожно еще сделать  атегори€, по типу: общество, политика.


 стати, если сделаем в виде структуры, то теги сохран€ют вид (что пока не надо, но нужно запомнить).
Full text for yandex.news

“ак, с –—— немного разобрались, €ндекс будет доволен.

“ак. ѕортлеты и другие плюшки нужно прив€зать к программируемым папкам.

≈ще нужно посмотреть шаблон дл€ отображени€ программируемых папок. ѕохоже, что по умолчанию используетс€ то же самое, что дл€ обычных папок, то бишь

/Plone/portal_skins/plone_content/folder_listing

—ейчас погл€дим.

 астомайзим.

Ќам также нужно, чтобы была врем€ + дата (дату в принципе можно опускать, если она сегодн€шн€€, хот€ не об€зательно). ¬рем€ должно быть часы:минуты. + должна быть картинка, если она есть!

≈ще интересно. Ќа главной странице лента новостей состоит из скольки элементов? ј на странице новостей сколько элементов?

Ќа росбалте на главстранице 25 новостей.

¬ новост€х росбалта 100 элементов. ух, долго считал!

“ак, создаем папки и программируемые папки:

ѕолитика, Ёкономика, ќбщество, ѕроисшестви€.

„его-то папок и программируемых папок туча. ѕолучаетс€, например, мы находимс€ в
http://localhost/intervyu
а переходим в
http://localhost/interview/penzency-opasayutsya-ogranicheniya-vesennei-ohoty/

«апутано получаетс€.

¬ принципе, программируема€ папка - это очень хорошо. » рсс налажено. Ќо зачем нам дубликат, если есть обычна€ папка? Ёх.

ќеей, когда делаем дл€ папки обобщенный вид, показываетс€ как новости.
обобщенный вид называетс€ folder_summary_view. Ѕлин, сделать бы свой вид и выбирать его и поставить по умолчанию.

“ак, нужно обратить внимание на функцию isCurrentDay() класса DateTime


12 окт€бр€.

—мотрю /Plone/portal_skins/plone_templates/colophon

колофон - это секци€, в которой наход€тс€ значки (плоне, аксессибилити, энибраузер, цсс и т.д). Ётот колофон находитс€ в самом низу страницы (в подвале). “уда нужно затолкать копирайты и мнение редакции. “акже можно пока затолкать нижние ссылки (архив, поиск и др.). ѕопробуем.

“ак, смотрим, что там в колофоне. “ам определ€етс€ макро



этот див обрамл€ет практически всю страницу.

внутри него видим слот



очень интересно!

макро, а внутри слот.

Ѕлин, почему на русский €зык ругаетс€!

«атолкал туда обычные линки в юл ли на английском. “уда нужно заталкивать

—мотрю /Plone/portal_skins/plone_templates/main_template

Ёто главный шаблон, где вызываютс€ все макро. например, тот же колофон:


The colophon area - contains details about the production of
the site. Typically "powered by" buttons, standards, tools used.



here/colophon - это название шаблона

macros/colophon - название макроса

забубенил /Plone/portal_skins/custom/raznocvet

в нем



  • Archive

  • ...

    id="portal-colophon" нам дает оформление перечислени€ горизонтально. Ќужно посмотреть в стил€х, как это делаетс€, чтобы определить собственный ид.

    «атем кастомлю /Plone/portal_skins/custom/main_template

    в нем вызываю


    test raznocvetniye ssilki!


    все получилось.

    “еперь надо в raznocvet сделать выборку ссылок. Ќапример, сделать папку типа links, а в ней объекты-ссылки. «атем пройтись поиском по каталогу в папке links и выбрать элементы типа ссылки. “олько вот что! ѕор€док какой будет? можно ли будет перемещать эти ссылки? ќчень интересно!

    так, папку links создал. ≈е, конечно, нужно убрать из навигации.

    Ќасоздавал туда ссылок. ѕоправил /Plone/portal_skins/custom/raznocvet

    ѕрохожу по каталогу в поисках ссылок.  стати, сортировка как в фолдере сделана в портлете навигации. Ќужно сейчас посмотреть его.

    “екст ссылки беретс€ как title, хот€ правильно pretty_title_or_id
    url беретс€ как getRemoteUrl

    сортировка как надо происходит по getObjPositionInParent, наверное. Ќашел это в файле getFolderContents.py. ўа надо попробовать!

    ƒа!

    “аким образом код макроса в raznocvet получилс€ такой:







    ќчень интересный код находитс€ в /Plone/portal_skins/plone_content/folder_listing

    “ак!!! ѕо образу и подобию ссылок нужно сделать нижние ссылки (в колофоне, хот€ по-нормальному колофон нужен дл€ поверед бай). “акже делаютс€ насто€щие разноцветные ссылки на новости (заголовки). ’от€ их, наверное нужно брать по какому-то ключу, так будет лучше. Ќапример, ключ будет "raznocvet". » будут выбиратьс€, например, 5 последних разноцветных заголовков. „етные ссылки попробуем сделать оранжевыми! ќчень хороший цвет #FF3300

    ј, че забыл! Ћинки верхние, чтобы отличать от, например, нижних и других, нужно искать по каталогу в отдельной папке. “ак что нужно еще задать место поиска!

    –аботаю над местом дл€ поиска.

    portal/getPhysicalPath выдает список. сделал бы join, да нельз€. ƒолжна быть функци€, котора€ выдавала бы путь в нормальном слешевом виде!

    ќх, долго мучилс€! ƒолго искал по поиску! Ќашел! ¬писываю эту плюшку




    Ёто дл€ тестинга. ќтображает путь к порталу соедин€€ с /links

    ¬ поиск по каталогу вставл€ю это!

    “еперь все зе.

    tal:define="mypath portal/portal_url/getPortalPath;
    mypath python:'/'+str(mypath)+'/links';
    results python:portal.portal_catalog.searchResults(
    portal_type='Link',
    path=mypath,
    review_state='published',
    sort_on='getObjPositionInParent');
    results python:[r for r in results if r.getObject()]"

    links - это путь, где искать все нужные вещи. “еперь можно это применить к любому портлету. » к любым ссылкам (например, нижним). ўа буду делать нижние ссылки, которые буду искать в пути links_bottom

    »так, редактирую колофон!

    ¬се получилось. заменил в исходном links на links_bottom и все зе!


    ≈ще че подумал. ƒескрипшн и текст новости. ¬ плоне по умолчанию в просмотре новости отображаетс€ и дескрипшн (жирным), и текст. ≈сть два варианта. Ћибо текст новости писать как продолжение. Ќо тогда фул-текст в €ндексе будет только из продолжени€ и надо будет как-то склеивать. Ћибо другой вариант. ѕисать дескрипшн. » полный (с дескрипшном) текст новости. Ќо в шаблоне дл€ отображени€ новости убрать показ дескрипшна.

    „то лучше - не знаю.

    редактирую /Plone/portal_skins/plone_content/newsitem_view. Ќо тогда надо будет поправить и другие шаблоны (например, документ_вью). Ќ≈ «јЅџ“№!!!

    ≈ще нужно в шаблон дл€ просмотра новости забубенить врем€ публикации.

    ≈ще подправить картинку. (сделать ее слева и обтекать текстом).

    “ак. ƒескрипшн убрал (закомментил).

    ” картинки стиль css_class='newsImage'

    √де отображать дату?
    python:toLocalizedTime(here.ModificationDate(),long_format=1) - дата в формате

    2007-10-12 15:22

    Ќо при модификации дата мен€етс€. Ќужно дату публикации

    ƒату публикации нам возвращает EffectiveDate().

    «начит нужно делать так:

    python:toLocalizedTime(here.EffectiveDate(),long_format=1)

    „е заметил: функции начинаютс€ с заглавной буквы, атрибуты - со строчной.

    object_title - заголовок новости.

    “ак.

    ѕодвал (копирайты и т.д.) можно сделать, если текст забить в документ, а потом его показывать.

    “ак, делаем документ. ¬ принципе, он может остатьс€ публичным черновиком, чтобы не ма€чить в лентах.

    —оздаем папку, например, Templ в корне. »сключаем ее из навигации. ¬ нее пихаем документ, например, copyrights. “ак, документ создали.

    “еперь идем в колофон.

     ак вз€ть объект, если известен путь до него, и от этого объекта вз€ть кукедбоди? Ќаверное, есть функци€, но € ее не нашел. ћожет, плохо искал.

    »дем в лоб. ƒелаем поиск по каталогу с путем Templ/copyrights и выбираем документ. Ѕерем только один элемент.

    ѕосле долгих мучений вот че получилось:



    сopyrights!!!



    ќтображаетс€ все как надо. я же говорил ранее, что structure понадобитс€... “ак и вышло.

    ¬ принципе, нижние ссылки тоже можно забить в этот документ. » верхние тоже. ѕосмотрим, как будет удобнее!

    “ак. ƒелаем разноцвет. ¬з€л пару документов, в свойствах добавил ключевое слово raznocvet

    “еперь идем, например в raznocvet и пул€ем туда поиск по каталогу новостей с ключом разноцвет. —ортировка по дате реверсна€.

     ороче, все сделал, ща опишу

    ¬ разноцвете забубенил





    lalala raznocvet




    “о есть, беретс€ 5 последних опубликованных новостей с ключом raznocvet и отображаетс€. ≈сли новость четна€, то ссылка красна€, иначе - голуба€. —тили задаем в таблице стилей.

    Ёто добавл€ем в /Plone/portal_skins/custom/public.css, хот€, наверное, можно и в кастом какой-нибудь.
    #raznocvet_red {
    color: #FF3300;
    }

    #raznocvet_blue {
    color: #0066CC;
    }

    ÷вета обалденные. » модные. Ќадо бы весь сайт сделать в этих тонах!

    “аперича необходимо отобразить главные темы дн€. ћожно также по ключу.  люч будет, допустим, main

    Ќужно откустомизить какой нибудь шаблон с макро. ѕереназвать шаблон и макро. » вызывать эту макру из main_template.

    Ѕерем шаблон разноцвет, копируем.  опию переименовываем в main_themes. ¬се там не чистим. —мотрим внимательно.

    Ѕл€, исправил разноцвет.

    ¬роде все исправил. ¬се, как надо. —о стил€ми еще предстоит поигратьс€, там отступы от картинок и т.д.

    ¬от код макро в /Plone/portal_skins/custom/main_themes












    lalala raznocvet


    lalala raznocvet



    Ёту макру вызываем из /Plone/portal_skins/custom/main_template как показано ниже:


    main themes table!


    ¬ызываем до


    Ќе забыть!!! “уду: ≈сли нет картинки - нечего ее показывать!!! Ёто где-то есть. ¬ шаблонах.

    30 окт€бр€.

    ѕравим CSS.

    1. Ќужно, чтобы картинка в новости была слева.

    /Plone/portal_skins/custom/public.css

    Ќаходим. ѕравим.

    .newsImageContainer {
    float:left;
    /* float:right; */
    margin: 0 1em 0.5em 0;
    /* margin: 0 0 0.5em 1em;*/
    width: 202px;
    }

    float:left; - выравнивание по левому краю.

    margin: 0 1em 0.5em 0; - верх право низ лево. - справа отступ от текста

    √отово.

    ”бираем рамку у картинки.

    Ќаходим класс newsImage

    .newsImage {
    border: none;
    /* border: 1px solid black;*/
    }



    2.  артинка в ленте новостей - по аналогии

    стиль tileImage

    .tileImage {
    float:left;
    /* float: right;*/
    margin: 0 0.5em 0.5em 0;
    /* margin: 0 0 0.5em 0.5em;*/
    border: none;
    /* border: 1px solid black;*/
    }

    ¬ ленте новостей ссылка "ƒалее" как параграф класса tileFooter

    „его-то этот класс не найду.

    —оздаем тогда его. и делаем float: right;

    .tileFooter {
    float: right;
    }

    ’от€, ссылка "ƒалее" не рекомендуетс€.

    3. ѕортлеты без рамки.

    –едактируем /Plone/portal_skins/custom/portlets.css

    Ќаходим dl.portlet и добавл€ем border:none;

    dl.portlet {
    margin: 1px 0 1em 0;
    border:none;
    /* border-bottom: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;*/
    background-color: &dtml-backgroundColor;;
    }

    —низу рамка убралась

    Ќаходим .portletHeader и добавл€ем border:none;

    .portletHeader {
    background-color: &dtml-globalBackgroundColor;;
    border:none;
    /* border: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;; */
    padding: 0em 1em;
    text-transform: &dtml-textTransform;;
    font-weight: normal;
    line-height: 1.6em;
    }

    ¬ заголовке портлета рамка убралась. ¬ принципе, рамку можно снизу заголовка, то есть вместо добавлени€ border:none; заменить

    border: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;

    на

    border-bottom: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;

    ѕотом находим класс portletItem и убираем рамку слева и справа

    .portletItem {
    margin: 0;
    padding: 1em;
    /* border-left: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;; */
    /* border-right: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;; */
    }

    ѕотом в некоторых портлетах есть подвал (по типу ссылки "ќстальные новости").

    —верху точки, слева и справа - линии.

    ћен€ем класс portletFooter

    ”бираем рамку. »нтересно рамка сделана. разные стили.

    dd.portletFooter {
    background-color: &dtml-evenRowBackgroundColor;;
    margin: 0;
    padding: 0.25em 1em;
    /* border: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;; */
    /* border-style: dotted &dtml-borderStyle; none &dtml-borderStyle;; */
    text-align: right;
    }


    ¬се-таки левые и правые слоты не расшир€ютс€. ћен€ем /Plone/portal_skins/custom/base_properties

    columnOneWidth 30em

    columnTwoWidth 30em





    у картинки, чтобы не задевала текст отступы справа и снизу

    img style="margin-top: 2px; margin-right: 5px;"

    в /Plone/portal_skins/custom/main_themes у картинок!

    делаем стиль











    lalala raznocvet


    lalala raznocvet



    Ёх, блин! —колько мучалс€ и только сейчас, в 12 ночи доперло, что нужно вижл-клеар делать, чтобы картинки не наезжали друг на друга!!! ¬место таблиц! —пасибо √азете.ру!

    “о есть нужно делать после текста, обтекающего картинку такую плюшку:



    –ешил причесать /Plone/portal_skins/custom/portlet_business



    берем из папки бизнес 3 опубликованные новости, если они есть и если мы не находимс€ на ленте деловых новостей.

    в заголовке портлета пишем "деловые новости" (по названию раздела) и даем ссылку на /business (если есть така€ папка)



    News of business



    ¬от так

    python:portal.business.Title()

    беретс€ заголовок нужной папки. по образу можно вз€ть не только заголовок, но и все, что угодно.


    ѕо образу и подобию правлю /Plone/portal_skins/custom/portlet_interview

    “олько вместо business пишу interview.

    “акже отличие - вместо даты там врем€! как писалось ранее - python:DateTime(obj.Date).TimeMinutes()

    “еперь отправим портлет деловых новостей в правый слот! (портал -> вкладка "Properties")

    here/portlet_business/macros/portlet запсываем в right_slots, а here/portlet_news/macros/portlet можно будет убрать скоро.

    “ак, в принципе, не нужен в левом слоте и here/portlet_navigation/macros/portlet, если горизонтальное меню будет сверху. Ќо все равно пока оставим.

    ƒоработал немного /Plone/portal_skins/custom/main_themes:

    «аголовок сделал классом class="tileHeadline" (дл€ жирности) и отделил его от описани€


    “еперь нужно самый верх причесать как в “«.

    “о есть таблицу, в ней два столбца:

    в первом - сегодн€ - текуща€ дата, логотип, свидетельство;
    во втором - ссылки верхние + разноцветные заголовки + меню.

    ’от€ меню можно и посередке оставить в теле страницы.

    ѕравим /Plone/portal_skins/custom/raznocvet

    ƒелаем таблицу.

    —делали. все зе, даже между разноцветными заголовками слеш!

    /

    Ётим мы ставим слеш перед всеми, кроме первого.

    “у же плюшку в колофоне, только вместо слеша - кружок!

    » вверху |



¬ложение: 3622405_readme.txt

–убрики:  »нтернет
ћетки:  



 

ƒобавить комментарий:
“екст комментари€: смайлики

ѕроверка орфографии: (найти ошибки)

ѕрикрепить картинку:

 ѕереводить URL в ссылку
 ѕодписатьс€ на комментарии
 ѕодписать картинку