Для начала - если Вы используете компонент K2 и его отдельные шаблоны, то нужно скопировать всё содержимое шаблона K2 в Ваш шаблон Joomla. Таким образом, при обновлении K2 (особенно это касается J2.5 и выше) Вы не потеряете свои изменения, которые Вы произвели в файлах шаблона K2.
Создаём копию шаблона K2
Открываем папку: /components/com_k2/templates
/
и копируем ее содержимое в папку с вашим шаблоном (предварительно создав папки com_k2/templates
/
): /templates/имя_вашего_Joomlaшаблона/html/com_k2/templates
/
Если Вы будете использовать разделение доп.полей не везде, то весьма полезным будет создание отдельного шаблона для этих целей. К примеру, часть статей мы будем выводить так, как они и выводятся в К2 по умолчанию (пусть шаблон так и называется default
), а наш модернизированный шаблон банально обзовём new
. Чтобы было более понятно - смотрим дерево на картинке (будьте внимательны - по поводу имени файла CSS-стиля в данной папке мы пожуём ниже). В нашем примере мы используем шаблон от компании Yootheme - Nano3 .
Содержимое папки default полностью копируем в папку new . Именно в папке new мы и буедм производить все дальнейшие манипуляции.
Так как К2 по умолчанию "тянет" стили из "родной" папки компонента (/components/com_k2/css/k2.css ), решим проблему следующим образом:
Предоставляя базовое переопределение для item.php , мы делаем рестайлинг названия и удаляем стиль font-family по умолчанию, созданный K2, а вместо этого наследуем его из шаблона. В этом случае, вы должны увидеть изменение название стиля.
Как это расширить?
Вы можете щелкнуть правой кнопкой в вашем браузере на любой части, которую вы хотите изменить, это будет объявленный класс CSS или ID и используемые настройки, разделить новую структуру CSS в типографику, цвет и расположение, а затем просто скопировать нужный селектор CSS и вставить в соответствующий файл CSS коррекции. Внесите изменения и сохраните.
Теперь у вас есть настройки по умолчанию, вы можете скопировать вложенную папку по умолчанию, а затем переименовать, чтобы создать новый шаблон. Просто убедитесь, что ваш новый второй шаблон присваивается категории К2.
Настройка стилей
В item.php мы предоставляем ссылку на импорт, чтобы загрузить файл CSS - k2.css . Вы можете скопировать все CSS из файла стилей компонента K2 - k2.css и поместить его здесь. Я предпочитаю переопределять только то, что требуется. В k2.css мы предоставляем ссылки на 3 дополнительных CSS просто разбитых на типографику, расположение и цвета, вы не должны использовать их, если вы не хотите, я разделил их, по просьбе продвинутых клиентов.
Здесь подразумевается, что с К2 вы уже работали, а значит, создали группу дополнительных полей, а в ней - хотя бы два самих поля. Затем нужно присвоить эту группу допполей нашей категории, которой мы назначили шаблон new. Создаём тестовый материал, открываем его и делаем запись в дополнительных полях (в нашем примере это банальные «Демо» и «Скачать»):
Теперь разберёмся c содержимым папки нашего К2-шаблона.
category.php | файл, отвечающий за вывод списка категорий |
category_item.php | файл, отвечающий за вывод материалов при открытии непосредственно категории в режиме блога |
item.php | файл, отвечающий за вывод материала в развёрнутом (полном) виде |
item_comments_form.php | файл вывода формы комментариев после материала |
itemform.php | файл вывода формы добавления материала |
latest.php | файл вывода списка последних материалов |
latest_item.php | файл вывода материала в списке последних материалов |
new_style.css | файл стилей данного шаблона (в нашем примере имя шаблона - new) |
tag.php | файл вывода списка материалов по тэгу |
user.php | файл вывода страницы автора |
Для примера будем ковырять файл, отвечающий за вывод материалов в режиме блога - а именно category_item.php
. Сделаем так, чтобы при просмотре списка материалов пользователь видел только Демо
, а уже при просмотре развёрнутого материала появлялось бы ещё и поле Скачать
.
Хочу обратить Ваше внимание, что за просмотр развёрнутого материала отвечает уже другой файл, а именно - item.php
, и в нашем примере для достижения желаемого результата нужно будет подправить только первый файл, category_item.php
.
Разделяем дополнительные поля
Открываем файл /templates/название_шаблона/html/com_k2/templates/new/category_item.php и после строки:
Defined("_JEXEC") or die("Restricted access");
(это практически в самом начале файла) вставляем следующий код:
// дополнительные поля материала K2 $extrafields = array(); foreach($this->item->extra_fields as $item) { $extrafields[$item->id] = $item->value; }
После этого нам необходимо удалить существующий вывод всех дополнительных полей. Ищем в районе 136-й строки код (от версии к версии номера строк могут меняться - для этого у Вас должна быть голова на плечах и более-менее прямые руки) и удаляем его:
item-> params-> get("catItemExtraFields" ) && count($this-> item-> extra_fields)): ?>
-
item->
extra_fields as
$key=>
$extraField): ?>
value !
=
""
): ?>
- type
type); ?> group
group; ?>">
type ==
"header"
): ?>
name; ?>
name; ?> value; ?>
Далее нам нужно вывести одно дополнительное поле внизу intro -текста материала, это будет поле Демо , которое имеет уникальный ID - 1 (узнать ID поля можно в административной панели K2, во вкладке Доп. поля):
Затем в этом же файле category_item.php ищем подходящую позицию для размещения дополнительного поля (в нашем случае это будет в самом верху материала, под Автором) и вставляем следующий код:
где - это и есть id дополнительного поля Демо . Обновляем страницу на сайте и видим наше одно поле, которое имеет идентификатор 1 . Таким же образом вставляем другие поля в любом месте шаблона K2, только не забудьте менять ID при каждом новом добавлении поля в шаблон, в противном случае у вас получится одно и тоже поле в разных местах шаблона:
НЕМАЛОВАЖНОЕ ЗАМЕЧАНИЕ: в настоящее время можно использовать алиасы доп. полей вместо id, что существенно упростит навигацию в файлах К2-шаблона:
$this->item->extraFields->АЛИАС->name $this->item->extraFields->АЛИАС->value
Таким образом, счастливые обладатели К2, начиная с версии 2.6.1, могут наслаждаться ещё и тем, что теперь возможен вывод названия (name) и значения (value) любого дополнительного поля в любом месте шаблона! Ну, а мы, так сказать, для простоты, поработаем пока "по старинке".
И ещё одно замечание. Как Вы уже могли заметить, у нас вывелось только значение дополнительного поля, имя поля в нашем случае не было необходимо, и мы его упустили. Если же Вы хотите вывести и название поля, и его значение - нужно несколько видоизменить код, который мы добавляли в начале (помните, после строки запрета прямого доступа к файлу):
// дополнительные поля материала K2 $extrafields = array(); foreach($this->item->extra_fields as $item) { // добавлением следующей строки мы определяем переменную, содержащую имя допполя, а в следующей - его значение: $extrafieldsname[$item->id] = $item->name; $extrafields[$item->id] = $item->value; }
Индивидуальное оформление каждого поля
Далее нам необходимо индивидуально оформить дополнительное поле K2. Для этого достаточно просто обрамить наш код DIV"ом или любым другим элементом по желанию и добавить к нему CSS-класс или id для создания уникального стиля. Например, сделаем так:
После этого открываем CSS файл компонента K2 (это наш файлик new_style.css) и создаем стиль оформления. Здесь уже делайте оформление как душе угодно. Например, вот так:
Demo { background: url ("../images/red-button.png"); width: 60px; height: 20px; margin: 8px 0 7px 5px; }
Но я использовал уже готовые стили шаблон и просто прописал class="uk-button uk-button-success", плюс добавил своих для позиционирования:
Результат получим такой:
Усложняем задачу
В "штатном" режиме дополнительные поля К2 выводятся циклом, мы же в предыдущем примере убрали цикл и вывели поля индивидуально. Но не запаримся ли мы, если у нас два десятка полей, и нам не нужно делать индивидуальное оформление для каждого поля, а нужно лишь скрыть одно-два поля от посторонних? Выведем снова циклом, исключив ненужные поля. Ситуация с алиасами нам не подойдёт однозначно. Например, будем выводить поле "оптовая цена" только для конкретной группы пользователей К2 (назовём их условно "Оптовики"). В данном примере рассмотрим поля "Мелкий опт" и "Крупный опт" id которых равны соответственно 19 и 20, и группу пользователей "Оптовики", id которой равно 5.
Обратите внимание: мы работаем не с группами пользователей JOOMLA, а с группами пользователей К2. Это важно!
-
item->
extra_fields as
$key=>
$extraField): ?>
value !
=
""
) &&
($extraField->
id <>
19
) &&
($extraField->
id <>
20
)): ?>
- type type); ?> group group; ?>"> name; ?>: value; ?>
Таким образом, в этом куске кода мы выводим все поля, кроме незаполненных и тех, у которых id=19 и id=20. Теперь проверим, какой id у пользователя, и если он из группы "Оптовики" (т.е. id группы юзеров К2 =5) - выведем по описанноый ранее методике оставшиеся два поля:
// получаем айдишку К2-юзера и его К2-группы id); if ($k2_user-> group >= 5 ) { ?> "
" ?>Смотрим готовый код:
// Начинаем цикл-перебор всех существующих доп.полей
-
item->
extra_fields as
$key=>
$extraField): ?>
// Делаем проверку, не пустые ли допполя и не равны ли их id-шки 19 и 20, и если условие верно - выводим допполя по очереди:
value !
=
""
) &&
($extraField->
id <>
19
) &&
($extraField->
id <>
20
)): ?>
- type type); ?> group group; ?>"> name; ?>: value; ?>
тут выводим предупреждение о недопустимости просмотра данной группой
" ?>Итог:
Думаю, простота данного решения не введёт в ступор даже мало-мальски посвящённого в тему Джумлера. Используя данную методику, можно не только выводить/скрывать доп. поля, но и при желании размещать их в разном порядке, в начале и конце статей, а также выводить в одной статье поля из разных групп.
От автора: приветствую Вас уважаемые читатели. Как Вы знаете в CMS Joomla для создания материала предусмотрено определенное фиксированное количество полей, которые формируют его структуру и контент. К примеру, название, текст, изображение, привязка к категории и т.д. При этом добавить дополнительные элементы, в стандартном функционале возможности нет, без внесения правок в движек, конечно. Поэтому в данной статье мы с Вами рассмотрим расширение K2 Joomla, которое представляет собой конструктор контента, для выше указанной CMS.
Как уже говорилось стандартный компонент материалов com_content, хоть и выполняет свои задачи, но все же его функционал очень ограничен, в плане расширяемости. То есть мы не можем, используя админку Joomla добавить дополнительные поля к структуре материала, при этом, я уже не говорю о более сложных вещах, к примеру, о механизме добавления комментариев. Конечно зная API Joomla, можно расширить функционал компонента com_content, добавив необходимый код, но для новичков это достаточно сложная задача. Поэтому как правило для решения различных не стандартных задач используются сторонние расширения, которые добавляют недостающий функционал в CMS.
Но что делать, если к примеру нам необходимо добавить парочку дополнительных полей в стандартный материал – систему комментариев, а также возможность вставки видео непосредственно в контент материала. Ответ прост – установить необходимые расширения, а именно компонент комментариев (сейчас не важно какой) и плагин вставки видео контента. Но что касается добавления дополнительных полей – это уже проблема, так как порой очень сложно отыскать подходящее расширение. Поэтому в данном случае наиболее удачное решение – это использование конструктора контента (Content Construction Kit или CCK), который избавит Вас от необходимости устанавливать различные дополнительные расширения (в том числе и выше перечисленные).
Content Construction Kit или CCK – это система создания пользовательских типов контента. То есть – это специальное расширение в котором предусмотрены инструменты для создания и настройки различных типов контента. При этом, как правило, тип контента формируется путем создания необходимых полей. Соответственно количество полей, которые можно привязать к материалу не ограничивается. То есть разработчик самостоятельно, используя панель администратора создает необходимые поля и привязывает их к новому типу контента, которые в будущем будут использоваться для наполнения сайта содержимым.
В данное время создано большое количество различных конструкторов контента для CMS Joomla, но на мой взгляд наиболее удачным и простым в работе является компонент K2 Joomla, который можно скачать по ссылке .
Основные возможности компонента
1. Удобная панель управления компонента.
2. Собственный менеджер категорий, поддерживающий неограниченный уровень вложенности.
3. В компонент k2 джумла встроен удобный менеджер элементов (материалов) с стандартным набором полей, которые можно дополнить собственными при необходимости.
4. Интегрированная система комментирования с встроенной защитой от спама, система голосования, а также иконки социальных сетей.
Современные тенденции и подходы в веб-разработке
Узнайте алгоритм быстрого роста с нуля в сайтостроении
5. Интегрированная система тегов (ключевых слов), которые Вы можете привязать к создаваемым элементам, по аналогии с CMS WordPress, что может быть полезно при создании блога.
6. К каждому материалу, помимо дополнительных полей, можно привязать изображение, а так же, при необходимости, галерею изображений, правда для этого необходимо установить специальный плагин.
7. Гибкая система настроек.
8. Конструктор K2 Joomla 3, так же предоставляет возможность прикрепить к создаваемому элементу произвольный файл для последующего скачивания посетителями сайта.
9. Поддержка большого количества разнообразных полей, которые можно добавлять к создаваемым типам контента. При этом поля группируются по группам, что очень удобно, так как группу дополнительных полей Вы можете привязать к определенной категории. А значит, для создаваемых материалов категории будут доступны поля из привязанной группы.
10. Добавление и редактирование материалов из пользовательской части сайта. При этом у пользователя должны быть соответствующие права.
Конечно, я перечислил только основные возможности компонента К2, на самом деле его возможности колоссальны и думаю Вы в этом сами убедитесь если будете использовать его в своих наработках. Более подробная работа с данным расширением рассмотрена в курсе . Всего Вам доброго и удачного кодирования!!!
Современные тенденции и подходы в веб-разработке
Узнайте алгоритм быстрого роста с нуля в сайтостроении
В этом уроке будет рассмотрена работа с тэгами в компоненте K2 . И первый вопрос, который может возникнуть у читателя, незнакомого с этим понятием, что это такое и зачем это собственно нужно? А нужно это вот для чего. Рассмотрим такую ситуацию:
Предположим у вас на сайте есть некий материал, зайдя на страничку которого, пользователь заинтересуется данной тематикой. Дальнейшие действия читателя? Он может конечно зайти опять в поисковик и сделать вопрос по интересующей его информации там. Конечно, такой вариант нежелателен, но вполне возможен. Но ведь пользователь может пойти и другим путем и попробовать поискать статьи на вашем сайте. Но опять же, он может либо найти похожие статьи, либо не найти их, последний вариант вполне возможен, особенно если у сайта огромная структура, в которой легко потеряться. Итак, что мы имеем? В первом случаем посетителя мы потеряем, во втором, есть такая вероятность что потеряем. И это для нас нежелательно.
Вот поэтому и придумали тэги. Как они работают? Допустим, на сайте у нас есть статья, посвященная выращиванию лилий. Значит что мы делаем в этом случае? Добавляем тэги, соответствующие нашей тематике. В данном случае тэги будут следующие: садоводство, лилии.
То есть, если посетителю ресурса в принципе интересна статья, посвященная садоводству, то он найдя в конце статьи тэг “садоводство” и щелкнув по нему, перейдет в каталог статей, посвященных данной тематике и таким образом, на этом будет сэкономлено огромное количество времени. Второй закономерный вопрос заключается, в том, а как собственно система узнает, что статьи принадлежат одной и той же тематике. Технически это выглядит так: администратор ресурса сам связывает статью с нужным тэгом .
А теперь рассмотрим все это на примере K2 .
Логично, что прежде чем мы будем связывать статью с конкретным тэгом, нам этот тэг в первую очередь нужно создать. Для этого мы должны выбрать Компоненты – К2 – Тэги и нажать кнопку Создать. Перед нами откроется диалоговое окошко, полей в котором совсем немного.
Здесь мы просто вводим название нужного тэга. Пусть это будет к примеру садоводство.
Далее. Пусть у нас есть статья, посвященная садоводству, созданная через компонент К2 – Материалы . В таком случае нам остается связать нашу статью с тегом садоводство. А сделать это очень просто. Просто в поле теги пропишем необходимые теги.
На самом деле, можно было сделать это изначально, в самом материале, минуя создание тегов. В этом случае, теги бы создались автоматом. Но если так просто, то зачем вообще нужен этот пункт меню теги? А сделано это неспроста, а для того, чтобы у нас был доступ к каждому пункту в отдельности.
Благодаря этому мы можем реализовать очень полезную фишку. А именно – привязать тег к конкретному пункту меню. Таким образом, щелкнув по пункту меню, мы получим в свое распоряжение доступ к каталогу статей.
K2 - отличный компонент управления контентом на сайте. Довольно гибкий в настройке и подходит от простых до весьма сложных решений. Однако я заметил, что компонент K2 создает неслабую нагрузку как на сервер так и на сам сайт, затормаживая его работу. Сейчас мы поговорим о том, как снизить нагрузку, да и в общем оптимизировать компонент для работы на обычном хостинге при большом кол-ве посетителей...
Итак, для начала, если мы хотим максимально повысить производительность сайта использующего компонент K2 и при этом снизить нагрузку нам придется отказаться от некоторых функций компонента. К сожалению придется этим пожертвовать, ради высшей цели:)
Во первых отказываемся от использования модуля K2 Tools, который явно требует доработки во всех его направлениях. Особенно пытайтесь избежать его использования в качестве календаря и меню. Использование данных функций повысит запросы к БД аж до ~40 , что совсем не приемлимо...
Во вторых нужно отказаться от использования пункта меню вывода категории K2 с надстройкой "подтягивания" подкатегорий выводимой категории(материалы из дочерних категорий).. Конечно, это было бы весьма удобно использовать, особенно на сайтах со сложной структурой да и понизит юзабилити сайта, однако значительно снизит нагрузку в виде 50-70 запросов к БД. Поэтому в пункте материалы из дочерних категорий выбираем нет. И в меню добавляем подпункты меню в виде подкатегорий (для красивых ссылок).
В третьих, в настройках категории нам придется отказаться от опции "Наследовать параметры опций из категории ". Опять же эта, вроде бы очень удобная функция, задача которой облегчить жизнь пользователям, создает огромное количество запросов к БД, вместо нужного одного запроса. Таким образом, если у нас на странице 20 категорий, у которых включена опция наследования - имеем дополнительно 20 запросов.Сейчас же включение этой опции приводит к тому, что запрос параметров родительской категории происходит всякий раз при выводе материалов из дочерней или при выводе списка категорий.
В четвертых - используем только необходимые функции. Я вообще советую отказаться от использования стандартных комментариев K2, хотя использовать JComments так же не рекомендую. Лично Я больше предпочитаю использовать социальные комментарии, которые сейчас довольно распространены. Если же вы все таки используете стандартные комментарии K2, то отключите вывод кнопки комментариев. Так же в списке категорий или в самой категории советую отключать такие функции, как социальные закладки, вывод тегов, вывод автора, кнопки печати и эл.почты. В общем чем меньше будет функций запущено, тем будет меньше запросов, тем будет меньше нагрузка.
Здесь же хочу написать о загрузке изображений материалов компонента K2. Сам компонент загружает оригинальное изображение и сохраняет его в 5 вариациях - очень большое, большое, среднее, маленькое, очень маленькое. Зачастую нам нужно максимум три варианта изображений. Я пользуюсь только большими средними и маленькими изображениями. Для того, чтобы запретить создание лишних изображений нужно закомментировать строчку
$handle
->
Process
($savepath
)
;
у ненужного нам параметра сохранения изображения в файле /administrator/components/com_k2/models/item.php
Чтобы запретить увеличение изображения в материале, нужно в файле components\com_k2\templates\default\item.php закомментировать строчку
Как уверяют разработчики - К2 соединяет в себе всё самое хорошее из Dupral и Joomla . Но действительно ли это так? Для того, чтобы узнать, нужно посмотреть, какие возможности он нам предоставляет. Для того, чтобы посмотреть, как выглядит ресурс с уже установленным К2 , можно зайти на демо-сайт: http://demo.getk2.org.
И после увиденного складывается впечатление, что данный интернет ресурс сделан на Wordpress - настолько красиво там выводится контент. Это все потому, что K2 берет всю работу по выводу контента на себя, то есть заменяет стандартные компоненты Joomla .
Возможности K2 для joomla
Если говорить простыми словами, то данное расширение берет работу по управлению контентом на себя, то есть К2 отвечает за отображение текста, фотографий, видео и прочего на вашем ресурсе. И делает это он намного качественнее, чем стандартные компоненты Joomla .
Основные возможности, которые нам предоставляет это расширение:
1. Можно создавать бесконечное количество подкатегорий, чего нельзя делать в стандартной Joomla
;
2. Достаточно простая и надежная система, позволяющая посетителям оставлять комментарии на сайте.
3. Теперь вы можете вставлять html-теги прямо в текстовом редакторе при написании статей. Не понятно только, почему разработчики Joomla
не позаботились об этом в самом начале.
4. Теперь благодаря компоненту K2
в каждую статью можно добавить отдельную фотогалерею. Хотя в принципе для этого существуют более профессиональные расширения.
5. Очень радует возможность добавления полей в текст. Теперь, в отличие от стандартной Joomla
, на вашем сайте будут размещаться красивые, структурированные тексты.
6. Ну и последний, и самый главный плюс - это возможность посетителям сайта зарегистрироваться и самостоятельно добавлять статьи на ресурс.
Как видим, данный компонент действительно облегчает жизнь. Есть еще несколько незначительных улучшений, связанных с редактированием статей, но здесь я их описывать не буду.
Установка компонента K2
Для того, чтобы установить компонент К2 , его нужно сначала скачать. Это можно сделать на официальном сайте: http://getk2.org.
Русификация расширения K2
Для того, чтобы русифицировать расширение, качаем архив с русификатором по ссылке: http://getk2.org/assets/translations/download.php?language=ru_RU. Данный русификатор устанавливаем так же, как и все остальные расширения. После этого компонент К2 русифицируется самостоятельно.
В заключение можно сказать, что К2 - действительно необходимый компонент для сайтов на Joomla , а особенно, если у вас установлена версия движка 2.5 и ниже.