RizVN Login



Joomla 2.5 добавление пользователями материалов (статей) на сайт

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

Существующие решения для организации добавления пользователями статей и материалов на сайт Joomla

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

  • Решение должно либо вообще не вносить изменения в стандартные механизмы, либо делать их настолько минимальными, чтобы в последствии на сайт можно было спокойно добавлять другие модули и компоненты.
  • Необходима модерация добавляемых материалов. 
  • Необходимо, чтобы пользователь не смог случайным образом как-то испортить текущую структуру сайта или добавить материалы в те категории, которые используются только для организации внутренних задач сайта.
  • Если возникает необходимость вносить правки в код (допиливание), то они должны быть минимальными. Одно дело, когда у вас уже есть поток статей и вы знаете конкретную специфику того, чего вам ждать от пользователей. Соответственно, вы понимаете, что ваши труды будут полезными. Другое дело, когда вы только добавляете функциональность и не известно будет ли поток и если будет, то какой. Ведь, всегда нужно помнить, что если кому-то действительно хочется добавить материал, то для него не будет представлять каких-то сложностей отправка документа Word, или OpenOffice, или даже html на электронную почту.
  • Желательно, чтобы были всякие удобные функции, такие как возможность пользователю посмотреть статусы его статей, организация процесса модерации статей, добавление меток, добавление картинок и прочие. 

Критерии достаточно базовые, но даже их хватило для того, чтобы в итоге остановиться на добавлении материалов стандартным образом. Но, обо всем по порядку. Первыми были рассмотрены различные CCK, такие как ContentBuilder и K2. Основной проблемой стали изменение стандартных механизмов и необходимость внесения достаточно большого объема правок, поэтому от них пришлось отказаться. К примеру, скачав с официального сайта и установив K2, в котором по утверждениям уже должна быть реализована удобная функциональность добавления материалов, оказалось, что весь контент должен использоваться только через K2 (следовательно, практически все модули для Joomla без поддержки K2 становятся бесполезными) и что форму добавления материалов еще необходимо исправлять под свои нужды (к примеру, доступность всех категорий пользователю). Безусловно, вполне возможно, что после определенного времени изучения K2, эту задачу можно было бы решить куда проще, но переносить все что есть, только ради одной функции, и искать аналоги существующим модулям - не рационально. 

Примечание: Помните, что речь идет только о задаче добавления пользователями материалов. Безусловно, с помощью CCK можно построить сложные и мощные сайты, но в текущей задаче этого не требуется. 

Следующими были рассмотрены модули и компоненты, которые так же представляют собой CCK, но не изменяют стандартную структуру. Это Zoo (как CCK), SobiPro (как каталог) и ChronoConnectivity (о нем отдельные слова). Бесплатная версия Zoo предоставляет готовый модуль для публикации. Однако, после просмотра готовых форм и поиска решения проблем с настройками в безопасности, стало понятно, что, кроме того, что все добавленные статьи будут идти особняком (другими словами, остается много вопросов о том, как соотносить пользовательские стать и категории со статьями и категориями сайта), потребуется вносить достаточно много правок в шаблоны отображения, чтобы добиться организации процесса модерации (принято, отклонено, на модерации и так далее) с возможностью просмотра пользователями статусов своих статей. SobiPro - это достаточно неплохой каталог, но у него оказались те же проблемы, что и у Zoo. Нужно будет вносить правки и задумываться о соотношении контента SobiPro со стандартным контентом. ChronoConnectivity это очень мощный компонент для построения всевозможных форм и синхронизации внутри базы. Если вам нужно полностью заточить весь процесс добавления материалов или чего-то другого под свои потребности, то с ним это легко можно сделать. Однако, в нем нет никаких предустановленных вариантов, поэтому абсолютно все придется настраивать с нуля. А это очень долго.

После изысканий в области CCK, стало понятно, что стоит посмотреть более приземленные решения. И самое очевидное это блоги. Однако, как оказалось, бесплатных блоговых компонентов не так уж много. А те, что встречались, по большому счету оказались аналогичны стандартному механизму. Так что смысла в их использовании особо нет. Тем не менее, попалось на глаза и два достаточно неплохих бесплатных блоговых компонентов это Hekima Blogs и UAM. Однако, с ними стало понятно, что придется вносить ряд правок, чтобы полностью организовать процесс модерации и исправить некоторые ошибки. 

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

Настройка добавления пользователями материалов и статей на сайт Joomla стандартными средствами

Итоговая инструкция настройки добавления пользователями статей и материалов на сайт Joomla получилась хоть и большой по количеству пунктов, но на самом деле достаточно простой для организации. Первое, что вам понадобится, это скачать и установить бесплатный редактор JCE с локализацией (ссылка на сайт разработчика; русский язык там есть; в крайнем случае, вы всегда можете его скачать с других ресурсов). В отличии от стандартного редактора TinyMCE, у него есть настраиваемый и достаточно удобный менеджер картинок. Теперь, можно приступать к настройке.

1. Откройте "Сайт - Общие настройки" и установите редактор по умолчанию "Editor JCE". Это необходимо сделать для того, чтобы все пользователи вводили статьи именно с этого редактора.

2. Откройте "Менеджер материалов". Затем нажмите кнопку "Настройки". Перейдите на вкладку "Права" и для группы Registered установите разрешение на создание материала (пункт "Создать"). Остальные пункты оставьте запрещенными. Эта настройка позволит пользователям добавлять материалы и статьи с сайта, но не публиковать их. Другими словами, после добавления, статьи по умолчанию будут не опубликованными. В общем, простая модерация.

3. Откройте "Менеджер категорий" и создайте категорию "На рассмотрение". В последующем в эту категорию будут попадать все добавленные статьи (для удобства).

4. Создайте скрытое меню, если у вас его нет. Скрытое меню - это то же самое обычное меню, но размещенное в позиции, которого нет в шаблоне.

5. В скрытом меню, создайте пункт с Alias "add-material" и названием "Добавить статью". Выберите тип пункта "Создать материал". Установите уровень доступа "Registered" (в левой части) и категорию по умолчанию "На рассмотрение" (в области основных настроек). Делается это для того, чтобы неавторизованный пользователь при выборе пункта попадал на страницу входа и чтобы все материалы попадали в одну категорию (для последующей сортировки).

6. Создаем пункт уже в меню, которое показывается всем пользователям. Устанавливаем тип пункта "Псевдоним". Указываем в качестве целевого пункта предыдущий пункт из скрытого меню. Открытый пункт нужен для того, чтобы все пользователи видели, что на сайте можно создать материал. При щелчке на таком пункте неавторизованными пользователями, их будет перекидывать на страницу авторизации.

Теперь, приступаем к настройке редактора JCE 

7. Откройте редактор JCE в меню "Компоненты". Перейдите на вкладку с профилями. Включите профиль "Front End". Это именно тот профиль, который будет применяться к пользователям, при добавлении статьи с сайта. 

8. Откройте профиль "Front End" и выставьте следующие настройки

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

8.2. Перейдите на вкладку "Особенности и Макет". Выставьте пункт "Переключатель редактора" в Нет, чтобы исключить возможность отправить голый html.

8.3. Создайте на сайте в каталоге "images" директорию "reviews". В этой директории будут храниться картинки пользовательских статей на время модерации.

8.4. Вернитесь в админку и перейдите на вкладку "Параметры редактора". Затем в левой части выберите вкладку "Файловая система" и укажите в пункте "Путь к каталогу файлов" путь "images/reviews"

8.5. В той же вкладке, отключите пункт "Древо папок"

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

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

8.8. Сохраняем настройки.

8.9. Переходим на вкладку "Параметры плагина" и в левой части экрана выбираем вкладку "Менеджер изображений". Затем устанавливаем ограничение размера файла, например, 100 (как и до этого).

8.10. Отключаем пункты "Удалить папку", "Удалить файл", "Переименовать файл", "Вырезать, копировать" (для каталога и файла), "Переименовать папку".

8.11. Указываем путь к каталогу файлов изображений "images/reviews

8.12. Сохраняем настройки.

8.13. Во вкладке "Параметры плагина" открываем вкладку "Ссылка" в левой части. И указываем желаемые настройки для ссылок по умолчанию. Например, цель "в новом окне".

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

8.15. Сохраняем и закрываем редактор.

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

10. Первым делом открываем "Расширения - Менеджер плагинов" и выставляем группу "Special" для всех кнопок (Изображение, Разрыв страницы, Материал и так далее), кроме кнопки "Подробнее". Это позволит скрыть кнопки для обычных пользователей, но оставит их открытыми для тех пользователей, которые имеют доступ к админке.

11. К сожалению, скрыть с формы блоки, которые не нужны, а так же добавить вступительный текст не получится настройками. Поэтому придется скопировать файл шаблона отображения из компонента в шаблон сайта, а затем подредактировать.

11.1. Откройте путь "%корень сайта%/components/com_content/views/form/tmpl" и скопируйте файл "edit.php" в ваш шаблон по пути "%ваш шаблон%/html/content/form/".

11.2. Откройте файл "edit.php" в любом текстовом редакторе и добавьте нужный вам вступительный текст, как показано ниже (текст идет после 44-й строчки или ищите "<form action="<?php echo JRoute:..."):

<!-- Свой заголовок -->
<h1>Добавить статью</h1>
<div class="add-material-header">
 Прежде всего помните, что статья - это полезный, вежливый, осмысленный и корректно оформленный текст
 (подробнее читайте <a href="/rules.html">правила</a> раздел статей).
 <br/>
 Добавление материала означает, что вы соглашаетесь с <a href="/rules.html">правилами</a> данного ресурса.
</div>
<!-- Свой заголовок : конец -->
<form action="<?php echo JRoute::_('index.php?option=com_content&a_id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="adminForm" class="form-validate">

11.3. Теперь, чтобы скрыть блоки, необходимо для всех тэгов fieldset, кроме первого, добавить скрытие отображения через стиль, например так:

<fieldset style="display: none;">

Примечание: Безусловно, вы можете использовать и другие способы скрытия, как например стили с ":first-child", но такой способ может не подойти для старых браузеров. Или же вы можете добавить поле class для нужных fieldset и скрыть его через стили добавленного класса. Тут кому как удобнее.

11.4. Сохраните файл.

12. Подрегулируйте стили так, как вам нравится. Например, сейчас на сайте Ida-Freewares.Ru используется именно эта форма и выглядит она следующим образом. 

Joomla 2.5 добавление пользователями материалов (статей) на сайт

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

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

1 1 1 1 1 1 1 1 1 1 Рейтинг 5.00 (3 Голосов)

Комментарии / отзывы   

0 # Михаил 26.01.2016 01:40
Странно,у меня почему то картинки загруженные пользователем,при модерации в статье не отображается,хотя на сайт загружается,открываю статью для проверки,а картинки нет,только текст остаётся
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Игорь (Администратор) 26.01.2016 03:25
Смотрите настройки профиля JCE, не режутся ли теги img.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Михаил 26.01.2016 23:06
А какую именно настройку подскажите?я чото не найду здесь ничего,что связанно с тегом img
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Игорь (Администратор) 27.01.2016 02:28
Для начала попробуйте пройтись по инструкции еще раз, внимательно проверяя пункты. Посмотрите какие профили включены, какие настройки в них стоят. Попробуйте отредактировать статью с лицевой стороны (не с админки) и посмотреть сохранятся ли картинки в этом случае.

А так, вы как-то неинформативно описываете ситуацию. Как там было на баше - "Обычное такое платье на обычную такую девушку". Вполне возможно, что у вас может стоять какой-нибудь плагин, который "вырезает" теги, или нечто похожее. Так же возможно, что сам редактор JCE некорректно установился. И многое другое.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Михаил 27.01.2016 10:59
Всё,спасибо Игорь за не равнодушие,нашёл в чём причина,нужно в админке в Общих настройках сайта во вкладке Фильтры текста для зарегистрированных изменить Запрет HTML на Чёрный список(по умолчанию) и в компоненте редактора JCE в Общих настройках редактора напротив строки Проверять HTML поставить в Нет.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Игорь (Администратор) 27.01.2016 21:06
Пожалуйста. Только советую проверить, что лишние теги нельзя вставить. Например, iframe и script.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # lobaneff 17.02.2016 20:55
Я тоже хотел организовать добавление материалов на сайт joomla стандартными средствами, но меня шокирует то, что при нажатии кнопки "Сохранить материал" пользователь попадает на главную страницу, а потом еще новому человеку на сайте трудно ориентироваться, где искать добавленный материал. Если вы владеете информацией, как осуществить переброску пользователя при сохранении материала на его страницу, прошу подсказать. Без настройки такого функционала, считаю использование стандартных средств добавления материала joomla пользователями бесполезным расширением. Если вы подскажите или опровергните мои познания я буду вам благодарен.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Игорь (Администратор) 18.02.2016 00:11
Вы внимательно читали статью? Там есть пункт про модерацию, хоть и в простейшем варианте. Соответственно, как с комментариями, статья появляется после одобрения администратором/модератором.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # lobaneff 18.02.2016 18:35
Может вы и правы, но как тогда быть если пользователь решил сохранить промежуточный результат, допустим, вставил абзац и по привычке как в Word решил сохранить изменения, нажал "сохранить", при этом он еще не закончил работу со статьей, и всё - статья улетела на модерацию. А статья еще не готова пользователь только начал работу над ней. Как вариант предупреждать об этом пользователя, но не все внимательно читают предупреждения, тем более если они привыкли по другому. Подскажите, как обойти эту проблему?
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Игорь (Администратор) 21.02.2016 13:47
Смотря какая у вас задача. Суть состоит в следующем. Отображение материалов на сайте определяется всего одним параметром "Опубликовано" (не берем в расчет время публикации и прочее).

Соответственно, создав статью данным способом, статья уйдет на модерацию, ее статус будет "Не опубликовано". Т.е. она не будет доступна на сайте. Ее можно увидеть только в админ панеле.

С другой стороны, пускать пользователей в админ панель не очень хорошая затея, хотя при разграничении прав, такое возможно. Кроме того, в списке прав имеется возможность выставить право "Изменять свои" статьи.

Так же, как альтернатива, всегда возможен путь создания закрытых разделов, где будут создаваться "Опубликованные" материалы, т.е. находится все статьи на модерации и у пользователя будет всегда возможность их подредактировать. Однако, в такой ситуации, во-первых, пользователь будет видеть все статьи на модерации, и, во-вторых, наличие права редактировать свои статьи автоматически предоставляет возможность редактировать статьи и после модерации (перенесения в основной раздел), что не всегда хорошо.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Игорь (Администратор) 21.02.2016 13:48
Как вариант, если для вас модерация не предоставляет интереса, вы всегда можете посмотреть в сторону различных существующих менеджеров статей. Hekima Blog, Zoo и прочие.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # lobaneff 21.02.2016 16:26
Сторонние приложения можно искать, но мне очень нравится использовать стандартные средства Joomla и узнавая больше, начинаешь понимать логику авторов, уважать их. Я чувствую, что просто не уловил этой логики, но вы мои сомнения подтвердили. Нужно только постараться создать удобную и понятную среду для авторов, которые решили добавить свой материал. Ведь если им не будет все интуитивно понятно, долго они разбираться не будут и уйдут с сайта, не добавив свой материал. Было бы логично иметь две кнопки_ одна "сохранить материал", вторая "отправить на модерацию" и в принципе суть моей проблемы была бы решена. После проверки статьи ее можно было бы автору найти ее на сайте. С другой стороны - где ее искать. Логично на своей странице, но как ее создать стандартными средствами. Я не очень большой специалист по Joomla, если пишу глупости не критикуйте, а подскажите как правильно делать.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # sasa 24.06.2016 20:04
Добрый вечер. Прочитал Вашу статью, сделал все по аналогии, добавил сам некоторые галки и так далее, но мне не понятно как отключить нижние кнопки (материал, разрыв страницы, подробнее и все в том же духе, у меня еще коменты от JComments, и так далее от всяких модулей) которые находятся сразу под редактором JCE? если не затруднит направьте меня в нужном направлении)
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # Игорь (Администратор) 25.06.2016 07:31
Здравствуйте

Обратите внимание на пункт 10
Цитата:
10. Первым делом открываем "Расширения - Менеджер плагинов" и выставляем группу "Special" для всех кнопок (Изображение, Разрыв страницы, Материал и так далее), кроме кнопки "Подробнее". Это позволит скрыть кнопки для обычных пользователей, но оставит их открытыми для тех пользователей, которые имеют доступ к админке.
В этом пункте выставляется группа Special для кнопок. Делается это как раз для того, чтобы лишние кнопки не появлялись. Если оставить Public или Register, то кнопки становятся доступными обычным пользователям, так как по умолчанию пользователи входят в группу Register.

Если это не помогает, то нужно смотреть в сторону того, как у вас настроены группы и безопасность.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
0 # sasa 26.06.2016 11:49
Прочитал, вник и до меня дошло, что надо выставить админ права на плагины отвечающие за отображение и работу кнопок на всем сайте) спасибо за ответ
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору

Добавить комментарий / отзыв

Комментарий - это вежливое и наполненное смыслом сообщение (правила).


Введите защитный код

Обновить
Защитный код

Каталог программ