Until recently I used the plugin “Advertising Manager”. However, I am not quite satisfied the set of its capabilities. For example, the inability to display scheduled advertisements, or the inability to display ads in the posts only certain categories. Etc.
That’s why I wrote my own plugin to control the advertising on the blog – Simple Ads Manager. I tried to create a plugin that will satisfy most requests of any blogger to manage advertising on the blog. And I think I managed it.
Simple Ads Manager is easy to use plugin providing a flexible logic of displaying advertisements.
Features
- Flexible logic of advertisements rotation based on defined weight of each advertisement in group (Ads Place)
- Custom default ad for each Ads Place Allowed types of ad’s codes are HTML, javascript, PHP
- Codes of Google DoubleClick for Publishers (DFP) supports
- More flexibility of displaying ads by using Ads Zone selector
- Outputting ads as widget
- Outputting ads as shortcodes in any place of single post/page content
- Outputting ads in any place of theme template using output functions
- Customizable outputting ads as block of ads
- Automatic outputting ads in single post/page if allowed
- Customizable limitation of displaying advertisements by types of page
- Customizable limitation of displaying advertisements on single post page by post ID (IDs)
- Customizable limitation of displaying advertisements on single post page or category archive page by category (categories)
- Customizable limitation of displaying advertisements on single post page or author archive page by author (authors)
- Customizable limitation of displaying advertisements on single post page or tag archive page by tag (tags)
- Customizable limitation of displaying advertisements on custom type single post page or custom type archive page by Custom Type (Types)
- Customizable blocking of displaying advertisements on single post/page by post/page ID (IDs)
- Customizable blocking of displaying advertisements on single post page or category archive page by category (categories)
- Customizable blocking of displaying advertisements on single post page or author archive page by author (authors)
- Customizable blocking of displaying advertisements on single post page or tag archive page by tag (tags)
- Customizable blocking of displaying advertisements on custom type single post page or custom type archive page by Custom Type (Types)
- Schedule of displaying each advertisement if allowed
- Customizable limitation of displaying advertisements by hits
- Customizable limitation of displaying advertisements by clicks
- Statistics of hits
- Statistics of clicks (your own advertisement image mode)
- Customizable accuracy of bots and crawlers detection
- Counting revenue from ads placement, display ads and clicks on advertisements
Available languages
- English
- Russian
- German by Fabian Krenzler and Ulrich Simon
- Belarusian by Alexander Ovsov (Web Geek Sciense)
- Spanish by xiaobai_wp
- Italian by Alfredo
The Concept
The main object of the plugin is “Ads Place“. Each Ads Place is a container for the advertisements and provides the logic of the show and rotation. In addition, one of the parameters of advertising space is “patch ad code”, ie ad to be shown if and only if the logic of ads this Ads Place does not permit to show none of the advertisements contained in this Ads Place. One Ads Place can contain any number of objects “advertisement”.
Object “advertisement” rigidly attached to his container “Ads Place”. Its parameters determine frequency (weight) of displaying and limiting displaying from “show all pages” to “show the articles with ID … ” and show from date to date (the schedule).
Additional object “Ads Zone” is selector developed for increasing the flexibility of displaying ads. This optional object can be useful for conducting advertising campaigns using a large number of promotional materials.
The additional object “Ads Block” allows to display the block of advertisements.
Installation
- Upload the plugin folder to the folder
/wp-content/plugins/
- Activate the plugin on the Plugins page
- Configure your plugin to meet your needs
- Create an Ads Spaces in the right quantity and fill them with advertisements
Options
Go to the page Ads->Settings
Views per Cycle – the number of impressions an ad for one cycle of rotation, provided that this ad has maximum weight (the activity). In other words, if the number of hits in the series is 1000, an ad with a weight of 10 will be shown in 1000, and the ad with a weight of 3 will be shown 300 times.
Do not set this parameter to a value less than the maximum number of visitors which may simultaneously be on your site – it may violate the logic of rotation.
Not worth it, though it has no special meaning, set this parameter to a value greater than the number of hits your web pages during a month. Optimal, perhaps, is the value to the daily shows website pages.
Display Ad Source in – you can display advertisement target in new or current window (tab). Select target window (tab).
Auto Inserting Settings – here you can select the Ads Places and allow the display of their ads before and after the content of single post.
Google DFP Settings – if you want to use codes of Google DFP rotator, you must allow it’s using and define your pub-code.
Statistics Settings
Bots and Crawlers detection
For obtaining of more exact indexes of statistics and incomes it is preferable to exclude data about visits of bots and crawlers from the data about all visits of your blog. If enabled and bot or crawler is detected, hits of ads won’t be counted. Select accuracy of detection but use with caution – more exact detection requires more server resources.
Allow Bots and Crawlers detection – If allowed, hits of detected bot won’t be counted.
Accuracy of Bots and Crawlers Detection:
- Inexact detection – This method is based on an analysis of the request header. Inaccurate method.
- Exact detection – This method uses the Browser library by Chris Schuld for detection of bots. Recommended.
- More exact detection – This method uses “browscap” data for bots detection. Very exact and very slow method. If browscap not defined in your php.ini, this method is unavailable.
Display of Currency:
- Auto – auto detection of currency from blog settings.
- USD – Forcing the display of currency to U.S. dollars.
- EUR – Forcing the display of currency to Euro.
Ads Place creation and configuration
Go to your list of Ads Places (Ads -> Ads Places) and click the “Add New Place”. In the opened editor window configure current Ad Place.
Enter a name and a description of the Ads Place. In principle, it is not mandatory parameters, because these parameters don’t influence anything, but experience suggests that after a while all IDs usually will be forgotten and such information may be useful.
Ads Place Size – in this version is only for informational purposes only, but in future I plan to use this option. It is desirable to expose the real size.
Ads Place Patch – it’s an ad that will appear in the event that the logic of basic ads outputing of this Ads Place on the current page will not be able to choose a single basic ad for displaying. For example, if all basic announcements are set to displaying only on archives pages or single pages, in this case the patch ad of Ads Place will be shown on the Home page. Conveniently to use the patch ad of Ads Place where you sell the advertising place for a limited time – after the time expiration of ordered ad will appear patch ad. It may be a banner leading to your page of advertisement publication costs or a banner from AdSense.
Patch can be defined:
- as combination of the image URL and target page URL
- as HTML code or javascript code
- as name of Google DoubleClick for Publishers (DFP) block
If you select the first option (image mode), tools to download/choosing of downloaded image banner become available for you.
Codes – as Ads Place can be inserted into the page code not only as widget, but as a short code or by using function, you can use code “before” and “after” for centering or alignment of Ads Place on the place of inserting or for something else you need. Use HTML tags.
Advertisement creation and configuration
Go to the list of Ads Places (Ads -> Ads Places), move the mouse to the desired Ads Place, select in the row menu that appears “View Ads” for the transition to the advertisements list of this Ads Place or “Add Ad” for the transition to the editor of a new ad. If you went to the list of ads, click on “Add New Ad”.
Enter a name and a description of the advertisement. These parameters are optional, because don’t influence anything, but help in the visual identification of the ad (do not forget which is which).
Ad Code – code can be defined as a combination of the image URL and target page URL, or as HTML code, javascript code, or PHP code (for PHP-code don’t forget to set the checkbox labeled “This code of ad contains PHP script). If you select the first option (image mode) you can keep statistics of clicks and also tools for uploading/selecting the downloaded image banner becomes available to you.
Restrictions of Advertisement Showing
Ad Weight – coefficient of frequency of show of the advertisement for one cycle of advertisements rotation.
0 – ad is inactive, 1 – minimal activity of this advertisement, 10 – maximal activity of this ad.
Restrictions by the type of pages – select restrictions:
- Show ad on all pages of blog
- Show ad only on pages of this type – ad will appear only on the pages of selected types
- Show ad only in certain posts – ad will be shown only on single posts pages with the given IDs (ID items separated by commas, no spaces)
Additional restrictions
- Show ad only in single posts or categories archives of certain categories – ad will be shown only on single posts pages or category archive pages of the specified categories
- Show ad only in single posts or authors archives of certain authors – ad will be shown only on single posts pages or author archive pages of the specified authors
Use the schedule for this ad – if necessary, select checkbox labeled “Use the schedule for this ad” and set start and finish dates of ad campaign.
Use limitation by hits – Use this parameter for limiting displaying of ad by hits.
Use limitation by clicks – Use this parameter for limiting displaying of ad by clicks.
Prices – your prices for that ad.
- Ad placement per month – used only for scheduled ads.
- Per Thousand Hits – Not only humans visit your blog, bots and crawlers too. In order not to deceive an advertiser, you must enable the detection of bots and crawlers.
- Per Click – To calculate the earnings on clicks, you must enable counting of clicks for that ad.
Ads Zone creation and configuration
Ads Zone is selector that used to select the appropriate Ads Place for each type of displayed page.
Go to your list of Ads Zones (Ads -> Ads Zones) and click the “Add New Zone”. In the opened editor window configure current Ads Zone.
Enter a name and a description of the Ads Zone.
Select default Ads Place.
Select the appropriate Ads Places for each type of page, category or author or leave “Default” value. You can block displaying Ads Place on needed type of page selecting “None” value.
Ads Block creation and configuration
Ads Block used for outputting block of ads.
Go to your list of Ads Blocks (Ads -> Ads Blocks) and click the “Add New Block”. In the opened editor window configure current Ads Block.
Enter a name and a description of the Ads Block.
Enter number of lines and columns of Ads Block. After changing these properties you must save Ads Block settings before using Ads Block Editor.
Configure styles for Ads Block and Block’s items. Use Stylesheet rules for defining these properties. For example: url(sheep.png) center bottom no-repeat
for background property or 5px solid red
for border property.
Important Note: As the Ads Block is the regular structure, predefined styles of individual items for drawing Ads Block’s elements aren’t used. Define styles for Ads Block Items on Ads Block Editor page!
Customize Ads Block structure (select Ads Place or Ads Zone or Single Ad for each item of block).
Usage
There are three variants for output: widgets, short codes, the function… and auto inserting…
Widgets
Go to the widgets page (Appearance->Widgets). In the area of available widgets locate widget “Ads Place” and drag it to the necessary sidebar. You can also use widgets “Ads Zone” and “Single Ad”.
Configure your widget:
- Title – title of widget. If not needed, leave empty.
- Ads Place – select Ads Place from a list of all Ads Places.
- Hide widget style – in some theme templates it is necessary for the sidebar in the blog header.
- Allow using previously defined “before” and “after” codes of Ads Place – these are the codes that are defined for each Ads Place as “code before” and “code after”.
Widgets “Ads Zone” and “Single Ad” can be configured in the same way.
Shortcodes
Shortcode “sam” enables you to insert Ads Place anywhere in the post’s content.
- id – ID of Ads Place
- codes – allow or not allow to use Ads Place codes “before” and “after”. Default “false”
Shortcode “sam_zone” enables you to insert Ads Zone anywhere in the post’s content.
- id – ID of Ads Zone
- codes – allow or not allow to use Ads Place codes “before” and “after”. Default “false”
Shortcode “sam_ad” enables you to insert Single Ad anywhere in the post’s content.
- id – ID of Ad
- codes – allow or not allow to use Ads Place codes “before” and “after”. Default “false”
Shortcode “sam_block” enables you to insert Ads Block anywhere in the post’s content.
- id – ID of Ads Zone
Output functions
In order that would insert Ads in any place of theme template, use the drawAdsPlace, drawAdsZone or drawAd functions.
Output functions are defined as follows:
1 2 3 4 |
function drawAdsPlace($args = null, $codes = false) function drawAdsZone($args = null, $codes = false) function drawAd($args = null, $codes = false) function drawAdsBlock($args = null) |
- args – array, which may include id (ID of Ads Place) or/and name (the name of Ads Place, not recommended)
- codes – bool|array, allow or not allow to use Ads Place codes “before” and “after”. Default “false”. If bool value, codes ‘before’ and ‘after’ will be received from Ads Place record. If array value, codes ‘before’ and ‘after’ will be received from array.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Ads Place output if(function_exists('drawAdsPlace')) drawAdsPlace(array('id' => 1), true); // or if(function_exists('drawAdsPlace')) drawAdsPlace(array('id' => 1), array('before' => '<div class="ad">', 'after' => '</div>')); // Ads Zone output if(function_exists('drawAdsZone')) drawAdsZone(array('id' => 1), true); // or if(function_exists('drawAdsZone')) drawAdsZone(array('id' => 1), array('before' => '<div class="ad">', 'after' => '</div>')); // Single Ad output if(function_exists('drawAd')) drawAd(array('id' => 1), true); // or if(function_exists('drawAd')) drawAd(array('id' => 1), array('before' => '<div class="ad">', 'after' => '</div>')); // Ads Block output if(function_exists('drawAdsBlock')) drawAdsBlock(array('id' => 1)); |
Auto Inserting
Designed for automatic insertion of ad codes before and after the content of single post. Configuring is on plugin settings page.
Miscellaneous
At first glance, it might seem that the plugin is too heavy – as did 500 kb codes. But do not be terrified ahead of time, the plugin is using the technology of saving resources. In other words, in the Face Side is loading only 23 kb of codes, of which 21 kb PHP-code and 2 kb javascript code. Everything else are extentions for the admin mode, and even then, not all are loading en masse, but only if necessary.
Video Lessons:
Donations
Donations List
Many thanks to everyone who supports the development of this plugin:
Michael Kiepert, Andrea Vacondio
Download
© 2011 – 2018, minimus. All rights reserved.
Hi
I installed the plugin. On one site I can create Ad places, another site I can’t. Is this due to database permissions?
Thanks
Dan
Total Comments by Dan: 2
Maybe…
WordPress database error: [Failed to read auto-increment value from storage engine]
INSERT INTO
eb272_sam_places
(name
,description
,code_before
,code_after
,place_size
,place_custom_width
,place_custom_height
,patch_img
,patch_link
,patch_code
,patch_adserver
,patch_dfp
,patch_source
,trash
) VALUES ('Place1','','','','468x60','','','','','','0','','0','0')Total Comments by Dan: 2
Hi.
Nice plugin you’ve created. I changed from a nother adverticement plugin to yours because of your features. There is still one thing I do miss. You run a update on the $atable.”sam_ads” to update the hit counter. What about a $atable.”sam_ads_hits” that contains ad_id, timestamp and maybe a couple of checkboxes (alias bit variables) if needed. A little rewrite of the update hits and read hits in the admin module would be needed ofcourse. But historical data is a very nice feature. I don’t really need a GUI to begin with as the data is available backend, but I suspect others would like that 🙂
Hope to see that on the todo-list soon
Total Comments by Christian: 2
This feature already was planned and now is developing…
Great news! Thanks!
Total Comments by Christian: 2
Большое спасибо! очень хороший плагин. Скажите пожалуйста, у меня тема в мобильном устройстве показывает хорошо, а как вставил рекламный код от adsens на одной странице, эта страница показывает криво, остальные страницы нормально, получается, что где реклама, показывает криво на мобильном, что можно сделать?может есть какие то настройки. Заранее спасибо.
Total Comments by Фрунзик: 2
Это проблема AdSense. Код не предназначен для мобильных устройств (не является адаптивным), поэтому “растопыривает” тему …
Спасибо большое надо ставить адаптированный код? для мобилних?
Total Comments by Фрунзик: 2
Может быть … Я не изучал этот вопрос … Возможно добавлю возможность переключения рекламных объявлений для мобильных и планшетов …
I’m having a blonde day,
For a client to know the CTR rates can I just tell them how many hits their add has had? Or is it more complicated then that?
Thank you 🙂
Total Comment by Dulcie: 1
In plans… See here…
Is it possible to have banner ads also in about the middle of the loop? For example I want to display a banner ads place after the first two posts on home and category pages.
Total Comments by owcv: 5
If it’s request of new plugin feature, post it on support forum … In case it’s question, answer is: use functions to output ads in the loop…
Which function shall I use and how to offset the banner that it’s placed after 2 or 3 posts?
If it would be a feature of SAM within the next releases that would be great, but I can’t post on the support forum to make the feature request you proposed.
Total Comments by owcv: 5
Why you can’t post? You can’t register on support forum? Only registered users can post messages on the forum.
Hey!
I found a bug on the plugin, and post a painful solution on support, please review the bug and the solution.
//wordpress.org/support/topic/database-table-wp_sam_ads-hasnt-been-upgraded-2?replies=2#post-4966212
Total Comment by Perecedero: 1
Thanks a lot! But I already developed new mechanism of upgrading DB tables.
I had to deactivate this plugin. It prevents the visual editor from displaying in the WordPress admin.
Total Comment by Ruth: 1
You are wrong! Turn off AdStop add-on of browser…
Any breaking news about cache?
Total Comments by Marcel: 2
Ready… TODO List…
Hello, after Plugin Update today it shows this error message:
Warning: Invalid argument supplied for foreach() in plugins/simple-ads-manager/ad.class.php on line 524
Wordpress Version: 3.8
SAM Version: 2.0.73
SAM DB Version: 2.5
PHP Version: 5.2.17
MySQL Version: 5.1.72-log
Memory Limit: 256M
Help is appreciated.
Total Comments by Thomas: 3
Upgrade to 2.0.74 …
Same warning after update to 2.0.74
Total Comments by Thomas: 3
Resolved…
WOOHOO you are great! Thanks a lot minimus!
Total Comments by Thomas: 3
we love the software and have upgraded the platform by adding pixel tracking. This allow up to track conversion on 3rd part websites and local reports now shows impressons, clicks and converts.
Total Comment by Scott: 1
Большое спасибо за очень хороший плагин!! После последнего обновления сильно увеличилось количество запросов и нагрузка на процессор sam-ajax.php. С чем это может быть связано?
Total Comments by Николай: 3
Наверно это было вызвано плагином WP Super Cache и не отключенном режимом PHP в настройках
Total Comments by Николай: 3
А теперь как?
Количество запросов sam-ajax.php по прежнему высокое, плюс к нему добавился sam-ajax-loader.php, который уже даже обогнал по нагрузке
Total Comments by Николай: 3
Thank you for fast unbugging 🙂 Everything runs normal again 🙂
Total Comments by Jerry: 2
Hi and thanks for the work you’ve put into this great plugin.
I have a ad display request from a client which I was hoping you could add as feature to SAM. I need to be able to display an ad block as an alternative on a given type of page. F.ex. by using an ad zone I set the default ad place as “Ad Tower” and that should be displayed on all pages except where author is X then I need to display the ad block “X block” which contains a column of four ad places.
Best regards,
Andri
Total Comments by Andri: 3
Dear Sir
I would like to use simple ads manager to my own template.
I would like to display the ads in different part of my template.
But I don’t know how can call my ads, to display it in the template.
I would like to do it manually, Please, guide me , what should I do?
Best regard
Navid
Total Comments by Navid: 2
Hi, Recently i’ve been having a lot of 500 errors, upon checking the logs it appears that Simple Ads Manager (may) be the problem. If you can contact me by my email, I’ll show you the logs.
Regards
Total Comment by Mervyn Reesby: 1
First thank you for nice plugin.As I saw, there is possibility to define special ad size or even custom ad size.
But how we can use this size?
Or maybe is any possibility to chose the image size from witch we defined in our themes , by using :
add_theme_support( ‘post-thumbnails’ );
add_image_size( ‘STR’, X, Y, true );
looking forward for the answer.
Best Regard
Total Comments by Navid: 2
Hi Minimus
Is there a way I can make an ad-block to be displayed as an alternative in an ad-zone.
Alternative option would be to display an ad-block in an ad-place via code mode. That way I could use the ad-place in the ad-zone to display an ad-block.
Is there a line of code in the plugin I could change to make this work, as a quick fix?
Best regards,
Andri
Total Comments by Andri: 3
I found this errors on google chrome console log when I opened sam zone editor
Because of it, image uploader in zone editor doesn’t work. But those files it itself are exists but cannot be loaded. Do you know something about this?
Total Comments by Hilaladdiyar: 2
What errors detects Google Chrome?
I’ve inserted the screenshot using this comment form editor, but it seems wordpress removed it. You can see the error here //www.seputarukm.co.id/uploads/2014/01/sam-error.jpg. All styles dan javascript files cannot be loaded. But, it just happened in chrome, and works fine in other browsers. Do you know something about it?
Total Comments by Hilaladdiyar: 2
Google Chrome does not like localhost. To avoid security problems…
Having issues with 3.8.1 and a RocketTheme pack. Seems it all worked fine before the upgrade to 3.8.1 and the latest RocketTheme/Gantry Framework. Updated it and BOOM the ad manager is broken. If I place them in widgets for the sidebar(s), it screws up all the subsequent sidebar alignments and does not show the ad. I’ve tried re-adding the widget and no such luck. Also seems that now the browser will not recognize the folder/files that were in the plugin from a year ago. Not sure if that’s a side effect or an error or what. I can pull the files u p manually in the browser, but even a simple image embed won’t be recognized by the site/browser.
I’m not some script genius, and considering this is a client site, it’s not a good thing 🙂 Any help/revisions would be very helpful. Thanks!
Total Comments by Tony Stevens: 2
If you can send me this template, I’ll try to find out what the problem, using my test blog …
Sure thing, I assume by email? I have the theme at home on that computer, not this computer at my day job, so it won’t be until tonight. But I can make that happen.
Total Comments by Tony Stevens: 2
Yes, by e-mail (minimus AT simplelib.com) …
On a wild guess I’d say it’s a CSS problem since alignments are broken and things do not show. I’d check with the change log of the theme and contact the theme’s developer.
Total Comments by Mark: 3
Great plugin! Is there anyway to show an ad zone on a single page post, that is specific to the category the post is in? I have the ad zones showing for each category, but once you dril down to the the single post page, it just shows the default ad. Any way to set the ad for each category-signle page post, like you can do for the cateogry view?
Total Comments by kevin phillips: 2
Not now… This feature is planned to add to next version…
Здравствуйте! Как я могу вывести все баннера, добавленные в Ads Place? У меня в Ads Place (id = 15) 5 баннеров. Хочу вывести их все на одной странице с помощью php. Пишу if(function_exists(‘drawAdsPlace’))drawAdsPlace(array(‘id’=>15),true); , но выводиться только один. Спасибо
Total Comment by Сергей: 1
Working on a site with banner ads, but i don’t want to show double ads in an ad block is there a way to control that? And if i have a block of 6 places and i have 5 ads that it doesn’t fill in the last one with an ad that’s displayed there already?
tnx.
Total Comment by Tammo Haan: 1
Minimus are you available for contract work? I have a few jobs i would like to use simple ad manager on, but need to have the ads show up on on single posts, within their category. I would like to use the plugin on future jobs going forward and i would need the feature to do this. thanks, kevin
Total Comments by kevin phillips: 2
It has been impossible for us to access the Ad Places in the plugin. Any other part is OK to go to, but whenever we hit Ad Places, we get this:
Gateway Time-out
The gateway did not receive a timely response from the upstream server or application.
Contacting our hosting provider for some solutions, they looked into and replied this:
I have re-created the issue and it seems that the plugin is hitting the server limits for maximum timeout. I would advise that you check with the plugin developer on what could be causing this slow responsiveness from the plugin. Please update this ticket if we can assist with the issue further.
Any suggestions? Thanks a lot
Total Comment by Pedro: 1
Hi!
When I disable “Include Clicks in the advertiser report” clicks are sent nevertheless. Could you fix that bug please? Thank you very much!
Total Comment by Franz Sauerstein: 1
Iam getting a very strange error :
Notice: Undefined index: HTTP_ACCEPT_LANGUAGE in /var/www/vhosts/street-stars.net/htdocs/wp-content/plugins/simple-ads-manager/sam.class.php on line 453 Notice: Undefined index: HTTP_ACCEPT_LANGUAGE in /var/www/vhosts/street-stars.net/htdocs/wp-content/plugins/simple-ads-manager/widget.class.php
We moved recently to a new domain and upgraded to the latest WP version.
any suggestions?
Total Comment by streetstars: 1
By using this plugin, would i be able to set a different ad for each author? e.g. I have an author called “Juan”, and i want Juan to have his own ad shown on his articles, so he would make some money. I also have an author called “Marcos”, and i would like to have the same kind of possibility (to him set his own ad) for him. Puting on short, each author should have his own ads shown on his articles.
Sorry if it to obvious… i definitily saw something about author on the description, but couldnt understand it fully. Thats why i’m asking.
Total Comment by Diewgo: 1
1. You can set extended restrictions for ads (Show ad only in single posts or authors archives of certain authors)
2. If you want each author set his own ads himself, set value of “Minimum Level for access to menu” to “author”…
Здравствуйте!
Поставил Ваш плагин на наш новый сайт и заметил, что перестала работать вкладка HTML в визуальном редакторе и + пропали кнопки в нем. После отключения плагина – все работает. Скажите, пожалуйста, как скоро Вы сможете посмотреть эту ошибку? Заранее спасибо!
Total Comment by Александр: 1
Отключите AdBlock …