[SVG] Sharing

Captain

Какие бекапы? О_о
Проверенные
Сообщения
6,000
Решения
1
Реакции
15,970
Баллы
10,575
Наш одмен выкатил обновление и во второй раз обвинил в плагиате. Ну окей, а теперь давайте посмотрим на правду.
Начнём с простым модификаций
101403
Код:
<?xml version="1.0" encoding="utf-8"?>
<template_modifications>
  <modification type="public" template="extra.less" modification_key="SvgSharingVkOk_less" description="Style buttons Vkontakte and Odnoklassniki" execution_order="10" enabled="1" action="preg_replace">
    <find><![CDATA[#^.*$#su]]></find>
    <replace><![CDATA[$0
{{ include('SvgSharing.less') }}
]]></replace>
  </modification>
  <modification type="public" template="share_page_macros" modification_key="SvgSharingFirst_page" description="Add buttons First" execution_order="10" enabled="1" action="str_replace">
    <find><![CDATA[<xf:contentcheck>]]></find>
    <replace><![CDATA[$0
                {{ include('SvgSharingFirst') }}]]></replace>
  </modification>
  <modification type="public" template="share_page_macros" modification_key="SvgSharingLast_page" description="Add buttons Last." execution_order="10" enabled="1" action="str_replace">
    <find><![CDATA[                <xf:if is="$xf.options.whatsAppShare">
                    <a class="shareButtons-button shareButtons-button--whatsApp" data-href="https://api.whatsapp.com/send?text={title}&nbsp;{url}">
                        <i></i>
                        <span>{{ phrase('whatsapp') }}</span>
                    </a>
                </xf:if>]]></find>
    <replace><![CDATA[$0
                {{ include('SvgSharingLast') }}]]></replace>
  </modification>
</template_modifications>
Как видим используется 3 модификации, причём очень смешно и лезем в extra.less
101404
Код:
<?xml version="1.0" encoding="utf-8"?>
<template_modifications>
  <modification type="public" template="share_controls.less" modification_key="mes_extend_sharing_share_controls" description="Add icons in share controls" execution_order="10" enabled="1" action="str_replace">
    <find><![CDATA[&.shareButtons-button--link]]></find>
    <replace><![CDATA[{{ include('mes_share_controls.less') }}
$0]]></replace>
  </modification>
  <modification type="public" template="share_page_macros" modification_key="mes_extend_sharing_share_page_macros" description="Add buttons" execution_order="10" enabled="1" action="preg_replace">
    <find><![CDATA[/(<xf:if is="\$xf.options.facebookLike">.*?)(<xf:if is="\$xf.options.emailShare">.*?)(<xf:if is="\$xf.options.linkShare AND \!\$hideLink">)/is]]></find>
    <replace><![CDATA[<xf:macro template="mes_extend_sharing" name="social" />
$1
<xf:macro template="mes_extend_sharing" name="messenger" />
$2
<xf:macro template="mes_extend_sharing" name="mail" />
$3]]></replace>
  </modification>
</template_modifications>
А теперь смотрим на наш плагин и прям копипаста модификацией не extra.less и модификацией страницы с поделиться страницей по регулярному выражению и вставкой макросов.
Но ладно идём дальше.
Он модифицирует extra.less и инклудит свой шаблон:
Код:
 <template type="public" title="SvgSharing.less" version_id="2000272" version_string="2.0.2.2"><![CDATA[@ssb-font-path: "styles/fonts/SvgSharing";

@ssb-blogger: "\e900";
@ssb-linkedin: "\e901";
@ssb-liveinternet: "\e902";
@ssb-livejournal: "\e903";
@ssb-skype: "\e904";
@ssb-telegram: "\e905";
@ssb-viber: "\e906";

.m-ssbContent(@ssb-content) {
    font-family: 'SvgSharing';
    content: @ssb-content;
}

@font-face {
  font-family: 'SvgSharing';
  src:  url('@{ssb-font-path}/SvgSharing.eot?a4pk47');
  src:  url('@{ssb-font-path}/SvgSharing.eot?a4pk47#iefix') format('embedded-opentype'),
    url('@{ssb-font-path}/SvgSharing.ttf?a4pk47') format('truetype'),
    url('@{ssb-font-path}/SvgSharing.woff?a4pk47') format('woff'),
    url('@{ssb-font-path}/SvgSharing.svg?a4pk47#SvgSharing') format('svg');
  font-weight: normal;
  font-style: normal;
}

.ssb-blogger {
  &:before {
    content: @ssb-blogger;
  }
}
.ssb-linkedin {
  &:before {
    content: @ssb-linkedin;
  }
}
.ssb-liveinternet {
  &:before {
    content: @ssb-liveinternet;
  }
}
.ssb-livejournal {
  &:before {
    content: @ssb-livejournal;
  }
}
.ssb-skype {
  &:before {
    content: @ssb-skype;
  }
}
.ssb-telegram {
  &:before {
    content: @ssb-telegram;
  }
}
.ssb-viber {
  &:before {
    content: @ssb-viber;
  }
}

.shareButtons-button {
    float: none;
    display: inline-block;
    margin: 0 1px;
    width: 35px;
    height: 35px;

    &.shareButtons-button--vk {
        &:hover { background-color: RGB(80,114,153); }
        > i:before { .m-faContent(@fa-var-vk); }
    }

    &.shareButtons-button--ok {
        &:hover { background-color: RGB(238,120,8); }
        > i:before { .m-faContent(@fa-var-odnoklassniki); }
    }

    &.shareButtons-button--mail {
        &:hover { background-color: RGB(22,141,226); }
        > i:before { .m-faContent(@fa-var-at); }
    }

    &.shareButtons-button--telegram {
        &:hover { background-color: RGB(45,164,221); }
        > i:before {
            .m-ssbContent(@ssb-telegram);
        }  
    }

    &.shareButtons-button--viber {
        &:hover { background-color: RGB(102,92,172); }
        > i:before {
            .m-ssbContent(@ssb-viber);
        }  
    }

    &.shareButtons-button--skype {
        &:hover { background-color: RGB(0,120,215); }
        > i:before {
            .m-ssbContent(@ssb-skype);
        }  
    }

    &.shareButtons-button--blogger {
        &:hover { background-color: RGB(247,145,56); }
        > i:before {
            .m-ssbContent(@ssb-blogger);
        }  
    }

    &.shareButtons-button--linkedin {
        &:hover { background-color: RGB(40,62,74); }
        > i:before {
            .m-ssbContent(@ssb-linkedin);
        }  
    }

    &.shareButtons-button--liveinternet {
        &:hover { background-color: RGB(90,171,225); }
        > i:before {
            .m-ssbContent(@ssb-liveinternet);
        }  
    }

    &.shareButtons-button--livejournal {
        &:hover { background-color: RGB(0,67,89); }
        > i:before {
            .m-ssbContent(@ssb-livejournal);
        }  
    }
}]]></template>
когда мы просто модифируем то, что сделано разработчиками инклудя туда свой шаблон:
Код:
<template type="public" title="mes_share_controls.less" version_id="2010170" version_string="2.1.1"><![CDATA[&.shareButtons-button--telegram
    {
        &:hover { background-color: #259bd8; }
        > i:before { .m-faContent(@fa-var-telegram); }
    }

    &.shareButtons-button--vk
    {
        &:hover { background-color: #4d75a3; }
        > i:before { .m-faContent(@fa-var-vk); }
    }

    &.shareButtons-button--ok
    {
        &:hover { background-color: #e67e17; }
        > i:before { .m-faContent(@fa-var-odnoklassniki); }
    }

    &.shareButtons-button--blogger
    {
        &:hover { background-color: #f79138; }
        > i:before { .m-faContent(@fa-var-blogger); }
    }

    &.shareButtons-button--linkedin
    {
        &:hover { background-color: #283e4a; }
        > i:before { .m-faContent(@fa-var-linkedin); }
    }

    &.shareButtons-button--viber
    {
        &:hover { background-color: #665cac; }
        > i:before { .m-faContent(@fa-var-viber); }
    }

    &.shareButtons-button--skype
    {
        &:hover { background-color: #0078d7; }
        > i:before { .m-faContent(@fa-var-skype); }
    }

    &.shareButtons-button--gmail
    {
        &:hover { background-color: #b23121; }
        > i:before { .m-faContent(@fa-var-google); }
    }

    &.shareButtons-button--yahoomail
    {
        &:hover { background-color: #430297; }
        > i:before { .m-faContent(@fa-var-yahoo); }
    }]]></template>
Прям копипаста...
Дальше у него идут шаблоны:
Код:
<template type="public" title="SvgSharingFirst" version_id="2000272" version_string="2.0.2.2"><![CDATA[<xf:if is="$xf.options.vkShare">
    <a class="shareButtons-button shareButtons-button--vk" data-href="https://vk.com/share.php?url={url}">
        <i aria-hidden="true"></i>
        <span>{{ phrase('vk') }}</span>
    </a>
</xf:if>

<xf:if is="$xf.options.okShare">
    <a class="shareButtons-button shareButtons-button--ok" data-href="https://connect.ok.ru/dk?st.cmd=WidgetSharePreview&amp;st.shareUrl={url}">
        <i aria-hidden="true"></i>
        <span>{{ phrase('ok') }}</span>
    </a>
</xf:if>

<xf:if is="$xf.options.mailShare">
    <a class="shareButtons-button shareButtons-button--mail" data-href="https://connect.mail.ru/share?url={url}&amp;title={title}">
        <i aria-hidden="true"></i>
        <span>{{ phrase('mail') }}</span>
    </a>
</xf:if>

<xf:if is="$xf.options.bloggerShare">
    <a class="shareButtons-button shareButtons-button--blogger" data-href="https://www.blogger.com/blog_this.pyra?u={url}&n={title}">
        <i aria-hidden="true"></i>
        <span>{{ phrase('blogger') }}</span>
    </a>
</xf:if>

<xf:if is="$xf.options.linkedinShare">
    <a class="shareButtons-button shareButtons-button--linkedin" data-href="https://www.linkedin.com/sharing/share-offsite?mini=true&url={url}&title={title}">
        <i aria-hidden="true"></i>
        <span>{{ phrase('linkedin') }}</span>
    </a>
</xf:if>

<xf:if is="$xf.options.liveinternetShare">
    <a class="shareButtons-button shareButtons-button--liveinternet" data-href="https://www.liveinternet.ru//journal_post.php?action=n_add&cnurl={url}&cntitle={title}">
        <i aria-hidden="true"></i>
        <span>{{ phrase('liveinternet') }}</span>
    </a>
</xf:if>

<xf:if is="$xf.options.livejournalShare">
    <a class="shareButtons-button shareButtons-button--livejournal" data-href="https://www.livejournal.com/update.bml?event=<a href='{url}' target='_blank'>{{ phrase('go_to_site') }}</a>&subject={title}">
        <i aria-hidden="true"></i>
        <span>{{ phrase('livejournal') }}</span>
    </a>
</xf:if>]]></template>
  <template type="public" title="SvgSharingLast" version_id="2000271" version_string="2.0.2.1"><![CDATA[<xf:if is="$xf.options.telegramShare">
    <a class="shareButtons-button shareButtons-button--telegram" data-href="https://telegram.me/share/url?url={url}&text={title}">
        <i></i>
        <span>{{ phrase('telegram') }}</span>
    </a>
</xf:if>

<xf:if is="$xf.options.viberShare">
    <a class="shareButtons-button shareButtons-button--viber" id="viber_share">
        <i></i>
        <span>{{ phrase('viber') }}</span>
    </a>
    <script>
        var buttonID = "viber_share";
        var text = "{title}";
        document.getElementById(buttonID)
            .setAttribute('href', "https://3p3x.adj.st/?adjust_t=u783g1_kw9yml&adjust_fallback=https%3A%2F%2Fwww.viber.com%2F%3Futm_source%3DPartner%26utm_medium%3DSharebutton%26utm_campaign%3DDefualt&adjust_campaign=Sharebutton&adjust_deeplink=" + encodeURIComponent("viber://forward?text=" + encodeURIComponent(text + " " + window.location.href)));
    </script>
</xf:if>

<xf:if is="$xf.options.skypeShare">
    <a class="shareButtons-button shareButtons-button--skype skype-share" data-href="" data-text="{title}">
        <i></i>
        <span>{{ phrase('skype') }}</span>
    </a>
    <script>
        (function(r, d, s) {
            r.loadSkypeWebSdkAsync = r.loadSkypeWebSdkAsync || function(p) {
                var js, sjs = d.getElementsByTagName(s)[0];
                if (d.getElementById(p.id)) { return; }
                js = d.createElement(s);
                js.id = p.id;
                js.src = p.scriptToLoad;
                js.onload = p.callback
                sjs.parentNode.insertBefore(js, sjs);
            };
            var p = {
                scriptToLoad: 'https://swx.cdn.skype.com/shared/v/latest/skypewebsdk.js',
                id: 'skype_web_sdk'
            };
            r.loadSkypeWebSdkAsync(p);
        })(window, document, 'script');
    </script>
</xf:if>]]></template>
Когда всё мы решаем простым 1 шаблоном реализующим 3 макроса:
Код:
<template type="public" title="mes_extend_sharing" version_id="2010170" version_string="2.1.1"><![CDATA[<xf:macro name="social">
    <xf:if is="$xf.options.mesVkShare">
        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--vk" data-href="https://vk.com/share.php?url={url}&title={title}">
            <i aria-hidden="true"></i>
            <span>{{ phrase('mes_vk') }}</span>
        </a>
    </xf:if>
    <xf:if is="$xf.options.mesOkShare">
        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--ok" data-href="https://connect.ok.ru/dk?st.cmd=WidgetSharePreview&st.shareUrl={url}">
            <i aria-hidden="true"></i>
            <span>{{ phrase('mes_ok') }}</span>
        </a>
    </xf:if>
    <xf:if is="$xf.options.mesBloggerShare">
        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--blogger" data-href="https://www.blogger.com/blog-this.g?u={url}&n={title}">
            <i aria-hidden="true"></i>
            <span>{{ phrase('mes_blogger') }}</span>
        </a>
    </xf:if>
    <xf:if is="$xf.options.mesLinkedInShare">
        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--linkedin" data-href="https://www.linkedin.com/shareArticle?mini=true&url={url}&title={title}">
            <i aria-hidden="true"></i>
            <span>{{ phrase('mes_linkedin') }}</span>
        </a>
    </xf:if>
    <xf:if is="$xf.options.mesLiveInternetShare">
        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--linkedin" data-href="https://www.linkedin.com/shareArticle?mini=true&url={url}&title={title}">
            <i aria-hidden="true"></i>
            <span>{{ phrase('mes_linkedin') }}</span>
        </a>
    </xf:if>
</xf:macro>

<xf:macro name="messenger">
    <xf:if is="$xf.options.mesTelegramShare">
        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--telegram" data-href="https://t.me/share/url?url={url}">
            <i aria-hidden="true"></i>
            <span>{{ phrase('mes_telegram') }}</span>
        </a>
    </xf:if>
    <xf:if is="$xf.options.mesViberShare">
        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--viber" id="viber_share">
            <i aria-hidden="true"></i>
            <span>{{ phrase('mes_viber') }}</span>
        </a>
        <xf:js>
            var buttonID = "viber_share";
            var text = "{title}";
            document.getElementById(buttonID)
                .setAttribute('href', "https://3p3x.adj.st/?adjust_t=u783g1_kw9yml&adjust_fallback=https%3A%2F%2Fwww.viber.com%2F%3Futm_source%3DPartner%26utm_medium%3DSharebutton%26utm_campaign%3DDefualt&adjust_campaign=Sharebutton&adjust_deeplink=" + encodeURIComponent("viber://forward?text=" + encodeURIComponent(text + " " + window.location.href)));
        </xf:js>
    </xf:if>
   
    <xf:if is="$xf.options.mesSkypeShare">
        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--skype" data-href="https://web.skype.com/share?url={url}&text={title}">
            <i aria-hidden="true"></i>
            <span>{{ phrase('mes_skype') }}</span>
        </a>
    </xf:if>
</xf:macro>

<xf:macro name="mail">
    <xf:if is="$xf.options.mesGoogleMailShare">
        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--gmail" data-href="https://mail.google.com/mail/?view=cm&su={title}&body={url}">
            <i aria-hidden="true"></i>
            <span>{{ phrase('mes_google') }}</span>
        </a>
    </xf:if>
    <xf:if is="$xf.options.mesYahooMailShare">
        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--yahoomail" data-href="http://compose.mail.yahoo.com/?to={url}&subject={title}&body={url}">
            <i aria-hidden="true"></i>
            <span>{{ phrase('con_acc.yahoo') }}</span>
        </a>
    </xf:if>
</xf:macro>]]></template>
А теперь давайте посмотрим на синтаксис движка:
Код:
<xf:macro name="buttons"
    arg-iconic="{{ false }}"
    arg-hideLink="{{ false }}"
    arg-label=""
    arg-pageUrl=""
    arg-pageTitle=""
    arg-pageDesc="">
    <xf:if contentcheck="true">
        <xf:css src="share_controls.less" />
        <div class="shareButtons {{ $iconic ? 'shareButtons--iconic' : '' }}" data-xf-init="share-buttons" data-page-url="{$pageUrl}" data-page-title="{$pageTitle}" data-page-desc="{$pageDesc}">
            <xf:if is="$label is not empty">
                <span class="shareButtons-label">{$label}</span>
            </xf:if>

            <div class="shareButtons-buttons">
                <xf:contentcheck>

                    <xf:if is="$xf.options.facebookLike">
                        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--facebook" data-href="https://www.facebook.com/sharer.php?u={url}">
                            <i aria-hidden="true"></i>
                            <span>{{ phrase('facebook') }}</span>
                        </a>
                    </xf:if>

                    <xf:if is="$xf.options.tweet.enabled">
                        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--twitter" data-href="https://twitter.com/intent/tweet?url={url}&amp;text={title}{{ $xf.options.tweet.via ? '&amp;via=' . $xf.options.tweet.via : '' }}{{ $xf.options.tweet.related ? '&amp;related=' . $xf.options.tweet.related : '' }}">
                            <i aria-hidden="true"></i>
                            <span>{{ phrase('twitter') }}</span>
                        </a>
                    </xf:if>

                    <xf:if is="$xf.options.redditShare">
                        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--reddit" data-href="https://reddit.com/submit?url={url}&amp;title={title}">
                            <i aria-hidden="true"></i>
                            <span>{{ phrase('reddit') }}</span>
                        </a>
                    </xf:if>

                    <xf:if is="$xf.options.pinterestShare">
                        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--pinterest" data-href="https://pinterest.com/pin/create/bookmarklet/?url={url}&amp;description={title}">
                            <i aria-hidden="true"></i>
                            <span>{{ phrase('pinterest') }}</span>
                        </a>
                    </xf:if>

                    <xf:if is="$xf.options.tumblrShare">
                        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--tumblr" data-href="https://www.tumblr.com/widgets/share/tool?canonicalUrl={url}&amp;title={title}">
                            <i aria-hidden="true"></i>
                            <span>{{ phrase('tumblr') }}</span>
                        </a>
                    </xf:if>

                    <xf:if is="$xf.options.whatsAppShare">
                        <a class="shareButtons-button shareButtons-button--brand shareButtons-button--whatsApp" data-href="https://api.whatsapp.com/send?text={title}&nbsp;{url}">
                            <i aria-hidden="true"></i>
                            <span>{{ phrase('whatsapp') }}</span>
                        </a>
                    </xf:if>

                    <xf:if is="$xf.options.emailShare">
                        <a class="shareButtons-button shareButtons-button--email" data-href="mailto:?subject={title}&amp;body={url}">
                            <i aria-hidden="true"></i>
                            <span>{{ phrase('email') }}</span>
                        </a>
                    </xf:if>

                    <xf:if is="$xf.options.linkShare AND !$hideLink">
                        <a class="shareButtons-button shareButtons-button--link is-hidden" data-clipboard="{url}">
                            <i aria-hidden="true"></i>
                            <span>{{ phrase('link') }}</span>
                        </a>
                    </xf:if>
                </xf:contentcheck>
            </div>
        </div>
    </xf:if>
</xf:macro>

<xf:macro name="share_clipboard_input" arg-label="!" arg-text="!" arg-successText="">
    <xf:css src="share_controls.less" />

    <xf:set var="$id">{{ unique_id() }}</xf:set>

    <div class="shareInput" data-xf-init="share-input" data-success-text="{$successText}">
        <xf:if is="$label">
            <label class="shareInput-label" for="{$id}">{$label}</label>
        </xf:if>
        <div class="inputGroup inputGroup--joined">
            <div class="shareInput-button inputGroup-text js-shareButton is-hidden"
                data-xf-init="tooltip" title="{{ phrase('copy_to_clipboard')|for_attr }}">

                <i aria-hidden="true"></i>
            </div>
            <xf:textbox class="shareInput-input js-shareInput"
                value="{$text}" readonly="true" id="{$id}" />
        </div>
    </div>
</xf:macro>
Т.е получается, что разработчики так же у него сплагиатили весь синтаксис этого шаблона. Потому что мы видим следующие:
  • Измененные настройки в каждом сервисе
  • data-href - разные ссылки
  • Фраза для сервиса
Какой у нас гениальный скуймен у которого все украли и разработчики движка....
А теперь давайте посмотрим на реальные отзывы где он пытается ещё сказать, что все пиздаболы а я дартаньян.
101405
И пытается заявить, о том что якобы не каких проблем нету и все всё врут.
А теперь давайте посмотрим на его реализацию вк, где не шлётся тайтл:
https://vk.com/share.php?url={url}
теперь открываем доку видимо и ссылку украли у него :(
101406
Эх а где наш заголовок? А теперь смотрим наш вариант:
https://vk.com/share.php?url={url}&title={title}
101407
И ух ты, но чукча не читатель.
А теперь давайте окунемся в документацию:
share_options (object) — параметры публикации. Объект, который может содержать поля:
  • url (string) — URL страницы, ссылка на которую должна быть опубликована. Обратите внимание — кириллические адреса нужно передавать в Punycode.
  • title (string) — заголовок публикации. Если параметр не указан, заголовок будет взят со страницы публикации автоматически. Подробнее смотрите в разделе 5. Используемая информация
  • image (string) — URL изображения для публикации. Если параметр не указан, изображение будет взято со страницы публикации автоматически. Подробнее смотрите в разделе 5. Используемая информация
  • noparse (boolean) — если в этом параметре передано значение true, то сервер ВКонтакте не будет делать дополнительный запрос для загрузки недостающей информации с публикуемой страницы. Если же значение false, то запрос будет отправляться всегда.
  • no_vk_links (integer, [0,1]) — если в этом параметре передано значение 1, в окне публикации не будет активных ссылок на профиль пользователя (доступно только на мобильных устройствах).
Как мы видим, что тайтл не обязателен. Но гость у нас не может достучаться до нашего форума или получить ответ или некорректно настроенный веб сервер и мы просто смело можем больше не видеть тайтла. Но он же у нас всё знает, телеграмм у нас так же не работает корректно и не шлёт и telegram всегда использует t.me но не telegram.me адрес. Так же и скайп который от силы вообще не работает и использование <script> говорит о "хорошем" знании движка и использование какого то мусора. когда даже js не нужен для скайпа. И за это вы платите ещё, за стандартный синтаксис XF с добавлением в шаблоны за изменение 3 параметров в шаблоне:
  • Иконка
  • Фраза
  • Ссылка
И все плагиаторы... Все такие плохие, мы же как всегда остаёмся для всех всегда плохими. И с таким успехом можно обвинить каждого разработчика, что он плагиатор ведь тут обычное добавление идёт и использование синтаксиса. Своего он ничего не привнёс, новый шаблон не написал свой со своей структурой и т.д и по его логике тогда разработчики плагиаторы скумена. Но все равно, мы всегда будем плохими и за то что не берём с вас бабки и помогаем абсолютно бесплатно. Если бы я брал за каждую модификацию и условие я был бы милиардером которые в 100500 раз сложнее и не только и абсолютно бесплатно многим просто написал. А тут синтаксис и копипаста движка и причем детские модификации и очень глупые буду брать бабки, ведь на дошик не хватает. А вот мнения людей:
101409
Просто будьте внимательны и чувствуйте где правда, а где ложь. Многое было описано уже и не раз в #атмосферафорума2.1 всем к прочтению в обязательном порядке. А модификации, что он делает и может сделать любой рядовой пользователь как и бб коды. Гните свою линию и не бегайте за доширачниками, а если есть вопросы не бойтесь задавать как сделать то или то с нормальным описанием, что вам нужно.
 
Последнее редактирование:
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу