Здарова, народ! Сьогодні чудовий день, тому що я хочу представити вам новоспечений модуль для організації соціальних голосувань на базі движка DLE!
В одному з минулих постів я говорив, що йде робота над супер-пупер модулем, так от це він. Робота тривала, напевно, місяці два, було витрачено колосальну кількість сил і часу для реалізації всіх побажань, і ось — все готово!
Представляю вам перший паблік реліз модуля SNVote, поспішайте тестувати.

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

Давайте приступимо до опису можливостей, процесу установки і прикладів використання.

Команда АлаичЪ’а трудиться не покладаючи рук і ось що у нас є для вас:
SiteMap
CatFace
SNVote Free
SNVote PRO
LinkEnso Free
LinkEnso PRO
TagFace
DonBot
Simple SEO

Призначення модуля

Організація на сайті ряду голосувань за допомогою соціальних мереж. В процесі голосування користувачами розміщуються посилання в соціальних мережах.
Підрахунок голосів ведеться відповідно до кількості розміщених посилань. Оскільки неможливо контролювати процес публікації одним користувачем у соціальних мережах кількох однакових посилань, лічильники голосів не захищені від «накрутки», таким чином, даний модуль призначений скоріше для «прокачування» сторінок сайту, але не для організації реальних конкурсів з призовим фондом. За замовчуванням посилання, що публікуються в соціальних мережах, ведуть на сторінку голосування.
Модуль може працювати як з ЧПУ, так і без нього.

УВАГА!!! На даний момент, в зв’язку з новими алгоритмами роботи деяких соц мереж (зокрема, facebook) не працює підрахунок голосів. В деяких ситуаціях можуть не працювати лічильники та інших соцмереж. При цьому повідомлення в соцмережі відправляються і публікуються.

Функціонал і можливості модуля

Модуль SNVote складається з адміністраторської та клієнтської частин.

Адмінпанель

Загальні функції:

  • Адміністраторська частина являє собою загальний список голосувань на сайті. Вхід у неї здійснюється з меню «Список всіх розділів => Сторонні модулі => SNVote».
  • Нове голосування додається за допомогою посилання внизу списку « Створити нове голосування».
  • При натисканні на найменування голосування або на посилання “[варіанти відповідей]” відкривається список варіантів відповідей для даного голосування.
  • Для додавання нового варіанту відповіді існує посилання внизу списку «+ Додати варіант відповіді».
  • Для редагування та видалення як голосувань, так і варіантів відповіді існують посилання “[редагувати]” і “[видалити]”.

Форма додавання / редагування голосування:

  • Назва голосування — найменування голосування, як правило, є питанням, запропонованим користувачам.
  • Title голосування — заголовок, використовуваний як вміст тега при перегляді сторінки голосування. Якщо залишити це поле порожнім, воно заповниться вмістом поля «Назва голосування»
  • Псевдонім (alt-name) — альтернативний заголовок голосування, записаний латинськими літерами. Використовується при побудові url. Якщо залишити це поле порожнім, воно заповниться вмістом поля «Назва голосування», переведеним в латинські символи.
  • Зображення — картинка, що символізує дане голосування. Картинка повинна бути розміром 100 * 100 пікселів. Після завантаження картинки її можна замінити / видалити в режимі редагування голосування.
  • Початок голосування — дату і час, коли голосування буде оголошено відкритим. Якщо залишити поле порожнім, будуть проставлені поточні дата і час
  • Закінчення голосування — дату і час, коли голосування буде оголошено закритим. Якщо залишити поле порожнім, голосування буде постійним.
  • Текст для соціальних мереж — загальний текст для публікації в соціальних мережах поряд з посиланням. Даний текст застосовується, якщо не заповнено аналогічне поле у формі варіанти відповіді. В цьому тексті можна використовувати тег {item} для вставки в нього найменування варіанти відповіді під час голосування за той чи інший варіант.
  • Опис — текстовий опис голосування.
  • Статус — поточний стан голосування. Опубліковано — голосування буде активно на сайті в зазначений період і з’явиться в загальному списку. Приховано — голосування не буде доступний на сайті Ви зможете опублікувати його пізніше. зупинено — ручна зупинка голосування, незалежно від дати його закінчення.

Форма додавання / редагування варіанти відповіді:

  • Варіант відповіді — найменування варіанти відповіді, як правило, є відповіддю на поставлене запитання.
  • Посилання «детальніше» посилання, що веде на сторінку з описом даного варіанту відповіді. При заповненні цього поля з’являється можливість проставити галочку «використовувати дану посилання для публікації в соціальних мережах». Після її проставлення при голосуванні користувачів в соціальних мережах буде публікуватися посилання «докладніше» замість посилання на сторінку голосування. Будьте уважні! Після зміни цієї посилання кількість голосів за цей варіант відповіді обнулятиметься. Так само варто врахувати, що кількість голосів в такому випадку напряму залежить від кількості публікацій в соціальних мережах даній посилання. Тобто, у разі, якщо посилання «детальніше» публікували в них якимось іншим чином, результати голосування будуть некоректними.
  • Зображення — картинка, що символізує даний варіант відповіді. Картинка повинна бути розміром 100 * 100 пікселів. Після завантаження картинки її можна замінити / видалити в режимі редагування варіанти відповіді.
  • Текст для соціальних мереж — текст для публікації в соціальних мережах поряд з посиланням при голосуванні за даний варіант відповіді. Якщо залишити поле порожнім, в соціальних мережах буде опубліковано вміст аналогічного поля у формі голосування.
  • Опис — текстовий опис варіанти відповіді.

Клієнтська частина

Загальні функції:

  • Клієнтська частина модуля включає в себе сторінки перегляду списку голосувань на сайті і сторінки окремих голосувань.
  • При побудові списку голосувань використовується посторінкова навігація, яка відображається за допомогою стандартного шаблону DataLife Engine navigation.tpl.
  • Кількість голосувань, виведених на одній сторінці, відповідає налаштування скрипта «Кількість новин на сторінці».
  • При коректної установки так само коректно на сторінках модуля відображається модуль speedbar.

Сторінки списку голосувань формуються за допомогою шаблонів snvote_poll_list.tpl і snvote_poll_list_item.tpl:

  • snvote_poll_list.tpl — загальний шаблон оформлення списку голосувань. В ньому можна застосувати наступні теги:
    • {poll_list_items} — головний тег, що містить висновок самого списку голосувань, форматируемых за допомогою шаблону snvote_poll_list_item.tpl
    • {navigation} — висновок посторінкової навігації в разі, якщо вміст списку голосувань не вміщується на одній сторінці. Навігація форматується за допомогою стандартного шаблону navigation.tpl
    • [first_page][/first_page] — блок тегів для виведення вмісту тільки на першій сторінці списку голосувань
    • [pages][/pages] — блок тегів для виведення вмісту на другій та наступних сторінках списку голосувань
  • snvote_poll_list_item.tpl — шаблон оформлення однієї позиції в списку голосувань. В ньому можна застосувати наступні теги:
    • {name} — Найменування голосування
    • {status} — Статус голосування
    • {image} — Зображення, що символізує дане голосування
    • {time_start} — Час відкриття голосування
    • {time_stop} — Час закриття голосування
    • {description} — Текстовий опис голосування
    • {class_suffix} — Тег виводить «even» для парних позицій і «odd» для непарних. Призначений для оформлення списку

Сторінки перегляду окремих голосувань формуються за допомогою шаблонів snvote_poll.tpl і snvote_poll_item.tpl:

  • snvote_poll.tpl — загальний шаблон оформлення сторінки перегляду окремого голосування. В ньому можна застосувати наступні теги:
    • {name} — Найменування голосування
    • {status} — Статус голосування
    • {image} — Зображення, що символізує дане голосування
    • {time_start} — Час відкриття голосування
    • {time_stop} — Час закриття голосування
    • {description} — Текстовий опис голосування
    • {poll_items} — головний тег, що містить висновок самого списку із варіантами відповідей, форматируемых за допомогою шаблону snvote_poll_item.tpl
  • snvote_poll_item.tpl — шаблон оформлення однієї позиції в списку варіантів відповіді. В ньому можна застосувати наступні теги:
    • {name} — Найменування варіанти відповіді
    • {image} — Зображення, що символізує даний варіант відповіді
    • {description} — Текстовий опис варіанти відповіді
    • {count} — Загальна кількість голосів за цей варіант відповіді
    • {class_suffix} — Тег виводить «even» для парних позицій і «odd» для непарних. Призначений для оформлення списку
    • [vote_link][/vote_link] — блок тегів для виведення посилання для здійснення голосування. Виводиться тільки в разі, якщо голосування відкрито і активно
    • [no_vote][/no_vote] — вміст даного блоку тегів виводиться, якщо голосування не відкрито або не активно, тобто можливість голосувати відсутній
    • [readmore_link][/readmore_link] — блок тегів для виведення посилання «докладніше», веде на докладний опис даного варіанту відповіді

Установка модуля

  • Розпакуйте архів з модулем
  • Перейменуйте папку /upload/templates/Default назву шаблону, використовуваного на Вашому сайті
  • Скопіюйте вміст папки upload на Ваш сервер
  • Відредагуйте необхідні файли (див. нижче)
  • Запустіть файл http://site.ru/snvote_installer.php і слідуйте його інструкціям

Редагування файлів

Відкрийте файл /engine/engine.php

Знайдіть код:

switch ( $do ) {

switch ( $do ) {

Після нього вставте код:

case “snvote” :
include ENGINE_DIR . ‘/modules/snvote.php’;
break;

case “snvote” :
include ENGINE_DIR . ‘/modules/snvote.php’;
break;

Знайдіть код:

elseif ($do == ‘stats’) $nam_e = $lang[‘title_stats’];

elseif ($do == ‘stats’) $nam_e = $lang[‘title_stats’];

Після нього вставте код:

elseif ($do == ‘snvote’) $titl_e = $metatags[‘title’];

elseif ($do == ‘snvote’) $titl_e = $metatags[‘title’];

Знайдіть код:

if ($config[‘allow_rss’]) $metatags .= <<;

if ($config[‘allow_rss’]) $metatags .= <<

Після нього вставте код:

if(!empty($snvote_headers)) $metatags .= $snvote_headers;

if(!empty($snvote_headers)) $metatags .= $snvote_headers;

Знайдіть код:

if ($titl_e) $s_navigation .= ” » “ . $titl_e;

if ($titl_e) $s_navigation .= “» ” . $titl_e;

Після нього вставте код:

if($do==‘snvote’) $s_navigation = $snvote_speedbar;

if($do==’snvote’) $s_navigation = $snvote_speedbar;

Відкрийте файл .htaccess

Знайдіть код:

RewriteEngine On

RewriteEngine On

Після нього вставте код:

# Модуль SNVote
RewriteRule ^snvote/([09]+)-(.*).html/?)+$ index.php?do=snvote&poll_id=$1&alt_name=$2 [L]
RewriteRule ^snvote/page/([09]+)(/?)+$ index.php?do=snvote&cstart=$1 [L]
RewriteRule ^snvote(/?)+$ index.php?do=snvote [L]

# Модуль SNVote
RewriteRule ^snvote/([0-9]+)-(.*).html/?)+$ index.php?do=snvote&poll_id=$1&alt_name=$2 [L]
RewriteRule ^snvote/page/([0-9]+)(/?)+$ index.php?do=snvote&cstart=$1 [L]
RewriteRule ^snvote(/?)+$ index.php?do=snvote [L]

Видалення модуля

  • Завантажте файл snvote_uninstaller.php на сервер
  • Запустіть його і дотримуйтесь інструкцій
  • Не забудьте видалити файл snvote_uninstaller.php

Завантажити модуль SNVote

SNVote FREE — Версія з базовим функціоналом. Відсутні віджети. Завантажити на store.alaev.info.
SNVote PRO = 599 р. — Версія з повним функціоналом. Купити прямо зараз store.alaev.info.
SNVote PRO Owner = 999 р. — Повнофункціональна версія + відсутність копірайтів. Купити прямо зараз store.alaev.info.

АКТУАЛЬНА ВЕРСІЯ: ver.1.1 — вибирайте збірку на store.alaev.info.

ЖИВИЙ ПРИКЛАД: http://www.winterlife.ru/snvote

Історія розвитку (History Log)

  • 31.08.2011: v.1.0 — Паблік реліз.

Поточні баги і що з ними робити!

  • Виявлено баг. В полі «Текст для публікації в соцмережах» неприпустимі переноси на новий рядок. При наявності таких переносів голосування перестає працювати. Буде виправлений Баг в наступній версії модуля.
    • Тимчасове рішення — при написанні тексту для соц-мереж не натискайте enter — пишіть опис в один рядок.

Запланований розвиток модуля

Є ще багато цікавих рішень, які поки ще не впроваджені у модуль:

  • Додавання соціальної мережі my.mail.ru
  • Пошук рішення для захисту від накрутки
  • Висновок голосування на будь-яку сторінку методом {include file=”/engine/modules/snvote.php?…параметри…”}
  • Запропоновані вами ідеї 😉

Я був би дуже вдячний всім, хто запропонує свої ідеї для впровадження в модуль.

Ну от, начебто б всі основні моменти описані, можете приступати до тестування на своїх сайтах.

І так, не будьте мудаками — не видаляйте копірайт!

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

З повагою, Олександр Алаєв