Первые две статьи серии были посвящены знакомству с SEBLOD и обзору основных возможностей расширения. Реальные уроки начнаются только сейчас. В этой статье я расскажу про основные элементы SEBLOD. Для дальнейшего изучения крайне важно понять всё, что здесь написано. Это основы основ.
Содержание
Установка SEBLOD
Прежде всего, SEBLOD нужно установить. Здесь нет ничего сложного. Даже наоборот. Компонент, все модули и плагины SEBLOD содержатся в одном пакете. Достаточно скачать его с официального сайта и установить, как обычное расширение.
Еще раз напоминаю: установить SEBLOD легко, удалить – гораздо сложнее. Не ставьте его сразу на действующий проект. Для начала потренируйтесь на кошках на локальном сервере.
После установки в пункте меню Компоненты появится подменю SEBLOD, а в панели администратора добавится дополнительный пункт меню Construction, кликнув по которому вы попадете на главную страницу расширения:
Основные элементы SEBLOD
SEBLOD содержит несколько основных элементов, без понимания которых дальше двигаться просто невозможно. Понять их не так уж и просто, особенно сначала, но сделать это необходимо.
В главном меню расширения мы видим несколько кнопок, а именно:
- Form & Content Type Manager
- Field Manager
- List & Search Type Manager
- Template Manager
- App Folder Manager
- Site Manager
Каждая из кнопок символизирует основной элемент.
Разберем их подробно.
Да, забыл сказать. Все уроки по SEBLOD я буду писать на основании английской версии компонента. Не подумайте, что я русофоб. Нет. Просто на данном этапе я не вижу никакого смысла в переводе компонента. Причин тому несколько. Во-первых, на сегодняшний день русской локализации попросту нет. Создать ее было бы не так сложно, но SEBLOD содержит столько двусмысленных понятий, что ничего хорошего из этого бы не выйдет. Во-вторых, практически вся документация по SEBLOD, за исключением этой серии статей, написана на английском и разбираться в ней, используя локализованный компонент, будет попросту неудобно. Ну и, наконец, в-третьих, подучить английский язык никому не помешает. По поводу фронтенда можете не беспокоиться. Он практически не содержит переменных, которые потребуется переводить. Все основные переводы, как вы увидите далее, делаются прямо в настройках компонента.
Теперь, когда с локализацией вопрос решен, вернемся к нашим элементам. Рассматривать их мы будем от простого к сложному.
Поля (Field Manager)
Основой основ любой CCK являются поля. Что такое поле(Field)? Поле – это единица данных. Представьте себе форму регистрации. Все элементы, которые вы заполняете, являются полями. Представьте себе форму добавления статьи в Joomla. Все элементы, которые вы можете заполнить(изменить), являются полями. Поля это и название статьи, и ее описание, и статус, и уровень доступа, и опции.
Для наглядности, покажу также на картинке:
Но, поля – это не только то, что можно заполнять. Они также могут быть и статическими(содержать фиксированный текст, который никогда не меняется). Например, можно создать текстовое поле с правилами сайта. Эти правила будут постоянны, но все же они будут являться полем.
SEBLOD содержит огромное количество полей. Это можно увидеть в менеджере полей (Field Manager).
Поля могут быть самых разных типов: текстовые, целочисленные, вещественные, URL, image, video, список, radio, checkbox и многие другие. Подробно все типы полей мы рассмотрим в отдельной статье.
Поля обладают некоторыми свойствами:
- Обычно они хранятся в базе данных;
- Они позволяют вводить данные пользователям и сохранять их в базе;
- Они позволяют выводить данные на сайт.
Если вы знакомы с устройством реляционной базы данных, то поле базы данных, можно рассматривать как поле Seblod (хотя это не совсем правильно. Как вы увидите в дальнейшем, SEBLOD позволяет использует гораздо более широкое представление)
Поля – это основная единица SEBLOD. На них завязано все остальное.
В SEBLOD вы можете создавать неограниченное количество полей и сохранять их в базе данных. Также вы можете связать поля SEBLOD с любыми (абсолютно любыми) полями базы данных Joomla. Благодаря этому, вы можете вывести на сайт что угодно, из того, что можно найти в базе, не написав ни строки программного кода. Это же касается и данных сторонних компонентов Joomla.
Типы контента и формы (Form & Content Type Manager)
Если разобраться с полями было достаточно просто, то понятие «Типы контента» значительно сложнее. Для начала, попробую дать классическое определение.
Тип контента – это совокупность полей, объедененных отдельной задачей.
Думаю, получилось не очень понятно. Теперь попробую объяснить простыми словами.
Все знают что такое «материал Joomla», «категория Joomla», «пользователь Joomla». Так вот: для SEBLOD каждое из этих определений ни что иное, как тип контента. Давайте подумаем: что такое материал Joomla? Это совокупность полей, позволяющая публиковать статьи на сайте. Т.е. в материале у нас есть поля заголовка, описания(краткого и подробного), категории материала, уровня доступа и прочих настроек. Все они позволяют нам выводить материалы, структурировать их, оформлять. Но ключевое слово здесь все-таки материалы. Материал по сути – структурная единица Joomla, состоящая из набора полей. Это как взять конструктор LEGO и создать из него игрушечный корабль. Поля – это кубики конструктора, а тип контента – это, собственно, корабль.
Тип контента позволяет:
- Добавлять контент заданного формата на сайт(как администраторами через админку, так и пользователями через фронтенд);
- Публиковать контент заданного формата на сайте;
- Структурировать контент заданного формата.
Менеджер называется Form & Content Type Manager не просто так. Каждый тип контента имеет форму добавления и отображения. Также, как, например, материал Joomla имеет форму добавления (в админке или на сайте при его создании) и форму отображения(то, как отображается опубликованный материал на сайте. Какие поля показываются, в каком порядке, и.т.д).
С помощью этого менеджера вы можете создавать контент и формы любой структуры. Например: каталог чего угодно, форма обратной связи, профиль пользователя, форма сообщений, форма запроса чего-либо, доска объявлений, и.т.д.
По умолчанию в SEBLOD создано 5 типов контента:
- Article
- Category
- Message
- User
- User Group
Все они соответствуют встроенным типам контента Joomla и могут быть расширены(например, в Материал можно добавить теги).
SEBLOD позволяет вам создавать неограниченное количество типов контента. Конструируйте из полей что угодно.
Списки и типы поиска (List & Search Type Manager)
Создавать и показывать контент – лишь одна из основных задач CCK. Другой такой задачей является поиск и фильтрация контента.
Для решения задачи поиска и фильтрации в SEBLOD имеются типы поиска. Тип поиска по сути – это конструктор SQL-запросов к базе данных, а также компоновщик отображения результатов запроса.
Тип поиска позволяет отфильтровать данные типа контента по каким-либо полям. Например, если вы расширили тип контента Article, добавив в него поле тегов, то вы, вероятно, заходите дать возможность пользователям видеть список всех материалов, содержащих какой-то определенный тег. Для того, чтобы выбрать из базы данных все материалы, содержащие этот тег и представить в виде списка или формата блога, как раз и потребуется тип поиска.
Тип поиска позволяет настроить фильтр очень гибко. Он может формировать списки определенных материалов, категорий, пользователей и других типов контента, сортируя их по заданному полю.
По умолчанию SEBLOD не имеет созданных типов поиска, но вы легко можете их добавить.
Шаблоны контента (Template Manager)
Любой тип контента должен иметь одну важную деталь – шаблон отображения контента.
Шаблон отображения контента это аналог макетов Joomla. Или вот пример:
представим, что у нас есть каталог автомобилей, содержащий название авто, его описание и фото. Все эти данные хранятся в базе, но вот вопрос: в каком виде показывать их на сайте? Просто друг за другом? А если хочется иначе?
Как раз для этого в SEBLOD имеются шаблоны контента. Они аналогичны шаблонам Joomla и позволяют определить на странице место, в которох будет выводиться каждое поле.
На данный момент SEBLOD имеет только один шаблон, зато какой! 42 позиции, позволяющие покрыть практически любую задачу:
Вы также можете создавать собственные шаблоны. Об этом будет отдельная статья, в которой мы создадим такой шаблон.
Пакеты (App Folder Manager)
Согласитесь, крайне удобно, когда типы контента мобильны. Представьте, вы создали каталог автомобилей со своими полями, типами контента, типами поиска, шаблонами и хотите его сохранить для будущих проектов, передать кому-то или даже продать. Делать это вместе с сайтом нецелесообразно. Гораздо удобнее было бы хранить такой набор в отдельном пакете. И о чудо! SEBLOD позволяет делать это. Изначально, перед созданием типа контента, вы должны создать для него в менеджере пакетов отдельную папку, а затем аккуратно складывать в нее(выбирая соответствующие опции в процессе работы) все элементы вашего автокаталога. После окончания работ, нажав всего одну кнопку, вы сможете скачать всю структуру каталога в виде одного архива, который установиться в любую другую связку Joomla + SEBLOD как простое расширение. Прекрасно, не правда ли?
Мультисайтовость (Site Manager)
Seblod дает вам возможность сделать доселе невиданное. Вы можете создать несколько разных сайтов с разными доменами, контентом, дизайном, на одной копии CMS Joomla и SEBLOD. Управлять всеми сайтами можно будет из единой админки. Подробно про мультисайтовость будет рассказано в отдельной статье.
Что еще?
Спектр возможностей SEBLOD уже весьма впечатляет. Помимо описанного стандартного функционала, в каталоге расширений SEBLOD вы найдете огромое количество дополнительных плагинов, расширяющих возможность компонента, а также готовых приложений, позволяющих легко получить форму комментариев, форму обратной связи и многое другое. Некоторые из расширений, но разработчикам тоже нужно на что-то жить.
Если вы не всё поняли из этой статьи, не отчаивайтесь. Будет много других статей, в которых я подробно расскажу о каждом из элементов. SEBLOD дается нелегко, но тем, кто его освоил, открывает очень широкие возможности.
Wedal, спасибо что взялся за перевод руководства по SEBLOD, давно хотел его осилить, но боялся, поэтому более по K2 угорал, но мои аппетиты растут, повышаются требования и чувствую, что SEBLOD может стать одним из мощных инструментов для решения моих задач.
Ждем продолжения...
Да этот аспект(юзабилити для конечного клиента) меня очень часто раздражает и заставляет подчас посматривать на альтернативные CMS. Частично это конечно можно решать сменой шаблонов админки, или вообще доступом к редактированию лишь через frontend.
Но, ИМХО, это конечно субъективизм в изрядной степени, ведь ничто не помешало войти RedSoft в 30-ку лучших вебстудий - а ведь они работают только с Joomla...
Что ты здесь забыл с такими коментами ?!?!?! Для умных людей это серьёзная вещь . Данный компонент позволяет реализовать очень много вещей которые до этого были не доступны. Альтернативы joomlа нету поскольку она бесплатна и компоненты и шаблоны тоже, а те которые платные спокойно можно достать. Других таких же массовых cms систем ты не найдёшь .
А на счёт веб студий то процентов 50 работают на cms joomla а остальные создают cms с ограниченными возможностями и называют их своими, в которых кроме редактирование текста больше ничего нету !
Есть, конечно же. Это индивидуаная для сайта админка, которая заточена под нужды конкретного сайта и написанная с максимальным юзабилити для пользователя и с теми функциями, которые ему нажны и расположены так, как ему удобно. При этом проше проектировать авторские дизайны, т.к. верстаются вручную. Да, трудоёмкости больше, зато результат лучше.
Примеры по CCK
http://sirgenry.ru
http://macrobioticworld.com/
http://www.cookkosher.com/
Все очень просто и зависит от формы редактирования контента, которую ВЫ САМИ создадите для пользователя. Собственно, сайт агентства недвижимости на который выше дали ссылку sirgenry.ru делал я, и все объекты и любые материалы там также добавляются простыми юзерами через фронт-энд. Вопросов у них не возникает А открывать для юзеров (редакторов контента сайта) back-end и настраивать для них же,ИМХО, гараздо сложнее и проблематичнее.
Ой, простите, а то я то совсем дурак, даже и не знал, что Joomla одна из мощнейших CMS, простите великодушно
Этот компонент тем и интересен, что поднимает планку возможностей в разработке на Joomla на новый уровень...
Wedal, спасибо что пояснил, это я и имел ввиду.
От души!
Присоединяюсь и очень жду продолжения.
Во-первых, спасибо за цикл, да и за всю ту работу, что Вы провели на Вашем сайте - если бы не Ваш сайт, то, ковырялся бы я с тем или иным компонентом... не "один год".
У меня вопрос (я понимаю, что опережаю события, но, все же):
:) ну, за ночь, во многом разобрался...
Вот только застрял на составлении запроса. Согласно примеру с офф. сайта: для вывода одной родительской категории, нужен запрос parent_id=314 and published=1 (где, 314 - это id категории)...
Подскажите, пожалуйста, а как правильно написать запрос, если, мне нужно, вывести несколько ID категорий...?
Пробовал так: parent_id=314,318 and published=1 - не помогло...
Ок, спасибо - попробую.
Wedal, а все же, как правильно нужно написать этот запрос (все таки, когда-то и пригодится)...? Категории, нужно, через запятую перечислять, или как-то выделять кавычками, и потом через запятую? Как?
parent_id=314 OR parent_id=318
Вот с этим не сог разобраться - не нашел Match... Но, да ладно, буду ждать Ваших следующих публикаций - там найду ответ.
Wedal, ОГРОМНОЕ СПАСИБО - это сработало!!!
P. S.
В декабре (скорее всего, в начале месяца), выйдет новый релиз SEBLOD 2.1
Интересно, есть ли возможность у SEBLOD создавать планировщики событий и календари?
На оф. сайте подсмотрел как сделать систему комментариев, начал копать в аналогичном направлении. Создал отдельный тип контента для заказа с определенными полями, вывел его как скрытый модуль Joomla, к типу контента моего каталога присобачил поле этого модуля, теперь форма заказа отображается для элементов каталога, с помощью live плагина URL получаю id элемента каталога (статьи), а с помощью поле email отсылаю этот id на мой почтовый ящик. Замечательно, но не юзабильно. Хочу получить красиво оформленное письмо, где будет указан не один id'ишник, а еще название элемента каталога, его url, различные поля из формы заказа и какой-то текст.
Жаль, что в SEBLOD нет простого изящного решения создавать красиво оформленные html письма по шаблону. Может, стоит обратить внимание на какой сторонний компонент, интегрирующийся с SEBLOD?
Оказывается, в обычном SEBLOD'овском поле Email все предусмотрено. В его настройках в текстовый бокс "Message (Field)" пишем через запятую название всех полей для отправки, а в вызываемом прямо из тех же настроек wysiwyg-редакторе "Message" оформляем сколько угодно красивое HTML-письмо, в теле которого упоминаем отправляемые поля, заключенные в решетки, например - #art_title#.
Просто и изящно.
Хочу сделать поиск по диапазону дат следующим образом. В неком типе контента есть два Calendar Picker, называются "от" и "до", пользователь выбирает диапазон дат (еще, если можно устроить валидацию, чтобы "от" не превышает "до" и наоборот). А в поиске есть одно поле Calendar Picker, называется просто "дата". Так вот, при поиске необходимо, чтобы значение "дата" было одновременно больше значения "от" и меньше "до". Что-то совсем не нахожу, где такое можно реализовать, получается только одно поле - один запрос...
В любом случае - спасибо огромное за уроки, с нетерпением жду следующий.
1) Попробуйте для них в Match(Кнопка 3) вписать:
[больше/меньше] и [название поля, по которому ищете]
либо
[больше/меньше] и [#название поля, по которому ищете#]
И там и там без квадратных скобок. Ими я просто обозначил формы. Если не получиться, то придется проводить поиск по обоим этим полям(добавлять из в форму поиска). В крайнем случае одно из полей можно скрыть и заполнять автоматически с помощью JS.
Версию 2.1 обещали выпустить в декабре. В ней планируется добавить СSV импорт/экспорт, а также много новых плагинов.
Я просто удивлен, что в столь мощном компоненте не предусмотрены такие возможности, как поиск по диапазону, для организации чуть более сложных поисковых форм. Казалось бы, подставлять значение из одного поля в другое, например, с помощью какого-нибудь live плагина - задача элементарнейшая, или организовать какое-нибудь чисто поисковое псевдополе, ссылающееся на любое другое поле.
Остается предложенный Вами вариант - одно из полей скрывать с помощью CSS, и подставлять туда значение с помощью JS из второго поля.
Спасибо за разъяснения.
Присоединяюсь к вышеперечисленным благодарностям и назрел такой вопрос:
При включении опции показа label, компонент его показывает но с префиксом "COM_CCK_". Как его убрать, может кто решал эту проблему?
Для загрузки изображений у SEBLOD'а есть поле Upload/Image, ну а форму добавления можно сделать через меню, специальным пунктом SEBLOD/Form.
Объясню подробнее: На сайте представлены банки, выдающие кредиты в разных городах. Нужно, чтобы каждую статью можно было пометить тегами типа “Москва, Санкт-петербург” и т.д., а пользователь выбирает свой город из списка, и ему показываются только те материалы, в тегах которых есть его город.
Вычитал, что можно это реализовать с помощью Seblod, но как и у большинства, возникла проблема с мануалами. Сейчас пытаюсь разобраться, что к чему, но за любую помощь буду весьма благодарен
P.S.: Перед обновлением нужно ОБЯЗАТЕЛЬНО сделать резервную копию сайта.