Гид компьютерного мира - Информационный портал
  • Главная
  • Программы
  • Снисходительны component k2. Компонент K2 для создания блогов, каталогов и порталов на Joomla — возможности, установка и русификация

Снисходительны component k2. Компонент K2 для создания блогов, каталогов и порталов на Joomla — возможности, установка и русификация

Для начала - если Вы используете компонент 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", плюс добавил своих для позиционирования:

.demo { display: flex; } .demo_button { margin: 1% auto; } .demo_button a { color: #fff; }

Результат получим такой:

Усложняем задачу

В "штатном" режиме дополнительные поля К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; ?>
// получаем айдишку К2-юзера и его К2-группы id); // проверяем на соответствие нашей группе, и если группа =5 (оптовики) - то выводим допполя с id=19 и 20 if ($k2_user-> group >= 5 ) { ?> // Если условие не выполнилось (id группы не равен 5), то "
тут выводим предупреждение о недопустимости просмотра данной группой
" ?>

Итог:

Думаю, простота данного решения не введёт в ступор даже мало-мальски посвящённого в тему Джумлера. Используя данную методику, можно не только выводить/скрывать доп. поля, но и при желании размещать их в разном порядке, в начале и конце статей, а также выводить в одной статье поля из разных групп.

От автора: приветствую Вас уважаемые читатели. Как Вы знаете в 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 и ниже.

Лучшие статьи по теме