Навигация

Активные участники:

Поиск:

 

Создать или найти статью:

 

Просмотр Создаем доску объявлений на ExpressionEngine за 1 день

Данной статьей открываем вам серию публикаций о создании полнофункциональной доски объявлений, основанной на CMS ExpressionEngine. Публикации будут разбиты на части для более понятного восприятия и удобства обсуждения. Здесь нам не понадобятся какие-либо платные плагины или модули. Статья рассчитана на пользователей, которые имеют хотя представление, что такое ExpressionEngine и как он работает. Я не буду все описывать подробно, поэтому нужно иногда заглядывать в официальную документацию к движку. Если у кого-либо появятся замечания, а также предложения, то с удовольствием готов обсудить это.
Итак, приступим.
Рыская по интернету, я попал на один сайт, где присутствует доска объявлений. У меня оказалось много свободного времени, она мне понравилась и я захотел сделать такую же.
Собственно, вот она www.oknatut.ru/board.
board_okna_thumb.gif width=400 height=764

Для себя в блокнотике представляем как будет выглядеть структура нашего сайта (примитивно, очень примитивно :)

board_eskiz1_thumb.jpg width=400 height=320



Какие поля нам будут нужны

board_eskiz2_thumb.jpg width=400 height=320

Сделаем нашу доску, где будут разделы Купить и Продать, без услуг.

Итак, берем за основу шаблон страницы, перекраиваем его как нам нужно, соблюдая стили css.

На своем сайте создаем два веблога Куплю (sell) и Продам (buy)

board_weblogs_thumb.gif width=400 height=64

Идем в Admin › Weblog Administration › Field Groups и создаем группу полей, например sell_buy
board_fields1_thumb.gif width=400 height=23

В них будут содержаться следующие поля, нужные нам для объявлений
board_fields_thumb.gif width=400 height=89

Поле "Область" я сделал, как drop down list со списком областей
Важное замечание, в Default Text Formatting for This Field я ставил значение None.

Правка HTML и CSS кода.

Итак, мы сохранили страницу, которая нам понравилась и начинаем правку в каком-либо редакторе. Мне удобно для этого использовать Dreamweaver.

board_html_thumb.gif width=400 height=225

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

Добавляю код поиска в веблоге “sell” (Продам)

board_kod_poiska_thumb.gif width=400 height=66

Беру отдельно одно объявление и работаю с ним.

board_odno_obj_thumb.gif width=400 height=221

Итак, я отредактировал эту страницу и поставил значения, которые требуются. Редактировал я кусочек от главной страницы.

board_otredakt_thumb.gif width=400 height=222

Т.к. у нас это будет на главной странице и мы выводим три объявления в рубрике, то я поставил сюда limit="3"

Я посмотрел, что мне нужно еще сделать список всех объявлений о продаже, для этого я создаю шаблон all_sell (все это в группе шаблонов trade), а заодно и шаблон all_buy, для списка всех объявлений о покупке. Еще посетителями нужно будет добавлять свои объявления, для этого я создаю группу шаблонно add и в нем шаблон sell, а заодно и шаблон buy для публикации объявления о покупках.

Итак, можно сказать я сделал колонку в списке Продам. Там, где у нас

board_tam_gde.gif width=340 height=36

Делаем следующий код

board_sled_kod_thumb.gif width=400 height=30

Т.е. выводим сколько у нас записей в веблоге sell, у него weblog_id = '3'

Такие же манипуляции проделываем с веблогом buy то есть Куплю.
Вот код, который у меня получился.

board_poluchilsya_buy_thumb.gif width=400 height=176

Здесь мы проставили все, что связано с веблогом buy, тоесть
{path=trade/all_buy}{exp:search:simple_form weblog="buy" 

Ну и так далее.

Со страницей index закончено.

Ассоциирование веблогов с полями.

Заходим в
Admin › Weblog Administration › Weblog Management

Жмем напротив веблога «Продам» Edit Groups и ассоциируем его с полями (в нашем случае sell_buy), статусами и категориями. То же самое проделываем с веблогом «Куплю».

assoc_thumb.gif width=400 height=102

Теперь разбираемся со страницей полного одного объявления.

Код у нас будет примерно следующим:
{exp:weblog:entries weblog="sell" limit="1" disable="member_data|trackbacks"
 
track_views="one"}
Переписываем почти все те же поля
а также добавляем те
которые мы не показывали на основной страницеэто p_urlp_gorod и др.
limit="1" – одно объявление
track_views
="one" -  счетчик просмотров 


Итак, была страница

bila_thumb.gif width=400 height=164

Код новой будет выглядеть следующим образом

budet_thumb.gif width=400 height=137

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

Теперь делаем страницу списка всех объявлений (шаблон all_sell) и будет у нас по 10 объявлений на 1 страницу.

Тут будет примерно так же, как и на главной странице, только объявлений будет несколько (10) и будет нумерация страниц.

Выглядеть будет примерно следующим образом

allsell_thumb.gif width=400 height=183

Подведем промежуточный итог: у нас есть главная страниа, страницы списка объявлений Куплю и Продам, а также странички полного просмотра объявлении Куплю и Продам.

Теперь нам осталось сделать страничку добавления объявлений.
Несколько ранее мы добавили группу шаблонов add, а в нем шаблоны sell и buy.
В шаблоне sell мы добавляем объявление о продаже, соответственно в шаблоне buy, объявление о покупке.

У нас есть два пути:
1) Создаем пользователя, от которого будут публиковаться объявления, присваиваем ему какую-либо группу. Скачиваем плагин LogMeIn и настраиваем SAEF, как сказано в описании плагина.

И все объявления будут добавляться от определенного пользователя, в принципе кому какое дело, от кого они будут добавляться, ведь имя этого пользователя нигде не фигурирует.

Тут есть один минус. Когда посетитель заходит на страницу добавления объявления, то он автоматически залогинивается под этим пользователем, которого мы создали. Тем самым, он может потом зайти на форум и писать там разные сообщения. Это ладно если у нас один посетитель зайдет подать объявление, а если посетителей будет несколько? Уловили недостатки?

2) Используем
FreeForm http://eeclub.ru/site/comments/freeform_260
+
Moblog http://expressionengine.com/docs/modules/moblog/index.html

При помощи freeform мы создаем форму добавления новости, все эти данные отсылаются в Moblog и через Moblog постится объявление, опять-таки от определенного пользователя. Но тут уже никто и ничего про него не знает, все в безопасности.

В модуле freeform создаю 10 полей, который повторят те поля, что у нас в веблогах. Только здесь добавится поле f_title – это заголовок объявления, f_webl – веблог, f_cat – категория (я создал несколько категорий, в принципе это не обязательно)

free1_thumb.gif width=300 height=216

Чтобы не путаться, я сделал префикс “f_

Далее настраиваем модуль Moblog
Создаем моблог sell

free2_thumb.gif width=300 height=90

Далее настраиваем в нем следующие данные

free3_thumb.gif width=300 height=620

Название
Веблог
Интервал проверки
Автор по-умолчанию (у меня p_user)
Префикс Темы сообщения для моблога: в нашем случае будет sell
И настройки своей почты, которую модуль будет проверять.
Если он увидит в заголовке sell, то он поймет что письмо для него и схавает его, тем самым поместив его в веблог sell (Продам)

Далее создаем еще один моблог buy. Действия аналогичны, только ориентированы на веблог buy.

Теперь делаем форму добавления объявления:
Здесь я немного схитрю и для себя сделаю форму добавления SAEF, открою этот шаблон в браузере и увижу форму для добавления, как будто я добавляю новость, но добавлять я ее не буду. Я сохраню страницу и открою ее в Dreaweaver.
Передо мною код страницы добавления объявления. Я возьму поле «Заголовок»
<input name="title" id="title" value="" size="50" maxlength="40" type="text"
И проставлю туда нужны мне для freeform поляполучится:
<
input name="f_title" id="f_title " value="" size="50" maxlength="40" type="text"


То же самое проделываем с остальными полями. И где-нибудь ставим
<input dir="ltr" id="f_webl" name=" f_webl " value="{segment_2}" type="hidden"

Это определяет наш веблог как segment_2, ведь в segment_2 у нас прописан наш веблог sell

Все это обрамдяем тэгом
{exp:freeform:form form_name="trade" return="add/tnx" notify="mail@bk.ru" template="send"} {/exp:freeform:form} 

mail@bk.ru – адрес почты, куда будет залезать moblog для просмотра писем.
template="send" – смотрим далее
У меня получилось следующее

free4_thumb.gif width=300 height=277

Далее создаем шаблон в модуле freeform (Модули › Freeform › Manage Templates) для отсылки письма на наш адрес, с которого moblog будет забирать почту ?
Назовем его send

free5_thumb.gif width=300 height=134

В поле Subject прописываем {f_webl}: {f_title}
{f_webl}: - дает понять нашему moblog к какому веблогу принадлежит объявление
{f_title} – заголовок нашего объявления.

Email message состоит из
{category}{f_cat}{/category}

{field:p_name format="none"}{f_name}{/field:p_name}
И так далее

{category}{f_cat}{/category} – дает moblog понять к какой категории отнести объявление.

{field:p_name format="none"}{f_name}{/field:p_name} – в поле p_name присваиваем значение поля f_name.

В принципе все, человек, который зайдет по адресу trade/add/sell – сможет разместить свое объявление. Путь его будет долгим и не легким ? . Сначала его обработает freeform, далее через шаблон пошлется сообщение на email mail@bk.ru который мы указали, оттуда это письмо проверит moblog и если он увидит что в теме письма есть «sell: дохлые кролики» - то он присвоит ему веблог sell (то есть Продам) и оно появится у нас в списке объявлений. Все что непонятно нужно читать документацию. Все нюансы я расписать не могу.

Вот такая доска получилась у меня

Рабочий пример можно посмотреть по адресу: http://www.eeclub.ws/trade

Категория:Советы

Категории: