Як створити простий скрипт для коментарів Проста система коментування за допомогою AJAX. Що нам потрібно від системи коментування

07.09.2020 Цікаве

Час на читання: 55 хв

Добрий день всім.

Ось і настав час довгоочікуваного матеріалу про мікророзмітку.

Відразу скажу, що ця стаття буде досить складною для першого розуміння, особливо для новачків, тому що варіантів мікророзмітки існує багато і відразу складно все вкласти в голові. Але я намагатимуся описати загальну картину і водночас акцентувати увагу на найважливіших і найпоширеніших речах.

Матеріал досить об'ємний, але сподіваюся, що він допоможе зробити мікророзмітку на сайті.

Останнім часом я помітив, що дуже багато людей зациклено на мікророзмітці. Сталося це після того, як різні СЕО блогери почали її бурхливо обговорювати. Але ж давайте розберемося, навіщо взагалі вона використовується і чи потрібно приділяти їй таку велику увагу. Чи варта гра свічок?

Що таке мікророзмітка і навіщо потрібна

Якщо ви чуєте мікророзмітку або семантичну розмітку сторінки (сайту), то знайте, що під цим мається на увазі розмітка сторінки за допомогою додаткових атрибутів (тегів), які дають пошуковим системам поняття про окремих елементахсторінки, вказуючи їх зміст.

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

Але, якщо ми хочемо допомогти пошуковим системам розібратися в нашому сайті, вказати їм на важливі області сторінки, розібратися в його структурі, показавши зміст тих областей, на які в першу чергу потрібно звертати увагу, то необхідно впровадити мікророзмітку, тобто додати певні теги та атрибути, які на все вкажуть.

Зробивши це, ми не тільки допоможемо пошуковим системам, але й своєму сайту, оскільки мікророзмітка використовується не тільки для розуміння структури сайту та змісту, але й для побудови пошукової видачі, формуючи функціональні та привабливі сніпети, що позначається на клікабельності (CTR) сайту видачі. А це збільшення загальної відвідуваності сайту.

Яскравий приклад таких сніпетів ви можете бачити нижче.

На цьому зображенні ви можете бачити , який доповнює і робить його більш помітним серед сірки інших сайтів у видачі. Також стрілками я виділив навігаційний ланцюжок, який показує чіткий структурований шлях до матеріалу на сайті, а не просту незрозумілу URL-адресу.

Такий навігаційний ланцюжок здійснюється досить просто. Варто лише встановити їх на сайт.

Ось ще один варіант розширених сніпетів.

Такий варіант дозволяє відвідувачу відразу зрозуміти про що сайт і що він може йому дати. Якщо Сніппет побудований правильно в такому випадку, то користувач може відразу зробити потрібну вам дію, а як ми знаємо, кожен сайт повинен виконувати свої завдання (підписка, покупка і т.д.).

Погодьтеся, що такий сніпет буде помітнішим у видачі, ніж звичайний опис сторінки, оскільки має набагато більший розмір. Та й виглядає солідніше.

Давайте відповімо на питання, яке може хвилювати тих, хто думає, що мікророзмітка допомагає у збільшенні позицій і є одним з факторів ранжирування.

Чи впливає мікророзмітка на ранжування? Чи варто очікувати на підвищення позицій після її впровадження?

Щоб не писати свої міркування, звернемося до довідки пошукової системи Яндекс. Отже, що ж нам каже сам Яндекс на цей рахунок. Цитую:

Чи мій сайт ранжуватиметься краще, якщо я використовую розмітку?

Відповідь: Розмітка може зробити ваш сайт більш помітним у пошуку Яндекса і таким чином залучити більше відвідувачів, які належать цільовій аудиторії. Яндекс зацікавлений у тому, щоб користувачі вирішували свої завдання за допомогою Пошуку. Одна з метрик якості пошуку так і називається – «щастя користувача». Сайти, що підвищують щастя, ранжуються вище.

Можемо дійти невтішного висновку, що безпосередньо розмітка впливає позиції, лише побічно, оскільки ми можемо зробити привабливіший сниппет, що саме собою приведе більше відвідувачів на ресурс. Далі вже справа техніки. Більше відвідувачів - більше накопичених добрих показників про сторінки (якщо контент якісний) та позиції поступово зростатимуть.

Також варто зазначити, що допомагаючи пошуковим системам зрозуміти сутність контенту, його тип (інформація, зустріч, продукт тощо), ми робимо контент більш релевантним пошуковому запитуі він має займати вищі позиції. Може і не прямим шляхом, але побічно – так точно. Яндекс це підтвердив (див. вище).

Отже, зробимо короткий чек-лист переваг наявності мікророзмітки на сайті. Це ті моменти, які побічно чи прямо вказують на якість сайту, збільшують його позиції та допомагають пошуковим системам.

  1. По-перше, можна зробити висновок, що підвищується довіра до сайту з боку пошукових систем, тому що ми вказуємо пошуковому роботу на основні елементи сайту, не боячись, що у нас щось не так і не намагаючись приховати щось від пошукового робота . У результаті пошуковим системам логічно думати, що ми їм допомагаємо і відкриваємо їм "душу сайту", що неодмінно позначиться і як індексації сайту, а зрештою і на позиціях;
  2. По-друге, при належних налаштуваннях ми можемо виділити свій сніпет у видачі, що призведе до миттєвого зростання трафіку на сторінки ресурсу без зміни позицій. Зрештою збільшення трафіку призведе до підвищення окремих сторінок у видачі та сайту в цілому;
  3. По-третє, ми збільшуємо поведінковий фактор – CTR у видачі (клікабельність). Цей пункт дуже тісно пов'язаний із попереднім. Якщо на наш сайт більше кликають, то ми точніше допомогли відвідувачеві зрозуміти, що наша сторінка якісніша, ніж на інших майданчиках. А значить – сайт потрібно трохи підняти ви видачі.

Отже, я думаю, що відповідь на поставлене запитання дана.

Чи потрібна взагалі мікророзмітка? - Так, потрібна.

Звичайно ж, якщо стоїть вибір між болісним використанням розмітки на сайт і роботою над іншими моментами, то звичайно не варто зациклюватися тільки на семантичній розмітці. Краще працювати над контентом, що набагато важливіше за якусь технічну деталь із сотні чи тисячі інших речей. Тим більше, що зараз можна виділити свій сніпет у видачі без впровадження розмітки в шаблон, а лише встановивши, в якому вже передбачено розмітку рейтингу.

Коли ми знаємо основні переваги можна переходити до розгляду основних типів семантичної розмітки.

Основні типи мікророзмітки

Тут усе досить складно. Для початку вам потрібно зрозуміти, що існують словники мікророзмітки та їх синтаксиси.

Під словником можна мати на увазі мову мікророзмітки, що включає набір класів, властивостей, які вказують суть вмісту сторінки. У кожному словнику кожен елемент на сайті вказується за допомогою різних тегів. Наприклад, у словнику Schema.org назва документа вказується за допомогою тега "name", а ось мікроформати використовують CSS клас усередині блоку того елемента, який варто розмітити ( Ромашкаде fn org - тег назви в даному випадку).

У кожному словнику та синтаксисі свої теги та атрибути, що робить із форматів мікророзмітки так званий вінегрет. Справді складно у всьому розібратися.

Під синтаксисом розуміють спосіб використання тієї чи іншої мови (словника) семантичної розмітки. Синтаксис визначає за допомогою яких тегів буде вказуватись сутність об'єктів та їх властивості на сторінці.

З попереднього визначення про синтаксис прозвучало поняття сутності. Що це означає застосовно до розглянутого питання?

Сутність - якщо легко, це той тип інформації (одиниця контенту, інформації), яку ми вказуємо пошуковим системам. Наприклад, нам потрібно вказати на головній сторінці блогу на анонси, тобто виділити якимось тегом суть даної галузі, визначивши її як область анонсів. Те саме потрібно зробити і зі сторінкою запису, де необхідно вказати на сутність області, де знаходиться контент (стаття), тобто виділити текст як область контенту.

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

  • Головна – список анонсів;
  • Сторінка записів - коментарі, контент, рейтинг (якщо є), хлібні крихти;
  • Звичайна статична сторінка – контент, коментарі (якщо є).

Крім того, на кожному типі сторінок можна позначити той самий елемент - шапка сайту, футер (підвал), сайдбар (бічна колонка), головне меню.

До кожної сутності є свої властивості, наприклад:

  • Область контенту на сторінці записів - назва статті, текст статті, опис, ім'я автора статті, дату публікації, рубрику, зображення, відео та інші;
  • Область списку анонсів на головній, рубриках та архівів – теж саме;
  • Область коментарів - ім'я коментатора, дата, текст коментаря;
  • Область контенту на звичайній статичній сторінці - в принципі, те ж саме, що і в записах;
  • Область шапки сайту – заголовок, опис;
  • Область рейтингу на сторінках – максимальна оцінка, поточна оцінка, кількість оцінок.
  • Область футера (підвалу сайту) - рік копірайту;
  • Область сайдбара (бічної колонки) – назва віджетів;
  • Область головного меню – посилання.

Існують і інші області з властивостями, але їх я розглядати не буду, тому що в кожному словнику розмітки їх по кілька десятків, а в розмітці schema.org їх кількість взагалі обчислюється сотнями.

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

Тепер перейдемо до основної думки пункту та розглянемо основні формати семантичної розмітки. Короткий список основних словників та синтаксисів можна побачити в інтелект-карті нижче.

Всі словники та синтаксиси розглядати не будемо, оскільки це безглуздо. Вони вам не знадобляться. Обговоримо лише коротко основні формати розмітки:

  • Schema.org;
  • Open Graph;
  • Мікроформати.

Деякі з інших торкнемося зовсім небагато.


Останнім кроком варто відзначити ще один словник, а саме Data Vocabulary, який розроблявся компанією Google і зараз його розвиток припинено. Уся увага перейшла на Schema.org. Можна сказати, що всі властивості і сутності, які в цій мові розмітки стали прототипами для розмітки від schema.org.

Наскільки я зрозумів, то словник Data Vocabulary може працювати з синтаксисами: мікродані та мова RDF, що можна дуже добре бачити в довідці Google за матеріалом мікророзмітки хлібних крихт. Там надається 2 варіанти розмітки:

  1. Розмітка словником Data Vocabulary мікроданими;
  2. Розмітка Data Vocabulary із RDFa.

Трохи забігу наперед. На першому зображенні можна побачити, що разом зі словником Data Vocabulary використовуються мікродані від Schema.org. Справа в тому, що поки що хлібні крихти з schema не підтримуються. Тому використовується комбінований варіант.

Який формат розмітки краще використовувати

Я думаю, що ви вже знаєте питання на це питання, тому що в описі кожного типу розмітки я давав незаперечний доказ, що пошукові системирекомендують словник розмітки Schema.org. Саме його потрібно використовувати. Однак варіантів застосування цієї мікророзмітки може бути маса, як від плагінів, так і застосування сутностей і якостей в шаблони оформлення.

Останній варіант є найоптимальнішим, оскільки це робота на один раз і мікророзмітка буде абсолютно на кожній сторінці. Усі пошукові системи її бачитимуть, оскільки вона буде вшита у шаблон. Але у новачків можуть виникнути проблеми з її впровадженням, оскільки потрібно хоча б на мінімальному базовому рівні розуміти код свого шаблону та бачити, яким тегом виводиться назва статті, де код за виведення тексту тощо. Всі ці моменти і потрібно буде обертати мітками мікророзмітки.

У цьому пункті також стоїть питання поєднання різних словників на одному сайті. Це допустимо і в деяких випадках без цього не обійтися. Це чітко видно на прикладі розмітки хлібних крихт, коли поєднується варіант розмітки Data Vocabulary та мікроданих від Schema.org. Нічого в цьому не страшного. Про це говорить і сам Яндекс.

Тут уже на вашу думку. Якщо вам простіше використовувати мікроформати, дійте. Я ж особисто показуватиму весь процес на мікророзмітці Schema.org, тому що у самого вона впроваджена і все працює на ура без жодної помилки.

Як перевірити наявність розмітки на сайті

Наше завдання на даному етапі – дізнатися, чи є у нашому шаблоні якийсь формат розмітки. Це цілком можливо, адже більшість шаблонів, що використовуються - перекладені англомовні теми, які містять у собі вже якийсь формат семантичної розмітки. Як правило, це розмітка мікроформатами, що нам взагалі ні до чого. Краще, якщо її спочатку не буде, тому що це позбавить нас від головної при її видаленні.

Для перевірки наявності розмітки можна використовувати як валідатор мікророзмітки від Яндекс, так і інструмент перевірки структурованих даних Google. Вважаю за краще і наполегливо рекомендую вам користуватися валідатором від Яндекса, тому що він набагато простіше.

Після переходу до валідатора Яндекса ми вводимо адресу сторінки і тиснемо "Перевірити".

Якщо написало, що "Мікророзмітка не виявлена", значить ніякої сторонньої розмітки в шаблоні немає. Це дуже добре, тому що не потрібно витрачати сили на її видалення. Але будьте уважні, адже на одному типі сторінок розмітки може не бути, а на іншому вона буде присутня (наприклад, на сторінці статті).

Ось саме я аналізую сторінку запису і виходить, що коментарі шаблону розмічені мікроформатами (присутня vcard). Про це свідчить різний код результатів перевірки.

Нам мікроформати ні до чого, тож їх варто видалити. Може трапитись ситуація, що у вас шаблон розмічений і іншими форматами розмітки. Тоді їх також варто видалити. А можливо, що відразу буде впроваджено розмітку від Schema.org. Таке також буває, але дуже рідко, так як стоять шаблонів у безкоштовний доступпрактично ні. А ось поганих ставок ставки.

Тепер розглянемо процес видалення сторонньої розмітки.

Видалення сторонньої розмітки

Так як у моєму випадку виявилася стороння розмітка за допомогою мікроформатів, то на її прикладі я покажу цей процес. Якщо ж у вас якась інша розмітка виявилася, то принцип її видалення буде аналогічний.

Все зводиться до того, щоб видалити теги та їх атрибути тієї розмітки, яка виявилася у вас. Єдина відмінність мікроформатів від інших типів мікророзмітки полягатиме в тому, що всі типи, крім мікроформатів, додають нові теги та атрибути. Мікроформати нічого не додають а прописуються всередині атрибуту class певного HTML елементашаблон (наприклад, назва статті), як я це писав у пункті про основні типи.

До речі, у пункті №6 цієї статті я даю код розмітки коментарів, який потрібно вставити у файл функції шаблону functions.php. Цей код має вилікувати ці помилки від сторонньої розмітки мікроформатами. Тому, якщо у вас ця проблема є, то спочатку рекомендую перевірити код на своєму шаблоні. Він має допомогти. Це позбавить вас зайвої роботи з ручного рятування. Якщо нічого не вийде, тоді робимо все руками, як я описую нижче.

Тепер перейдемо до самого процесу. Отже, раніше стало зрозумілим, що в мене зайва розмітка від мікроформатів. При перевірці у валідаторе нам видало тег vcard, який створює помилки.

Тепер нам потрібно відкрити папку з шаблоном, щоб бачити всі файли і далі звертаємося до тих файлів, які відповідають за виведення тих елементів, де знаходяться мікроформати. Як це зробити, дивіться за списком:

Сподіваюся, я пояснив досить просто. Хоча, у новачка може й найбільше, що з'явиться плутанина в голові.

Ось як цей шмат коду з vcard виглядав у мене спочатку у файлі шаблону.

Після зміни стало так.

У стилях я також зробив зміни.

Наразі мікроформатів немає і оформлення збереглося у вихідному стані.

Отже, коли ми видалили стандартну розмітку (якщо вона була присутня), можна вбудовувати нову від Schema.org. До даному процесуми й приступаємо.

Впроваджуємо мікророзмітку Schema.org

Почнемо з невеликих пояснень та теорії, оскільки перед практикою завжди потрібно підготуватися.

По-перше, варто розібратися, які файли нам знадобляться, щоб вказати на необхідні сутності та їх властивості. Зараз говорю про файли для движка WordPress. Про інші движки не скажу, тому що з ними не працюю. Принцип розмітки залишається той самий. Потрібно лише визначити файли, де є необхідні області для розмітки.

  • Файл single.php (файл записів): сутність – область контенту (стаття), властивості – дата публікації, автор, рубрика, назва статті, зображення;
  • Файл functions.php (у моєму випадку – розмітка коду коментарів): сутність – коментар, властивості – текст коментаря, дата та ім'я коментатора;
  • Файли зі списком анонсів index.php, category.php, archive.php (головна, рубрики та архіви відповідно): сутність – список анонсів, властивості – дата публікації, автор, рубрика, назва статті;
  • Файл page.php (звичайна статична сторінка – не обов'язково): сутність – область контенту, властивості – заголовок тексту і, якщо є, то дата, автор та інші;
  • У файлі header.php також розмітити шапку – сутністю буде шапка (header), а властивостями – заголовок сайту + опис;
  • Файл sidebar.php (бічна колонка): сутність – вся бічна колонка, властивість – заголовок кожного віджету;
  • Файл footer.php (підвал сайту): сутність – весь підвал, властивість – дата копірайту + назва сайту (я не розмічав назву);
  • Файл header.php (верхня частина ресурсу): сутність – головне навігаційне меню, властивість – посилання + їх анкори.

Тепер щодо тегів та атрибутів, які відповідають кожному типу сутностей та відповідним їм властивостям. Спочатку для сутності.

/***Список анонсів***/ itemscope itemtype="http://schema.org/BlogPosting" /***Контент сторінки запису***/ itemscope itemtype="http://schema.org/Article" / ***Коментарі***/ itemprop="comment" itemscope itemtype="http://schema.org/Comment" /***Звичайна статична сторінка***/ itemscope itemtype="http://schema.org/ Article" /***Сайдбар (бічна колонка)***/ itemscope itemtype="http://schema.org/WPSideBar"> /***Footer (підвал сайту)***/ itemscope itemtype="http:/ /schema.org/WPFooter"> /***Навігація сайту (головне меню)***/ itemscope itemtype="http://schema.org/SiteNavigationElement"> /***Зображення***/ itemscope="" itemtype="https://schema.org/ImageObject" /***Постійне посилання на сторінку***/ itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" /***Організація* **/ itemscope itemtype="https://schema.org/Organization" /***Адреса***/ itemscope itemtype="http://schema.org/PostalAddress"

Тепер теги властивостей.

  • Назва сторінки (тексту) - itemprop="headline"
  • Текст запису - itemprop="articleBody" (можливо застосовувати і для опису, якщо воно формується як частина з повного тексту)
  • Дата публікації - itemprop="datePublished"
  • Автор - itemprop="author"
  • Категорія статті - itemprop="articleSection"
  • Зображення - itemprop="image"
  • Текст коментарю - itemprop="text"
  • Ім'я коментатора - itemprop="creator"
  • Дата коментарю - itemprop="datePublished"
  • Посилання (стосовно головного меню та зображення) - itemprop="url"
  • Рік копірайту у футері - itemprop="copyrightYear"
  • Дата останньої змінисторінки - itemprop="dateModified"
  • Адреса - itemprop="address"
  • Вулиця - itemprop="streetAddress"
  • Індекс - itemprop="postalCode"
  • Розташування адреси - itemprop="addressLocality"
  • Телефон - itemprop="telephone"
  • Довжина зображення - itemprop="width"
  • Ширина зображення - itemprop="height"
  • Логотип - itemprop="logo"

Це основні властивості, які ми зараз використовуватимемо.

Подальші дії мікророзмітки шаблону досить прості.

Кожна область, якій потрібно визначити сутність та властивість за допомогою вище наданих тегів, обернена якимось загальним тегом. Це може бути тег блоку div, article, тег span, заголовок H1 та інші. Щоб було простіше зрозуміти, заголовок практично завжди обернутий в тег H1, що і повинно бути. Тега буде 2: відкриває і закриває. І так з кожним елементом сайту, а не лише із заголовками.

Сенс у тому, що кожному необхідному елементу потрібно буде задати тег сутності (вказати тип контенту: стаття або коментар, або список анонсів і т.д.) та властивості всередині його тега, що відкриває.

Наразі практика. Наприклад, є файл одиночної запису (статті) single.php. Почнемо з його розмітки.

Мікророзмітка посту (статті)

Почнемо з того, що поставимо сутність. У шаблоні є загальний тег, який обертає всю область контенту запису (і текст статті та назву та коментарі) і у кожного він різний. У когось це може бути блок div. У мене ж це article. Звичайно, цей тег відкривається на самому початку, де починається весь контент, і десь закінчується, коли контент закінчується.

І саме на самому початку всередині тега article, що відкриває мені і необхідно вставити тег сутності області контенту на сторінці запису (коди давав трохи вище). Даю вам зображення (клікабельне) підсумкової розмітки файлу запису single.php, а потім поясню, що було і що сталося у результаті, якщо комусь буде незрозуміло. Зображення велике, але клікабельне, тому можете натиснути на нього і подивитися у збільшеному розмірі або відкрити його в новій вкладці і подивитися в повному розмірі.

Спочатку йде відкриття усієї області контенту запису за допомогою тега article. Було так:

А сталося так:

Як бачимо, всередині тега, що відкриває article внесений тег сутності посту. Тепер пошуковий робот зрозуміє, що це область, де міститься контент. Сприйматиме цю ділянку, як об'єкт. Це дуже важливо.

До речі. Багато хто встановлює рейтинги статей без плагіна і після перевірки сторінки у валідаторе Яндекса або Google їм пише, що не вказано об'єкт відкликання. Це з тим, що рейтинг розміщено сам собою. Потрібно розмістити його всередині даної області, яка у свою чергу має бути визначена тегом розмітки як область контенту (або об'єкт відкликання). Тоді рейтинг буде належати об'єкту, тобто статті. Помилки видавати після цього не буде.

Повернемося до процесу. Спочатку ми розмістили сутність об'єкта (обернули всю головну область загальним тегом), а потім - розмічаємо її властивості, тобто другорядні дані: дату публікації, автора, тіло статті (сам текст), дані про публікатора (адресу, організацію, логотип), дату останньої зміни сторінки, адреса головної сторінки тощо. Все так само - всередині кожного тега, що відкриває необхідного елемента вказуємо відповідні параметри. Нижче надаю пояснення, що було до внесення поправок, а що стало після.

Спочатку ми копіюємо 2 рядки коду відразу після тега, що відкриває, що обертає всю область контенту. У мене це тег article із сутністю всередині нього, що розмістилася раніше за текстом.

"/>

  • 1й рядок відповідає за виведення рядка, який вказує на адресу сторінки і говорить, що саме ця сторінка є головною.
  • 2-й рядок - дата останньої зміни сторінки.

Далі відразу наступним рядком ми даємо дані про публікатора, тобто. про те, хто публікує матеріали. Сюди входить відразу кілька сутностей (Організація – всередині неї адреса, зображення – логотип). Даю код, ви лише замінюєте підказки у ньому на свої дані. Ставити реальні чи ні, ваша справа, але, якщо гугл все-таки робить це для того, щоб покращити видачу та показати ваші дані, щоб до вас підвищилася довіра, то я б вказав реальні. Загалом тут уже справа кожного. Ось код.

назва вулиці індекс країна, область, місто телефон

Якщо ви помітите, то у наведених вище кодах присутній тег стилів display:none, який говорить, що ці дані на сторінці відображати не потрібно, а тільки у вихідному коді, щоб пошуковик їх побачив. Власне, це мені і потрібно. Цей тег знаходиться в рядках 2 і 9 і приховує відображення логотипу та адреси. Якщо хочете відобразити, приберіть ці стилі. У майбутньому я так і зроблю, коли кардинально перероблю дизайн блогу, оформлю це компактний красивий блог, який буде добре вписуватися в дизайн і давати інформацію про мене.

Щодо логотипу, то у багатьох його просто немає. Я пропоную вчинити наступним чином - або створити невелике зображення і написати на ньому назву сайту з адресою (найпростіший варіант логотипу) або ж завантажити свою фотографію (ледачий варіант). У мене ж є логотип, тому я його і прописав.

Отже, тепер ми розмічаємо таку інформацію. Тут уже буде легше. Просто потрібно буде знайти всі інші потрібні коди, які виводять ту чи іншу інформацію (заголовок, категорія, дата публікації, автор), і всередині їх тегів, в які вони укладені, вставити необхідні теги властивостей розмітки schema.org.

Заголовок запису. Було:

Дата публікації. Було:

Костянтин Хмельов

".$current_category_name."

".$current_category_name."

Текст статті. Було:

тут сторонній код

тут сторонній код

Практично також саме маємо зробити і ви. Відмінності будуть лише у тегах, всередину яких потрібно помістити сутність та теги властивостей. Також може бути різний їхній порядок. А може, взагалі чогось не буде, наприклад, буде відсутня дата публікації або посилання на категорію. Тоді доведеться додати ці дані до шаблону.

У передостанньому пункті статті я дам вам коди, які ви зможете використати, якщо у вас раптом чогось не вистачає.

Отже, тепер ми повинні перевірити свою сторінку у валідаторах яндекса та гугла.

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

Можна кожне зображення розмічати руками, обертаючи його сутністю зображень і прописуючи необхідні властивості, але це досить незручно, коли кілька десятків зображень у кожному пості. Використовуємо наступний код.

Function micro_images_captions ($a, $attr, $content = null)( extract(shortcode_atts(array("id" => "", "align" => "alignnone", "width" => "", "caption" = > ""), $attr)), if (1 > (int) $width || empty($caption)) return $content, $caption = html_entity_decode($caption); ="" . esc_attr($id) . "" "; return "

" . do_shortcode($content) . "

" . $caption . "

";) function micro_image($content) ( $ar_mk = "! !si"; $br_mk = " "; $content = preg_replace($ar_mk, $br_mk, $content); return $content; ) add_filter("the_content", "micro_image"); add_filter("img_caption_shortcode", "micro_images_captions", 10, 3);

Тепер вам не потрібно додавати тег розмітки зображень до кожної статті. Ідемо до валідатора, перевіряємо сторінку хоча б з однією картинкою, і бачимо наступну картину.

Жодних помилок бути не повинно. Все чітко. Кожне зображення має бути обгорнуте розміткою, як і на скріншоті вище.

Мікророзмітка головної сторінки

Тут необхідно обернути код, що виводить перелік анонсів тегом сутності переліку анонсів. Робиться це точно також. Усередині загального тега, що обертає весь код у шаблоні, розміщуємо потрібний тег (сутність списку блогових постів - blogposting, а можна і за аналогією зі сторінкою запису -article). Дивіться зображення (клікабельно).

Як бачимо, у мене список анонсів виводиться тегом списку li, тобто кожен анонс у ньому укладено. Усередині списку практично те саме, що і всередині самого запису – є дати, ім'я автора, назва рубрик, адреса, логотип, публікатор тощо. Це ви можете чудово бачити на сторінках блогу. Структура аналогічна, лише текст статті не повний. Загалом, розмітка точно така сама, як і для сторінки запису, за винятком тега сутності анонсів blogposting.

Також необхідно використовувати трохи інший код розмітки зображень для сторінки анонсів, тому що там виводяться не просто зображення, а мініатюри. Мікророзмітка мініатюр здійснюватиметься за допомогою практично аналогічного коду. Якщо раніше їх доводилося розмічати руками, то зараз у цьому нема рації. Ось код (розміщуємо його у файлі функцій functions.php).

Function micro_thumbnail($content) ( $ar = "!!si"; $br = ""; $content = preg_replace($ar, $br, $content); return $content; ) add_filter("post_thumbnail_html", "micro_thumbnail ");

Звертаємось до валідатора і перевіряємо домашню сторінку. Я показав вам лише 2 анонси, т.к. повний скрін буде дуже великим.

Таких записів blogposting буде стільки ж, скільки анонсів на цій сторінці. Якщо замість blogposting ви використовували article, то у вас і буде кілька article залежно від кількості анонсів.

Так як Головна сторінказа своєю структурою схожа зі сторінками рубрик та архівів, то їхня мікророзмітка ідентична. Усі типи даних сторінок виводяться списки анонсів.

Отже, залишилося розібрати розмітку коментарів, що є досить складним процесом для новачка. Також лишилися звичайні статичні сторінки. Принцип їхньої розмітки аналогічний записам, тому показувати не буду.

Отже, коментарі. Спростимо завдання до вставки одного коду у файл функції functions.php та модифікації функції, яка виводить коментарі на сторінках сайту. Спочатку беремо наступний код і розміщуємо його всередині файлу functions.php на самому початку відразу перед тегом, що відкриває< ?php. Если будет выдавать ошибку, можно попробовать его разместить после закрывающего тега?>наприкінці файлу.

Також має місце варіант розміщення, коли потрібно в даному коді прибрати на самому початку відкриття php коду(вилучити< ?php) и в самом конце его закрытие (удалить?>). Тоді потрібно розміщувати код не перед або за тегом php, що відкриває (закриває), а всередині цих тегів поряд з усіма іншими функціями. Іноді я стикався з проблемою, коли саме такий варіант розміщення працює.

Код працює не на всіх шаблонах!

< id="comment-">

%s:
"), get_comment_author_link()); ?>comment_approved) : ?>
$add_below, "depth" => $depth, "max_depth" => $args["max_depth"])))); ?>
$add_below, "depth" => $depth, "max_depth" => $args["max_depth"])))); ?>

Наступним кроком ми відкриваємо файл comments.php та шукаємо в ньому функцію виведення коментарів. Виглядає вона так:

< ?php wp_list_comments(); ?>

Це її спрощений варіант і буде гаразд, якщо так у вас і буде. Тоді просто замінюємо її на такий самий код тільки вже трохи змін з викликом тієї функції, яку ми розмістили раніше у файлі функцій.

< ?php wp_list_comments("callback=schema_comment"); ?>

Може бути ситуація, коли замість просто варіанта коду буде трохи змінений варіант з вже внесеними параметрами, наприклад:

< ?php wp_list_comments("type=comment&avatar_size=48"); ?>

У такому разі ми через знак & додаємо виклик нашої функції розмітки коментарів callback=schema_comment. Вийде так:

< ?php wp_list_comments("type=comment&avatar_size=48&callback=schema_comment"); ?>

У моєму прикладі все ще набагато складніше. У цій функції знаходяться параметри, як і в попередньому рядку коду. Але вони виводяться трохи інакше.

< ?php wp_list_comments(array("style" =>"ol", "short_ping" => true, "avatar_size" => 74,)); ?>

Якщо у вас такий варіант, то всередині дужок поруч із усіма параметрами ми вводимо новий. Зрештою отримаємо наступний код.

< ?php wp_list_comments(array("style" =>"ol", "short_ping" => true, "avatar_size" => 74, "callback" => schema_comment,)); ?>

Коли ми розмістили код функції у файлі functions.php, а також трохи змінили код виведення коментарів на сайті у файлі comments.php, можна перевірити роботу мікророзмітки коментарів.

Ознакою правильної розмітки коментарів є їх вкладеність у тіло статті без жодних відступів та прогалин. Кожен коментар повинен відображатися саме всередині статті та бути показаний у валідоторі Яндекса.

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

Також можна вказати пошуковим системам кількість коментарів до кожного запису. Для цього є свій тег - itemprop="commentCount". За аналогією з ранніми діями його потрібно розмістити всередину тега, що відкриває, який обертає функцію виведення кількості коментарів. Ця функція називається:

< ?php comments_number ?>

Можливо повний рядок виведення цієї функції відрізнятиметься, але суть її одна й та сама. Всередині має бути comments_number.

У мене дана функція має наступний повний вигляд разом з тегом, що обертає.

< ?php comments_number("Комментариев пока нет. Будьте первым!","1 Комментарий","Комментариев: %") ?>

Залежно від шаблону потрібно знайти розташування функції. Як правило, все знаходиться у тому ж файлі comments.php. У мене в шаблоні дана функція знаходилася у файлі одиночної запису single.php перед виведенням форми коментарів. Так як у мене функція оберталася текстовим тегом span, то всередині нього я вставляю властивість commentCount.

Звертаємось до валідатора.

Важливо. Обертати потрібно лише кількість коментарів без будь-яких написів і слів. Розмітка приймає лише числа!

Увага: я не автор функцій. Функції автоматичної розмітки коментарів та зображень взяті з сайту http://seo-mayak.com/. Я лише трохи змінив назви+ десь щось трохи відкоригував.

Мікророзмітка шапки сайту (header)

Відкриваємо файл header.php шаблон оформлення і шукаємо тег header. Усередині нього вставляємо:

Itemscope itemtype="http://schema.org/WPHeader"

  • Заголовок - itemprop="headline"
  • Опис - itemprop="description"

Ось готовий варіант на зображенні.

У валідаторе це відобразиться так.

Мікророзмітка сайдбара (бічної колонки)

Тут також усе просто. Відкриваємо файл, який відповідає за виведення бічної колонки, як правило, це sidebar.php. Знаходимо блок або тег, який обертає весь вміст усієї бічної колонки і всередину нього поміщаємо тег сщності, що відповідає сайдбару.

Register_sidebar(array("name" => __("Область для вставки віджетів у сайдбар", "xmarkup"), "id" => "primary-widget-area", "description" => __("", "xmarkup "), "before_widget" => "", "after_widget" => "", "before_title" => "", "after_title" => "",));

Цікавлять останні 2 рядки (before_title та after_title), які визначають, що буде виводиться перед заголовком віджету та після, відповідно. Як бачимо, у мене вказано, що перед та після буде текстовий тег span. У вас може бути там порожньо або якісь інші теги, наприклад тег блоку div. Якщо порожньо, то рекомендую дописати тег span за аналогією з моїм варіантом і всередині тега (рядок before_title) вказати властивість імені (itemprop="name"). Вийде наступна конструкція:

Register_sidebar(array("name" => __("Область для вставки віджетів у сайдбар", "xmarkup"), "id" => "primary-widget-area", "description" => __("", "xmarkup "), "before_widget" => "", "after_widget" => "", "before_title" => " ", "after_title" => "",));

Залежно від шаблону таких частин коду може бути кілька. Тоді всі частини потрібно буде доопрацювати. Після змін перевіряємо розмітку сайдбару через валідатор Яндекса та має вийде наступна картина.

Залежно від кількості віджетів буде показано відповідну кількість рядків під час перевірки.

Мікророзмітка футера (підвалу)

Відкриваємо файл footer.php та шукаємо загальний блок, який обертає весь вміст підвалу, включаючи копірайти. Усередині тега, що відкриває, розміщуємо тег сутності itemscope itemtype="http://schema.org/WPFooter".

І всередині тега, що відкриває дату копірайту, розміщуємо тег властивості itemprop="copyrightYear".

Дуже важливо, щоб всередині тега copyrightyear була тільки дата у вигляді числа. Жодних сторонніх слів і символів, інакше видаватиме помилку.

У робочому стані у валідиторі бачитимете таке.

Мікророзмітка головного навігаційного меню

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

Код, який виводить меню, міститься у файлі шапки header.php. Заходимо його і шукаємо такий зміст:

< ?php wp_nav_menu(array("theme_location" =>"header-menu-top", "container" => "")); ?>

Рядок може трохи відрізнятися. Головне - знайти рядок, що включає wp_nav_menu. Вона буде обгорнута тегами. У мене та й у більшості інших тем принцип аналогічний. Використовується тег nav. Всередину тега nav, що відкриває, ми і вставляємо тег, який показує сутність даного елемента, а саме головного меню:

Itemscope itemtype="http://schema.org/SiteNavigationElement"

Далі варто зробити так, щоб до кожного посилання в меню додавався атрибут itemprop="url", який вказуватиме, що це посилання. Якщо у вас простий сайт, де кожен пункт меню створений руками, то впровадьте цей атрибут усередину тега кожного посилання. Якщо ж у вас сайт на WordPress і меню формується у файлі functions.php стандартним чином, варто розмістити наступний код в цей же файл, який буде підставляти даний атрибут автоматично до кожного пункту меню.

Function nav($content) ( $pattern = "

Після перевірки будь-якої сторінки (де є меню) у валідаторе Яндекса, ми повинні побачити тег сутності разом зі списком усіх пунктів меню.

Якщо функція для вашого шаблону не спрацює, посилань у валідаторе ви не побачите, а лише сутність.

В останньому випадку краще видалити розмітку з меню, оскільки смислового навантаження вона не несе і інструмент перевірки структурованих даних від Google даватиме попередження.

На цьому основну частину мікророзмітки закінчено. Звичайному блогу (інформаційному сайту) більше нічого не потрібно.

Мікророзмітка адреси (контактних даних)

Якщо на своєму сайті ви показуєте відвідувачам свої контактні дані (ім'я організації, адреса, телефон тощо), ви також можете їх розмітити. Робиться це дуже просто. Нижче я даю код, який просто потрібно розмістити у html режимі на потрібній сторінці (наприклад, контакти) та внести свої дані.

Назва сайту індекс, країна, область, місто назва вулиціТелефон: телефон E-mail: ваша пошта виду назва@сайт.ру

Зауважу, що e-mail на звичайній пошті в даному випадку не доречний. Потрібна пошта типу ім'я@site.ru, тобто пошта на домені.

На цій ноті практику закінчено. Мікророзмітка на вашому WordPress повинна бути впроваджена і бути без жодної помилки, як у яндексі, так і в google.

Тепер, як і обіцяв, дам деякі коди, які можуть знадобитися, якщо у вас у шаблоні виводиться не вся інформація, необхідна для розмітки.

Корисна інформація

Даю вам список кодів із уже впровадженими властивостями розмітки. По факту вам їх просто потрібно вставити в потрібні місця шаблону і задати стилі тим класам, які прописані в цих тегах.

/***висновок дати публікації запису ***/ /***висновок автора***/ Автор: /***виведення кількості коментарів***/ Коментарів: /***висновок заголовка сторінки***/

/***виведення категорії***/ name; $current_category_link = $cat->cat_ID; )) echo "
".$current_category_name.""; ?>

Також дуже багато запитів на пошту до мене з проблемою усунення помилок, які виникають через впроваджену розмітку hentry в шаблони. Помилки звучать так:

Немає: entry-title
Немає: updated
Відсутня: author

Через що відбувається така ситуація? Все просто - у шаблоні автоматично додається клас henrty, який має на увазі, що мають бути дописані відповідні теги (класи) до заголовка, дати та автора. Можна так і зробити – дописати ці класи. Я не бачу в цьому особливого сенсу, тому що шаблон ми вже розмітили словником schema.org і від мікроформатів henrty нам не буде ніякої користі. Тому, найшвидше і найпростіше буде використовувати невелику функцію, яка видалити цей клас henty з шаблону і google навіть не знайде мікроформати hentry.

//видалення класу hentry start function wph_remove_hentry_class($classes) ( $classes = array_diff($classes, array("hentry")); return $classes; ) add_filter("post_class", "wph_remove_hentry_class"); //видалення класу hentry end

Функцію звичайно додає у файл функцій functions.php. Якщо у вас такі помилки вже були або почали з'являтися, то поступово в міру обходу сторінки вашого сайту роботом мікророзмітки вони почнуть зникати. Якщо їх не було, вони не з'являться.

Є й інший варіант, коли можна помучитися та дописати необхідні теги до висновку заголовка, дати та автора. Тоді гугл знайде цю розмітку і її розпізнаватиме. Якщо ви зважилися на такі дії, тоді вам потрібно знайти php коди виведення заголовка (1), дати (2) та автора (3).

Готові коди з тегами мікроформатів будуть наступні:

Обернувши все в такий спосіб, теж буде нормально.

Наступний пункт буде для тих, кому занадто складно все це робити або кому ліньки.

Зроблю все за вас

Я можу вам допомогти. Але, звичайно, не безкоштовно. Окрім виразних відповідей на ваші запитання у коментарях я можу впровадити вам усю вищеописану мікророзмітку у ваш шаблон за невелику плату.

Вартість цієї послуги 1000 рублів.

Розмічу всі основні дані, а саме:

  1. Головну сторінку + сторінки архівів та рубрик;
  2. Сторінку посту (запису);
  3. Звичайну статичну сторінку;
  4. Шапку сайту;
  5. Підвал;
  6. Сайдбар;
  7. Навігаційне меню (якщо шаблон не конфліктуватиме);
  8. Хлібні крихти + рейтинг (за бажанням + 200 рублів).

Підійде цей варіант персональним блогам, а також інформаційним сайтам. Можу взятися як за движок WordPress, так і за звичайний html сайт. Спочатку нічого робити не буду, тому що спочатку проаналізую ваш шаблон і відповім, чи я зможу взагалі зробити. Можливо, доведеться щось переробляти в шаблоні або доробляти. До кожного індивідуальний підхід.

Принцип наступний. Ви зв'язуєтесь зі мною через сторінку "Написати мені" (можна звертатися і в коментарях цієї статті). Відразу кидаєте мені посилання на ваш сайт + посилання на завантаження шаблону. Я аналізую і даю вам відповідь протягом найближчого часу (1-2 дні). Якщо все в моїх силах, то після оплати одразу приступаю до розмітки.

Всі друзі. Сподіваюся, що цей матеріал вам допоміг. У мене не було мети написати тут у 2-х словах, як все зробити. Метою ставив написати найкращий і вичерпний посібник із впровадження розмітки на сайт. Сподіваюся, що це сталося. Ви можете це підтвердити своїми коментарями, лайками та оцінками.

До зустрічі у наступних матеріалах.

З повагою, Костянтине Хмелеве!

У цьому уроці я розповім про те, як робляться коментарі в HTML, CSS, PHP. Коментарі є текстом, який не видно на веб-сторінці. Вони використовуються для різноманітних пояснень, нагадувань, описів для вебмайстрів, що дозволяє структурувати документ. Коментарі незамінні при налагодженні коду дозволяють швидко зорієнтуватися в розмітці веб-сторінки і знайти потрібний блок. Часто коментарі використовуються для налагодження коду HTML. Наприклад, можна тимчасово закоментувати конкретний блок коду, щоб він не виконувався, а в разі потреби легко відновити його.

Коментарі в HTML

У HTML коментарі формуються за допомогою символів:. Таким чином, будь-який текст між цими символами є коментарем. Розглянемо приклад:

Коментарі в CSS

Коментарі в CSS створюються за допомогою символів: /* та */. Для створення коментаря потрібно просто розмістити код-веб сторінки між цими символами:

/* Початок блоку зі стилями для Body*/ body ( background: #efeded; font-family: Verdana, Helvetica, sans-serif; font-size: 12px; margin: 0px; padding: 0px; ) /* Кінець блоку зі стилями для Body*/

Коментарі в PHP

Коментарі в PHP можуть бути однорядковими та багаторядковими:

1) Однорядкові коментарі в PHP створюються за допомогою символів: //. Досить просто поставити цей символ перед рядком і вона буде закоментована. Такий варіант застосовується в тому випадку, коли коментар складається лише з одного рядка.

2) Для реалізації багаторядкових коментарів використовуються символи: /* та */. Такий варіант корисний, якщо коментар займає кілька рядків.

Таким чином, ми навчилися робити

Крок 1 - XHTML

Спершу подивимося на розмітку коментаря. Цей код генерується PHP з класом Comment .

demo.php

Ім'я користувача
30 червня 2010

Текст коментаря

div avatar містить посилання (якщо користувач ввів правильну URL-адресу при розміщенні коментаря) та зображення аватара, яке ми отримуємо з gravatar.com . Ми повернемось до формування розмітки на кроці PHP. На завершення слідують div name div time та текст коментаря.

Іншим важливим елементом XHTML є форма коментаря. Вона відправляється за допомогою POST. Усі поля, крім URL, мають бути заповнені.

demo.php

Додати коментар

Форма надсилається за допомогою AJAX. Перевірка виконується у фоновому режимі submit.php. Кожне поле має відповідний елемент label, із встановленим атрибутом for .

Крок 2 - PHP

PHP обробляє комунікацію з базою даних MySQL та генерує розмітку для коментаря. Він також отримує закінчення запиту AJAX і вставляє дані коментаря до таблиці comments.

demo.php

/* / Вибираємо всі коментарі та наповнюємо масив $comments об'єктами */ $comments = array(); $result = mysql_query("SELECT * FROM comments ORDER BY id ASC"); while($row = mysql_fetch_assoc($result)) ( $comments = new Comment($row); )

Запит MySQL вибирає всі записи з таблиці та заповнює масив $commentsоб'єктами класу comment. Цей масив виводиться далі під час виконання скрипта.

demo.php

/* / Висновок коментарів один за одним: */ foreach($comments as $c)( echo $c->markup(); )

Кожен коментар має метод markup(), який генерує правильний HTML-код, готовий для виведення на сторінку. Нижче наведено визначення класу та методу.

Клас отримує рядок з бази даних (одержуваний за допомогою mysql_fetch_assoc()) і зберігає її у змінній $data. Вона доступна лише за методом класу.

comment.class.php - Частина 1

class Comment ( private $data = array(); public function __construct($row) ( /* / Конструктор */ $this->data = $row; ) public function markup() ( /* / Даний метод виводить розмітку XHTML для коментаря */ // Встановлюємо псевдонім, щоб не писати щоразу $this->data: $d = &$this->data; $link_open = ""; $link_close = ""; )( // Якщо був введений URL при додаванні коментаря, // визначаємо теги посилання, що відкриває і закриває $link_open = ""; $link_close = ""; ) // Перетворимо час у формат UNIX: $d["dt"] = strtotime ($d["dt"]); // Потрібно для встановлення зображення за замовчуванням: $url = "http://".dirname($_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"])."/ img/default_avatar.gif"; return "
".$link_open." ".$link_close."
".$link_open.$d["name"].$link_close."
".date("d MY",$d["dt"])."

".$d["body"]."

"; }

Скрипт використовує gravatar для представлення аватара у коментарях. Gravatar - це дуже корисний сервіс, який встановлює відповідність аватара з адресою email. Зображення аватара може бути легко отримано за допомогою передачі функцією кодованого md5()вашої адреси електронної пошти на gravatar.com.

Скрипт визначає адресу URL, на якій виконується, та визначає точну адресу зображення default_avatar.gif. Дане зображення передається паралельно з хеш md5, і якщо ніякого аватара не було знайдено для переданої email адреси, то буде виведено альтернативне зображення.

comment.class.php - Частина 2

public static function validate(&$arr) ( /* / Даний метод використовується для перевірки даних, що відправляються через AJAX. / / Він повертає true/false залежно від правильності даних, і наповнює / масив $arr, який передається як параметр або даними або повідомленням про помилку.*/ $errors = array(); $data = array(); ",FILTER_VALIDATE_EMAIL))) ( $errors["email"] = "Будь ласка, введіть правильний Email."; ) if(!($data["url"] = filter_input(INPUT_POST,"url",FILTER_VALIDATE_URL))) ( // Якщо в полі URL був введений неправильний URL, // діємо так, ніби URL не був введений: $url = ""; ) // Використовуємо фільтр зі зворотною функцією: if(!($data["body"] = filter_input(INPUT_POST,"body",FILTER_CALLBACK,array("options"=>"Comment::validate_text")))) ( $errors["body"] = "Будь ласка, введіть текст коментаря."; ) if(!( $data["name"] = filter_input(INPUT_POST,"nam e",FILTER_CALLBACK,array("options"=>"Comment::validate_text")))) ( $errors["name"] = "Будь ласка, введіть ім'я."; ) if(!empty($errors))( // Якщо є помилки, копіюємо масив $errors в $arr: $arr = $errors; return false; ) // Якщо дані введені правильно, підчищаємо дані і копіюємо їх у $arr : foreach($data as $k=>$v)( $arr[$k] = mysql_real_escape_string($v); ) // email повинен бути в нижньому регістрі: $arr["email"] = strtolower(trim($ arr["email"])); return true; )

Метод validate()(також частина класу) визначено як static. Це означає, що його можна викликати безпосередньо за допомогою конструкції Comment::validate()без створення об'єкта класу. Цей метод перевіряє дані, що передаються через AJAX.

Метод використовує нову функцію фільтра, яка стала доступною в PHP 5.2.0. Таким чином ми можемо легко перевірити та відфільтрувати дані, які передаються скрипту. Наприклад, filter_input(INPUT_POST,'url',FILTER_VALIDATE_URL)означає, що ми перевіряємо, чи є $_POST["url"]правильною адресою URL. Якщо це так, то функція повертає значення змінної, інакше вона повертає значення false.

До використання такої функції потрібно було використовувати регулярні вирази для перевірки даних (із залученням серії конструкцій if). Додатковою перевагою є те, що ми отримуємо дані до будь-яких специфічних перетворень.

Також можна задати функцію, яка проводитиме додаткові модифікації даних.

comment.class.php - Частина 3

private static function validate_text($str) ( /* / Цей метод використовується як FILTER_CALLBACK */ if(mb_strlen($str,"utf8"))<1) return false; // Кодируем все специальные символы html (<, >, ", & .. etc) і перетворюємо // символ нового рядка на тег
: $str = nl2br(htmlspecialchars($str)); // Видаляємо всі символи нового рядка, що залишилися $str = str_replace(array(chr(10),chr(13)),"",$str); return $str; )

Останній метод validate_textпередається як зворотна функція у два виклики filter_input. Він перетворює всі спеціальні символи HTML, що ефективно блокує атаки XSS. Також він замінює символи нового рядка тегами
.

submit.php

/* / Даний масив наповнюватиметься або даними, / які передаються в скрипт, / або повідомленнями про помилку. /*/ $arr = array(); $validates = Comment::validate($arr); if($validates) ( /* Все в порядку, вставляємо дані в базу: */ mysql_query(" INSERT INTO comments(name,url,email,body) VALUES (".$arr["name"]."", "".$arr["url"]."", "".$arr["email"]."", "".$arr["body"]."")"); $arr["dt "] = date("r",time()); $arr["id"] = mysql_insert_id(); /* / Дані в $arr підготовлені для запиту mysql, / але нам потрібно робити висновок на екран, тому / готуємо всі елементи в масиві: /*/ $arr = array_map("stripslashes",$arr); $insertedComment = new Comment($arr); "=>1,"html"=>$insertedComment->markup())); ) else ( /* Виведення повідомлень про помилку */ echo "("status":0,"errors":".json_encode($arr ).")"; )

submit.phpотримує коментар із даних через запит AJAX. Перевіряє його та виводить об'єкт JSON, у якому міститься або розмітка XHTML із вставленим коментарем, або список помилок. jQuery використовує властивість statusдля визначення того, що потрібно виводити - або повідомлення про помилки або додавати розмітку коментаря до сторінки.

Нижче наведено два приклади.

Успішна відповідь

( "status": 1, "html": "Html Code Of The Comment Comes Here..." )

Властивість htmlмістить код коментаря.

Відповідь про помилку

( "status": 0, "errors": ( "email": "Виберіть правильну електронну пошту.", "body": "Виберіть повідомлення для електронної пошти.", "name": "Виберіть електронну пошту." ) )

При помилці jQuery проходить циклом по об'єкту помилок і виводить повідомлення поряд з полями, в яких є помилки.

Крок 3 - CSS

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

styles.css - Частина 1

.comment, #addCommentContainer( /* Стиль для коментарів */ padding:12px; width:400px; position:relative; background-color:#fcfcfc; border:1px solid white; color:#888; margin-bottom:25px; / * Закруглені кути і тіні CSS3 */ -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; shadow:2px 2px 0 #c2c2c2; box-shadow:2px 2px 0 #c2c2c2; ) .comment .avatar( /* / Аватар позиціонується абсолютно. :absolute;width:50px;background:url("img/default_avatar.gif") no-repeat #fcfcfc; /* Центруємо вертикально: */ margin-top:-25px; top:50%; -moz-box-shadow :1px 1px 0 #c2c2c2;-webkit-box-shadow:1px 1px 0 #c2c2c2;box-shadow:1px 1px 0 #c2c2c2;

div .comment і #addCommentContainer мають однаковий стиль. Використовується кілька правил CSS3 для заокруглення кутів та відображення тіней.

styles.css - Частина 2

.comment .avatar img( display:block; ) .comment .name( font-size:20px; padding-bottom:10px; color:#ccc; ) .comment .date( font-size:10px; padding:6px 0; position:absolute;right:15px;top:10px;color:#bbb; ) .comment p, #addCommentContainer p( font-size:18px; addCommentContainer textarea( /* Стиль для введення */ display:block; border:1px solid #ccc; margin:5px 0 5px; padding:3px; font-size:12px; color:#555; font-family:Arial, Helvetica, sans-serif; ) #addCommentContainer textarea( width:300px; ) label( font-size:10px; ) label span.error( color:red; position:relative; right:-10px; ) #submit( /* Кнопка "Надіслати " */ background-color:#58B9EB; border:1px solid #40A2D4; color:#FFFFFF; cursor:pointer; font-family:"Myriad Pro" -weight:bold;padding:4px;margin-top:5px;-moz-border-radius:4px;-webkit-border-radius:4px; border-radius:4px; ubmit:hover( background-color:#80cdf5; border-color: #52b1e2; )

У другій частині ми задаємо стилі для коментарів та елементів форми. Відзначимо селектор input,який виділяє елементи залежно від атрибуту type.

Крок 4 - jQuery

Тепер перейдемо до jQuery.

script.js

$(document).ready(function()( /* Наступний код виконується тільки після завантаження DOM */ /* Даний прапор запобігає відправці кількох коментарів: */ var working = false; /* Ловимо подію відправки форми: */ $(" #addCommentForm").submit(function(e)( e.preventDefault(); if(working) return false; working = true; $("#submit").val("Working.."); $("span .error").remove(); /* Відправляємо поля форми в submit.php: */ $.post("submit.php",$(this).serialize(),function(msg)( working = false; $ ("#submit").val("Submit"); if(msg.status)( /* / Якщо вставка була успішною, додаємо коментар / нижче останнього на сторінці з ефектом slideDown /*/ $(msg.html).hide ().insertBefore("#addCommentContainer").slideDown(); $("#body").val(""); ) else ( /* / Якщо є помилки, проходимо циклом по об'єкту / msg.errors і виводимо їх на сторінку /*/ $.each(msg.errors,function(k,v)( $("label").append(" "+v+""); )); )), "json"); )); ));

Ми використовуємо виклик функції $(document).ready()яка прив'язує функцію до події. Змінна workingдіє як прапор, який сигналізує про те, що запит AJAX знаходиться в роботі (у такий спосіб запобігається дублювання одного і того ж коментаря).

У зворотній функції для запиту POST AJAX ми перевіряємо властивість status, щоб визначити, чи було успішно вставлено коментар. Якщо так, ми додаємо отриману розмітку на сторінку після останнього коментаря з анімацією slideDown.

Якщо були проблеми, ми виводимо повідомлення про помилки, додаючи span error до відповідного елементу label(атрибут елемента labelмістить idвведення, що має помилку).

Готово!

Висновок

Щоб запустити скрипт на вашому сервері, потрібно створити таблицю comments у базі даних MySQL. Ви можете зробити це за допомогою коду SQL із файлу table.sql, який потрібно ввести на закладці SQL у phpMyAdmin. Потім потрібно встановити параметри з'єднання з базою даних MySQL у файлі connect.php .

У наш час багато популярних сайтів це не тільки джерело інформації, але й місце, де цю інформацію можна обговорити з іншими користувачами, сайти часто перетворюються на центри, довкола яких формується спільнота.

Коментарі допомагають будувати спільноту

Тепер користувачі приходять до вас не просто щоб прочитати якусь новину або статтю, але ще й для того, щоб її обговорити.

Що характерно – дізнатися саму новину читач міг і в іншому місці, але саме співтовариство цікавих людей, можливість висловитись і почути їхню думку – ось що призведе до того, що він відвідає ваш сайт та зайде на сторінку з новиною, яку й так знає.

Ще років десять тому центрами, навколо яких вирувало все життя, були форуми. Однак у наш час це вже не так зручно та популярно, зараз більшість популярних сайтів працюють у форматі блогів, а спілкування користувачів відбувається у коментарях.

Таким чином, саме коментарі є тим фактором, який відрізняє звичайні сайти від сайтів, які по-справжньому успішні у своїй сфері. Це стосується новинних сайтів, блогів, спільнот за інтересами, часом навіть інтернет-магазинів та різних спеціалізованих сайтів.

Коментарі це зворотний зв'язок та мотивація

Також важливо пам'ятати, що коментарі це джерело зворотного зв'язку з читачами, яке дозволяє дізнатися, що саме їм подобається і на що читачі реагують. А чим краще та цікавіше для відвідувачів ваш сайт, тим частіше вони до вас повертаються та рекомендують його.

До того ж зворотний зв'язок – це завжди хороша мотивація для самих авторів та адміністраторів, яка майже миттєво дозволяє відчути, що людям цікаво і те, що ви робите і ваш сайт. Простим лічильником відвідувачів такого не досягнеш.

Що нам потрібне від системи коментування?

То якими ж мають бути «правильні» коментарі на сучасному сайті?

  • Простими та зрозумілими для читачів.
  • Зручними та функціональними для адміністраторів.

Які варіанти є зараз у веб-майстра?

Віджети соціальних мереж

Плюс лише один - досить висока ймовірність того, що користувач уже залогінений у соціальній мережі і тому йому не доведеться реєструватися.

Безліч мінусів

Російськомовні сервіси

Російськомовні аналоги часто повністю платні і не можуть похвалитися привабливим дизайном.

SV Kament

Єдиним винятком тут є система SV Kament (svkament.ru) яка повністю безкоштовна і збирає воєдино функціонал різних західних систем коментування, але при цьому орієнтована на російськомовний сегмент.

Давайте коротко розглянемо що ми хотіли бачити у нашій системі коментування.

Деревоподібні коментаріз можливістю згортати окремі галузі обговорення. Дуже допомагають орієнтуватись в обговоренні, коли коментарів стає багато.

Соціальний логін- значно спрощує реєстрацію та як результат збільшує кількість коментарів. Західні дослідження показують, що використання соціального логіну часом збільшує конверсію більш ніж на 60%.

Оцінка коментарів- по-перше допомагає виділити найцікавіші та найвартісніші коментарі, що вкрай зручно для читачів, а по-друге стимулює користувачів писати цікаві повідомлення.

Робота в реальному часі- Чим зручніше і швидше працює система, тим більше їй користуються і частіше пишуть коментарі.

Повідомлення на пошту- як часто ми втрачаємо потенційні коментарі лише тому, що користувач не знає, що хтось відповів на попереднє повідомлення.

З погляду управління

  • Управління прямо на сайті.

  • Інформація про користувачів.

  • Єдина панель керування коментарями всього сайту.
  • Можливість призначати модераторів.
  • Простота встановлення.

Також є низка цікавих можливостей у системи SV Kament.

  • Соціальні трансляції- дозволяють «повернути» спілкування на ваш сайт із соціальних мереж. Якщо у вас є група в Вконтакті, в якій ви розміщуєте анонси нових статей на сайті, то часто обговорення статей залишається в коментарях до самого запису, і було б чудово транслювати ці коментарі назад на ваш сайт.

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

Все й одразу?

Є досить поширена практика розміщувати відразу кілька систем коментування, наприклад, окремо віджет ВКонтакте, окремо Facebook, окремо для всіх інших.

На мій погляд, це одне з найгірших рішень, проте важливо розуміти які саме цілі переслідуються.

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

Якщо ж наша мета – створення спільноти та стимулювання спілкування користувачів, то такий підхід вкрай шкідливий, адже розділяючи коментарі, ми поділяємо і саме спілкування, таким чином замість єдиного діалогу виходить купка не пов'язаних між собою повідомлень.

А якими коментарями ви користуєтеся? Чи вважаєте ви коментарі важливими для вашого сайту, і наскільки зручними та ефективними вважаєте коментарі на своєму сайті?

Наразі стало модним замінювати звичну систему коментарів WordPress на коментарі однієї з найпопулярніших соціальних мереж Facebook. Раніше ми вже публікували, але з того часу пройшло багато часу, і зараз ця процедура помітно спростилася завдяки готовому плагіну WordPress. Тож цього разу все буде набагато простіше.

Як впровадити коментарі Facebook на свій сайт ми розповімо трохи згодом, а для початку спробуємо визначити всі «за» та «проти» такої заміни.

Коментарі з Facebook: «за» та «проти»

До того ж, зникає фактор так званої анонімності. Малоймовірно, що з Facebook додаватимуться спам коментарі, оскільки всі вони прив'язані до реальних облікових записів користувачів.

Але водночас можна знайти й мінуси такої системи. Багато користувачів віддають перевагу анонімності і зовсім не тому, що вони хочуть написати щось погане або залишити спам. Ні. Справа виключно в психологічному моменті і в почутті дискомфорту та збентеження, яке вони відчувають, висловлюючись публічно. Цей фактор може зменшити активність користувачів.

На відміну від інших систем коментарів, наприклад Disqus, коментарі Facebook не синхронізуються з рідними коментарями WordPress. Вони повністю їх замінюють. Якщо у старих записах вже є коментарі WordPress, вони відображатимуться до або після нових коментарів, доданих через форму Facebook.

Ось, мабуть, і всі плюси та мінуси Facebook-коментарів.

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

Плагін Facebook Comments для WordPress

Для початку встановимо та активуємо плагін Facebook Commentsі налаштуємо його в меню, що з'явилося в розділі Налаштування → Коментарі Facebook.


Щоб почати використовувати коментарі на сайті, потрібно спочатку створити програму Facebook.

Якщо ви раніше вже створювали програму, то можете використовувати його дані ID прямо зараз. Інакше вам доведеться створити нове на сторінці Facebook Apps:

У панелі керування щойно створеної програми з'явиться його ID, яке потрібно скопіювати та вставити в налаштування плагіна. Але перед цим налаштуйте програму на своєму сайті в "Налаштуваннях" за допомогою кнопки "Add Platform".

З'явиться нове вікно, в якому потрібно клацнути на веб сайті вибрати його як свою платформу.

Так, на сторінці параметрів програми з'явиться новий розділ «Веб-сайт», в якому можна вказати адресу свого сайту.

Збережіть зміни, скопіюйте ID програми та розмістіть його в налаштуваннях плагіна свого сайту.

Якщо ви не розібралися з налаштуванням програми Facebook, то ось ще одна коротка інструкціяанглійською з прикладом для нашого сайту:

Цей плагін Facebook-коментарів має дуже багато параметрів для налаштувань. Стандартні налаштування повинні працювати з більшістю сайтів. Однак їх можна змінити на власний розсуд і зберегти зміни.

Тепер можете протестувати, чи працює нова система коментарів на вашому сайті.

Модерація коментарів

Так як у вас є адмінські права, вам будуть надходити повідомлення про нові коментарі. Ви можете ними керувати та вирішувати, публікувати їх чи ні.

А ще в налаштуваннях можна додати нового модератора:

Сподіваємося, ця інструкція внесла ясність та допомогла вам самостійно встановити коментарі Facebook для вашого сайту не WordPres.