Обновление joomla 3.7. Обновление руссификации Joomla

Доброго времени суток всем! В данном посте хочу рассмотреть некоторую особенность, которая появилась в Joomla, начиная с версии 3.7 — это дополнительные поля в материалах. Считаю это полезным дополнением к стандартному компоненту материалов com_content. Ранее приходилось из-за нескольких полей устанавливать тяжеловесные конструкторы контента (CCK) и все для того, чтобы пользователю было легче работать в админке. В данной статье как раз рассмотрим как создать дополнительные поля в материалах и как вывести их во внешнем сайте.

Также, как и материалы поля объединяются в группы, это своего рода категории. Для того,чтобы создать группу полей идем в админке Материалы -> Группы полей . Создаем группу. Далее, создаем сами поля. Здесь уже по более опций, пройдемся по основным.

Структура статьи

Вкладка «Основное»

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

Тип — выбираем тип поля: Текст (text), Текстовое поле (textarea), Url, Календарь и т.д. Не буду здесь разбирать в подробностях, т.к. ничего сложного в них нет и настраиваются все по одному принципу.

Имя — вводим алиас поля латиницей. Это своего рода индефикатор поля и он должен быть уникальным.

Название — сюда вводим то название поля, которое мы хотим видеть на сайте. Вообще по умолчанию, когда заполняете заголовок данное поле заполняется автоматически, но вы можете его переопределить.

Описание — вводим описание поля.

Обязательно — если данное поле будет обязательным при создании материала, то ставим переключатель «Да».

Значение по умолчанию — можете ввести то значение, которое должно быть подставлено по умолчанию в данное поле.

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

Максимальная длина — можете ограничить длину вводимых символов.

Вкладка «Параметры»

Placeholder — это подсказка для поля. Например, можете ввести подсказку для вашего контент менеджера.

CSS-класс для показа — можете ввести свой класс поля для переопределения стиля в css.

Заголовок поля — управляет выводом заголовка поля на сайте.

Автоматическое отображение — вот эта полезная опция на мой взгляд. Есть предустановленные настройки (на момент написания статьи значения не переведены на русский язык):

  • After Title — показать поле после заголовка;
  • Before Display — показать перед текстом;
  • After Display — показать после текста;
  • Do not automatically display — не показывать автоматически поле. Данная опция предусматривает вывод поля в шаблоне сайта посредством кода. Об этом поговорим ниже.

Все, сохраняем поле и идем создавать материалы. В материалах той категории что вы присвоили полям появится новая вкладка с именем группы полей. У меня она называется «Поля «.

А вот как данное поле выглядит на сайте.

Название поля я сделал жирным через стили CSS. Сразу скажу, что через автоматический вывод у нас нет возможности кастомизировать шаблон вывода полей. Это возможно сделать без автоматического вывода.

Вывод дополнительных полей материалов в шаблоне Joomla — ручной режим

Итак, если вам не подходит предустановленные настройки вывода полей или вы хотите просто править html-шаблон полей, то есть возможность вывести поля в любом месте шаблона материала и обрамить их какими угодно тегами. Для вывода поля в ручном режиме необходимо сначала отключить автоматический показ поля в параметрах. Если этого не сделать, то поля у вас будут просто дублироваться.

После этих действий в папке вашего шаблона должна появиться следующая директория с файлом Ваш шаблон -> html -> com_content -> article — default.php . Вот с данным файлом и будем работать. Открываем файл шаблона материала и в нужном месте вставляем код для вывода поля. Я вставил до кода вывода текста:

item->text; ?>

Код вывода поля

item->jcfields as $field) { $myCustomFields[$field->name] = $field->value; } // RECOVER CUSTOM FILED NAME if (isset($myCustomFields["field-1"]) and !empty($myCustomFields["field-1"])) : ?>

Название поля:

Вместо field-1 подставляете ваш псевдоним поля (первый скриншот настроек, поле «Имя»). Вот как это выглядит на примере — .

Если вы хотите вывести более одного поля, то нет необходимости заново копировать цикл «foreach». Данный цикл необходимо объявить выше вывода полей. А второе поле вывести, например, так:

Название поля:

Вместо field-2 — название вашего поля.

На этом завершу. Всем удачи, всем пока!

25 апреля 2017 года состоялся релиз Joomla 3.7. В новой версии Joomla появились значимые улучшения, которые порадуют и веб-мастеров и администраторов. В этой статье я привожу обзор новых функций Joomla 3.7 с примерами.

Обзор основных функций Joomla 3.7

Всего в новой версии Joomla было сделано около 700 улучшений. Мы рассмотрим только наиболее важные из них, которыми могут пользоваться как разработчики, так и простые администраторы сайтов.

Настраиваемые поля (Joomla Custom Fields)

Главное нововведение Joomla 3.7 – это, конечно, настраиваемые поля. Честно говоря, я ждал их еще с Joomla 1.5, но появились они в стандартном пакете только сейчас.

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

Примеров использования настраиваемые полей масса: дополнительные изображения, подписи, даты к материалам, сложные профили пользователей и др.

Всего заявлено 15 различных типов дополнительных полей:

  • Календарь
  • Чекбокс
  • Выбор цвета
  • Редактор
  • Целое число
  • Список
  • Список изображений
  • Медиа
  • Радио-кнопки
  • SQL-запрос
  • Текст
  • Область текста (textarea)
  • Пользователь
  • Группа пользователей

Все эти типы вы теперь можете в неограниченном количестве применять к материалам Joomla.

Приятным моментом является также то, что каждое из полей можно привязать к одной или нескольким отдельным категориям Joomla, создавая, таким образом, разные форматы материалов. Это, конечно, еще не полноценные типы контента, как в SEBLOD , но уже большой шаг в эту сторону. Также, с помощью разбиения на группы, дополнительные поля можно разделять по разным вкладкам для удобства заполнения.

Разработчики сторонних расширений легко смогут интегрировать дополнительные поля Joomla в свои продукты.

И главное – дополнительные поля основаны на плагинах. Это означает, что появится еще масса новых типов дополнительных полей от сторонних разработчиков. Да вы и сами сможете создать новый тип поля, если, конечно, имеете достаточно опыта в программировании. И никаких хаков!

Менеджер многоязычности

В Joomla 3.7 добавлен дополнительный компонент, который делает управление многоязычным сайтом проще. Вы теперь можете видеть в одном окне сразу два редактора для двух языков и переводить контент удобно:

Улучшенная работа с админкой

Теперь вы можете создавать статьи, категории и контакты «на лету», при создании пункта меню. Если вы создаете пункт меню и выбрали в нем, например, тип пункта «Отдельная статья», то при выборе статьи есть возможность создать ее здесь же, во всплывающем окне:

(увеличьте для просмотра в движении)

На мой взгляд, польза от этого нововведения весьма сомнительная, но, тем не менее, оно имеет место быть.

Менеджер меню админки

Если с созданием меню на фронтенде у Joomla было все хорошо, то создавать меню в админке, до сего дня, было очень сложно. В Joomla 3.7 эту ситуацию исправили – появился полноценный менеджер, который позволяет создавать меню для админки. Это может быть очень удобно, когда вы много работаете с Joomla как администратор или контент-менеджер. Вы можете вынести важные для вас пункты на главную страницу так, чтобы они всегда были перед глазами.

Улучшения редактора TinyMCE

В стандартном редакторе Joomla TinyMCE появилось несколько дополнительных, очень удобных кнопок: вставка ссылок на пункты меню, контакты, статьи:

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

Установка Page Title в настройках материала.

Эта функция не заявлена, как основная, но она может многим быть очень полезна. Раньше в Joomla нельзя было задать Title в строке браузера для материала, который отличался бы от названия материала. Точнее сделать это было можно, но только используя для такого материала отдельный пункт меню, что далеко не всегда уместно. Сейчас в настройках материала вы можете видеть отдельное поле для ввода Title:

Общая авторизация

Раньше всегда приходилось авторизовываться на сайте и в админке раздельно. Авторизация на сайте не давала доступа к админке и наоборот. В Joomla 3.7 вы можете активировать Общую авторизацию (Общие настройки -> Вкладка «Система» -> Shared Sessions). По умолчанию эта опция отключена. После активации авторизация пользователя будет происходить одновременно и на сайте и в админке. Естественно, если у пользователя не хватает прав для доступа в админку, он там авторизован не будет.

Удобное управление расширениями

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

Отображения рейтинга материала и количества голосов в админке

Это мелочь, но лично мне она очень нравится. Теперь в менеджере материалов, в админке, вы можете видеть пользовательский рейтинг по каждому материалу, количество проголосовавших, а также можете сортировать материалы по этим колонкам:

Все это работает только при условии, что плагин рейтинга активирован и используется на сайте.

Чего нет в Joomla 3.7?

Очень обидно, но в Joomla 3.7 не включили обновленный роутер. До последнего момента его включение планировалось, но в процессе тестирования в нем нашли некоторые недоработки, а потому перенесли его.

Новый роутер очень нужен Joomla. Тот, что есть сейчас, требует серьезной доработки для каждого сайта, который собирается продвигаться с помощью SEO.

Когда же, наконец, появится новый роутер? Очень высока вероятность, что в следующей версии Joomla 3.8, выпуск которой планируется на третий квартал 2017 года, т.е. довольно скоро.

Заключение

Так или иначе, релиз Joomla 3.7 – большой шаг вперед в развитии этой CMS. Несмотря на некоторые недостатки Joomla, она стабильно развивается и идет вперед, создание и продвижение сайтов становится проще, а управление ими удобнее.

Хочу напомнить, если у вас действующий сайт на Joomla 3.6.5, не спешите обновлять его до Joomla 3.7. Подождите выхода Joomla 3.7.1 или 3.7.2. В них новый функционал будет уже обкатан, а недоработки, которые не обнаружили в процессе тестирования Joomla 3.7.0, устранены. Если же вы начинаете делать новый сайт, то Joomla 3.7 – отличный выбор!

Вконтакте

Баги в популярных CMS в последние месяцы стали настоящей напастью. Появление каждой такой уязвимости означает, что под угрозой оказываются сотни тысяч сайтов, и далеко не каждый владелец успевает вовремя обновиться до свежей версии. В этой статье мы изучим недавно обнаруженную дыру в CMS Joomla: из-за недостаточной фильтрации пользовательских данных система уязвима для SQL-инъекций.

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

Детали уязвимости

В первую очередь заглядываем в сам файл контроллера.

16: class FieldsController extends JControllerLegacy 17: { ... 27: public function __construct($config = array()) 28: { ... 32: if ($this->input->get("view") === "fields" && $this->input->get("layout") === "modal") ... 36: $lang->load("com_fields", JPATH_ADMINISTRATOR); 37: 38: $config["base_path"] = JPATH_COMPONENT_ADMINISTRATOR;

Сразу же бросается в глаза условие : если view и layout принимают значения fields и modal соответственно, то CMS загружает администраторскую версию компонента com_fields . И все запросы от обычного пользователя будут проксироваться в него.

Что же нам это дает? Давай посмотрим.

Заглянем внутрь метода getListQuery , он занимается тем, что собирает запрос к базе данных. Нас интересует часть со строкой, в которой формируется сортировка (ORDER BY).

124: protected function getListQuery() 125: { ... 304: // Add the list ordering clause 305: $listOrdering = $this->getState("list.fullordering", "a.ordering"); 306: $orderDirn = ""; 307: 308: if (empty($listOrdering)) 309: { 310: $listOrdering = $this->state->get("list.ordering", "a.ordering"); 311: $orderDirn = $this->state->get("list.direction", "DESC"); 312: } 313: 314: $query->order($db->escape($listOrdering) . " " . $db->escape($orderDirn));

Переменная $listOrdering - название поля в таблице, по которому требуется отсортировать запрос. Ее фильтрует функция escape , которая зависит от используемого на сервере драйвера для работы с БД. Она возвращает строку, в которой экранированы спецсимволы, в частности кавычки.

Рассмотрим исходный код этой функции для драйвера mysqli . Он встречается чаще всего, поскольку Joomla при установке предлагает именно его.

/libraries/joomla/database/driver/mysqli.php

242: public function escape($text, $extra = false) 243: { 244: $this->connect(); 245: 246: $result = mysqli_real_escape_string($this->getConnection(), $text); 247: 248: if ($extra) 249: { 250: $result = addcslashes($result, "%_"); 251: } 252: 253: return $result; 254: }

Для фильтрации используется функция mysqli_real_escape_string (строка 246), которая экранирует null-байты, переносы строк, одинарные и двойные кавычки. Однако в нашем случае это абсолютно бесполезные действия, так как в нашей переменной хранится название колонки для сортировки.

Давай посмотрим, как передать нужные нам значения в $listOrdering . Метод getState наследуется прямиком из абстрактного класса JModelLegacy , который является родителем для JModelList , а он, в свою очередь, наследуется нашим FieldsModelFields .

019: class FieldsModelFields extends JModelList ... 305: $listOrdering = $this->getState("list.fullordering", "a.ordering");

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «сайт», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!

Online service by OceanTheme are is a platform where people can unite with each other with mutual interest to purchase premium templates and extensions Joomla! at a bargain price. The target audience of the service are individuals and small and medium businesses, professional web developers to create online stores, community sites or people wishing to have your blog. In our great collection of premium solutions everyone will find what he needs.

Our resource acts as an organizer pooling, specifies the number of people that you want to buy templates and extensions, the cost of goods, as well as the amount and access to these materials. Our website has a lot of opportunities for easy searching of templates and extensions. Intuitive navigation, tagging system, sorting by the filter and the tool "add to bookmarks" will allow you to find the right material you want incredibly fast. In addition You will always find the latest information, so as to update the collection every day.

Access to the entire database of materials is provided for the duration of the club specified in the subscription purse. Subscribers receive unrestricted access to all available archives, news and updates, as well as technical support throughout the subscription period.

All the products you can find on this site are 100% GPL-compatible, which means you can change them as you want and install on unlimited number of sites.

Thanks to our collection you will save a lot of time and money, as the templates and extensions easy to use, easy to install and configure, multi-functional and diverse. That will allow you to create a website of any complexity and orientation, without learning advanced web development technologies.

Main features of our website

A rich set of functions, working out of the box:

Use all opportunities of our resource to get ready-made professional solution for rapid implementation of your business projects or creative ideas.

Use the search tools

Use advanced search and filtering, and easy navigation for quickly finding the desired web solutions in design, functionality and other criteria.

To favorite materials were always at hand, use the unique function "Add to favorites", and they are available in a separate section for the whole year.

Logged into our site, you will be able to leave comments and to participate in promotions, as well as use of a free subscription with permium access.

Join our club membership

Club subscription gives you full access to our entire catalogue of original material. And includes premium templates and extensions for several years.

Download appropriate to your Joomla templates and extensions, both free and subscription for the club without any limits and ogoranicheny speed.

If you liked any material on the site, you can leave your voice, as well as share it with friends via social networks.