Опубликовано автор в категориях Joomla.

Автор Andrew Eddie, перевод и авторская правка Hiway

Введение

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

Ранее Joomla! была «заклеймена» многими разработчиками, как система в которой логика не была отделена от представления, что не давало возможности удобно работать с системой, кроме этого, вся разметка была сделана таблицами, не семантично, не соответствуя стандартам. Но Joomla 1.5 дала разработчикам возможность полностью автономно от ядра менять представление данных, чем значительно развязала руки дизайнерам.

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

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

Если вас мало интересует теория, то следуйте непосредственно к краткой шпаргалке.

MVC 101

MVC — на первый взгляд страшный акроним. Расшифровывается как «Модель-представление-поведение» или «Модель-представление-контроллер» (Model-View-Controller), именно концепция MVC отвечает за дополнительную «гибкость», которая теперь предоставлена разработчику. В то время как теория может показаться скучной и сложной, единственная часть, о которой действительно должен хорошо знать дизайнер в этой модели — это V для Вида (Представления). Именно эта часть модели отвечает за вывод контента.

Различные расширения выводят контент по-разному.

Компоненты, как вы уже, наверное, знаете довольно сложны и могут показывать различную информацию по-разному. Например, Компонент Статей (com_content) в состоянии показать единственную статью, или статьи в категории, или категории в разделах. Каждый из способов представить различные типы данных (статья, или категория, или раздел) называют «представлением» (вспомните из расшифровки MVC). У большинства компонентов может быть много представлений. Однако представление фактически не выводит контент непосредственно. За это как раз и отвечает «разметка» страницы, именно с помощью разметки мы и помогаем «представлению» выводить контент так как нам нужно.

Главное что здесь необходимо запомнить, что компонент может иметь много представлений, и каждое представление может иметь одну и более разметок. Каждое представление выводит статический набор информации, но каждая разметка может показать эту информацию по-разному. Например, представление Категории в компоненте Статей собирает множество статей. Эти статьи могут быть показаны в виде списка или в таблице (могут, конечно же, быть и другие варианты разметки). Таким образом, это представление может иметь на выбор разметку в виде списка или таблицы.

С модулями дело обстоит куда проще. Они вообще показывают одну «вещь» в один способ. У модулей на самом деле нет представлений, но они поддерживают клиентскую разметку. Некоторые разработчики могли бы даже назначать выбор разметки через параметры модуля.

Шаблон и Разметка(вывода контента)

Очень важно различать роль шаблона и роль разметки (вывода контента, далее просто «разметка»). Шаблон настраивает структуру блоков для страницы web-сайта. В пределах этой структуры включены позиции (position) для вывода модулей и компонента. А то, как выводиться содержимое модуля зависит от его разметки, или от комбинации представления и разметки в случае компонента.

Следующее изображение показывает структурную разметку типичного Joomla! шаблона (rhuk_milkyway, стандартный для 1.5). Чтобы увидеть расположение модулей нужно добавить к основному адресу сайта префикс запрос вида «?tp=1» (например, www.mysite.com/index.php? tp=1). Вы можете ясно видеть, в пределах данного шаблона выводится содержимое модулей, так же как и вывод главной части контента в центральной части шаблона. Однако, фактическое содержимое этих областей, управляется разметкой самого компонента и модуля.

Дополнительная кастомизация

Если немного абстрагироваться от MVC, то есть еще две важных области, которые стоит отметить при выполнении кастомного дизайна в Joomla!.

В дополнение к разметке модули имеют то, что мы называем «chrome» (не путать с браузером:)). Хром (chrome) — это стиль, в котором должен выводиться модуль. Большинство разработчиков, проектировщиков и вероятно некоторые конечные пользователи знакомы с различными встроенными стилями для модулей (raw, xhtml, и т.д). Также можно определить ваши собственные хромовые стили для модулей в зависимости от дизайна сайта.

В скриншоте выше (если кликнуть по картинке), вы можете разобрать названия части встроенного используемого хрома модулей (rounded, none and xhtml).

Вторая особенность имеет отношение к управлению средствами нумерации страниц (пагинации), когда мы рассматриваем контент с большим количеством страниц и включили пагинацию в Joomla!. Чуть позже мы рассмотрим эту особенность подробнее.

Типы вывода компонента и переписывание разметки под себя

Чтобы понять принципы переписывания разметки компонента, мы должны сначала понять его структуру файлов. В данном случае для нас важна та часть компонента, которая находится в директории /views/. Вот частичная структура для двух из представлений в com_content:

/components

/com_content

/views

/articles

/tmpl

default.php (это разметка)

form.php      (это разметка)

view.html.php (это представление, которое выводит HTML)

view.pdf.php  (это представление, которое выводит PDF)

/category

/tmpl

blog.php         (это разметка)

blog_items.php (это суб-разметка)

default.php  (это разметка)

view.html.php            (HTML представление)

view.feed.php            (RSS представление)

Вы видите, что в каждое представление помещено в свою собственную директорию /views/. У компонента контента фактически есть три других представления, не показанных в примере: archive, frontpage and section.

Типы вывода

В папке /articles/ у нас есть большое количество файлов. Есть почти всегда файл, под названием view.html.php. Это — то, что мы и называем файлом представления, их может быть больше одного в зависимости от типа вывода. Для данных файлов есть общие принципы формирования названия, «view.тип_вывода.php», где тип вывода может быть html, feed, pdf, row или error (за дополнительной информацией обратитесь по ссылке JDocument на API взгляните в папке /libraries/joomla/document/). Все это означает, что, когда мы хотим вывести данные в формате html, для этого специфического представления используется view.html.php. Когда мы хотим вывести данные в формате RSS, используется файл view.feed.php.

Наиболее наглядно суть этого можно проиллюстрировать, когда включить собственный механизм SEF Joomla! и также активировать в настройках добавление суффикса к URL . Когда это будет сделано, URL сайта будут иметь примерно такой вид:

http://domain/sports.html

http://domain/sports.feed

http://domain/sports/rowing.html

http://domain/sports/rowing.pdf

Ссылки на вашем сайте, конечно, будут выглядеть не абсолютно так, как в примере, но суть его в том, чтобы показать, что sports.html будет использовать view.html.php файл для представления категории, и что sports.feed покажет выдачу RSS для категории, используя view.feed.php. Нужно отметить, что вы не можете в настоящее время настраивать выдачу или типы вывода PDF. Однако вы можете настроить тип вывода html, и это именно — то, где разметка играет роль.

Разметки

В директории view есть папка /tmpl/, в которой находятся файлы разметки. Каждый файл PHP, который не начинается с «view» в этом каталоге представляет разметку. Например, article/tmpl/default.php — разметка по умолчанию для статьи, тогда как article/tmpl/form.php — разметка формы редактирования статьи; category/tmpl/default.php — разметка по умолчанию для категории, тогда как category/tmpl/blog.php показывает список статей в виде блога, ленты.

Отношения между представлением и разметкой компонента наиболее явно видны, при добавлении нового пункта меню. Ниже вы видите скриншот стандартной страницы создания пункта меню. Нажав на Материалы(Articles) (данный пункт представляет com_content), дерево расширяется, чтобы показать список представлений и каждой разметки в пределах представления.

Вы можете заметить (если кликнуть по картинке), что некоторых из/tmpl/директорий есть файлы (как pagebreak.php в представлении статьи), которые отсутствуют в списке меню. Это происходит из-за инструкций в файле XML для разметки (например, pagebreak.xml), чтобы скрыть разметку (или даже представление) из списка пункта меню. Однако, это — уже другая довольно обширная тема, которая будет затронута в другой статье.

Теперь, когда мы знакомы с основными принципами взаимодействия разметки и представления , мы готовы создасть соственну разметку, то есть переписать шаблон вывода контента.

Копирование или Создание Файлов разметки

Собственная разметка будет работать только в пределах активного шаблона и при условии расположения в /html/директории в шаблоне. Например, собственные шаблоны разметки для rhuk_milkyway расположены в /templates/rhuk_milkyway/html/, для шаблона JA_Purity в /templates/ja_purity/html/ и для Beez в /templates/beez/html/.

Важно понять, что, если Вы создаете собственную разметку для одного шаблона, то она не будет доступна в других шаблонах. Например, в rhuk_milkyway вообще нет собственных стилей разметки. Когда вы используете этот шаблон, вы видите «сырой» вывод содержимого с помощью шаблонов разметки компонентов по умолчанию. Но, когда вы используете шаблон Beez, почти каждым типом вывода компонента управляет собственная разметка шаблона. JA_Purity является промежуточным примером, имея собственную разметку лишь для некоторых компонентов, и только для некоторых представлений в них.

Собственные файлы разметки должны быть помещены в шаблон особым способом. Используя Beez, как пример, вы будете видеть следующую структуру:

/templates

/beez

/html

/com_content          (эта директория соответствует директории компонента)

/articles          (эта директория соответствует названию вида)

default.php (это соответствует названию типа разметки)

form.php

Структура для собственной разметки вывода компонента весьма проста: /html/название_компонента/название_вида/название_файла_разметки.php.

Давайте рассмотрим несколько примеров.

У шаблона rhuk_milkyway нет собственной разметки для компонентов. Если мы хотим переписать разметку по умолчанию для вывода материала (article), сначала мы должны скопировать этот файл:

/components/com_content/views/article/tmpl/default.php

в это место, создавая соответствующие директории, в случае если они еще не существуют:

/templates/rhuk_milkyway/html/com_content/article/default.php

Если бы мы хотели переписать разметку блога в представлении категории, то мы скопировали бы этот файл:

/components/com_content/views/category/tmpl/blog.php

в:

/templates/rhuk_milkyway/html/com_content/category/blog.php

Как только файлы скопированы, вы можете настраивать эти файлы под ваши потребности.

Переписывание суб-разметок

В некоторых представлениях Вы увидите, что у некоторых из разметок есть группа файлов, которые начинаются с того же самого названия. У представления категории и frontpage (материалов на главной) есть примеры этих файлов. Разметка в виде блога в представлении категории фактически имеет три части: главный файл разметки blog.php и два файла суб-разметки, blog_item.php и blog_links.php. Вы можете видеть, где эти суб-разметки загружены в blog.php файле, используя loadTemplate метод, например:

echo $this->loadTemplate(‘item’);

// или

echo $this->loadTemplate(‘links’);

Загружая суб-разметку, представление уже знает, в какой разметке Вы находитесь, таким образом, в методе вам не нужно указывать префикс суб-разметки (то есть, Вы загружаете только ‘item’, а не ‘blog_item’).

Важно отметить, что вы можете переписать только суб-разметку, не копируя весь набор файлов. Например, если вас устраивал вывод контента Joomla! по умолчанию для разметки блога, но вам нужно изменить только вывод суб-разметки item, вы можете скопировать только:

/components/com_content/views/category/tmpl/blog_item.php

в:

/templates/rhuk_milkyway/html/com_content/category/blog_item.php

Когда Joomla! парсит представление, она будет автоматически знать, что нужно загрузить дефолтный blog.php от com_content, и blog_item.php, который переписан в вашем шаблоне.

Переписывание разметки модуля

Модули, как и компоненты, имеют специфическую структуру директорий.

/modules

/mod_latest_news

/tmpl

default.php     (разметка)

helper.php                   (вспомогательный файл содержащий логику)

mod_latest_news.php (главный файл модуля)

mod_latest_news.xml (установочный XML файл)

Подобно компоненту, в корневой директории модуля (в примере, mod_latest_news) есть директория /tmpl/. Как правило, есть только один файл разметки, но автора модуля их может быть больше.

Как и для компонентов, переписываемая разметка для модуля, должна быть размещена специфическим способом. Снова, используя Beez в качестве примера, вы будете видеть следующую структуру директорий:

/templates

/beez

/html

/mod_latest_news (название директории соответствует названию модуля)

default.php                (название файла соответствует названию файла в модуле)

В целом, структура директорий-файлов для собственной разметки модуля выглядит весьма просто: /html/mod_module_name/layout_file_name.php.

Копирование или Создание Файлов разметки

У шаблона rhuk_milkyway нет собственной разметки для модулей. Если мы хотим переписать разметку по умолчанию для модуля Последних новостей (mod_latest_news ) мы должны скопировать этот файл:

/modules/mod_latest_news/default.php

В эту директорию, создавая нужные, если они еще не существуют:

/templates/rhuk_milkyway/html/mod_latest_news/default.php

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

Хром (Chrome) Модуля

Joomla! 1.0 имела несколько фиксированных стилей, которые могли показать список модулей в специфическом положении. Они были представлены числами:

  • 0 (по умолчанию) вывод модуля вертикально в таблице
  • 1 выводил модуль горизонтально в таблице
  • — 1 вывод модуля без разметки
  • — 2 вывод модуля в совместимом XHTML формате с названием в теге H3.
  • — 3 вывод модуля серией вложенных DIV-ов, которые давали возможность создать закругленные углы

Это была хорошая система за исключением двух вещей:

1. Никто не мог запомнить, какое число что означало

2. И вы не могли расширить эти стили.

В Jooomla 1.5 числа были заменены на понятные всем слова. Также был изменен синтаксис вывода позиции модуля в шаблоне. Например, этот сниппет выводит модуль в левой позиции в стиле xhtml:

<jdoc:include type=»modules» name=»left» style=»xhtml» />

Встроенные стили, которые теперь доступны:

  • table (был 0 и остается по умолчанию)
  • horz (was 1)
  • none (was -1)
  • xhtml (was -2)
  • rounded (was -3)
  • outline (новый — используется для превью позиций модуля в шаблоне — как на скриншоте в начале статьи)

В исходниках кода эти стили фактически упоминаются как «chrome» — «хром». Дефолтный файл «chrome » вы найдете в системном шаблоне Joomla! вот здесь:

/templates/system/html/modules.php

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

Чтобы создать ваш собственный «chrome», или стили модуля, Вы должны создать файл modules.php для редактирования в папке templates/html/ (та же папка, где мы сохраняли разметку компонента).

Шаблон rhuk_milkyway предлагает некоторые дополнительные стили «chrome» как пример новый стиль, названный «slider». Вы найдете его в следующем файле:

/templates/rhuk_milkyway/html/modules.php

Создать ваш собственный «chrome» на самом деле не сложно. Давайте рассмотрим пример стиля вывода модуля в виде списка определений (теги DL, DT и DD).

Для начала просто вставьте предложенную ниже функцию в /html/modules.php файл в директории вашего шаблона (создайте ее, если такой директории нет):

/*

* Module chrome that wraps the module in a definition list

*/

function modChrome_dlist($module, &$params, &$attribs)

{ ?>

<dl class="<?php echo $params->get('moduleclass_sfx'); ?>">

<?php if ($module->showtitle != 0) : ?>

<dt>

<?php echo $module->title; ?>

</dt>

<?php endif; ?>

<dd>

<?php echo $module->content; ?>

</dd>

</dl>

<?php

}

Мы назовем этот стиль «dlist», таким образом, название функции будет modChrome_dlist.

Функция должна использовать три аргумента, как показано в коде: объект module, параметры модуля, и наконец, $attribs — множество всех признаков в jdoc XML.

Есть три главных свойства в объекте module, которые нам интересны:

  • showtitle «говорит» показывать название модуля или нет
  • title — название модуля
  • content — вывод контента модуля (в его разметку)

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

Переписывание разметки ссылок пагинации

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

Шаблон rhuk_milkyway обеспечивает хорошо прокомментированный пример переписывания этой разметки. Файл найдете здесь:

/templates/rhuk_milkyway/html/pagination.php

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

Есть четыре функции, которые могут использоваться:

pagination_list_footer — Эта функция ответственна за показ выпадающего списка для числа материалов, которые будут показаны на странице.

pagination_list_render -Эта функция ответственна за показ списка ссылок номеров страниц и ссылок «В начало», «В конец», «Предыдущие» и «Следующие».

pagination_item_inactive — Эта функция показывает ссылки на номера страниц кроме «текущей» страницы.

pagination_item_active — Эта функция показывает текущий номер страницы, обычно без гиперссылки.

Быстрая шпаргалка (адрес якоря)

На примере шаблона rhuk_milkyway ниже приведено краткое резюме тех принципов, которые мы рассмотрели выше.

Кастомный вывод компонента

Чтобы переписать разметку компонента (например, разметку по умолчанию в представлении статьи), нужно скопировать:

/components/com_content/views/article/tmpl/default.php

в:

/templates/rhuk_milkyway/html/com_content/article/default.php

Подробнее о выводе компонента.

Кастомный вывод модуля

Чтобы переписать разметку модуля (например, модуль последних новостей, используя rhuk_milkyway шаблон), скопируйте:

/components/mod_latest_news/default.php

в:

/templates/rhuk_milkyway/html/mod_latest_news/default.php

Подробнее о выводе модуля
.

Добавление новых стилей модуля

Чтобы добавить новые стили модуля (chrome), добавьте их к следующему файлу:

/templates/rhuk_milkyway/html/modules.php

Читайте больше о стилях модуля.

Кастомизация пагинации

Чтобы настроить селектор выбора количества материалов на странице и цепочку пагинации, отредактируйте следующий файл:

/templates/rhuk_milkyway/html/pagination.php

Читайте больше о пагинации.

Заключение

Joomla! 1.5, с помощью парадигмы MVC значительно улучшила гибкость настройки для разработчика web-сайта. Посредством нескольких простых принципов, как копирование определенных файлов в определенные места в шаблоне, разработчик в состоянии переписать почти весь вывод контента в Joomla!.

За дополнительной информацией можно обратиться по адресу источника к автору статьи

Постовой:

— кому нужно продвижение сайта

— а может вас интересует Арнольд Шварценеггер?cinterion mc52it

29 комментариев к записи “Понимание системы «переписывания разметки» вывода контента (output overrides) в Joomla! 1.5”

  1. Максим

    Статья интересная ни чего сказать не могу. Чёто все вголове после помутнилось.. Слишком уж много информации. А вот про переписывание суб-разметок ничего не знал спасибо…

    Ответить
  2. Константин

    То, что доктор прописал. Спасибо +. Это принципиальные вещи в отличном исполнении. Зачет и респект.

    Ответить
  3. Константин

    А вот как изменить вывести первую картинку из статьи, чтобы получилось так:

    \\\\\\\\\ 12.12.2008 ЗАГОЛОВОК
    \\\\\\\\\ Текст ****************************************
    \\\\\\\\\ ***********************************************
    картинка ***********************************************

    Ответить
  4. Света

    Мучаюсь, не могу снять ограничение 10 статей на страницу при выводе категории в RSS в версии 1.59 . Кто-нибудь знает как сделать?

    Ответить
  5. hiway

    @Света: Это делается очень просто. Нужно зайти в панель управленния, выбрать «общие настройки» и во вкладке «сайт» (первая вкладка) указать длину фидов «Длина RSS-ленты «

    Ответить
  6. konstantin

    привет.
    т.е. если мне надо что-либо изменить в файле helper.php например в модуле mainmenu , то такой фокус не пройдет?

    Ответить
  7. yAnTar

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

    Ответить
  8. Виктор

    Скажите пожалуйста, как сделать в joomla- е так, что на странице новые посты публиковались по очереди — сверху вниз как список. в данный момент выходит новый материал нормально, верх таблицы а последующие (соответственно очередной новый пост вытесняет старого вниз) делятся на две вертикальные столбцы (колонки), выглядит некрасиво. помогите!!!

    Ответить
  9. Hiway

    Это делается в настройках пункта меню. Я так понимаю что вы используете в пункте «Главная» настройки по умолчанию. Там есть несколько вкладок, когда зайти в редактирование пункта меню, так вот одна из них отвечает за вывод форматы разметки, а следующая дает возможность настроить сортировку материалов.

    Ответить
  10. Mihazzz

    Подскажите пожалуйста, можно сделать так, что бы при переходе с первой страницы на вторую, пропадала первая и появлялась одиннадцатая? Очень неудобно получается… что бы перейти на 11 надо зайти на 10, а потом нажать следующая…

    Ответить
  11. Mihazzz

    У меня на сайте статьи выводятся через «Блог категории», на каждой странице по 10 статей. Внизу выводится «<< Первая Последняя >>». Что бы перейти на 11, надо нажать 10, а потом «Следующая >». Я хочу сделать так, что бы при переходе, допустим, на 8 страницу внизу выводилось так «<< Первая Последняя >>. Вот ссылка на сайт, если я опять протупил и что-то непонятно объяснил: Ссылка.

    Ответить
  12. Mihazzz

    извините за предыдущий пост, только сейчас заметил ошибку…
    У меня на сайте статьи выводятся через «Блог категории», на каждой странице по 10 статей. Внизу выводится «Первая Предыдущая 1 2 3 4 5 6 7 8 9 10 Следующая Последняя». Что бы перейти на 11, надо нажать 10, а потом «Следующая». Я хочу сделать так, что бы при переходе, допустим, на 8 страницу внизу выводилось так «Первая Предыдущая 3 4 5 6 7 8 9 10 11 12 Следующая Последняя». Вот ссылка на сайт, если я опять протупил и что-то непонятно объяснил: ссылка.

    Ответить
    • hiway

      Все понятно. Здесь вам нужно править не файлы разметки com_content а сам файл постраничной навигации. Взять его можно в папке html например шаблона beez (идет в сборке по умолчанию). Но здесь не достаточно просто переписать разметку а надо еще и дописывать php функцию которая будет вести такого рода отсчет.

      Ответить
  13. Олег

    делаю шаблон с нуля, жумла 1.5.18… делаю, делаю… дохожу до кнопки подробнее… ставлю в статье красную линию, а на сайте не отображается кнопка подробнее. в сss класс подробнее прописываю следующим образом — a.readmore-link: link {сздесь шрифт цвет и т.п.} a.readmore-link:viseted {сздесь шрифт цвет и т.п.} a.readmore-link: hover {сздесь шрифт цвет и т.п.}… а кнопка подробнее не отображается совсем, ее даже в коде нет. может вы поможете?

    Ответить
  14. Hiway

    Олег. Я не отвечаю на почту по комментам и постам из блога. Если вам нужна консультация или мои услуги как разработчика, вы можете обратиться с задачей по e-mail и мы решим как быть в вашей ситуации.

    Ответить
  15. Илья

    Да, вы проделали огромную работу по написанию данной статьи. Но, вы её писали для кого? Для себя или для других пользователей. После её прочтения в голове стала каша…И думаю ,что не только у меня.

    Ответить
  16. Денис

    Спасибо огромное!
    В отличие от Ильи, после прочтения статьи каша в моей голове наоборот обрела чёткую структуру 🙂
    Всё внятно и доступно изложено.

    Ответить
  17. сергей

    у меня в начале всех статей прописана «1»-ка как в примере ниже:

    «тест страниц
    1

    Шпионы прошлого века не могли себе и представить, что в будущем делать фотокомпромат можно будет за считанные минут»

    подскажите как убрать, заранее благодарю!!!!!!!!!!

    Ответить
    • Hiway

      сергей, здравствуйте. Это скорее всего проблема шаблона. Если в папке шаблона есть директория html/, то в ней может быть папка com_contet/article и в ней файл default.php — вот посмотрите нет ли там проблемы. Если же нет и вы не правили файлы ядра, то проверьте все плагины, которые относятся к контенту. И впредь, давайте ссылки проблемы чтобы посмотреть.

      Ответить

Оставить комментарий

  • (не будет показан)