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

 

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

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

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 30.08.2006
Записей:
Комментариев:
Написано: 9081


Проект на 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 в ссылку
 Подписаться на комментарии
 Подписать картинку