l Створюємо віджет "Публікації на схожі теми" - Довідник блогера

Створюємо віджет "Публікації на схожі теми"

Сьогодні ми продовжимо роботу над перелінковкою нашого блогу.

У попередній публікації я вже розповів, як зв'язувати різні сторінки cайту на Blogger з допомогою "хлібних крихт".

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


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

Для початку створіть резервну копію свого блогу і запишіть її на диск свого комп'ютера. У разі допущеної помилки вона вам знадобиться для відновлення роботи блогу.

 Крок 1. Заходимо у макет / змінити HTML.
 Крок 2. З допомогою клавіш CTRL+F знаходимо фрагмент коду <data:post.body/>. (У моєму шаблоні такий код зустрічається тричі. Відтак я встановив скрипт під останнім).

 Крок 3. Відразу під знайденим рядком вставляємо наступний скрипт: 

<!-- Схожі статті із категорії. Віджет. Початок -->

        <b:if cond='data:blog.pageType == &quot;item&quot;'>
            <div class='similiar'>
               
                <div class='widget-content'>
                <h4>Публіккації на схожі теми:</h4>
                <div id='data2007'/><br/><br/>
                   
                    <script type='text/javascript'>

                    var homeUrl3 = &quot;<data:blog.homepageUrl/>&quot;;
                    var maxNumberOfPostsPerLabel = 5;
                    var maxNumberOfLabels = 3;

                    maxNumberOfPostsPerLabel = 6;
                    maxNumberOfLabels = 3;


                    function listEntries10(json) {
                      var ul = document.createElement(&#39;ul&#39;);
                      var maxPosts = (json.feed.entry.length &lt;= maxNumberOfPostsPerLabel) ?
                                     json.feed.entry.length : maxNumberOfPostsPerLabel;
                      for (var i = 0; i &lt; maxPosts; i++) {
                        var entry = json.feed.entry[i];
                        var alturl;

                        for (var k = 0; k &lt; entry.link.length; k++) {
                          if (entry.link[k].rel == &#39;alternate&#39;) {
                            alturl = entry.link[k].href;
                            break;
                          }
                        }
                        var li = document.createElement(&#39;li&#39;);
                        var a = document.createElement(&#39;a&#39;);
                        a.href = alturl;

                        if(a.href!=location.href) {
                            var txt = document.createTextNode(entry.title.$t);   
                            a.appendChild(txt);
                            li.appendChild(a);
                            ul.appendChild(li);   
                        }
                      }
                      for (var l = 0; l &lt; json.feed.link.length; l++) {
                        if (json.feed.link[l].rel == &#39;alternate&#39;) {
                          var raw = json.feed.link[l].href;
                          var label = raw.substr(homeUrl3.length+13);
                          var k;
                          for (k=0; k&lt;20; k++) label = label.replace(&quot;%20&quot;, &quot; &quot;);
                          var txt = document.createTextNode(decodeURI(label));
                          var h = document.createElement(&#39;b&#39;);
                          h.appendChild(txt);
                          var div1 = document.createElement(&#39;div&#39;);
                           div1.appendChild(h);
                          div1.appendChild(ul);
                          document.getElementById(&#39;data2007&#39;).appendChild(div1);
                        }
                      }
                    }
                    function search10(query, label) {

                    var script = document.createElement(&#39;script&#39;);
                    script.setAttribute(&#39;src&#39;, query + &#39;feeds/posts/default/-/&#39;
                     + label +
                    &#39;?alt=json-in-script&amp;callback=listEntries10&#39;);
                    script.setAttribute(&#39;type&#39;, &#39;text/javascript&#39;);
                    document.documentElement.firstChild.appendChild(script);
                    }

                    var labelArray = new Array();
                    var numLabel = 0;

                    <b:loop values='data:posts' var='post'>
                      <b:loop values='data:post.labels' var='label'>
                        textLabel = &quot;<data:label.name/>&quot;;
                       
                        var test = 0;
                        for (var i = 0; i &lt; labelArray.length; i++)
                        if (labelArray[i] == textLabel) test = 1;
                        if (test == 0) {
                           labelArray.push(textLabel);
                           var maxLabels = (labelArray.length &lt;= maxNumberOfLabels) ?
                                  labelArray.length : maxNumberOfLabels;
                           if (numLabel &lt; maxLabels) {
                              search10(homeUrl3, textLabel);
                              numLabel++;
                           }
                        }
                      </b:loop>
                    </b:loop>
                    </script>

                </div>

            </div>
        </b:if>               

<!-- Кінець коду: Схожі статті. Віджет. -->

Додам, що у рядках  -
var maxNumberOfPostsPerLabel = 5;
                    var maxNumberOfLabels = 3;

                    maxNumberOfPostsPerLabel = 6;
                    maxNumberOfLabels = 3;
ви можете вказати власні цифри. Так само можна змінити і назву віджету. У мене вона виглядає так: <h4>Публіккації на схожі теми:</h4>

Створення "Схожих публікацій" із допомогою сторонніх сервісів 

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

Особисто я користувався одним із таких сервісів - nRelate.

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

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

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

Створюємо віджет "Публікації на схожі теми" Створюємо віджет "Публікації на схожі теми" Reviewed by Vasyl Markovych on вересня 26, 2013 Rating: 5

Немає коментарів:

На платформі Blogger.