Inurl component k2 беспокойный. K2: дополнительные поля в разных местах шаблона

При использовании CCK компонента K2, иногда бывает необходимость в использовании дополнительных полей. По умолчанию в компоненте K2 используется вывод всех дополнительных полей в одном месте, что очень не красиво и не удобно. Данная статья написана чтобы решить проблему с размещением дополнительных полей K2 в разных местах шаблона.

Для начала, если вы используете компонент K2 и его отдельные шаблоны то желательно скопировать все содержимое шаблонов K2 в ваш шаблон Joomla. Таким образом при обновлении K2 вы не потеряете свои новые дополнительные поля и все изменения которые внесли в файлы шаблона K2.

Шаг 1: Вывод дополнительных полей в разных местах шаблона материала K2

Итак, открываем папку: /components/com_k2/templates/

и копируем ее содержимое в папку с вашим шаблоном (предварительно создав папки com_k2/templates/): /templates/название_шаблона/html/com_k2/templates/

При желании можете сразу создать несколько шаблонов, например чтобы использовать различные стили вывода и оформления в разных категориях. Например после создания нескольких шаблонов, ваша директория и папки будет выглядить так:

  • /templates/название_шаблона/html/com_k2/templates/default/
  • /templates/название_шаблона/html/com_k2/templates/novosti/
  • /templates/название_шаблона/html/com_k2/templates/faq/

После этого необходимо создать группу полей и сами поля, после чего присвоить их к нужной категории:

и в 12 строчке после:

вставляем данный код:

// дополнительные поля материала K2 $extrafields = array(); foreach($this->item->extra_fields as $item) { $extrafields[$item->id] = $item->value; }

После этого нам необходимо удалить существующий вывод всех дополнительных полей. Для этого в этом же файле удалите все с 250 по 266 строки. А именно:

item->params->get("itemExtraFields") && count($this->item->extra_fields)): ?>

    item->extra_fields as $key=>$extraField): ?> value): ?>
  • typetype); ?> groupgroup; ?>"> name; ?>: value; ?>

Далее нам нужно вывести одно какое нибудь дополнительное поле в материале, например это будет поле которое имеет уникальный ID - 2 (узнать ID поля можно в административной панели K2, во вкладке Доп. поля). Для этого, в этом же файле item.php ищем подходящую позицию для размещения дополнительного поля (в нашем случае в самом верху материала, под логином пользователя) и вставляем следующий код:

где это ID дополнительного поля.

Обновляем страницу на сайте и видим наше одно поле, которое имеет идентификатор 2. Таким же образом вставляем другие поля в любом месте шаблона K2, только не забудьте менять ID при каждом новом добавлении поля в шаблон, в противном случае у вас получится одно и тоже поле в разных местах шаблона.

Далее нам необходимо добавить стиль оформления для дополнительного поля K2. Вы же хотите чтобы ваши доп.поля в K2 выглядили привлекательно? Для этого достаточно просто обрамить наш код DIV"ом или любым другим элементом по желанию и добавить к нему CSS класс для создания уникального стиля нашему дополнительному полю. Например сделаем так:

Вы думайте на этом все? НЕТ! Если вдруг вы уберете информацию в материале из дополнительного поля K2, то вы увидите такую неприятную картину:

После если мы обновим страницу сайта, то на странице материала, стиль поля исчезнет:

Если мы вновь введем информацию в поле «Демо», то наша кнопка (точнее поле) снова будет отображатся на сайте:

В примере выше, мы использовали 2 поля (Демо и Скачать), которые были установлены в разных местах шаблона и имели совершенно разные CSS стили оформления. Поле «Демо» содержащее идентификатор ID 1, была добавлена вверх страницы, а поле «Скачать» с идентификатором ID 2 было добавлено ниже вывода полного текста статьи и отцентровано по центру материала с использованием CSS стилей.

Вы можете использовать неограниченное количество дополнительных полей компонента K2 и расставлять их в разных местах шаблона и применять к ним различные эффекты и стили оформления. Незабывайте только указывать корректный идентификатор (ID) дополнительного поля!

Вот на этом вывод дополнительных полей K2 в разных местах шаблона завершен.

Шаг 2: Вывод дополнительных полей в разных местах категории материалов K2

Если вы также хотите вывести дополнительные поля в самой категории компонента K2, при этом используя разные места вывода, то вам необходимо открыть файл category_item.php в папке с шаблоном K2. После перейдите к 12 строке, и после:

// no direct access defined("_JEXEC") or die("Restricted access");

Вставьте следующий код:

// дополнительные поля категории K2 $extrafields = array(); if($this->item->params->get("catItemExtraFields") && count($this->item->extra_fields)) foreach($this->item->extra_fields as $item) { $extrafields[$item->id] = $item->value; }

Далее вам необходимо удалить стандартный вывод дополнительных полей в категории K2. Для этого в этом же файле category_item.php перейдите к 129 строке (нумерация может отличатся из-за внесения кода выше) и удалите все что связано с дополнительными полями (от 129 до 145 строки), а именно:

item->params->get("catItemExtraFields") && count($this->item->extra_fields)): ?>

    item->extra_fields as $key=>$extraField): ?> value): ?>
  • typetype); ?> groupgroup; ?>"> name; ?> value; ?>

Данный код выведет оба наших поля (c ID 1 и ID 2) в том месте где мы установили код (в данном случае мы установили код после вывода вступительного текста статьи K2 в категории материалов). Обратите внимание на то что к классу нашей кнопки мы добавили преффикс cat_, чтобы CSS стиль не смешался со стилем кнопок (полей) материалов K2:

Заметьте что вывод доп.полей можно делать абсолютно в любом месте шаблона K2, при этом создавая любой внешний вид (хоть кнопка, хоть картинка, все что угодно и на ваше усмотрение).

Данное решение предназначено для CMS Joomla 1.5 и Joomla 2.5 с использованием компонента K2 v2.5.4. В более ранних версиях компонента, может быть несоответствие строк.

Эта статья является единственным простым и гибким решением для вывода дополнительных полей в материалах и категориях K2.

Как и я, вы наверное много раз сталкивались с компонентом K2 или слышали о нём. Если вы ещё не знаете о нем, то обязательно должны полюбопытствовать, ведь не зря он был признан компонентом года в 2010 году. Хотите узнать больше? Или просто поинтересоваться о его возможностях? - Читайте статью, в которой пройдет Знакомство с компонентом K2 .

Что же такое K2?

Компонент K2 - это конструктор контента на вашем сайте. То есть с помощью него можно изменить стандартную структуру отображения текстовых блоков и превратить ваш сайт в новостной, игровой и другие порталы, каталог файлов и материалов, портфолио работ и даже интернет-магазин.

После изменений внешняя структура Joomla преобразится до неузнаваемости и будет схожа со структурой таких CMS, как Wordpress или Drupal .

Основные возможности компонента K2

Структура компонента K2

После установки компонента (так же как любого расширения), K2 добавляет свои иконки быстрого доступа на главную панель управления.

Кроме иконок на панели управления, компонент K2 располагается в верхнем меню админки: Компоненты - K2 , где находятся 10 разделов:

  • Items (материалы) - аналогичны материалам Joomla
  • Categories (категории) - аналогичны разделам/категориям Joomla
  • Tags (теги) - список тегов, закрепленных за статьями
  • Comments (комментари) - комментарии, оставленные посетителями
  • Users (пользователи) - зарегистрированные пользователи
  • User Groups (группы пользователей) - список созданных групп
  • Extra Fields (дополнительные поля) - поля для привязки к статье
  • Extra Field Groups (группы для дополнительных полей) - привязываются к категории
  • Media Manager (медиа-менеджер) - управление загруженными файлами
  • Information (информация) - общая информация о компоненте, модулях и др.

Применение компонента K2

Компонент в сочетании с модулями можно найти в популярных готовых шаблонах (IceTheme, JoomlArt, RocketTheme, YouJoomla и др.). K2 получил более широкое распространение на зарубежных сайтах, чем в рунете.

Если Вы планируете создать свой блог на Joomla - попробуйте установить себе компонент K2. Разобравшись в нем один раз, в будущем без труда можно добавлять изображения, галерею, видео и вложения к статье всего за пару кликов!

В случае, если у Вас уже есть свой блог, импортируйте материалы Joomla в компонент и начинайте эксперименты. Или просто изучите статьи о создании материалов , категорий и настройке компонента K2.

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 закомментировать строчку

K2 provides an out-of-the box integrated solution featuring rich content forms for items (think of Joomla articles with additional fields for article images, videos, image galleries and attachments), nested-level categories, tags, comments, a system to extend the item base form with additional fields (similar to CCK for those acquainted with Drupal), a powerful plugin API to extend item, category and user forms, ACL, frontend editing, sub-templates & a lot more!

Using K2, you can transform your Joomla website to a news/magazine site with author blogs, product catalogs, work portfolio, knowledge base, download/document manager, directory listing, event listing & more, all this bundled under one package!

Give K2 a try & you"ll instantly love it! It"s easy to use and fun to develop websites with! If you need any help or want to contribute to the project, join us at the K2 community.

FEATURES

Since K2 is extensible with additional fields to its base item form, you can easily create category-specific content types, e.g. article, blog post, product page, directory listing.

K2 offers as standard:
- nested-level categories
- commenting, integrated with Google"s reCaptcha & Akismet
- tags
- distinct item image (useful for articles/catalogs)
- image galleries
- videos
- attachments
- user pages (author blogs/user profiles)
- smart ACL for frontend editing
- unique plugin system to extend item, category & user forms
- AJAX based frontend editing & comments moderation
- Rest-like JSON/JSONP content output
- Native advanced SEF options
- Flexible sub-templates (for every content output)

K2 fully supports the Joomla API, which means any Joomla plugins will function properly within the K2 component & modules, either in the frontend or backend.

AMAZING PERFORMANCE

Pixeden, Groupama, Harvard, High Court of Australia, Amnesty International, Arturia, Vivaldi Web Brower & the Joomla Magazine are just some of the thousands of top Joomla sites around the world, fully powered by K2.

DEPENDENCIES & LICENSE

To utilize the built-in video & gallery features you need to install AllVideos (free) & Simple Image Gallery Pro, both provided by JoomlaWorks.

K2 is developed by JoomlaWorks & licensed under the GNU/GPL license.

WHAT NEXT?

Try K2! Install it, hit the "import" button to bring your Joomla articles inside K2, start playing with the component to see the flexibility it provides first-hand. Moreover? You no longer need a dozen of components & even more modules to do things like run a news site or a blog. Drupal & Wordpress have certainly met their match now!

Компонент появился достаточно давно, во время, когда Joomla версии 1.5 была самой актуальной. Идея, которая подвигла разработчиков K2, заключается в том, что K2 привносит в Joomla все лучшее из WordPress и Drupal. Компонент K2 позволяет легко создавать на базе Joomla полнофункциональные каталоги, новостные порталы, блоги, магазины и т.п.

Компонент К2 является конструктором контента, который полность дублирует организацию материалов и категорий и предоставляет собственную панель управления в качестве альтернативы админке Joomla.
Итак, что же умеет делать компонент K2 чего не может делать встроенный в Joomla по умолчанию компонент для работы с материалами:

  • Комментарии . В K2 встроена система комментирования, она достаточно надежно защищена капчей от Google. В самой Joomla нет базовой системы комментирования, и при необходимости устанавливают компонент JComments, или какой другой еще.
  • Теги . К статьям, опубликованным через K2, вы можете добавлять теги, как в WordPress. Для вывода облака на сайте предназначен специальный модуль, который кроме непосредственного облака позволяет вывести на сайт Joomla хлебные крошки, архив материалов, календарь в стиле блога, список категорий (меню), окно поиска и др.
  • Фото . В компоненте K2 вы сможете к статье или категории добавлять фотографии, изображения. Вроде бы это как обычно, и в Joomla это тоже возможно, но разница в том что изображения, будут автоматически приводится к стандартному размеру. Это очень удобно при ведении авторских блогов пользователями вашего сайта. Ведь они не знают ваших стандартов и публикуют материал как могут.
  • Галерея . В шаблоне для каждой статьи, добавленной через компонент K2, предусмотрено место для вставки галереи изображений. Важно - галерея добавляется в статью через K2 максимально просто, буквально парой кликов - нужно только указать путь до zip архива с изображениями и выбрать вариант показа фотогалереи. В Joomla в материал тоже можно вставить фотогалерею, но через дополнительные расширения, к примеру, плагин Phoca Gallery Plugin , и все равно процесс вставки галереи в статью будет на гораздо сложнее, чем в при использовании компонента K2.
  • Видео . Так же как и в ситуации с фотогалерей, в админке статьи, публикуемой в K2, есть место для вложения видеоролика. Вставка видео происходит в один клик. Например, для вставки YouTube ролика достаточно ввести только код ролика.
  • Файлы . Еще в K2 можно прикреплять к статьям файлы для скачивания.
  • Поля . Кроме того, при написании статьи есть возможность добавить дополнительное поле, выбрав из выпадающего списка значение дополнительного поля. Дополнительные поля в K2 настраиваются в соответствующих разделах админки K2. Таким образом, в статье вы сможете заполнять дополнительные поля, это может пригодиться, например при создании каталога товаров в Joomla. Это напоминает карточки товара в VirtueMart , потому что VirtueMart - это тоже каталог товаров.
  • Социальные кнопки . Так же в шаблоне статей компонента K2 предусмотрено место для вывода кнопок социальных сетей, это очень удобно, и вам не придется прикручивать кнопки самостоятельно с помощью сторонних расширений.

Все эти плюсы доступны для вас, а так же и зарегистрированным пользователям. Добавлять свои статьи, видео, галереи, вставка изображений, файлов, модерировать комментарии к своим статьям, прописывать дополнительные поля.

Ну, в общем-то, наверное, это все, что может предоставить нам компонент K2 для расширения стандартных возможностей Joomla.

В принципе, некоторые возможности, предоставляемые компонентом K2, сейчас уже реализованы в новых версиия Joomla . Когда-то лозунг на сайте K2 говорил именно о том, что не стоит ждать выхода новой Joomla, а уже сейчас воспользоваться этим компонентом. Тут и возможности - тут и проблемы.
Если перевести весь контент в К2 , то когда он станет большим будет очень сложно отказаться от компонента. Может отказываться и не придется. Но при выходе следующих версии Джумлы что-то из представленных преимуществ может быть реализовано стандартно. Что-то подобное уже происходило. Некоторые моменты, такие как количество вложений категорий уже реализовано стандартно. Что-то очень удачно реализовано сторонними плагинами и при от них тоже легко отказаться в пользу другого плагина.

Программы