Joomla 3.7 після оновлення. Оновлення русифікації Joomla




Офіційний вихід Joomla 3.7 намічений на 25 квітня 2017 року від Різдва Христового, але руки мають властивість свербіти, тому я протестував один сайт на новому движку. Тестове складання доступне раніше, тому я вирішив поглянути на відмінності Joomla в реальному варіанті.

Що скажу після півгодини тесту та відкату? Пилкуєте, Шура, пиляйте - вони золоті. Зміни є, все руками не чіпав, але дещо потестив і дійшов висновку, що чекатиму на версію Stabile.

Що змінилося у 3.7

Повторюся, всі зміни на смак не куштував, тому весь букет не передам. Спочатку наведу список новинок від розробників, а потім скажу, до чого я дістався. Офіційно внесено такі зміни:

  1. Додані поля користувача Fields,
  2. Обновився менеджер меню
  3. З'явилася можливість багатомовної асоціації компонентів,
  4. Оновлено редактор TinyMCE,
  5. Змінено обслуговування двигуна адміністратором.

Новий редактор TinyMSE

Користувальницькі поля, за ідеєю, справа непогана, але вникати в коректність їхнього висновку не став – зроблю це після виходу версії Stabile. Менеджера меню та багатомовну асоціацію компонентів я не оцінив, а ось новий редактор поюзав хвилин 10. У ньому з'явилися нові пункти для вставки в сторінку пунктів меню та контактів. У налаштуваннях компонента пропонується три варіанти редактора:

  1. Мінімальний,
  2. Розширений,
  3. Максимальний.

У першому всього пара кнопок для редагування сторінки, у другому трохи більше, але екстазу немає, а ось максимальний TinyMCE має додаткові можливості. Редактор мені сподобався, але він і став причиною відкату до старої версії 3.6.5. Причина? Пробний матеріал не хотів зберігатися, і скасувати виробництво було неможливо.

Кнопки відмови та збереження красиво виглядали в адмінці, але не працювали. Проблема саме в редакторі, бо без нього працює. Допилять. Поки що ставлю 5 можливості додавати на сторінку під час редагування пункти меню та контакти.

У версії 3.7 трохи змінився і інтерфейс адмінки, поля міток і категорій при створенні матеріалу стали менше, підкоригований і шрифт.

Висновок

Глобальних змін у вигляді нового роутера так і немає (цей роутер вже обіцяють 99 років, але віз і нині між Воркутою та Норильськом), про поля користувача говорять багато хорошого, але їх треба тестувати, а в редакторі з'явилися корисні оновлення, але сам TinyMCE вимагає пили та стамески.

Оновлюватись на стабільну версію 3.7 треба, тому що в ній, крім цих змін, поставлені латки на деякі дірки безпеки, але перевірка тестової версії не дозволила мені наповнити світ красою та гармонією. Від Joomla 3.7 поки (19 квітня 2017) я залишив версію схеми бази даних 3.7.0-2017-04-10, решта чекає кінця квітня або травня, коли стабільність роботи з'явиться на ділі.

А оновлений редактор нічого так, вставляти без геморою в матеріал пункти меню та контакти справа хороша.

25 квітня 2017 року відбувся реліз Joomla 3.7. У нової версії Joomla з'явилися значні покращення, які порадують і веб-майстрів та адміністраторів. У цій статті я наводжу огляд нових функцій Joomla 3.7 із прикладами.

Огляд основних функційJoomla 3.7

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

Настроювані поля (JoomlaCustomFields)

Головне нововведення 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 з'явилася можливість гнучкого настроювання редактора під себе:

ВстановленняPageTitle у налаштуваннях матеріалу.

Ця функція не заявлена ​​як основна, але вона може багатьом бути дуже корисною. Раніше в 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 – чудовий вибір!

Вконтакте

Online service by OceanTheme є платформою, де люди можуть бути з усіма іншими з величезним інтересом до купівлі преміум templates and extensions Joomla! at a bargain price. Програмою аудиторії послуг є окремі та маленькі і медичні ділові, професійні веб-розвитки для створення електронних магазинів, громадських місць або людей, які витрачають на свій blog. У нашій великій колекції преміумних рішень кожний буде прийнято те, що він потребує.

Наші ресурси діють як організатор гігієни, особливість числа людей, які ви збираєтеся templates and extensions, вартість покупок, як добре, як об'єм і access to the materials. Цей веб-сайт має багато можливостей для легкого пошуку тематичних і естетичних умов. Intuitive navigation, taging system, sorting by the filter and the tool "add to bookmarks" буде дозволено вам керувати правим матеріалом, який буде вкрай швидко. У тому, що ви повинні продовжувати останнє повідомлення, тому що update collection every day.

Access до центру бази даних матеріалів передбачений для тривалості центру, визначеного в підписі purse. Subscribers отримувати необмежений доступ до всіх наявних архівів, новин і оновлень, як добре, як технічна підтримка через повторюваний період.

Всі продукти ви можете знайти на цьому сайті є 100% GPL-компьютерные, які рішення можуть змінювати їх, як ви хочете і налаштовані на необмежену кількість місць.

Відмінність до нашої колекції ви будете зберігати багато часу і грошей, як templates and extensions зручні для використання, зручні для налаштування і configure, multi-functional and diverse. Те, що можна зробити для створення веб-сайту будь-якої складності і орієнтації, безрозвитку розширеного веб-розвитку технологій.

Main features of our website

rich set of functions, working out of the box:

Використовуйте всі можливості для нашого сайту для отримання професійно-технічної професійної стратегії для швидкого реалізування своїх бізнес-проектів або творчих ідей.

Use the search tools

Використовуйте додаткові пошуки і filtring, і легкої навколишнього середовища для швидкого перегляду захищених web solutions in design, functionality and other criteria.

Для сировини матеріалів були завжди на дорозі, використовуючи unique функцію "Add to favorites", і вони є наявними в окремій секції для всіх років.

Logged in our site, ви повинні бути здатні до оголошення коментарів і брати участь у вдосконаленнях, як добре, як використання безкоштовного підпису з великим доступом.

Join our club membership

Club subscription дає вам повний доступ до нашого каталогу оригінального матеріалу. І включають преміум templates and extensions для several years.

Завантажити відповідні для вас Joomla templates and extensions, як безкоштовні і підписи для клубу без будь-яких термінів і огоранічений швидкість.

Якщо ви збираєтеся будь-який матеріал на сайті, ви можете скористатися своїм голосом, як добре share it with friends via social networks.

Баги в популярних 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: якщо (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!

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

Не довго думаючи, вирішив поекспериментувати з одним із сайтів, який містив невеликий каталог продукції з цінами. Ціни були вказані у тілі статті. Виглядало це приблизно так:

Головна незручність у тому, що якщо захочеться змінити оформлення блоку з ціною, потрібно буде редагувати всі сторінки каталогу. Якщо товарів небагато, це ще можна терпіти, але якщо їх сотні та тисячі, то це буде тихий кошмар! Саме тому я зрадів нової можливостіта вирішив вивести ціну на продукт в окреме поле.

Робиться це так, ось покрокова інструкція.

1. Створюємо групу полів

Перш ніж створювати поля, потрібно створити групу, яка згодом прив'язуватиметься до тієї чи іншої категорії матеріалів (або всіх категорій). Тобто, можна створювати скільки завгодно груп полів: для фільмів – "жанр, режисер, тривалість, віковий рейтинг", для товарів – "ціна оптова, роздрібна, габарити, вага" тощо. - І все це в рамках одного сайту.

Йдемо в менеджер матеріалів та у правій колонці вибираємо пункт Field Group. У ній поки що порожньо, але є кнопка "Створити", за допомогою якої ми створюємо групу. По суті, потрібно ввести тільки її ім'я, жодні інші налаштування змінювати не потрібно. Нехай ця група називатиметься "Ціни".

2. Створюємо поля у групі

Ідемо до розділу Fieldsта створюємо поля. У настройках поля, що створюється, потрібно вказати його назву і вибрати тип. За промовчанням це текстове поле, однак, можна вибрати інші типи даних. Їхній набір досить великий - починаючи від простих цілих чисел, закінчуючи елементами форм, картинками та цілими галереями. зупинимося поки що на звичайному текстовому полі, тому що ціна має бути вказана не простим числом, а у форматі "від ***** рублів".

Не забуваймо вказати прив'язку даного поля до групи - вона на картинці позначена червоним. У цьому ж діалозі можна вказати прив'язку даного поля до всіх категорій контенту або лише до обраних. Поки що залишимо прив'язку до всіх категорій.

3. Відкриваємо статтю для редагування

У тому ж Менеджері матеріалів переходимо до розділу "Матеріали" та відкриваємо будь-яку статтю для редагування. При цьому в редакторі з'явиться нова вкладка - "Ціни". Це якраз та сама група полів, яку ми створили в п.1

Після цього йдемо на сайт і бачимо, що під заголовком статті з'явився рядок із даними з поля. Але стандартне оформлення у неї не дуже цікаве - вона виглядає як звичайний текст.

Щоб виділити інформацію з поля користувача, нам потрібно задати CSS-властивості для класів .field-labelі .field-value. Для цього йдемо в "Розширення" - "Менеджер шаблонів", знаходимо у списку наш шаблон і клацаємо за посиланням у ПРАВОМУ колонці. Відкривається редактор файлів шаблону. Нам потрібно знайти основний файл CSS. У випадку шаблону Protostar (та інших шаблонів, створених на його основі) цей файл розташований за адресою CSS\template.css

У код праворуч потрібно додати рядки, що описують стиль елементів, наприклад:

Field-value (font-size: 1.5em; color: #D13D0F;)
.field-label (font-size: 1.5em; color: #000;)

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

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

Переваги та недоліки полів користувача

Зізнаюся чесно, я недостатньо вивчив нову опцію, щоб дати вичерпну відповідь на це питання, але очевидний плюс полів користувача - нарешті можна організувати каталог товарів на сайті, не вдаючись до допомоги сторонніх розширень, наприклад, K2. Нічого проти K2 не маю, але я не прихильник перевантажувати сайт розширеннями, тому що хоч трохи, але сповільнює сайт, споживаючи при цьому додаткову пам'ять та час ЦП, а також є потенційним джерелом уразливостей.

Нестача поки виявилася одна - неможливо робити підписи після поля. Наприклад, рядок "від 3 000 000 рублів" не можна розбити на рядкову та числову компоненту, щоб потім фільтрувати товари за ціною як за числом, а не як за рядком. Можна, звичайно вказувати ціну у вигляді цілого числа, але виглядати такий напис буде занадто по-машинному - Ціна, руб: 3000000. Хочеться сподіватися, що колись з'явиться можливість форматувати уявлення полів на власний розсуд.