Сегодня попросили запилить виджет ВКонтакте для отображения ифрейма одной из ВК-групп.
Ранее это я делал сотни раз - ну примитивнейшая задачка, которая сводится лишь к небольшому копипасту.
Подключил нужный openapi.js от ВКонтакте.
Поместил нужный код (div+script) в нужное место нужного сайдбара и обновил страницу.
Увидел два идентичных блока с данными группы.
"Ха, ерунда" , подумал я , будучи уверен, что скопировал лишний div или что-то вроде того...
Увидился, когда код оказался в порядке. И началось... Ну сплошная мистика - откуда второй блок - неясно.
Забегая вперед - на пальцах и сейчас не объясню , откуда... Но в итоге нашел "виновника"...
На данном сайте используется CSS - фреймворк Kickstart. Довольно практичная и удобная штука, надо сказать. Ну так вот. Этот фреймфорк идет вместе со своим js-тулкитом, в котором заплен функционал для простеньких слайдшоу, некоторая хитрая работа с DOM и т.д.
Файл подключен в <head>. В консоль ошибками не плюется. Сам фреймворк отлажен и пользуется популярностью у существенного количества людей. Но вот ВКонтактовский виджет зачем-то клонирует)
В итоге пришлось <script> , рисующий вконтактовский ифрейм помещать непосредственно перед </body> , чтобы не дать никому шанса все испортить...
Виджетов теперь ровно столько, сколько надо - один :)
p.s. какой именно код kickstart.js все испохабил я пока не понял.. будет время (а это врядли ) - раскопаю :)
пятница, 20 апреля 2012 г.
среда, 18 апреля 2012 г.
django: совместимость с 1.4 : settings.py - ImproperlyConfigured: Error importing template source loader
В продолжении предыдущего поста о совместимости с django 1.4
Может возникнуть следующая проблема с загрузкой шаблонов при рендеринге:
Решение: закомментировать TEMPLATE_LOADERS в settings.py и скопипастить аналогичные настройки из settings.py , сгенерированного django-admin от версии 1.4
Может возникнуть следующая проблема с загрузкой шаблонов при рендеринге:
ImproperlyConfigured: Error importing template source loader django.template.loaders.app_directories.load_template_source: "'module' object has no attribute 'load_template_source'"
Решение: закомментировать TEMPLATE_LOADERS в settings.py и скопипастить аналогичные настройки из settings.py , сгенерированного django-admin от версии 1.4
django: совместимость с 1.4 : diario - ImportError: No module named feeds
Не так давно вышел официальный релиз django 1.4
До его выхода кто-то дальновидно заранее начинал работать с пре-релиз версией и портировать на нее свои существующие проекты.
Те, кто предпочел использовать в повседневновсти стабильную версию 1.3 теперь либо продолжают ее использовать, либо потихоньку (ведь никто не гонит) , переводят проекты на 1.4.
При этом у каждого НЕИЗБЕЖНО возникнут большие и малые трудности..
Дело в том, что весь зоопарк сторонних django-приложений еще не успел актуализироваться вслед за измененями в django, которые появились в версии 1.4
В этом и быть может последующих постах буду более менее существенные моменты отражать - быть может этот опыт пригодиться кому-то быстрее решить проблему миграции..
1. django-diario - неплохое приложение для организаци блога. В нем я наткнулся на ошибку импорта в 13-й строке файла diario/feeds/entries.py:
Проверил - в текущей версии diario проблема не решена , поэтому пришлось пока "ручками" поправить.
2. еще одно замечание про diario
Из-за того же рефакторинга django.contrib.syndication изменился и способ работы с фидами, которые предоставляет diario.
Если раньше вы подключали url-ы для фидов примерно так:
то теперь это надо делать так:
Удачи!
До его выхода кто-то дальновидно заранее начинал работать с пре-релиз версией и портировать на нее свои существующие проекты.
Те, кто предпочел использовать в повседневновсти стабильную версию 1.3 теперь либо продолжают ее использовать, либо потихоньку (ведь никто не гонит) , переводят проекты на 1.4.
При этом у каждого НЕИЗБЕЖНО возникнут большие и малые трудности..
Дело в том, что весь зоопарк сторонних django-приложений еще не успел актуализироваться вслед за измененями в django, которые появились в версии 1.4
В этом и быть может последующих постах буду более менее существенные моменты отражать - быть может этот опыт пригодиться кому-то быстрее решить проблему миграции..
1. django-diario - неплохое приложение для организаци блога. В нем я наткнулся на ошибку импорта в 13-й строке файла diario/feeds/entries.py:
from django.contrib.syndication.feeds import Feed
ImportError: No module named feeds
Действительно, в версии 1.4 нет файла feeds - вместо него используется views - видимо так правильнее ) Имена сущностей те же.. то есть, теперь надо
from django.contrib.syndication.views import Feed
Проверил - в текущей версии diario проблема не решена , поэтому пришлось пока "ручками" поправить.
2. еще одно замечание про diario
Из-за того же рефакторинга django.contrib.syndication изменился и способ работы с фидами, которые предоставляет diario.
Если раньше вы подключали url-ы для фидов примерно так:
from diario.feeds.entries import RssEntriesFeed, AtomEntriesFeed
entries_feeds = {
'rss': RssEntriesFeed,
'atom': AtomEntriesFeed,
}
#...
urlpatterns = patterns(
url(r'^pub/(?P(rss|atom))/$', 'django.contrib.syndication.views.feed', {'feed_dict':
entries_feeds}),
)
то теперь это надо делать так:
from diario.feeds.entries import RssEntriesFeed, AtomEntriesFeed
#...
urlpatterns = patterns(
url(r'^pub/(?Prss)/$', RssEntriesFeed()),
url(r'^pub/(?Patom)/$', AtomEntriesFeed()),
)
Удачи!
Подписаться на:
Комментарии (Atom)