Сайт о WordPress: плагины, функции, хаки, статьи...
WordPress как на ладони

Kama WP Smiles

И снова здравствуйте! *hi*

Не помню точно, что натолкнуло меня на эту мысль, наверное то, что мой знакомый устроил мне разбор смайов в месcенджере QIP infium, которым я пользуюсь уже не первый год *victory*, я решил прикрутить смайлики к этом блогу.

Немного поискав *search* подходящий плагин для WordPress, наткнулся на этот, решил прикрутить его, но не тут-то было - я хотел другой вывод, и хотел упростить проверку на замену символов на смайлики. А еще, мне не нужно было так много смайликов. Все свои желания я конечно мог реализовать, отредактировав вышеупомянутый плагин, но я как-то, почти случайно, начал писать свой код, который в итоге превратился в плагин, на мой взгляд, довольно удачный  *bravo*

О плагине смайликов для WordPress

Что делает плагин:

  • заменяет стандартные смайлики WordPress, на смайлики из QIP;
  • добавляет список смайликов к полю комментирования. Какие смайлики попадут в список указывается в настройках;
  • добавляет смайлики в админ-панель, где можно легко их вставлять при ответе на комментарии или написании поста;
  • упрощает поиск и замену кодов смайликов в тексте.

Блок смайлов в комментариях:

kama-wp-smile1

Страница настрое плагина в админ-панели:

Страница настроек kama-wp-smile

Блок смайлов в комментариях админ-панели:

kama-wp-smile2

Блок смайликов при написании поста в админ-панели:

screenshot-4

Скачать

Kama Wp Smile
Скачать с каталога WordPress. Последняя версия.
Скачано: 299, размер: 306.2 KB, дата: 06.Фев.2014

Плагин в каталоге WordPress.org.

Настройки Kama WP Smiles

Расскажу немного о настройках *secret*

Ручная вставка блока смайликов в форму комментирования

Плагин автоматически добавляет смайлики к форме комментариев (textarea). Однако может получиться так, что нормально встроить список у плагина не получиться. В таком случае, вы можете вставить блок смайликов вручную, в любое место шаблона. Для этого оставьте поле "Авто-вставка смайлов" в настройках пустым, так вы отключите авто-вставку, и при помощи php кода вставьте блок в нужное место шаблона (обычно где-то в файле comments.php):

<?php echo kama_sm_get_smiles_code( 'id_формы_комментирования' ); ?>

Этот код выведет блок смайликов.

HTML теги исключения

В этой настройке можно указать HTML теги, текст в которых не будет обрабатывался плагином. Например, если там указать "code",то такой код не будет обработан плагином: <code>улыбочка :)</code>. Теги нужно указывать через запятую.

Специальные обозначения смайликов (смайлики исключения)

По умолчанию смайлики определяются в тексте по коду *название_файла_смайлика*, но есть исключения, например смайлик  smile обозначается как  :-) или :) или =), хотя по идее его родной код  *smile*. Такие исключения можно настроить в плагине самому. По умолчанию я сделал всего 3 таких исключения ( :) :( :D), чтобы экономить на поиске и замене, и лишний раз не нагружать сервер, ведь на многих сайтах конструкции вроде =O не используются совсем, так зачем её обрабатывать... Мне кажется, если есть блок смайликов, проще выбрать смайл от туда, чем писать что-то подобное - такие конструкции пишутся по привычке, а привычка такая далеко не у всех. Однако, если  на вашем сайте есть пользователи с привычками писать устоявшиеся коды смайликов, вы можете добавить их в настройках.

Редактируем внешний вид

Если вас не устраивает как выглядит список смайликов, то его можно отредактировать, при условии что вы знаете css, для этого нужно изменить CSS правила в поле "CSS стили". Чтобы стили не хранились в настройках, стили можно скопировать в свой файл стилей, при этом удалить их из настроек.

Установка своего комплекта смайлов

Если вы не увидите смайликов, которые бы вы хотели иметь у себя на блоге, не нужно расстраиваться *don-t_mention*. Вы легко можете дополнить/заменить смайлы на свои *yu* . Чтобы дополнить список, всего-то нужно скачать картинки смайликов и залить их в папку плагина "smiles". После этого новые смайлы автоматически появятся в настройках плагина, откуда вы простым кликом сможете добавить их в ротацию.

Добавлять можно только файлы в формате .gif и в тексте поста будет использоваться конструкция *название_файла*. Например, если вы добавите картинку emotion.gif в тексте этот смайл будет вставляться как *emotion*.

В названии файлов допускаются только нижний регистр латинских букв, цифры, знак - и знак _, если файл имеет какие то другие знаки, то он не будет работать.

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

Фильтрация

Если нужно где-то отфильтровать текст (не показывать код смайликов), то примените такой фильтр:

$text = "Пробный текст *good*";
$text = preg_replace('@\*[a-z0-9-_]{0,15}\*@', '', $text);
echo $text;

// вернет: Пробный текст

В случае внезапных проблем, глюков, багов, кривостей и прочего или если просто появится желание написать что-то вот такое *good* - пишите в комментарии  *mail*

Спасибо за внимание *thank_you*

Kama WP Smiles Комментариев: 177
Полезные Вопросы Спасибо Все
  • 153
    Алексей → ironfriends.ru

    Здравствуйте!
    Спасибо за плагин, очень простой и удобный!
    Возникла одна проблема, в тексте меняет ") на подмигивание.
    Подскажите пожалуйста как это проще всего поправить, я не владею навыками программирования.

    Ответить
    +1
    -1
    2 месяца назад #
    • 154
      Kama1118

      В настройках есть пункты

      >>> HTML теги исключения.
      Добавьте ваш текст где не нужно преобразовывать смайлки в указанные там теги. Теги можете добавить свои.

      ИЛИ

      В настройках есть пункт:
      >>> Специальные обозначения смайликов:
      Удалите от туда обозначение подмигивания. Хотя по умолчанию его там нет. Это вообще мой плагин меняет?

      Ответить
      +1
      -1
      2 месяца назад #
      • 155
        Алексей → ironfriends.ru

        Да, это ваш плагин меняет. Вариант с тегами не очень подходит, так как придется вставлять его во многих статьях и не в одном месте каждой статьи... Вот, посмотрите как это выглядит:
        http://ironfriends.ru/kak-vybrat-smartfon/
        В тех местах, где в скобках указан размер экрана в дюймах типа (7-8") вместо последней скобки отображается смайл подмигивания. При этом кавычки почему-то остаются, заменяется только скобка.
        Я добавил в админке специальные обозначения смайлов, но там нет кавычек:

        ;) >>> wink
        ;-) >>> wink
        Ответить
        +1
        -1
        2 месяца назад #
        • 156
          Kama1118

          Что-то не то. Вот у меня же тут этот плагин стоит не меняет ведь (7-8") или (6″)

          Сейчас добавил подмигивания, все работает как надо:

          wink >>> wink
          wink >>> wink

          ;) >>> wink
          ;-) >>> wink

          Попробуйте еще поковыряйте, что-то там не так... Может баг какой, но я без идей чет...

          Ответить
          +1
          -1
          2 месяца назад #
          • 157
            Алексей → ironfriends.ru

            Я посмотрел html страницы (Ctrl-U) там кавычка похоже заменяется на код символа в Unicode. В самом коде статей в WordPress стоит кавычка. Возможно она экранируется при создании кода страницы для браузера. Но пока не пойму как это связать. А нельзя в админке или коде плагина как-то экранировать эту последовательность, чтобы она не менялась?

            Ответить
            +1
            -1
            2 месяца назад #
          • 158
            Алексей → ironfriends.ru

            Да, я посмотрел ваш код. У вас кавычка не заменяется кодом символа... Сейчас попробую вставить из моего текста, вот: (4.5-6").

            Ответить
            +1
            -1
            2 месяца назад #
          • 159
            Алексей → ironfriends.ru

            Если вы еще дорабатываете плагин, возможно вам будет интересен найденный мелкий баг в админке, похожий на неправильный z-index: http://joxi.ru/DmB7lERilKLk2P

            Ответить
            +1
            -1
            2 месяца назад #
          • 160
            Алексей → ironfriends.ru

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

            Ответить
            +1
            -1
            2 месяца назад #
            • 162
              Алексей → ironfriends.ru

              Проблема локализована и решение найдено. WordPress заменяет кавычки их символом и подставляет точку с запятой. Если после этой точки с запятой идет скобка (как в моем случае), то последовательность заменяется на смайлик.

              Решение проблемы (способ №1):
              Добавляем фильтр в файл темы function.php
              remove_filter('the_content', 'wptexturize');

              Решение проблемы (способ №2):
              Чтобы не фильтровать вывод правим функцию замены в файле /wp-includes/formatting.php

              //$opening_quote = _x('“', 'opening curly quote');
                $opening_quote = _x('«', 'opening curly quote');
              //$closing_quote = _x('”', 'closing curly quote');
                $closing_quote = _x('»', 'closing curly quote');

              После этого будут красивые кавычки, а смайлики работают только там где нужно.
              Еще раз спасибо за хороший плагин!

              Ответить
              +1
              -1
              2 месяца назад #
              • 163
                Алексей → ironfriends.ru

                Первый способ не оптимальный, но в случае обновления WordPress с заменой файла formatting.php параметры не слетят.

                Ответить
                +1
                -1
                2 месяца назад #
              • 164
                Алексей → ironfriends.ru

                Моя скромная благодарность у вас в ЯД, удачи!

                Ответить
                +1
                -1
                2 месяца назад #
                • 165
                  Kama1118

                  Обновил плагин поправил тот баг с z-index и сделал исключения в регулярках. Теперь смайлик не заменяется если перед ним стоят символы : ; ' "

                  Попробуйте, если все работает, обновлю в репозитории.

                  http://wp-kama.ru/wp-content/uploads/2010/12/kama-wp-smile-v1.7.2.1.zip

                  Ответить
                  +1
                  -1
                  2 месяца назад #
                  • 166
                    Алексей → ironfriends.ru

                    1. Удалил строку:
                    remove_filter('the_content', 'wptexturize');
                    из файла темы function.php
                    2. Сбросил настройки плагина по умолчанию.
                    3. Деактивировал и удалил плагин.
                    4. Установил новую версию плагина.
                    5. Проверил, смайлы работают (кроме подмигивания).
                    6. Дописал специальные обозначения:

                    ;) >>> wink
                    ;-) >>> wink

                    7. Проблема повторяется.
                    8. Z-index OK!

                    Вы задали неправильные критерии. Вот что у меня в коде страницы выдает нетронутый WordPress вместо кавычки:
                    ″)

                    #8243 - это unicode символа кавычки.
                    ;) - это заменяется на смайлик при этом код становиться не валидным, так как смайлик съедает точку с запятой, которой должен заканчиваться код символа.

                    Я думаю, что вместо символов которые вы написали (: ; ' ") нужно написать коды, указанные в formatting.php: #8220, #8221, #8217, #8242, #8216, #8211, #8212. Или универсальную конструкцию типа #???? (не знаю как там прописывается любая цифра в коде).

                    Попробуйте, а я проверю wink

                    Ответить
                    +1
                    -1
                    2 месяца назад #
                    • 167
                      Алексей → ironfriends.ru

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

                    • 168
                      Алексей → ironfriends.ru

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

                  • 169
                    Kama1118

                    Вот еще одна попытка smile

                    http://wp-kama.ru/wp-content/uploads/2010/12/kama-wp-smile-v1.7.2.2.zip

                    П.С. Чтобы у меня не перебивался wink используйте кнопку var ;) wink

                    Ответить
                    +1
                    -1
                    2 месяца назад #
                    • 170
                      Алексей → ironfriends.ru

                      Смайлы работают. Я проверил все последовательности из файла formatting.php и они не заменяются смайлами: http://joxi.ru/52aJ5QehXJZVA0 *good*

                    • 171
                      Kama1118

                      Еще чуть улучшил код и зарелизил плагин - версия 1.7.3 (в админке ВП обновитесь). Если что вдруг не так пишите сюда.

                    • 172
                      Алексей → ironfriends.ru

                      Спасибо! Обновился, вроде все работает как надо *good* Оставил свою оценку и отзыв wink А нельзя получить маленькую индексируемую ссылочку на вашем сайте? *blush* Или хотя бы пару советов по продвижению для начинающего блогера? smile Контент оптимизирован, пока использую только GGL.

                    • 173
                      Otshelnik-Fm → beoff.ru33
                      @

                      А вы будьте активным комментатором - и бэк на вас станет активным. *secret*

  • 174
    Надежда → vkpluss.ru

    Здравствуйте, у меня почему то не выводятся сами смайлы, а если я насильно прописываю строчку, то они вроде есть на странице, но при нажатии ничего не происходит, а вот если пишу в комментах просто код, то смайл отображается, может подскажете что делать?

    Ответить
    +1
    -1
    2 месяца назад #
  • 176
    Сергей

    Как внедрить ваши смайлы в Quick Chat?

    Ответить
    +1
    -1
    2 месяца назад #
    • 177
      Kama1118

      С Quick Chat не знаком... Для вывода смайлов есть функцию, читайте описание.

      Ответить
      +1
      -1
      2 месяца назад #

Здравствуйте, !

Ваш комментарий