CMS-словарик: расширения для CMS. Cms расширение
Расширение файла CMS - Как открыть файл CMS?
Расширение файла .cms (Content Management System)
Интернет-файлы | N/A | Content Management System |
Windows |
|
|
MAC |
|
Расширение файла .cms (Connection Manager Service Profile)
Файлы данных | Microsoft | Connection Manager Service Profile |
Windows |
|
При посещении нашего сайта вы наверняка задавали себе один из нижеперечисленных вопросов:
- С помощью какой программы открыть файл .cms?
- Чем открыть файл .cms?
- Что это за файл — .cms?
- Как сконвертировать файл .cms?
- Где я найду информацию о файле .cms?
www.howopen.org
File Extension CMS (Файловое расширение CMS)
Файловое расширения CMS (file extension CMS) используется операционными системами для распознавания файлов с содержимым типа CMS. Ниже мы предоставим информацию которая поможет вам разобраться в этом типе файлов.
Чтобы узнать есть ли у вас приложение которое поддерживает файловое расширение CMS (file extension CMS) вам необходимо два раза щелкнуть мышкой на имени файла. После этого операционная система Windows либо откроет этот файл с соотвествующим приложением, либо предложит вам поискать подходящее приложение на диске или в интернете. Если у вас нет необходимого приложения на вашем компьютере то вам необходимо поискать в интернете приложения которые могут открывать файлы с расширением CMS (file extension CMS).
Файловые расширения помогают компьютерам найти правильное приложение для открываемых файлов. Операционные системы обычно не смотрят на содержание открываемых файлов. Вместо этого они немедленно анализируют расширение файла и на основе него пробуют найти необходимое для открытия приложение. Такой подход позволяет быстро открывать файлы. Большинство операционных систем требуют использование файловых расширений.
Файловые расширения являются очень полезной вещью. Просто взглянув на название файла мы можем определить тип информации который сохранен в этом файле и какое приложение может быть использованно для этого. Замечали ли вы что когда компьютер не знает как открыть файл он спрашивает вас о том чтобы вы выбрали программу для открытия или предлагает поискать в интернете? Да! Таким образов файловые расширения облегчают работу на компьютере. Если вдруг отсутствует программа для открытия файла, то компьютер немедленно спросит пользователя с выбором нужной программы.
Если вы знаете какие приложение могут окрыть файлы с файловым расширением CMS (file extension CMS) и это не упомянуто на нашем сайте, пожалуйста пишите нам в нашей контактной форме.
Для более подробной информации о файлах CMS и другой полезной информации, читайте другие статьи на нашем сайте.
Наполнение этого сайта информацией и его поддержка это непрерывный и никогда не заканчивающийся процесс. Мы всегда рады услышать вопросы и отзывы которые могут быть посланы нам на странице контакта. Тем не менее так как количество посетителей данного сайта весьма велико мы не всегда можем лично ответить на каждый запрос. Спасибо за понимание!
cms.extensionfile.net
Расширение файла CMS - Как открыть файл CMS?
Если вы попали на этот сайт, то, скорее всего, у вас не получается открыть файл .cms. Полное название файла: Connection Manager Service Profile. Если после двойного клика на иконке файла появилось сообщение, что необходимо установить дополнительные программы, чтобы открыть файл, то внизу страницы вы найдете список программ, которые, скорее всего, подойдут для этой цели.Создатель этого формата — Microsoft.Расширение файла .cms (Connection Manager Service Profile)
Файлы данных | Microsoft | Connection Manager Service Profile |
Windows |
|
Расширение файла .cms (Content Management System)
Интернет-файлы | N/A | Content Management System |
Windows |
|
MAC |
|
При посещении нашего сайта вы наверняка задавали себе один из нижеперечисленных вопросов:
- С помощью какой программы открыть файл .cms?
- Чем открыть файл .cms?
- Что это за файл — .cms?
- Как сконвертировать файл .cms?
- Где я найду информацию о файле .cms?
www.howopen.org
расширения для CMS / Хабр
Рейтинг статейВход / РегистрацияРегистрация [?]: Регистрация у нас позволит:
|
| Последние продуктыНашли ошибку?
Статистика сайтаМы в Интернете |
allineed.ru
Расширение страниц - заголовки моделей
15 May 2014 г. 17:25:35
Новое в версии 3.0
Вы можете расширить страницу и заголовки моделей при помощи своих собственных полей (Например добавить картинку на каждую страницу) используя модели расширения cms.extensions.PageExtension и cms.extensions.TitleExtension соответственно
~cut~
Руководство
Привязывание расширений в панели администратора
Добавление элемента Toolbar Menu при расширении страницы
Использование расширений и меню
Использование расширений в шаблонах
Обработка отношений
Руководство
Для добавления полей в модель страницы, надо создать класс который наследуется от cms.extensions.PageExtension. Убедитесь что модель cms.extensions.PageExtension импортирована. Ваш класс должен находится в файле models.py в виде приложения или модуля. Так как PageExtension (и TitleExtension) наследуются из django.db.models.Model, вы можете свободно добавлять любые поля, которые захотите, но убедитесь что не используете никакие уникальные ограничения во всех полях. Потому что уникальность препятствует корректной работе механизма копирования расширений. Это зачит что вы не можете использовать отношения один к одному в модели расшенерия. Наконец вам надо зарегистрировать модель при помощи extension_pool.
Вот небольшой пример который добавляет поле icon на страницу.
from django.db import models from cms.extensions import PageExtension from cms.extensions.extension_pool import extension_pool class IconExtension(PageExtension): image = models.ImageField(upload_to='icons') extension_pool.register(IconExtension)Привязывание расширений в панели администратора
Чтобы сделать Ваше расширение редактируемым, вы должны сначала создать класс admin, наследуя его от cms.extensions.PageExtensionAdmin. Этот класс обрабатывает права доступа к страницам. Если вы хотите использовать собственный класс admin, убедитесь что исключили текущую версию расширения используя в запросе filter(extended_page__publisher_is_draft=True)ю
Продолжая пример модели выше, создадим соответствующий простой класс PageExtensionAdmin класс: from django.contrib import admin from cms.extensions import PageExtensionAdmin
from .models import IconExtension class IconExtensionAdmin(PageExtensionAdmin): pass admin.site.register(IconExtension, IconExtensionAdmin)Так как PageExtensionAdmin наследуется от ModelAdmin, Вы можете использовать обычный набора свойств Django из модели ModelAdmin, в зависимости от ваших нужд.
После регистрации класса admin, модель появится на верхнему уровне в списке панели администратора.
Стоит заметить что поле, которое связывает отношение между расширением и CMSPage не редактируемое, поэтому оно не появится в панели администратора. К сожалению это оставляет оператор без связывания как такового, пр расширении конкретной страницы. Способом решения данной проблемы является использование CMSToolbar.
Вы так-же можете захотеть сделать вашу модель редактируемой из панели инструментов cms, чтобы связать каждый экземпляр расширения модели со страницей. (По умолчанию страница в панели администратора является не редактируемым атрибутом). Код из примера ниже должен находиться cms_toolbar.py, в одном из ваших приложений и добавляет меню для расширение на каждую страницу:
from cms.api import get_page_draft from cms.toolbar_pool import toolbar_pool from cms.toolbar_base import CMSToolbar from cms.utils import get_cms_setting from cms.utils.permissions import has_page_change_permission from django.core.urlresolvers import reverse, NoReverseMatch from django.utils.translation import ugettext_lazy as _ from .models import IconExtension @toolbar_pool.register class IconExtensionToolbar(CMSToolbar): def populate(self): # always use draft if we have a page self.page = get_page_draft(self.request.current_page) if not self.page: # Nothing to do return # check global permissions if CMS_PERMISSIONS is active if get_cms_setting('PERMISSION'): has_global_current_page_change_permission = has_page_change_permission(self.request) else: has_global_current_page_change_permission = False # check if user has page edit permission can_change = self.request.current_page and self.request.current_page.has_change_permission(self.request) if has_global_current_page_change_permission or can_change: try: icon_extension = IconExtension.objects.get(extended_object_id=self.page.id) except IconExtension.DoesNotExist: icon_extension = None try: if icon_extension: url = reverse('admin:myapp_iconextension_change', args=(icon_extension.pk,)) else: url = reverse('admin:myapp_iconextension_add') + '?extended_object=%s' % self.page.pk except NoReverseMatch: # not in urls pass else: not_edit_mode = not self.toolbar.edit_mode current_page_menu = self.toolbar.get_or_create_menu('page') current_page_menu.add_modal_item(_('Page Icon'), url=url, disabled=not_edit_mode)Теперь, при вызове оператора “Edit this page” из панели инструментов, там будет дополнительный элемент меню (в нашем случае Page Icon), который будет использован для открытия диалога, где оператор может изменить поле icon
Обратите внимание, когда расширение сохранено, страница будет отмечена что у нее есть неопубликованные изменения. Чтобы увидеть изменения необходимо опубликовать страницу.
Использование расширений и меню
Если вы хотите расширить возможности отображаемого меню (например, если вы создали расширение которое добавляет изображение на страницу) используйте свойства меню. Каждое свойство node.id соответствует связанному page.id. Чтобы получить объект страницы можно воспользоваться Page.objects.get(pk=node.id). Каждое расширение страницы имеет отношение один-к-одному со страницей, к которой у вас есть доступ при помощи обратного отношения, например: extension = page.yourextensionlowercased. Теперь вы можете связать расширение сохраняя его в узле node.extension = extension. У вас есть доступ к изображению в шаблоне меню из дочернего объекта child.extension.icon.
Использование расширений в шаблонах
Чтобы получить доступ к расширению из шаблона вы можете просто воспользоваться соответствующим полем related_name которое теперь доступно в объекте Page.
Как и в обычном механизме имен в Django, соответствующее поле имеет такое-же название как и PageExtension, в нижнем регистре. Таким образом, модель вашего расширения называется IconExtension, и из оно страницы будет доступно через *page.iconextension, поэтому вы можете использовать что-то вроде:
{% load staticfiles %} {# rest of template omitted ... #} {% if request.current_page.iconextension %} <img src="{% static request.current_page.iconextension.url %}"> {% endif %}Где для получения доступа к текущей странице, из которой был вызван шаблон, получаем через request.current_page
Важно помнить что пока оператор используемый на странице не связан со всеми страницами, у страницы может не быть доступа к отношению iconexension, используемого в блоке {% if ... %}...{% endif %} выше.
Обработка отношений
Если ваше расширение PageExtension или TitleExtension использует внешний ключ из другой модели или использует отношение многий-ко-многим через поле ManyToMan, то вы также должны переопределить метод copy_relations(self, oldinstance, language), чтобы поля были скопированы соответствующим образом, когда CMS выполняет копирование вашего расширения при поддержке версионности и т.д.
from django.db import models from cms.extensions import PageExtension from cms.extensions.extension_pool import extension_pool class MyPageExtension(PageExtension): page_categories = models.ManyToMany('categories.Category', blank=True, null=True) def copy_relations(self, oldinstance, language): for page_category in oldinstance.page_categories.all(): page_category.pk = None page_category.mypageextension = self page_category.save() extension_pool.register(MyPageExtension)Оставьте свой комментарий
cultofdigits.com
Django CMS - Пример расширения CMS
12 April 2014 г. 15:46:53
В этом разделе предполагается что вы уже о ознакомились с руководством по Django и будет показано как интегрировать программу голосования, из руководства, в django CMS. Если в дальнейшем будет упоминаться голосование, то это будет ссылка на руководство по Django. Так же убедитесь что приложение голосования добавлено в секцию INSTALLED_APPS.
~cut~
1.1 Мой первый плагин
1.1.1 Модель
1.1.2 Класс Plugin
1.1.3 Шаблоны
1.2 Мое первое приложение (связывание приложений)
1.3 Мое первое меню
Таким образом ваш файл urls.py будет приблизительно выглядеть так:
from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', (r'^admin/', include(admin.site.urls)), (r'^polls/', include('polls.urls')), (r'^', include('cms.urls')), )1.1 Мой первый плагин
Плагин это небольшая часть контента, которая помещается на вашу страницу
1.1.1 Модель
Для вашего приложения голосования мы хотим создать небольшой плагин, которые показывает голосование и позволяет пользователям голосовать.
В приложении голосования models.py будет выглядеть так:
from cms.models import CMSPlugin class PollPlugin(CMSPlugin): poll = models.ForeignKey('polls.Poll', related_name='plugins') def __unicode__(self): return self.poll.questionЗамечание
В django CMS все плагины вместо models.Model должны наследоваться от cms.models.CMSPlugin
Выполните manage.py syncdb для создания таблиц в базе данных для этой модели. Больше информации можно найти в статье http://cultofdigits.com/articles/django-cms/2-ispolzovanie-south-v-django-cms/
1.1.2 Класс Plugin
Теперь создайте файл cms_plugins.py в той же директории в которой находится models.py. После всех Ваших изменений директорий должен выглядеть следующим образом:
polls/ __init__.py cms_plugins.py models.py tests.py views.pyКласс plugin отвечает за предоставление информации для django CMS, когда необходимо получить информацию для отрисовки вашего плагина.
Для плагина голосования класс plugin должен выглядеть следующим образом:
from cms.plugin_base import CMSPluginBase from cms.plugin_pool import plugin_pool from polls.models import PollPlugin as PollPluginModel from django.utils.translation import ugettext as _ class PollPlugin(CMSPluginBase): model = PollPluginModel # Model where data about this plugin is saved name = _("Poll Plugin") # Name of the plugin render_template = "polls/plugin.html" # template to render the plugin with def render(self, context, instance, placeholder): context.update({'instance':instance}) return context plugin_pool.register_plugin(PollPlugin) # register the pluginЗамечание
Все классы которые создают плагины должны наследоваться от cms.plugin_base.CMSPluginBase и так-же должны быть зарегистрированы при помощи cms.plugin_pool.plugin_pool.
1.1.3 Шаблоны
Возможно вы заметили атрибут render_template в классе плагина описанным выше. Для работы нашего плашина этот шаблон должен существовать и должен отвечать за обрисовку плагина.
Шаблон должен выглядеть приблизительно так:
<h2>{{ instance.poll.question }}</h2> <form action="{% url polls.views.vote instance.poll.id %}" method="post"> {% csrf_token %} {% for choice in instance.poll.choice_set.all %} <input type="radio" name="choice" value="{{ choice.id }}" /> <label for="choice{{ forloop.counter }}">{{ choice.choice }}</label><br /> {% endfor %} <input type="submit" value="Vote" /> </form>Замечание
Мы не показываем здесь сообщения об ошибках, потому что когда происходит отправка формы мы не переходим к фактической странице голосования.
1.2 Мое первое приложение (связывание приложений)
Прямо сейчас внешние приложение связывается статически в файле urls.py. В django CMS это не является желательным методом. Идеальный способ это связывание приложения на ваших страницах внутри CMS.
Для этого необходимо создать CMSApp. Это всего лишь небольшой класс который сообщает как приложение должно быть включено в CMS.
Приложения находится в файле под названием cms_app.py, поэтому давайте создадим внутри приложения голосования файл приложения:
polls/ __init__.py cms_app.py cms_plugins.py models.py tests.py views.pyВнутри этого файла поместите следующее:
from cms.app_base import CMSApp from cms.apphook_pool import apphook_pool from django.utils.translation import ugettext_lazy as _ class PollsApp(CMSApp): name = _("Poll App") # give your app a name, this is required urls = ["polls.urls"] # link your app to url configuration(s) apphook_pool.register(PollsApp) # register your appТеперь можно удалить из файла urls.py ссылку на приложение голосования, и он будет выглядеть следующим образом
from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', (r'^admin/', include(admin.site.urls)), (r'^', include('cms.urls')), )Теперь откройте панель администратора и вашем браузере и отредактируйте страницу. Откройте вкладку ‘Advanced Settings и выберите для вашего приложения Polls App.
К сожалению для того чтобы эти изменения вступили в силу Вам придется перезагрузить сервер. Сделайте это и после этого перейдите на страницу и вы уведете ваше приложение для голосования.
1.3 Мое первое меню
Возможно Вы заметили что дерево меню останавливается на последнем шаге. Поэтому давайте создадим меню которое показывает узел для каждого активного приложения голосования.
Для этого нам надо создать файл menu.py. Создайте его и убедитесь что ваше приложения голосования выглядит следующим образом:
polls/ __init__.py cms_app.py cms_plugins.py menu.py models.py tests.py views.pyВ файле menu.py добавьте следующее содержание:
from cms.menu_bases import CMSAttachMenu from menus.base import Menu, NavigationNode from menus.menu_pool import menu_pool from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _ from polls.models import Poll class PollsMenu(CMSAttachMenu): name = _("Polls Menu") # give the menu a name, this is required. def get_nodes(self, request): """ This method is used to build the menu tree. """ nodes = [] for poll in Poll.objects.all(): # the menu tree consists of NavigationNode instances # Each NavigationNode takes a label as its first argument, a URL as # its second argument and a (for this tree) unique id as its third # argument. node = NavigationNode( poll.question, reverse('polls.views.detail', args=(poll.pk,)), poll.pk ) nodes.append(node) return nodes menu_pool.register_menu(PollsMenu) # register the menu.На данном этапе это меню не делает много. Мы должны в первую очередь связать его с нашим приложениям.
Поэтому откройте файл cms_apps.py и добавьте стелющее:
from cms.app_base import CMSApp from cms.apphook_pool import apphook_pool from polls.menu import PollsMenu from django.utils.translation import ugettext_lazy as _ class PollsApp(CMSApp): name = _("Poll App") urls = ["polls.urls"] menus = [PollsMenu] # attach a CMSAttachMenu to this apphook. apphook_pool.register(PollsApp)Оставьте свой комментарий
cultofdigits.com