All Activity

This stream auto-updates     

  1. Past hour
  2. Today
  3. У меня стоял баннер, я удалил код 1 строчку, потом баннер вобще пропал, это как то странно, я вернул строчку кода и щас вроде все норм
  4. А какой у Вас провайдер, не ростелеком?! Вот есть статья свежая на эту тему, у меня как раз ростелеком. https://opennet.ru/opennews/art.shtml?num=52444 Да, я вот тоже у себя заметил, что на любых сайтах выскакивает баннер, не только VamShop, не всегда, но выскакивает, причём ТОЛЬКО на http:// сайтах. По идее, раз на https://не выскакивает, т.е. в шифрованный трафик провадйер не может вмешиваться, а вот в обычный http:// - вполне может, это вставка рекламы на уровне провайдера. Хотя вроде вирусов нет, в файлах обоновления тоже всё чисто, по идее. P.S. Я уже пытался разобраться, откуда эта реклама. И следов вирусов в коде VamShop нигде не нашёл. А патч какой именно ставили?! 1.99.14-1.99.15?! или 1.99.13-1.99.14 Я ещё раз попробую поискать подозрительный код. Но, по идее, я сам под линуксом постоянно сижу, тут вирусов точно не будет.
  5. появился баннер не сразу заметил только сегодня но до установки последнего патча точно не было в коде если смотреть через браузер врезка типа <ins class="mrg-tag" data-ad-client="ad-595530" data-ad-slot="595530" id="mailru_ad_595530_1585476584901" data-ad-status="ready" style="position: fixed; z-index: 9999; top: 0px; left: 415.5px; width: 970px; transform: translateY(-250px);"> <style> #trg-b-29284408-211403150 { font-size: 14px !important; line-height: 20px!important; font-family: Arial, Verdana, sans-serif !important; font-weight: 300; position: relative!important; box-sizing: border-box !important; text-align: left!important; } #trg-b-29284408-211403150 [data-custclickarea]:hover, #trg-b-29284408-211403150 [data-clickwrap]:hover { cursor: pointer; } </style> <!-- format970x250,1 --> <style> #trg-b-29284408-211403150 { box-sizing: border-box!important; width: 970px!important; height: 250px!important; } #trg-b-29284408-211403150.trg-b-wrap { border: 1px solid #ededed!important; background-color: #fff!important; font-family: Arial,Verdana,sans-serif; font-size: 14px; } #trg-b-29284408-211403150 .trg-b-item-wrap { display: block; color: inherit; text-decoration:none; height: 100%; max-height: 100%; } #trg-b-29284408-211403150 .trg-b-promo-wrap { height: 100%!important; } #trg-b-29284408-211403150 .trg-b-promoimg { max-height: 100%!important; max-width: 100%; width: auto!important; } #trg-b-29284408-211403150 .trg-b-container { display: flex!important; height: 100%; } #trg-b-29284408-211403150 .trg-b-texts { display: flex!important; flex-direction: column!important; justify-content: space-between!important; width: calc(100% - 441px)!important; height: 100%!important; overflow: hidden!important; } #trg-b-29284408-211403150 .trg-b-center-block { margin: 0 30px!important; display: flex!important; } #trg-b-29284408-211403150 .trg-b-header { font-size: 20px!important; line-height: 1.15!important; } #trg-b-29284408-211403150 .trg-b-header-wrapper { margin-bottom: 7px!important; } #trg-b-29284408-211403150 .trg-b-text { font-size: 16px!important; line-height: 1.5!important; } #trg-b-29284408-211403150 .trg-b-contact { margin: 10px 8px!important; display: block !important; text-decoration: none !important; background: url(//r.mradx.net/img/3A/FD5B26.png) 0 0 no-repeat!important; background-size: 16px 16px!important; width: 16px!important; height: 16px!important; position: absolute!important; top: 0!important; right: 0!important; } #trg-b-29284408-211403150 .trg-b-domen { color: #999!important; font-size: 14px!important; margin-top: 10px!important; } #trg-b-29284408-211403150 .trg-b-cta { padding: 0 16px!important; margin: 8px 33px!important; font-size: 12px!important; display: inline-block!important; text-align: center!important; -webkit-border-radius: 3px!important; -moz-border-radius: 3px!important; -ms-border-radius: 3px!important; -o-border-radius: 3px!important; border-radius: 3px!important; text-decoration: none!important; background-color: #00ABF2!important; color: #fff!important; box-shadow: 0 1px 4px 0px rgba(0,0,0,0.5)!important; text-transform: uppercase!important; white-space: nowrap!important; overflow: hidden; text-overflow: ellipsis; max-width: 200px; line-height: 32px!important; height: 32px!important; cursor: pointer; } #trg-b-29284408-211403150 .trg-b-cta-wrap { text-align: right!important; } #trg-b-29284408-211403150 .trg-b-disclaimer { line-height: 1 !important; margin: 0 !important; font-size: 12px !important; color: #999!important; position: relative!important; text-overflow: ellipsis!important; overflow: hidden!important; max-width: 100%!important; white-space: nowrap!important; width: 100%!important; cursor: pointer; } #trg-b-29284408-211403150 .trg-b-age-limit { line-height: 1 !important; font-size: 12px !important; color: #999!important; padding-right: 5px!important; } #trg-b-29284408-211403150 .trg-b-discl-wrap { margin: 7px 30px!important; width: calc(100% - 60px)!important; display: flex!important; justify-content: flex-start!important; } </style> <div id="trg-b-pad-276902"> <div class="trg-b-wrap trg-b-pad-276902" id="trg-b-29284408-211403150"> <img src="https://rs.mail.ru/pixel/AACP7QG4S-e-OCcVRCkni4iPXI4xIWPtfEbh9MAk8WtPhvVhA7nb6eOt00ieKOGR8dFQFFZsntd80sRZypC0Kv-hNaE0LC_N9XDiq3WVD0oFPyEjKCnBwBre9yTzS2sniJ6vUaGWCa3-BJg_Xt8pUQe7IbIfRz-5tdLVaYapb64AEB9Ir5t4D0AbAwAA-BKg6QQ4lDIFC9W8QKAFm25j6tosyOQTvNAk4TzE8Ggo_DnqPueSGqqgQmf_X1xT2K9cjedJNv32AcUVI4N9GomTXXVxnIvqO2-DsMuf3rFpPFAFtDaLzxcMaUFxTBtPYto8-zclo_sS_ZJmlR5C5R8N1Db_k3XC7ulFWtXH2aVyjW1taU9Yz5qSbMhnm0ZhESLj5lP7egjoLyJ9mW6JYMYn_Lf7ZD_ynDZA9FE2cCo3CpozuxW1QvPobJhPwocYckCPbVzgaExiz-t358V11VTml8j1JRSmdO5-z8bSI2yDqSq-i_ns1DHZT-KiV1CKaNfiQD3PLLCtU0Y7iJ-_Wb7rLGubtSBJ8Hn8a-1iknePGWUY933v2QyGBsWOgxDoYvy1mMWZnNP9Dcwrvb9OluhjWo7aaJqt6on13a66A7jlGpC_Oaj8RSGnuixJu-VjIAz0BwDfXx7hGqNEwXe2zc2N2MULQYTtUUtdyqHVHBAeDs6D-8bkWAeErcp_r09iZF9OBEma-oBLQWz89YCb7wlrKbfe8QUDJxmqIvn6YVs3cJfzTBK-50BCFNi6vXCe81OqV9hj88LconaUoHpxDxuoPYqhaEjiATialWrsxJAsbtzSxoW0Go_ALrcDCgbU66qsEYxrGQBsAD4Sq3skbLvROYBOGafMQ9B6yqdeBWqYHr79oRaxzfq8Kw0WoyFqqzLBIGI9mzuaPG0GiNB6RdOY6Jyds6wDWdYkssAT_DvPZamvFt3nU4UL7sRTrlxnnlXlkW3vRqYpIXxv95PjFR3unkLMF8uwoKhBfhYCAF5Gg0IPL6jPu80ay_Qmy_k1IokZLSIQP9qWbktcjrC1Wz4lCwYQMJonxooMZQ1gAmwshqVGCHuGZ7NFDGwaPf-KmBVy9N5y20UhebNvPIIpR0FXiMp5CIombS0zrluQ1WMLVPqH0187F7WtrjsFU3o_6-nDUYclR_rXdauJAJQgy2yk_UQ-unka6fZ6_y7rEmAo9C8ljrr0Qy6DaT73dUxCwLtnPK4_IvTkuMhI6asc6dhfjYPD3lBzNoctbx0c_Bs.gif" style="display:none!important;"> <a rel="noopener" href="//t.mail.ru/redir/AACP7QG4S-e-OCcVRCkni4iPXI4xIWPtfEbh9MAk8WtPhvVhA7nb6eOt00ieKOGR8dFQFFZsntd80sRZypC0Kv-hNaE0LC_N9XDiq3WVD0oFPyEjKCnBwBre9yTzS2sniJ6vUaGWCa3-BJg_Xt8pUQe7IbIfRz-5tdLVaYapb64AEB9Ir_Mnsi5aBAAAlNbYxdPlYUirMpSyUWo00pfK3YftbIFoUBepb97tEH8tiBWcYCp4NZHm5BblRkE42_PmG_8MvaLNANFDKZpJQGKXIlVRKe1-PgCkU5wj9Vp9XZL4PdCRxDsLGN8ihkPdbFdh-LJkmAdzNMQAITRGTJa2AJ9RTXyUKF5AvTLZO6MybBa-c6LYwyO1a83ZUaQcQ0wGUMV6OAoNzv-5qmvENKTGrjeTkIZdQ0V-f3TDA9uS-p8NeXDUR7qsl-vs_9tfl4POQT9UjlYM-O0L8pym_6lYS1InggnZvla--bakna2B77f5ImWYvxvK4GuvOmTKR2c721aIEC9hHWZZp1QdPESJRWPpkxQCKGE9QiNPRjCS8ufVYEpxPoLiFpYx0OOFlKz1MDAhHNWK9r2ml85GPCvAC7GKxZYaLEEz1mgBVJ2J5YsZC_1CkYW1Ry3DUsDpEmWbhRPG1-ZwSGF2uGYHdwMWV0SCNFiAT_zfoeNMYO56rglhAcfgZ19j3g2ZXnE2uJxFSXELVwTdo4NHhkAdF-kTdWvmtbvdGlr8XC7ldnDPe40Y0tkZ5vgxBfGKDZhLhKNsKQKupuD6s4dH1XTAyxK5Wje3W4xwr74aijWKtNmYt0bazdnF9dWoGOajoXWD5_qEIib87OPUHuq0C2LnjnpsMSz_MRiqXKq-JcIwJnBGcrQ_eyE4-oKqq5JnMpylYrfN4-V4G4mg5mg2fK-yJXx63aiA-XfAW-GmBO_lnSDZvg8IExp6VB974e_vKPftpAWHR-qfOaMhv25K5HJHACrgdWsYz5R6_TtwDNBNjTidd6sWoJHBS0pplwFGgZTEawGB4EEDrNueZn2L8jyh9-2kKz2znt5QE5HK5_1yRanZOSzANNULZOxi-iTPEUmXKQ-B6uO9MuTitTCiK_3MgZ6UOeOOBVeUWZtYmTsjf3mjgtH2fSpF-Omok913a3rB0rJznlRlDydvBpLjun3AFXWNeYLGDybP-ZKyRkVDRR5DBmwlhs9adwpnXapUQXeYwa9nGaunx-oFOm_FA-TpSjopu1YPmHZopYluzyxQ3Ajmb3FquBlXg5h2viWd28AF1eD4bU5WtaN6Qcj4oRqUltUT_R3J7U_jTaTgZwpeb2szaNgzflfr9MIKpPdZKiRt4txN-EH2Nisp0G-3DXiVtDVXlC6pFDAx7ZqX-XoleqDq6ti1udiAaWCgXb1FouhnV1lw4QHiuDE7cIsXSGvvNhIk0-nyx3aDJrdR4iUyr_5KwGb-qUfK4ANkuuwLhyIL4it5LNr_5RDJozcTpVbd9LTwbErlLcfaEZjfKRIyLA6H0sGU9jVLT1uNzmpq-EubMNLbhx3MHZ1xlcpJqeL3aCBU21FyaQcZY0Qj4LMy3iWlnZy21eAV834McpDeoszME0uxJ7IEsurH_hvg8upER-7rElMpN9wUqSPgHn3zGd42goZZa7RBy-RuHHHEcz0dfS6nHcRQPQ-FDNPaed3cLw" target="_blank" class="trg-b-item-wrap trg-b-banner mailru-visibility-check" id="b55621394_1945878325" data-custclickarea="all" data-clickwrap="wrap" data-closewrap-container="b55621394_1945878325" data-trg-id="55621394"> <span class="mailru-visibility-check-counter" data-counter="https://rs.mail.ru/pixel/AACP7QG4S-e-OCcVRCkni4iPXI4xIWPtfEbh9MAk8WtPhvVhA7nb6eOt00ieKOGR8dFQFFZsntd80sRZypC0Kv-hNaE0LC_N9XDiq3WVD0oFPyEjKCnBwBre9yTzS2sniJ6vUaGWCa3-BJg_Xt8pUQe7IbIfRz-5tdLVaYapb64AEB9Ir3tbK18VAwAAYaM3d-Aqlr_sbTN9N11V6371cyxJonp8X3KmejBo6aPDmnc6bjSe4jn2Y4gWkkdV0WV46qTAfMzZtsWC4Z-QsT9Ttz286mPSHHQBpxQydvf8JQTPZRZBpe6invz7q5A0RJCRLEZFm2rd5F6BNYS2wVA17Hr8kSw-f7RzU5jfggII_sgLwVALV8CCNTuuVuR3431FG9CLZoRJ3mTrEXMJtCHWc1yvdAd27aI1Rrc1LTtjx-R-bttwLNKogGYxFxmwPf4NMGdC9Qw2VEZruybCU-YVxqaIUM-y-jigSea2JpFc9IF2_hatNPxwyudrYr_nK9jK_ckrpycOqcSwu-nOuCRejyb-rghbFbXZs731pxWZUoHs86KjYsy0uTAS2dTLVYDaehAynXn-R2uL2xXSIiAK074gunZcXs-xSG6vte0Gfg88Lb9x3DX744WRg2GFu1F4SKnxBVHOHrHfMMCBjTMLEw1h8iwfjTjScztmyjPvPtervMgKomL3PNltMMr1rcRzQOOe7pngz4HIisxlvR3HzgUe4293-d9uLUpHDhJJ-c6NiZ-eH_NTu5KiSCssOzsSF6lNm3tRQJ3-OaRMwpWWux_HFJELc5bpJu0ORIJDP3h7Sxh_Pa1QAVyiOkh69WcsOkcX7NHwTtEPWYG48UFtTdRjMiW8Skwcf0ZjN6nOm4zrI0KYjFmPsNkHTqoJGPnjI3bp6L8j4IGWWJ2dRv_qJJc-ZWV7Yup-tmz5vhSww6jJt9lREQnqS0eb8qh33nCiv4y0bamsS0hTDmTcJsfESgRP8Qj2DvCYmef5wKcodShvgcVCY_POnzivPstbznlKShHlKsjW30BZI_KqkJEu2x1Uyka1nrnhuxZFSqop2HhP4NiIn7C4CkuSNrJPTyz-jgRs-zwQuDSjIYUtMraabpUXlxjiLzFSEUzyFO3pAhJssyOMWdknVK7m7_qh7EnLdFU9FkZAlSvqcmVbEJ7zxIOVOLeKmLKramnvHMkHaEgzyz6EnwurTTwXhgsbDsgR_1dtjXQCVI7ECSUqxZt6tiguyljZeztXyuz-Kuk.gif" style="display:none"></span> <div class="trg-b-close-wrap js-close-cross-wrap" data-closewrap="b55621394_1945878325"> <div class="trg-b-close-overlay js-close-overlay"><div class="trg-b-close-text js-close-overlay-text ">Спасибо за обратную связь</div></div> <span class="trg-b-close-cross js-close-cross" data-closepix="https://rs.mail.ru/pixel/AACP7QG4S-e-OCcVRCkni4iPXI4xIWPtfEbh9MAk8WtPhvVhA7nb6eOt00ieKOGR8dFQFFZsntd80sRZypC0Kv-hNaE0LC_N9XDiq3WVD0oFPyEjKCnBwBre9yTzS2sniJ6vUaGWCa3-BJg_Xt8pUQe7IbIfRz-5tdLVaYapb64AEB9IryIo0RE8AgAAHLFJzPe-wIJTDTbhsxMoFLRTuy51xFs7wMSYDotd4r6-cRCnGZD-IxuP_c9Qvpx0jB59UNlcYZGYYMMJaDo5rnaEB031Kjhc2KjguX0XlRuUmbInLgNv0K5UUCJuhC5b2GwE1ZMLMa9RFnQ1p-NO0IlrQGxvnCy1kHQ5rWuOeXPWCm0iIm5RtPQvj0tfTgDQy6hlFkKx4Wjt8aknXq6Z9NGqQ_MTISfCafogBdfF4wG_WgW8L5pM_kCYgV1ubS8E_kuJjR7NEzAUYOaDA-tMce_jWzB5Qsmboyd2ZHmQyoLnG7JJMHI1fLNXvVzYoETrmzhIVmtUqwYdQs5vgtvVnjRGfkpCREu_b019be4cjpuSD9OrkjEGrzbRcRnu04lzmk8fG26kImEAXGqDUJSwR4Tl7nR50jfLcpgfR00qjDwIk4DYWaOFew0CmU1REDRXI_dky6N9xxX7Br6PxNCmZPo4LnHur5p_StjwOsBJspI2flShxE0_ZwhWN2zzOuMK7GFeORNWRTJGiMF3-ArXtJDzV5RWkodc7BRryeiS1HF4yvhQniPoVvYs6Ki9uSvonXdbk8k0_wNkdIitT3Pjj_-yQ4twiwMN-7OTLr-jdtm0uFoIMM326veIy4ul9SVIxuoWwOQOEVBA6nqmC0CNWQzjB3dqiSaP_RwnEe_vuSqRMX5r4XOqyoVs9jqZ_8nE5qq1eZYLQjQvQ-TSzI4ljtx7TYzwVBzCKsDwc_SPSlhaYeCftLuzIPybdF2VT3O4.gif"></span> <div class="trg-b-close-bubble _middle js-close-cross-bubble"> <div class="trg-b-close-bubble__item"><span class="trg-b-close-bubble__link js-close-reason" data-reason="ni">Не интересует</span></div> <div class="trg-b-close-bubble__item"><span class="trg-b-close-bubble__link js-close-reason" data-reason="ab">Уже приобретено</span></div> <div class="trg-b-close-bubble__item"><span class="trg-b-close-bubble__link js-close-reason" data-reason="cv">Препятствует просмотру</span></div> <div class="trg-b-close-bubble__item"><span class="trg-b-close-bubble__link js-close-reason" data-reason="sp">Недобросовестная реклама</span></div> </div> </div> <div class="trg-b-container"> <div class="trg-b-promo-wrap"> <img class="trg-b-promoimg" src="https://r.mradx.net/img/81/034CAA.jpg"> </div> <div class="trg-b-texts"> <div>&nbsp;</div> <div class="trg-b-center-block"> <div class="trg-b-texts-wrap"> <div class="trg-b-header-wrapper"> <span class="trg-b-header" false="">Яндекс.Касса для бизнеса</span> </div> <div class="trg-b-text">Создавайте счета для онлайн-оплаты заказов и бесплатно рассылайте их покупателям!</div> <div class="trg-b-domen">kassa.yandex.ru</div></div> </div> <div class="trg-b-bottom-block"> <div class="trg-b-cta-wrap"> <div class="trg-b-cta">Перейти</div> </div> </div> </div> </div> <!-- //t.mail.ru/redir/AACP7QG4S-e-OCcVRCkni4iPXI4xIWPtfEbh9MAk8WtPhvVhA7nb6eOt00ieKOGR8dFQFFZsntd80sRZypC0Kv-hNaE0LC_N9XDiq3WVD0oFPyEjKCnBwBre9yTzS2sniJ6vUaGWCa3-BJg_Xt8pUQe7IbIfRz-5tdLVaYapb64AEB9Ir_Mnsi5aBAAAlNbYxdPlYUirMpSyUWo00pfK3YftbIFoUBepb97tEH8tiBWcYCp4NZHm5BblRkE42_PmG_8MvaLNANFDKZpJQGKXIlVRKe1-PgCkU5wj9Vp9XZL4PdCRxDsLGN8ihkPdbFdh-LJkmAdzNMQAITRGTJa2AJ9RTXyUKF5AvTLZO6MybBa-c6LYwyO1a83ZUaQcQ0wGUMV6OAoNzv-5qmvENKTGrjeTkIZdQ0V-f3TDA9uS-p8NeXDUR7qsl-vs_9tfl4POQT9UjlYM-O0L8pym_6lYS1InggnZvla--bakna2B77f5ImWYvxvK4GuvOmTKR2c721aIEC9hHWZZp1QdPESJRWPpkxQCKGE9QiNPRjCS8ufVYEpxPoLiFpYx0OOFlKz1MDAhHNWK9r2ml85GPCvAC7GKxZYaLEEz1mgBVJ2J5YsZC_1CkYW1Ry3DUsDpEmWbhRPG1-ZwSGF2uGYHdwMWV0SCNFiAT_zfoeNMYO56rglhAcfgZ19j3g2ZXnE2uJxFSXELVwTdo4NHhkAdF-kTdWvmtbvdGlr8XC7ldnDPe40Y0tkZ5vgxBfGKDZhLhKNsKQKupuD6s4dH1XTAyxK5Wje3W4xwr74aijWKtNmYt0bazdnF9dWoGOajoXWD5_qEIib87OPUHuq0C2LnjnpsMSz_MRiqXKq-JcIwJnBGcrQ_eyE4-oKqq5JnMpylYrfN4-V4G4mg5mg2fK-yJXx63aiA-XfAW-GmBO_lnSDZvg8IExp6VB974e_vKPftpAWHR-qfOaMhv25K5HJHACrgdWsYz5R6_TtwDNBNjTidd6sWoJHBS0pplwFGgZTEawGB4EEDrNueZn2L8jyh9-2kKz2znt5QE5HK5_1yRanZOSzANNULZOxi-iTPEUmXKQ-B6uO9MuTitTCiK_3MgZ6UOeOOBVeUWZtYmTsjf3mjgtH2fSpF-Omok913a3rB0rJznlRlDydvBpLjun3AFXWNeYLGDybP-ZKyRkVDRR5DBmwlhs9adwpnXapUQXeYwa9nGaunx-oFOm_FA-TpSjopu1YPmHZopYluzyxQ3Ajmb3FquBlXg5h2viWd28AF1eD4bU5WtaN6Qcj4oRqUltUT_R3J7U_jTaTgZwpeb2szaNgzflfr9MIKpPdZKiRt4txN-EH2Nisp0G-3DXiVtDVXlC6pFDAx7ZqX-XoleqDq6ti1udiAaWCgXb1FouhnV1lw4QHiuDE7cIsXSGvvNhIk0-nyx3aDJrdR4iUyr_5KwGb-qUfK4ANkuuwLhyIL4it5LNr_5RDJozcTpVbd9LTwbErlLcfaEZjfKRIyLA6H0sGU9jVLT1uNzmpq-EubMNLbhx3MHZ1xlcpJqeL3aCBU21FyaQcZY0Qj4LMy3iWlnZy21eAV834McpDeoszME0uxJ7IEsurH_hvg8upER-7rElMpN9wUqSPgHn3zGd42goZZa7RBy-RuHHHEcz0dfS6nHcRQPQ-FDNPaed3cLw --> </a> <script> (function(rootElemId, href, openWindowType) {function addElemEvent(E, eventName, callback) { E.addEventListener ? E.addEventListener(eventName, callback, !1) : E.attachEvent && E.attachEvent("on" + eventName, callback); } function hasClickArea(el) { return el.getAttribute('data-custclickarea'); } function isClickAreaEqual(el, area) { return el.getAttribute('data-custclickarea') === area; } function openLink(newLink, clickWrap, jsOpenLink) { if (window.TRGB_S && window.TRGB_S.fullscreenOpenCallBack && typeof window.TRGB_S.fullscreenOpenCallBack === "function") { window.TRGB_S.fullscreenOpenCallBack(); } var link = !!newLink ? newLink : href; if (jsOpenLink) { window.open(link, !!openWindowType ? openWindowType : '_blank'); } else { clickWrap.href = link; } } function hasAllowedCustomHref(el) { return isClickAreaEqual(el, 'label') || isClickAreaEqual(el, 'carousel-item') || isClickAreaEqual(el, 'carousel-title') || isClickAreaEqual(el, 'carousel-text') || isClickAreaEqual(el, 'cta') || isClickAreaEqual(el, 'carousel-img') || null; } function openLinkUrl(el) { return hasAllowedCustomHref(el) ? el.getAttribute('href') : null; } function closestElement(el, tagName) { tagName = tagName.toLowerCase(); if (el.closest) { return el.closest(tagName); } while (el) { if (el.tagName.toLowerCase() === tagName) { return el; } el = el.parentNode; } return null; } function preventDefault(e) { e.stopImmediatePropagation(); e.preventDefault(); e.cancelBubble = true; } var rootElem = document.getElementById(rootElemId); var clickAreaWrapElem = rootElem.querySelectorAll('[data-clickwrap]')[0]; if (!clickAreaWrapElem) { clickAreaWrapElem = rootElem; } addElemEvent(clickAreaWrapElem, 'click', function(e) { var curEl = e.currentTarget; var el = e.target; var needOpenClickArea = false; var elementLinkWrap = closestElement(el, 'a'); var jsOpenLink = !elementLinkWrap || !!openWindowType; /*e.stopImmediatePropagation(); e.preventDefault(); e.cancelBubble = true;*/ var currentClassName = el && el.className || null; var isValidClassName = (currentClassName && typeof currentClassName === "string") || false; if (isValidClassName) { /* падает если клик на свг блоке, поэтому разделены */ if (el.className.indexOf('trg-b-close-adv') !== -1 || el.className.indexOf('_after-close-text') !== -1) { preventDefault(e); return; } } if (hasClickArea(el)) { jsOpenLink && preventDefault(e); openLink(openLinkUrl(el), elementLinkWrap, jsOpenLink); return false; } if (el === curEl) { preventDefault(e); return; } var parentEl = el.parentNode; while (parentEl !== curEl && !needOpenClickArea && !!parentEl.parentNode) { if (hasClickArea(parentEl)) { needOpenClickArea = true; break; } parentEl = parentEl.parentNode; } if (needOpenClickArea || hasClickArea(curEl)) { var _el = needOpenClickArea ? parentEl : curEl; jsOpenLink && preventDefault(e); openLink(openLinkUrl(_el), elementLinkWrap, jsOpenLink); return false; } preventDefault(e); }); })('b55621394_1945878325', '//t.mail.ru/redir/AACP7QG4S-e-OCcVRCkni4iPXI4xIWPtfEbh9MAk8WtPhvVhA7nb6eOt00ieKOGR8dFQFFZsntd80sRZypC0Kv-hNaE0LC_N9XDiq3WVD0oFPyEjKCnBwBre9yTzS2sniJ6vUaGWCa3-BJg_Xt8pUQe7IbIfRz-5tdLVaYapb64AEB9Ir_Mnsi5aBAAAlNbYxdPlYUirMpSyUWo00pfK3YftbIFoUBepb97tEH8tiBWcYCp4NZHm5BblRkE42_PmG_8MvaLNANFDKZpJQGKXIlVRKe1-PgCkU5wj9Vp9XZL4PdCRxDsLGN8ihkPdbFdh-LJkmAdzNMQAITRGTJa2AJ9RTXyUKF5AvTLZO6MybBa-c6LYwyO1a83ZUaQcQ0wGUMV6OAoNzv-5qmvENKTGrjeTkIZdQ0V-f3TDA9uS-p8NeXDUR7qsl-vs_9tfl4POQT9UjlYM-O0L8pym_6lYS1InggnZvla--bakna2B77f5ImWYvxvK4GuvOmTKR2c721aIEC9hHWZZp1QdPESJRWPpkxQCKGE9QiNPRjCS8ufVYEpxPoLiFpYx0OOFlKz1MDAhHNWK9r2ml85GPCvAC7GKxZYaLEEz1mgBVJ2J5YsZC_1CkYW1Ry3DUsDpEmWbhRPG1-ZwSGF2uGYHdwMWV0SCNFiAT_zfoeNMYO56rglhAcfgZ19j3g2ZXnE2uJxFSXELVwTdo4NHhkAdF-kTdWvmtbvdGlr8XC7ldnDPe40Y0tkZ5vgxBfGKDZhLhKNsKQKupuD6s4dH1XTAyxK5Wje3W4xwr74aijWKtNmYt0bazdnF9dWoGOajoXWD5_qEIib87OPUHuq0C2LnjnpsMSz_MRiqXKq-JcIwJnBGcrQ_eyE4-oKqq5JnMpylYrfN4-V4G4mg5mg2fK-yJXx63aiA-XfAW-GmBO_lnSDZvg8IExp6VB974e_vKPftpAWHR-qfOaMhv25K5HJHACrgdWsYz5R6_TtwDNBNjTidd6sWoJHBS0pplwFGgZTEawGB4EEDrNueZn2L8jyh9-2kKz2znt5QE5HK5_1yRanZOSzANNULZOxi-iTPEUmXKQ-B6uO9MuTitTCiK_3MgZ6UOeOOBVeUWZtYmTsjf3mjgtH2fSpF-Omok913a3rB0rJznlRlDydvBpLjun3AFXWNeYLGDybP-ZKyRkVDRR5DBmwlhs9adwpnXapUQXeYwa9nGaunx-oFOm_FA-TpSjopu1YPmHZopYluzyxQ3Ajmb3FquBlXg5h2viWd28AF1eD4bU5WtaN6Qcj4oRqUltUT_R3J7U_jTaTgZwpeb2szaNgzflfr9MIKpPdZKiRt4txN-EH2Nisp0G-3DXiVtDVXlC6pFDAx7ZqX-XoleqDq6ti1udiAaWCgXb1FouhnV1lw4QHiuDE7cIsXSGvvNhIk0-nyx3aDJrdR4iUyr_5KwGb-qUfK4ANkuuwLhyIL4it5LNr_5RDJozcTpVbd9LTwbErlLcfaEZjfKRIyLA6H0sGU9jVLT1uNzmpq-EubMNLbhx3MHZ1xlcpJqeL3aCBU21FyaQcZY0Qj4LMy3iWlnZy21eAV834McpDeoszME0uxJ7IEsurH_hvg8upER-7rElMpN9wUqSPgHn3zGd42goZZa7RBy-RuHHHEcz0dfS6nHcRQPQ-FDNPaed3cLw', ''); </script> </div> </div> <!--closeBlock--><style> #trg-b-29284408-211403150 [data-closewrap-container] { position: relative; z-index: 0; } #trg-b-29284408-211403150 .trg-b-close-cross { width: 16px; height: 16px; display: none; position: absolute; top: 0px; right: 0px; cursor: pointer; visibility: visible; background: #fff url(//r.mradx.net/img/40/8B79EF.png) no-repeat center center; background: rgba(255, 255, 255, 0.5) url(//r.mradx.net/img/40/8B79EF.png) no-repeat center center; background-size: 8px; font-size: 0px; line-height: 0px; text-align: center; font-family: Arial, Verdana, sans-serif !important; } #trg-b-29284408-211403150 ._mobile .trg-b-close-cross { display: block!important; } #trg-b-29284408-211403150 ._mobile.trg-b-close-wrap { text-align: left!important; } #trg-b-29284408-211403150 .trg-b-close-cross:hover { background: #fff url(//r.mradx.net/img/40/8B79EF.png) no-repeat center center; background: rgba(255, 255, 255, 0.7) url(//r.mradx.net/img/40/8B79EF.png) no-repeat center center; background-size: 8px; } #trg-b-29284408-211403150 [data-closewrap-container]:hover .trg-b-close-cross { display: block; } #trg-b-29284408-211403150 .trg-b-close-bubble { opacity: 0; position: absolute; padding: 6px; top: 1px; right: 15px; background: #fff; -webkit-border-radius: 2px; -moz-border-radius: 2px; -ms-border-radius: 2px; -o-border-radius: 2px; border-radius: 2px; -webkit-box-shadow: 0 1px 3px 0px rgba(0,0,0,0.15); -moz-box-shadow: 0 1px 3px 0px rgba(0,0,0,0.15); -ms-box-shadow: 0 1px 3px 0px rgba(0,0,0,0.15); -o-box-shadow: 0 1px 3px 0px rgba(0,0,0,0.15); box-shadow: 0 1px 3px 0px rgba(0,0,0,0.15); z-index: 1000000; transition: opacity 0.3s ease-out; white-space: normal; } #trg-b-29284408-211403150 .trg-b-close-bubble._middle { padding: 10px; } #trg-b-29284408-211403150 .trg-b-close-bubble._nano { padding: 5px; width: 80px; } #trg-b-29284408-211403150 .trg-b-close-bubble._nano .trg-b-close-bubble__item { padding-left: 0; font-size: 9px; line-height: 1.3; } #trg-b-29284408-211403150 .trg-b-close-bubble._nano .trg-b-close-bubble__item:before { display: none; } #trg-b-29284408-211403150 .trg-b-close-overlay { content: ''; position: absolute; top: 0; bottom: 0px; left: 0; right: 0; background: #fff; background: rgba(255, 255, 255, 0.95); opacity: 0; text-align: center; transition: background 0.3s ease-out, opacity 0.3s ease-out; } #trg-b-29284408-211403150 .trg-b-close-text { padding: 10px 3px 0; color: #333; font-size: 12px; line-height: 1.2; visibility: hidden; display: block; text-align: center; text-shadow: 1px 1px 0 #fff; text-shadow: 1px 1px 0px rgba(255,255,255,0.8); white-space: normal; } #trg-b-29284408-211403150 .trg-b-close-text._middle { top: 50%; position: relative; transform: translateY(-50%); padding-top: 0; } #trg-b-29284408-211403150 .trg-b-close-text._nano { padding: 5px; font-size: 9px; } #trg-b-29284408-211403150 .trg-b-close-wrap._active .trg-b-close-cross, #trg-b-29284408-211403150 .trg-b-close-wrap._active .trg-b-close-overlay, #trg-b-29284408-211403150 .trg-b-close-wrap._active .trg-b-close-bubble { display: block; opacity: 1; visibility: visible; } #trg-b-29284408-211403150 .trg-b-close-wrap._hidden .trg-b-close-text { visibility: visible !important; display: block !important; } #trg-b-29284408-211403150 .trg-b-close-wrap._hidden .trg-b-close-overlay { visibility: visible !important; display: block !important; background: #fff !important; opacity: 1; } #trg-b-29284408-211403150 .trg-b-close-wrap._hidden .trg-b-close-cross, #trg-b-29284408-211403150 .trg-b-close-wrap._hidden .trg-b-close-bubble { display: none!important; } #trg-b-29284408-211403150 .trg-b-close-bubble__item:before { content: '\2014'; position: absolute; left: 0; top: 0; color: #9B9B9B; } #trg-b-29284408-211403150 .trg-b-close-bubble__item { position: relative; padding-left: 16px; font-size: 12px; line-height: 1.4; } #trg-b-29284408-211403150 .trg-b-close-bubble__link { color: #4A90E2; cursor: pointer; } #trg-b-29284408-211403150 .trg-b-close-bubble__link:hover { color: #333; } #trg-b-29284408-211403150 .trg-b-close-wrap { position: absolute; top: 0; bottom: 0; left: 0; right: 0; visibility: hidden; z-index: 100000; } </style> <script> (function(params) { var closeEl, closeBubbleEl, closeItemsEl, closeWrapEl, closeOverEl; var pixels = { ni: "https://rs.mail.ru/sb36635784.gif?", ab: "https://rs.mail.ru/sb36635789.gif?", sp: "https://rs.mail.ru/sb36635790.gif?", cv: "https://rs.mail.ru/sb36635791.gif?" }; function stopE(e) { if (e) { e.preventDefault(); e.stopImmediatePropagation(); } } function addElemEvent(E, eventName, callback) { E.addEventListener ? E.addEventListener(eventName, callback, !1) : E.attachEvent && E.attachEvent("on" + eventName, callback); } function removeElemEvent(E, eventName, callback) { E.removeEventListener ? E.removeEventListener(eventName, callback, !1) : E.detachEvent && E.detachEvent("on" + eventName, callback); } function dispatchEvent(el, type) { var evt; if (typeof window.CustomEvent === 'function') { evt = new CustomEvent(type, { bubbles: true }); } else { evt = document.createEvent('CustomEvent'); evt.initCustomEvent(type, true, false, null); } el.dispatchEvent(evt); } function sendPix(pix, params) { var img = document.createElement('img'); img.src = pix || ''; img.style.display = 'none'; params.closeWrapEl.appendChild(img); } function getParentBannerItem(el) { var retval = null; var parentAttr = 'data-closewrap-container'; var parentEl = el; while (parentEl) { if (parentEl === document.getElementsByTagName('body')[0]) { retval = null; break; } else if (parentEl.getAttribute(parentAttr)) { retval = parentEl; break; } parentEl = parentEl.parentElement; } return retval; } function getParentBannerSlot(el) { var slotClassName = 'mrg-tag'; var slotEl = el; if (typeof el.closest === 'function') { return el.closest('.' + slotClassName); } while (slotEl !== null) { if (slotEl.className.indexOf(slotClassName) !== -1) { return slotEl; } slotEl = slotEl.parentElement; } return null; } function closeAll(params) { params.closeWrapEl.className = params.closeWrapEl.className.replace(' _active', ' _hidden'); removeElemEvent(params.closeEl, 'click', onCloseClick); removeElemEvent(params.closeOverEl, 'click', hideClose); for (var i = 0; i < params.closeItemsEl.length; i++) { removeElemEvent(params.closeItemsEl[i], 'click', onCloseReasonClick); } } function onCloseReasonClick(params, e) { stopE(e); var pix = pixels[e.currentTarget.getAttribute('data-reason')]; if (pix) { sendPix(pix, params); } sendPix(params.closeEl.getAttribute('data-closepix'), params); closeAll(params); /* dispatch close event to RbExt */ var parentBannerSlotItem = getParentBannerSlot(params.closeWrapEl); if (parentBannerSlotItem) { dispatchEvent(parentBannerSlotItem, 'mrg-close'); } } function onCloseClick(params, e) { stopE(e); if (params.closeWrapEl.className.indexOf(' _active') === -1) { showClose(params); } else { hideClose(params); } } function hideClose(params, e) { stopE(e); params.closeWrapEl.className = params.closeWrapEl.className.replace(' _active', ''); var parentBannerWrapItem = getParentBannerItem(params.closeWrapEl); parentBannerWrapItem.className = parentBannerWrapItem.className.replace(' _close-overlay', ''); } function showClose(params) { params.closeWrapEl.className += ' _active'; var parentBannerWrapItem = getParentBannerItem(params.closeWrapEl); parentBannerWrapItem.className += ' _close-overlay'; } function init() { if (!params || !params.rootId || !document.querySelectorAll) return; var rootElem = document.getElementById(params.rootId); if (!rootElem) return; closeWrapEl = rootElem.querySelectorAll('.js-close-cross-wrap'); if (!closeWrapEl || !closeWrapEl[0]) return; closeEl = rootElem.querySelectorAll('.js-close-cross'); closeBubbleEl = rootElem.querySelectorAll('.js-close-cross-bubble'); closeOverEl = rootElem.querySelectorAll('.js-close-overlay'); for (var k = 0; k < closeEl.length; k++) { closeItemsEl = closeWrapEl[k].querySelectorAll('.js-close-reason'); if (!closeEl || !closeBubbleEl || !closeOverEl || !closeWrapEl[k] || !closeEl[k] || !closeBubbleEl[k] || !closeOverEl[k]) return; addElemEvent(closeBubbleEl[k], 'click', function(e) { e.stopImmediatePropagation(); e.preventDefault(); }); addElemEvent(closeEl[k], 'click', onCloseClick.bind(null, { closeWrapEl:closeWrapEl[k], closeEl:closeEl[k], closeBubbleEl:closeBubbleEl[k], closeOverEl:closeOverEl[k], closeItemsEl:closeItemsEl })); addElemEvent(closeOverEl[k], 'click', hideClose.bind(null, { closeWrapEl:closeWrapEl[k], closeEl:closeEl[k], closeBubbleEl:closeBubbleEl[k], closeOverEl:closeOverEl[k], closeItemsEl:closeItemsEl })); for (var i = 0; i < closeItemsEl.length; i++) { addElemEvent(closeItemsEl[i], 'click', onCloseReasonClick.bind(null, { closeWrapEl:closeWrapEl[k], closeEl:closeEl[k], closeBubbleEl:closeBubbleEl[k], closeOverEl:closeOverEl[k], closeItemsEl:closeItemsEl })); } } } init(); })({rootId: 'trg-b-29284408-211403150'}); </script><!--/closeBlock--> <style> #trg-b-pad-276902 .trg-b-wrap { border-style:solid!important;border-color:#210f38!important;border-width:1px!important;background-color:#fefefe!important;} #trg-b-pad-276902 .trg-b-wrap .trg-b-header { color:#210f38!important;font-family:Verdana,Arial,Verdana,sans-serif!important;font-size:22px!important;text-decoration:none!important;} #trg-b-pad-276902 .trg-b-wrap .trg-b-header:hover { color:#000!important;} #trg-b-pad-276902 .trg-b-wrap .trg-b-domen { color:#00cbca!important;font-family:Open Sans,Arial,Verdana,sans-serif!important;font-size:18px!important;text-decoration:underline!important;} #trg-b-pad-276902 .trg-b-wrap .trg-b-domen:hover { color:#999!important;} #trg-b-pad-276902 .trg-b-wrap .trg-b-text { color:#000!important;font-family:Open Sans,Arial,Verdana,sans-serif!important;font-size:17px!important;} #trg-b-pad-276902 .trg-b-wrap .trg-b-cta { color:white!important;font-family:Roboto,Arial,Verdana,sans-serif!important;font-size:14px!important;background-color:#851796!important;} </style> <script> try { (function(w, d, prefix) { w.RB = w.RB && w.RB.v && w.RB.v === 1 ? w.RB : (function() { var // main flag, enabled = !1, enabledObserver = !1, enabledGeom = !1, useObserver = !1, useGeom = !1, // old opera focus flag focused = !0, // counted flag counted = 'mailru-visibility-counted', // banners to inspect banners = {}, // shortcuts e = d.documentElement, VE = (d.mozVisibilityState ? "mozvisibilitychange" : d.webkitVisibilityState ? "webkitvisibilitychange" : d.visibilityState ? "visibilitychange" : ""), HP = ("hidden" in d) ? "hidden" : (("webkitHidden" in d) ? "webkitHidden" : (("mozHidden" in d) ? "mozHidden" : "")), // lastTimeStamp = 0, // timing tm, // interstion observer instance observer, supportIO = !!window.IntersectionObserver; // handlers function onFocusIn() { focused = !0; C(!0); } function onFocusOut() { focused = !1; } // using visibility could have profits when tab is not function onVisibilityChange() { if (!d[HP]) onFocusIn() else onFocusOut() } function onWindowScroll() { C(); } function onWindowResize() { C(); } // I &ndash; inspect function I(bannerObject, id) { if (Object.prototype.toString.call(bannerObject) === '[object Array]') { Clear(bannerObject); var k = bannerObject.length - 1; for (; k >= 0; k--) { if (!s(bannerObject[k].el, counted)) { I(bannerObject[k]); } }; return; } // bannerObject contains bannerObject.el and bannerObject.pixels if (!bannerObject.el.id) { id = prefix + (new Date().getTime()) + (Math.round(Math.random() * 1E6)); bannerObject.el.id = id; } id = bannerObject.el.id; var io = bannerObject.observer; io = io && supportIO; // lastTimeStamp = new Date().getTime(); // adding the banner container to storage if (!banners[id]) { banners[id] = { c: bannerObject.el, px: bannerObject.pixels, cb: bannerObject.callback, io: io }; } // enabling anyway useObserver = useObserver || io; useGeom = useGeom || !io; on(); if (io) { o(bannerObject.el); } C(!0); } // C &ndash; check viewability of banner with t, timeout after loading function C(t) { for (var id in banners) { if (banners[id] && !G(id)) { CL(id); } else if (banners[id] && getVA(banners[id].c) >= 50 && hasFocus() && !banners[id].t) { (function(_id) { banners[_id].t = setTimeout(function() { try { P(_id) } catch (e) {} }, 1E3) }(id)); } else if (banners[id] && getVA(banners[id].c) < 50) { if (banners[id].t) { clearTimeout(banners[id].t); delete banners[id].t; } } else if (banners[id] && !hasFocus()) { if (banners[id].t) { clearTimeout(banners[id].t); delete banners[id].t; clearTimeout(tm); t = false; } } else if (!banners[id]) { CL(id); } } if (t && useGeom) { clearTimeout(tm); tm = setTimeout(function() { C(!0); }, 3e2); } } // CL &ndash; Clear timers and stop listeners function CL(id, onlyTM) { if (id && banners[id]) { clearTimeout(banners[id].t); banners[id].t = null; if (!onlyTM) { if (banners[id].io && observer) { observer.unobserve(banners[id].c); } banners[id].c = null; delete banners[id]; } return; } clearTimeout(tm); tm = null; for (var id in banners) { if (banners[id].t) { CL(id, !0) } } } function Clear(bannersArray) { if (bannersArray && bannersArray.length >= 0) { //clear banners from array var k = bannersArray.length - 1; var id; for (; k >= 0; k--) { id = bannersArray[k].el.id; if (id && banners[id]) { CL(id); } }; } else { for (var id in banners) { //clear all CL(id); } } } // P &ndash; pixel to send function P(id, obj, cnt) { if (!G(id)) { CL(id); // banner removed return } if (banners[id]) { obj = banners[id].c; } else { return; } if (!hasFocus()) { CL(id, !0); return; } else if (getVA(obj) < 50) { CL(id, !0); return; } for (cnt = banners[id].px.length - 1; cnt >= 0; cnt--) { new Image().src = banners[id].px[cnt]; }; // set counted flag - skip in next collect loops obj[counted] = true; //try fire callback var cb = banners[id].cb; if (cb && typeof cb === 'function') { try { cb(); } catch (e) {} } // remove banner from storage of inspectable items CL(id); // turn listeners off if banners are not present if (!l(banners)) off(); } function hasFocus() { if (HP) focused = !d[HP]; else if (!VE && typeof d.hasFocus === "function") focused = d.hasFocus(); return focused; } function getVA(obj, source) { if (obj.id && banners[obj.id] && banners[obj.id].io) { return banners[obj.id].v || 0; } var R = {}; R.w = R.h = Infinity; if (!isNaN(d.body.clientWidth) && d.body.clientWidth > 0) { R['w'] = d.body.clientWidth; } if (!isNaN(d.body.clientHeight) && d.body.clientHeight > 0) { R['h'] = d.body.clientHeight; } if (!!e && !!e.clientWidth && !isNaN(e.clientWidth)) { R['w'] = e.clientWidth; } if (!!e && !!e.clientHeight && !isNaN(e.clientHeight)) { R['h'] = e.clientHeight; } if (!!w.innerWidth && !isNaN(w.innerWidth)) { R['w'] = Math.min(R['w'], w.innerWidth); } if (!!w.innerHeight && !isNaN(w.innerHeight)) { R['h'] = Math.min(R['h'], w.innerHeight); } if (R.h == Infinity || R.h == Infinity) { R = { "E": ":-(" }; } else { var r = obj.getClientRects()[0]; if (!r) { R = { "p": 0 }; return R; } R.t = r.top; R.b = r.bottom; R.l = r.left; R.r = r.right; if (r.bottom < 0 || r.right < 0 || r.top > R.clientHeight || r.left > R.clientWidth) { R = 0; } else { var totalObjectArea = (r.right - r.left) * (r.bottom - r.top), xMin = Math.ceil(Math.max(0, r.left)), xMax = Math.floor(Math.min(R.w, r.right)), yMin = Math.ceil(Math.max(0, r.top)), yMax = Math.floor(Math.min(R.h, r.bottom)), visibleObjectArea = (xMax - xMin) * (yMax - yMin); R = Math.round(visibleObjectArea / totalObjectArea * 100); } } return R; } /** LISTENERS SWITCHERS **/ function on() { if (enabled) return; if (!enabledGeom && useGeom) { ev(w, 'resize', onWindowResize); ev(w, 'scroll', onWindowScroll); enabledGeom = true; } if (!enabledObserver && useObserver) { observer = new IntersectionObserver(h, { threshold: [0.5] }); enabledObserver = true; } if (VE) ev(d, VE, onVisibilityChange); else { ev(w, 'blur', onFocusOut); ev(w, 'focus', onFocusIn); } if (enabledGeom && enabledObserver) { enabled = true; } } function off() { rm(w, 'resize', onWindowResize); rm(w, 'scroll', onWindowScroll); if (VE) rm(d, VE, onVisibilityChange); rm(w, 'focus', onFocusIn); rm(w, 'blur', onFocusOut); if (observer) { observer.disconnect(); observer = null; } clearTimeout(tm); enabled = false; useObserver = false; useGeom = false; enabledGeom = false; enabledObserver = false; } /** INTERSECTION OBSERVER UTILS **/ function o(e) { observer && observer.observe(e); } function h(changes) { changes.forEach(function(changeRecord) { var element = changeRecord.target; var id = element.id; if (id && banners[id]) { banners[id].v = Math.round(changeRecord.intersectionRatio * 100); } }); C(); } /** UTILS **/ // G - get element by ID; function G(E) { return d.getElementById(E) } // ev - EVent to handle function ev(elem, eventName, callback) { elem.addEventListener ? elem.addEventListener(eventName, callback, !1) : elem.attachEvent && elem.attachEvent("on" + eventName, callback) } function rm(elem, eventName, callback) { elem.removeEventListener ? elem.removeEventListener(eventName, callback, !1) : elem.detachEvent && elem.detachEvent("on" + eventName, callback) } // obj length function l(obj) { var s = 0, key; for (key in obj) { if (obj.hasOwnProperty(key)) s++ } return s; } function s(elem, state) { return !(typeof elem[state] == undefined || elem[state] !== true); } //elem state /** PUBLIC INTERFACE **/ return { I: I // debug // , banners: banners , v: 1 } }()); }(window, document, 'mailru')) } catch (e) {} </script> <script> (function(prefix){ try{ function getAdsContainers() { var ADS_CLASS = prefix + '-visibility-check', ADS_COUNTER_CLASS = ADS_CLASS + '-counter', ADS_CALLBACK_CLASS = ADS_CLASS + '-callback', COUNTER_ATTR = 'data-counter', CALLBACK_ATTR = 'data-callback', OBSERVER_ATTR = 'data-observer', containers = [], countables = [], i, k, counters, _counter, _observer; containers = getByClass(document, ADS_CLASS); for (i = containers.length - 1; i >= 0; i--) { var counters = getByClass(containers[i], ADS_COUNTER_CLASS, 'span'); _counter = containers[i].getAttribute(COUNTER_ATTR); _observer = containers[i].hasAttribute(OBSERVER_ATTR); countables[i] = { el: containers[i], pixels: [], observer: _observer }; if (_counter) countables[i].pixels.push(_counter); for (k = counters.length - 1; k >= 0; k--) { _counter = counters[k].getAttribute(COUNTER_ATTR); if (_counter && counters[k].parentNode === countables[i].el) countables[i].pixels.push(_counter); } var callback = getByClass(containers[i], ADS_CALLBACK_CLASS, 'span'); if (callback[0]) { var _callback = callback[0].getAttribute(CALLBACK_ATTR); if (_callback && window.RB_CALLBACKS && window.RB_CALLBACKS[_callback]) { countables[i].callback = window.RB_CALLBACKS[_callback]; } } if (!countables[i].pixels.length) countables.splice(i, 1); } return countables; } function getByClass(parent, childClassName, tagName) { if (parent.getElementsByClassName) { return parent.getElementsByClassName(childClassName); } else if (parent.querySelectorAll) { return parent.querySelectorAll('.' + childClassName); } else { var els = []; var tmp = parent.getElementsByTagName(tagName ? tagName : "*"); var regex = new RegExp("(^|\s)" + childClassName + "(\s|$)"); for (var i = 0; i < tmp.length; i++) { if (regex.test(tmp[i].className)) { els.push(tmp[i]); } } return els; } } RB.I(getAdsContainers()); }catch(e){} }('mailru')) </script> </ins> боль! в файлах по "mrg-tag" ничего не находится..... Это что такое? Как лечить? Зы перестали загружаться изображения на форум какой то кошмар сейчас ищу врезки в файлах не могу найти по дате редактирования ничего нет файлы как будто не тронуты
  6. В следующем обновлении VamShop 1.99.16 по умолчанию добавлен новый модуль SEO Фильтры товара. http://blog.vamshop.ru/2020/03/27/seo-фильтры-в-vamshop/ Начата работа по обновлению админки. Будет использоваться boostrap 4 Думаю, что будет ещё новая навигация в админке. Примерно как в http://demo2.vamshop.ru/admin admin password
  7. т.е., к примеру, в Админке - Содержание в раздел Информация можно создать страницы например Смартфоны по скидкой. и в описании страницы добавить: {content_listing template="product-listing-skidka" type="product" limit=20 parent="smartphones"} Затем в Админке - Оформление - Микро-шаблоны сделать новый шаблон на основе существующего product-listing т.е. зайдит в микро-шаблон product-listing, скопируйте код шаблона, затем вернитесь на странице админка - оформлени - микро-шаблоны и создайте новый шаблон. Псевдоним шаблона укажите product-listing-skidka Тэг content_listing А модежимое шаблона добавьте такое: {if $content_list} <!-- start: products listing --> <div class="row shop-products"> <ul class="thumbnails"> {foreach from=$content_list item=node} {if $node.old_price} <li class="item col-sm-3 col-md-4{if $node.is_new == 1} new{/if}{if $node.is_featured == 1} featured{/if}"> <div class="thumbnail text-center"> {if $node.discount > 0}<div class="description"><span class="discount">-{$node.discount|round}%</span></div>{/if} <a href="{$node.url}" class="image"><img src="{$node.image}" alt="{$node.name}"{if {$node.image_width} > 0} width="{$node.image_width}"{/if}{if {$node.image_height} > 0} height="{$node.image_height}"{/if} /> {if $node.price}<span class="frame-overlay"></span><span class="price">{$node.price}</span>{/if} {product_label label_id={$node.label_id}} </a> <div class="inner notop nobottom text-left"> <h4 class="title"><a href="{$node.url}">{$node.name}</a></h4> {if $node.reviews > 0}<div class="description"><span class="rating">{$node.star_rating}</span> <span class="reviews">{lang}Feedback{/lang}: {$node.reviews}</span></div>{/if} {if $node.old_price}<div class="description">{lang}List Price{/lang}: <span class="old-price"><del>{$node.old_price}</del></span></div>{/if} {if $node.price_save}<div class="description">{lang}You Save{/lang}: <span class="save">{$node.price_save} ({$node.price_save_percent|round}%)</span></div>{/if} <div class="description">{$node.short_description|strip_tags|truncate:30:"...":true}</div> <div class="description">{attribute_list product_id=$node.id}</div> </div> </div> {product_form product_id={$node.id}} <div class="inner darken notop"> <button class="btn btn-default btn-add-to-cart" type="submit"><i class="fa fa-shopping-cart"></i> {lang}Buy{/lang}</button> {if isset($is_compare)}<a href="{base_path}/category/addcmp/{$node.alias}/{$content_alias->value}{$ext}" class="btn btn-default btn-add-to-cart"><i class="fa fa-bookmark"></i> {lang}Compare{/lang}</a>{/if} </div> {/product_form} </li> {/if} {/foreach} </ul> </div> <!-- end: products listing --> {/if} Т.е. добавили условие {if $node.old_price} .... {/if} Что б показывались только товары со скидкой. Ну и всё, сохраняйте. Затем заходите в в каталоге в разделе информация на станицу Скидки, по идее, вывеодутся только товырв со скидкой из раздела Смартфоны. Как-то так примерно. Либо если нужно показать какие-то спец. предложения например над основным списком товара. То можно ярлые скидка таким товарам добавить в админке. и затем взять совет из FAQ - Как выводить товары с определённым ярлыком. и вот как раз перед основным списком товара или на главной странице вывести товары с ярлыком Скидка. т.е. варианты есть.
  8. Yesterday
  9. Спасибо, Саш. Попробую с этой меткой поколдовать, отпишусь, если получится. Хз, где выводить, хотел на странице попробовать, а придется видимо варианты искать) На следующей неделе наверное займусь.
  10. А как именно Вам надо вывести эти товары со скидкой?! Где-то на отдельной странице?! Есть метка old_price в шаблоне вывода товара. т.е., по идее, как-то можно условием в шаблоен попробовать вывести только те у которых задана метка old_price, т.е. есть спец. цена. А вот сортировки по спец. цене по умолчанию нет, т.е. это только пилить код, а именно в /app/Catalog/function.content_listing.php добавлять новый вид сортировки к уже существующим.
  11. Пришлите в личку ссылку на магазин. и какие модули доставки, оплаты активны, включены у Вас сейчас.
  12. Стало интересно, как можно вывести товар, который участвует в акции (товар, на который установлена Специальная цена)? Т.е. вывод из таблицы content_specials колонки price со значением не NULL. И если это возможно, сделать дополнительную сортировку в категории по акционному товару, т.е. сначала выводится акционные, а потом уже все остальные товары.
  13. Что то желающих не видно :) Я правильно понял, что можно Вам заказать эту работу?
  14. support

    SEO Фильтры в VamShop

    Модуль уже добавлен в текущий код, в следующей версии будет доступен для всех. Пока что тестируется в демке http://demo.vamshop.ru Да, по умолчанию seo страницы генерируются автоматически из названия фильтра и значения. Если такой вид url не подходит, то можно самом указать текст, который будет в URL. Можно задавать отдельный текст для такой страницы через опцию Описание спецификации, ну это и раньше было. Будет выводиться описание категории + заданное описание фильтра, для уникализации страницы. Ну и meta тэги для фильтра свои и canonical тэг свой. Да, seo url - только для одного вариант фильтра. Если множественный выбор, т.е. для комбинаций - seo url нет. Я считаю, что это нормально. Например иметь страницу Смартфоны 16gb с seo url и в поисковик попадёт именно страница Смартфоны 16 Gb. Если делать seo url например для страницы фильтра - Смартфоны 16 gb страница 2 сортировка по цене + второй фильтр + третий фильтр seo url иметь не будет, что попадёт в поисковик, будет частичный или полный дубль страницы фильтров Смартфоны 16 gb!? Будет отличаться лишь парой позиций!? По сути, это дубль и некачественная страница, imho. Для такого множества страниц нет смысла делать seo url, потому что подобные страницы всё равно поисковики посчитают недостаточно качественными и они в индекс всё равно не попадут. Во всяком случае на данный момент у меня такое мнение. + К тому же всё равно файл products_filter.php я добавил в блок в robots.txt Что б он не размывал seo url страницы фильтров и не добавлял дубли. Что б на один, по сути фильтр, не было 10 одинаковых практически страниц. В общем-то, я об этом выше и попытался рассказать, почему по моему мнение нельзя делать seo url для любых комбинаций фильтров.
  15. В /admin/easypopulate.php в код: $custom_fields[TABLE_PRODUCTS] = array('products_quantity_min' => TEXT_EASYPOPULATE_LABEL_QUANTITY_MIN,'products_quantity_max' => TEXT_EASYPOPULATE_LABEL_QUANTITY_MAX,'products_length' => TEXT_EASYPOPULATE_LABEL_LENGTH,'products_width' => TEXT_EASYPOPULATE_LABEL_WIDTH,'products_height' => TEXT_EASYPOPULATE_LABEL_HEIGHT,'products_volume' => TEXT_EASYPOPULATE_LABEL_VOLUME,'products_sort' => TEXT_EASYPOPULATE_LABEL_SORT,'products_page_url' => TEXT_EASYPOPULATE_LABEL_PAGE_URL,'products_discount_allowed' => TEXT_EASYPOPULATE_LABEL_DISCOUNT_ALLOWED,'products_startpage' => TEXT_EASYPOPULATE_LABEL_STARTPAGE,'products_startpage_sort' => TEXT_EASYPOPULATE_LABEL_STARTPAGE_SORT,'products_to_xml' => TEXT_EASYPOPULATE_LABEL_XML); // this line is used if you have no custom fields to import/export Добавьте поле products_ean, например так: $custom_fields[TABLE_PRODUCTS] = array('products_quantity_min' => TEXT_EASYPOPULATE_LABEL_QUANTITY_MIN,'products_quantity_max' => TEXT_EASYPOPULATE_LABEL_QUANTITY_MAX,'products_length' => TEXT_EASYPOPULATE_LABEL_LENGTH,'products_width' => TEXT_EASYPOPULATE_LABEL_WIDTH,'products_height' => TEXT_EASYPOPULATE_LABEL_HEIGHT,'products_volume' => TEXT_EASYPOPULATE_LABEL_VOLUME,'products_sort' => TEXT_EASYPOPULATE_LABEL_SORT,'products_page_url' => TEXT_EASYPOPULATE_LABEL_PAGE_URL,'products_discount_allowed' => TEXT_EASYPOPULATE_LABEL_DISCOUNT_ALLOWED,'products_startpage' => TEXT_EASYPOPULATE_LABEL_STARTPAGE,'products_startpage_sort' => TEXT_EASYPOPULATE_LABEL_STARTPAGE_SORT,'products_to_xml' => TEXT_EASYPOPULATE_LABEL_XML,'products_ean' => 'Штрих-код'); // this line is used if you have no custom fields to import/export и у Вас появится в выгрузке и штрих-код
  16. А вот еще такая идея - весьма логичная и нужная, чтобы этот самый баркод можно было выгрузить через экспорт в эксель ( или csv), насколько сложно это доработать? по идее получается нужно добавить одно поле в экспорт.. то есть вот тут есть все данные ( и даже ширина высота и вес), но нет баркодов.. http://prntscr.com/roe6sl а надо бы..
  17. morozik

    SEO Фильтры в VamShop

    здравствуйте, для версия 1.99.15 уже содержит эту опцию или надо ждать новую версию? Спасибо И модуль подразумевает два способа работы с текстами на страницах фильтров? 1. Модуль полностью автоматический, не надо вручную править фильтры, добавлять SEO тексты. 2. Уникальное описание для страницы фильтра. Вы можете задать свой текст с описаним в настройках группы спецификаций в админке, любой текст, картинки, видео и т.д. Верно? Посмотрела демку - функция срабатывает только при выборе одного фильтра. При добавлении 2-х или 3-х УРЛ получается вот такого плана: http://demo.vamshop.ru/products_filter.php?cPath=2&cat=2&f7=8%20220%20%D0%BC%D0%90%D1%87&f8=547%20%D0%B3.
  18. DROP TABLE IF EXISTS topics_description; CREATE TABLE topics_description ( topics_id int(11) NOT NULL default '0', language_id int(11) NOT NULL default '1', topics_name varchar(255) NOT NULL default '', topics_heading_title varchar(255) default NULL, topics_description text, topics_meta_title text, topics_meta_description text, topics_meta_keywords text, PRIMARY KEY (topics_id,language_id), KEY idx_topics_name (topics_name) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_general_ci; лечится так правда не много слетели статьи но поправимо. Спасибо
  19. Вот сюда - Я так думаю это потому что SQL файлами базу данных не обновляли. Обновлять базу надо обязательно, иначе вообще может магазин не работать.
  20. Смотрел вебвизор, видел что ты увидел ошибку со статьями, не подскажешь куда копать? )
  21. Last week
  22. На странице корзины явно не хватает текстовых меток, данных.
  23. https://pamyatniki63.ru/ - тоже обновился но без лайков и дизлайков, может что-то еще забыл но вроде все работает без inject sql кода и решением по обновлению кеша в сотовых и тд стало изменение имени папки с шаблоном ну и перекл в меню т.к все привязано через $tpl вроде работает.
  24. support

    SEO Фильтры в VamShop

    Выглядит вот так сейчас страница категории с выбранным фильтроам.
  25. SEO Фильтры в VamShop -
  26. В VamShop по умолчанию добавлен новый модуль — SEO Фильтры В онлайн демке http://demo.vamshop.ru уже работает, можно попробовать. В разделе Планшеты — http://demo.vamshop.ru/tablets.html Вместо вот такого адреса — http://vamshop.loc/products_filter.php/cat/2/cPath/2/f9/16 ГБ будет вот такой адрес — http://demo.vamshop.ru/tablets/pamyat-16-gb.html Модуль полностью автоматический, не надо вручную править фильтры, добавлять SEO тексты. По умолчанию, если у Вас вывод фильтра сделан в виде ссылок, т.е. в настройках в Админке — Спецификации, в настройках группы спецификаци в опции Показывать фильтр как выбрано значение Список ссылок В этом случае все фильтры строятся с SEO URL адресом по умолчанию, ничего вручную заполнять не надо. Берётся название спецификации и значение спецификации и получается SEO URL адрес вида http://ваш.магазин.ру/категория/фильтр-значение.html Кроме того, есть возможность самому указать как будет выглядеть адрес страницы с отфильтрованным товаром. Для этого есть опция — Задать уникальное SEO название спецификации: в настройках группы спецификаций. Если задали своё значение — будет выводиться Ваше значение, если не задали значение, SEO URL адрес будет построен на основе названия спецификации и значения спецификации. Примеры доступны в онлайн-демке http://demo.vamshop.ru/tablets.html Учитывая все остальные возможности VamShop, SEO фильтры позволят Вашему магазину выглядеть лучше конкутентов в поисковых системах. Лучше представлять свой товар, делать удобную навигацию внутри категории. Ваша задача — скормить поисковикам страницу с отфильтрованными товарами и что б эта страница была проиндексирована роботами и была дступна в поисковой выдаче, что б роботы не выкинули страницу из индекса как недостаточно качественную. Для этого в VamShop по умолчанию предусмотрены следующие вещи, которые позволяют сделать страницу с фильтром уникальной. 1. Уникальное описание для страницы фильтра. Вы можете задать свой текст с описаним в настройках группы спецификаций в админке, любой текст, картинки, видео и т.д. 2. Уникальные meta тэги (meta title, meta description. meta keywords) для страницы фильтра. 3. Cononical URL для страницы фильтра. 4. SEO адрес фильтра с ключевыми словами. В URL адресе выводится и название категории и название фильтра и значение фильтра, т.е. есть все возможности что б вставить ключевые слова в URL адрес фильтра. Читать заметку полностью
  1. Load more activity