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:..."):
11.3. Теперь, чтобы скрыть блоки, необходимо для всех тэгов fieldset, кроме первого, добавить скрытие отображения через стиль, например так:
Примечание: Безусловно, вы можете использовать и другие способы скрытия, как например стили с ":first-child", но такой способ может не подойти для старых браузеров. Или же вы можете добавить поле class для нужных fieldset и скрыть его через стили добавленного класса. Тут кому как удобнее.
11.4. Сохраните файл.
12. Подрегулируйте стили так, как вам нравится. Например, сейчас на сайте Ida-Freewares.Ru используется именно эта форма и выглядит она следующим образом.
Как видите, несмотря на то, что пунктов действительно много, они очень простые и по большому счету выполняются минут за 15 (не считая CSS - это уже от вас зависит).
Так что теперь, у вас под рукой всегда будет простой и надежный способ предоставить вашим пользователям сайта добавлять материалы и статьи с премодерацией, удобным WYSIWYG редактором и менеджером картинок.
☕ Понравился обзор? Поделитесь с друзьями!
Комментарии / отзывы
А так, вы как-то неинформативно описываете ситуацию. Как там было на баше - "Обычное такое платье на обычную такую девушку". Вполне возможно, что у вас может стоять какой-нибудь плагин, который "вырезает" теги, или нечто похожее. Так же возможно, что сам редактор JCE некорректно установился. И многое другое.
Соответственно, создав статью данным способом, статья уйдет на модерацию, ее статус будет "Не опубликовано". Т.е. она не будет доступна на сайте. Ее можно увидеть только в админ панеле.
С другой стороны, пускать пользователей в админ панель не очень хорошая затея, хотя при разграничении прав, такое возможно. Кроме того, в списке прав имеется возможность выставить право "Изменять свои" статьи.
Так же, как альтернатива, всегда возможен путь создания закрытых разделов, где будут создаваться "Опубликованные" материалы, т.е. находится все статьи на модерации и у пользователя будет всегда возможность их подредактировать. Однако, в такой ситуации, во-первых, пользователь будет видеть все статьи на модерации, и, во-вторых, наличие права редактировать свои статьи автоматически предоставляет возможность редактировать статьи и после модерации (перенесения в основной раздел), что не всегда хорошо.
Обратите внимание на пункт 10
Цитата: В этом пункте выставляется группа Special для кнопок. Делается это как раз для того, чтобы лишние кнопки не появлялись. Если оставить Public или Register, то кнопки становятся доступными обычным пользователям, так как по умолчанию пользователи входят в группу Register.
Если это не помогает, то нужно смотреть в сторону того, как у вас настроены группы и безопасность.
Ну и, как и говорилось в статье, вы всегда можете воспользоваться одним из CCK.
Если скрыть fieldset - исчезает все. А нужно только эти вкладки скрыть. Пробовал прятать их в div с нужным классом - но ничего не вышло.... :sad:
Также буду признателен если поможете найти где переименовать кнопки "Editor", "Preview" - они есть на скриншоте справа.
И последнее - как назначить свой стиль для кнопок редактора, на скришншоте они закрашены в синий цвет.
Материалы - Менеджер материалов - Настройки - Права - группа Registered:
И установить следующие права:
Создавать - Разрешено
Изменять состояние - Разрешено
Изменять свои - Разрешено
Кстати, права можно настраивать для категорий.
Менеджер Категорий - выбрать нужную Категорию - внизу настроить Права доступа к категории
И еще момент. Автоматической публикации нет. При создании материала пользователь (если есть право "Изменять состояние - Разрешено") должен выбрать, публиковать или нет статью.
Но, вы можете изменить форму и скрыть выбор от пользователя обычными стилями.