Перейти к содержанию

content bot

bot
  • Постов

    138
  • Зарегистрирован

  • Посещение

Весь контент content bot

  1. content bot

    Canonical

    Канонические адреса (canonical) и их важность Canonical – это атрибут метатега link, который используется для указания основной страницы сайта. Такие страницы называются каноническими и помечаются атрибутом canonical. Это помогает поисковым роботам индексировать только один контент, который расположен на странице с указанным адресом. Появление дублей на сайте может быть вызвано различными причинами, такими как работа CMS с разными типами адресов, возврат одинакового значения при использовании разных протоколов и субдоменов, а также присвоение нескольких адресов одной странице из-за одинакового контента в разных разделах. Использование атрибута rel="canonical" важно для избежания индексации дублирующего контента на разных страницах сайта. Это помогает избежать ухудшения рейтинга сайта в поисковой выдаче из-за дублей. Для организации расположения канонических адресов в коде статей и предотвращения появления дублей необходимо применять атрибут canonical. Это упрощает процесс SEO-оптимизации и позволяет быстрее индексировать нужный контент, исключая дубли из поиска. Установка данного метатега делает процесс оптимизации более эффективным и быстрым. Проверка наличия и использование метатега с атрибутом canonical для оптимизации сайта 1. Открытие и анализ кода страницы: - Открываем код веб-страницы, ищем нужный метатег с указанным атрибутом canonical. 2. Использование специальных расширений или плагинов: - Устанавливаем в браузер специальное расширение, дополнение или плагин для просмотра параметров веб-сайтов. - Расширение уведомит пользователя о наличии или отсутствии метатега canonical на посещаемой странице. 3. Поиск дублей с помощью поисковых систем: - Заходим на страницу расширенного поиска системы "Яндекс". - Передаем поисковой системе часть содержимого страницы или сетевой адрес сайта для проверки наличия дублированного контента. - "Яндекс" выведет адреса страниц с дублированным контентом или предложит варианты по запросу при отсутствии дублей. 4. Использование специальных операторов поиска: - Для проверки наличия метатега canonical можно воспользоваться специальными операторами поиска, например, в Google. - В строку поиска вводим оператор site:домен проверяемого сайта "ключевое слово", чтобы найти дублированный контент. 5. Использование сервисов проверки уникальности контента: - Для поиска дублированного контента можно воспользоваться специализированными сервисами проверки уникальности контента. - Сервисы помогут обнаружить полностью или частично дублированный контент и указать процент совпадений. 6. Важность корректной настройки метатега canonical: - Правильно настроенный метатег с атрибутом canonical повысит эффективность оптимизации и продвижения сайта в интернете. - Canonical помогает поисковым системам понять основную страницу с похожим контентом, избежать проблем с дублированным контентом и улучшить позиции сайта в результатах поиска. Внимательная проверка наличия и правильного использования метатега canonical поможет улучшить SEO-показатели вашего сайта.
  2. Обсуждение Публичного договора на предоставление агентских и информационных услуг. В виду того, что практически все договора однотипные, ниже предлагается его обсуждение, Возможно вы хотите предложить какие то поправки или заметите какие ошибки. Размещён тут P.S. Готовим договор для самозанятых.
  3. content bot

    Публичный договор

    Публичный договор на агентские и информационные услуги - OpenCart Club Публичный договор №_______ От __ _______ 202_ г. Индивидуальный предприниматель ФИО___ или ООО наименование ____ зарегистрирован\но и ведет свою деятельность в соответствии с действующим законодательством Российской Федерации, ИНН: _______, ОГРНИП: ________, ОГРН:_____ именуемый\мое в дальнейшем Принципал, с одной стороны, и OpenCart club, которое основано и ведет свою деятельность в соответствии с действующими законами Российской Федерации, в лице Индивидуального Предпринимателя Самонин Владимир Андреевич, ИНН: 773271615649, ОГРНИП: 317774600120858 именуемый в дальнейшем - «Агент», с другой стороны, вместе именуемые - «Стороны», а каждый отдельно - «Сторона», заключили настоящий агентский договор № _____ от ___ ___ 202_ г. (далее — Договор) о нижеследующем: ОПРЕДЕЛЕНИЯ Агент - посредник между принципалом и конечным потребителем продукции, не являющийся её владельцем. Продает часть или всю продукцию принципала (цены и условия поставки определяются принципалом), ищет потенциальных покупателей продукции, ведёт переговоры, помогает в оформлении и передачи продукта/товара. Принципал - физическое или юридическое лицо, уполномочивающее другое лицо действовать в качестве агента. Личный кабинет - веб-страница Сайта OpenCart.club, доступ к которой Принципал осуществляет с помощью личных идентификаторов доступа (логин, пароль) и, с помощью которой Принципал может управлять своими действиями на Сайте OpenCart.club способами доступными из контекстных меню на Сайте, в том числе, но не ограничиваясь устанавливать условия Лицензии и загружать программное обеспечение (далее - ПО). Сайт - совокупность веб-страниц, доступ к которым осуществляется с использованием доменного имени (адреса) https://opencart.club/ вместе со всеми страницами, субдоменами и программным обеспечением. Лицензия - лицензионный договор, содержащий условия предоставления Покупателю права на использование ПО Принципала. Покупатель - пользователь Сайта OpenCart.club, который желает приобрести ПО, которое загружено Принципалом на Сайт на условиях этого Договора. Программное обеспечение - набор инструкций в виде слов, цифр, кодов, схем, символов или в любом другом виде, выраженном в форме, пригодной для считывания компьютером, которые приводят его в действие для достижения результата; также включает исходный код. Платежная система - третье лицо, являющееся финансовым учреждением, которое предоставляет возможность совершать денежные переводы для обеспечения расчётов между Покупателем и Разработчиком. Разработчик - статус, который получает Принципал, при условии реализации лицензий на Программное обеспечение на Сайте OpenCart.club. Разработчик он же Автор ПО гарантирует, что размещая свое Программное обеспечение на других ресурсах, устанавливает одинаковую стоимость на ПО. Фрилансер - статус, который может получить Принципал, при условии предоставления услуг на разработку и\или доработку Программного обеспечения исключительно на Сайте заказчика\покупателя или прочих услуг по сайту. Публичный договор - Публичный договор на агентские и информационные услуги - договор размещенный по на текущей странице; включая Условия соглашения, Политика конфиденциальности, Ценовая политика, Условия скачивания и покупки дополнений, Информация по оплате, Условия для Разработчиков, Лицензионное соглашение. 1. ПРЕДМЕТ ДОГОВОРА 1.1. Принципал поручает, а Агент принимает на себя обязательство осуществлять от имени и за счет Принципала поиск Покупателей и заключать с Покупателями лицензионные договоры от имени и в интересах Принципала через Сайт OpenCart club. За выполнение указанного поручения Принципал выплачивает Агенту вознаграждение в соответствии с условиями настоящего Договора. 1.2. В рамках предоставления Агентом агентских услуг, правоотношения сторон устанавливаются исходя из положений ГК РФ Статьи 1005 об Агентском договоре, принимая во внимание, установленное в п.1.4. данного Договора. В случае возникновения разночтений между положениями договора и указанным законом стороны квалифицируют свои действия исходя из положений закона. 1.3. Поручение считается выполненным с момента получения денежных средств Принципалом по заключенному лицензионному договору хотя бы с одним Покупателем. 1.4. Агент предоставляет Услуги исходя из Закона Российской Федерации N 161- ФЗ "О национальной платежной системе". При этом Агент, может действовать в качестве хозяйственного представителя, но не является финансовым посредником в понимании вышеуказанного закона. 2. ПРАВА И ОБЯЗАННОСТИ СТОРОН 2.1. Агент обязуется: 2.1.1. В соответствии с поручением Принципала осуществлять поиск потенциальных Покупателей с целью заключения лицензионных договоров с Принципалом и заключать такие договоры от его имени. 2.1.2. Предоставить Принципалу доступ к Личному кабинету. Информация, содержащаяся в Личном кабинете, будет являться подтверждением объема, в котором Агент выполнил поручение Принципала. 2.1.3. Принимать на свой счет денежные средства Покупателей и перечислять их Принципалу не позднее 10 (десятого) числа каждого месяца за предыдущий месяц по реквизитам, указанным в настоящем Договоре. Поступившие денежные средства от Покупателей перечисляются Агентом Принципалу за вычетом агентского вознаграждения и расходов, связанных с исполнением своих обязательств по Договору и определяемых в порядке согласно п. 2.1.4. Договора. 2.1.4. Стороны договорились, что размер расходов, связанных с исполнением Договора, не может превышать 15 % от доходов Принципала, определяемых в соответствии с п. 3.3 Договора. 2.1.5. Предоставить Принципалу отчет в течение 7 (семи) дней после дня окончания календарного месяца на адрес электронной почты Принципала, указанный в настоящем Договоре, 2.1.6. Полученное вознаграждение за Агентские услуги в размере 15% использовать исключительно на поддержку, развитие и продвижение сообщества и маркетплейса OpenCart club, и опенкарт в целом. 2.2. Принципал обязуется: 2.2.1. Предоставить Агенту необходимые для выполнения настоящего поручения достоверные сведения об условиях лицензионного договора, заключаемого с клиентами Принципала, путем заполнения соответствующих форм на Сайте OpenCart.club при загрузке ПО на Сайт OpenCart.club. Условия лицензионного договора, предоставляемые Принципалом, должны содержать срок, условия использования ПО, стоимость. 2.2.2. Предоставить всю необходимую информацию и документацию на ПО, а также все необходимые инструкции для Покупателей и условия получения ключа, если это необходимо. 2.2.3. Обеспечить безопасность передаваемого Покупателям ПО. 2.3.4. Соблюдать условия GPLv3 при распространении ПО, если это необходимо. 2.2.5. В случае невозможности предоставления ПО или обнаружения каких-либо неполадок в ранее загруженном на Сайт ПО, уведомить об этом Агента, как только Принципалу станет известно о таких обстоятельствах. 2.2.6. В случае необходимости предоставления Покупателям ключа, предоставить такой ключ на условиях, которые были указаны Принципалом при размещении ПО на Сайте, но не позднее, чем в течение 96 часов после обращения Покупателя за ключом, если Принципал не указал иные условия. 2.2.7. Самостоятельно нести ответственность перед Покупателями за качество и безопасность ПО. 2.2.8. Предоставлять Агенту пояснения или дополнительные материалы в случае обращения к Агенту Покупателей претензиями относительно качества ПО Принципала. 2.2.9. В течении срока поддержки Объекта, реагировать на запросы Покупателей о поддержке в течении 96 часов с момента получения такого запроса. 2.2.10. Выплатить Агенту вознаграждение в размере определенном в п. 3.1 настоящего Договора. 2.2.11. Нести за свой счет расходы, связанные с исполнением Агентом поручения Припципала в размере, установленном п. 2.1.4. Договора. 2.2.12. Не размещать на Сайте рекламные материалы или сторонние ссылки без разрешения Агента. 2.2.13. Вежливо и уважительно общаться с пользователями Сайта при любых обстоятельствах. 2.2.14. В случае, если вследствие нарушения Принципалом условий данного Договора или Лицензий, реализуемых Агентом, Агент понесет какие-либо убытки - компенсировать Агенту такие убытки в полном объеме. 2.2.15. Принять от Агента все исполненное им по настоящему Договору. 2.3. Агент имеет право: 2.3.1. В случае нарушения Принципалом п. 2.2.9., по своему усмотрению, осуществить возврат средств Покупателю, при условии, что средства за Лицензию на данный Объект еще не были перечислены Принципалу, а также снять все Лицензии на Объекты с продажи и/или расторгнуть данный Договор в одностороннем порядке. 2.3.2. Расторгнуть данный Договор в любое время, уведомив Принципала. В таком случае выплата осуществляется по запросу Принципала. 2.3.3. Удалять с Сайта любую информацию, сторонние ссылки, останавливать или прекращать продажу Лицензий на Объекты ПО. 2.4. Принципалу запрещено: 2.4.1. Нарушать условия реагирования или несвоевременно оказывать \ реагировать на запросы Покупателей о поддержке Программного обеспечения, что, в том числе, но не исключительно проявляется в получении Агентом большого количества запросов на возврат средств от Покупателей. Для целей этого подпункта, “большое количество запросов” означает получение Агентом 3 (трех) и больше запросов на возврат средств от Покупателей в течении одной рабочей недели по причине нарушения Принципалом условий поддержки Программного обеспечения; 2.4.2. Составлять такое описание Лицензии на соответствующей веб-странице конкретного Программного обеспечения на Сайте, которое содержит заведомо ложную информацию о Программном обеспечении или такую информацию о Программном обеспечении, которую невозможно проверить. Агент на свое собственное усмотрение оценивает ложность и невозможность проверки той или иной информации в описании Лицензии на соответствующей веб-странице конкретного Программного обеспечения на Сайте; 2.4.3. За исключением наличия форс-мажорных обстоятельств, не отвечать на обращения представителя Агента дольше 96 (девяноста шести) часов, в случае обнаружения Агентом небезопасности Программного обеспечения, в том числе, но не исключительно обнаружения проблемы в программном коде Программного обеспечения, которая может привести к сбоям в работе Сайта или любой другой веб-площадки; 2.4.4. Систематически (т.е. два и больше раза) неэтично, грубо, с нарушением условий этого Договора взаимодействовать с другими пользователями Сайта или Покупателями в рамках реагирования на запросы Покупателей о поддержке Программного обеспечения Принципала. 3. РАЗМЕРЫ ВОЗНАГРАЖДЕНИЯ И ПОРЯДОК ЕГО ВЫПЛАТЫ. 3.1. За исполнение поручения по настоящему Договору Принципал выплачивает Агенту вознаграждение. Агентское вознаграждения самостоятельно удерживается Агентом. Размер агентского вознаграждения составляет 15% от суммы дохода Принципала. 3.2. Определяемый по правилам п. 3.1 Договора размер агентского вознаграждения применяется Сторонами к расчетам в следующем за текущим календарном месяце. При этом, в первом месяце действия договора размер Агентского вознаграждения определяется исходя из суммы стоимости реализованных через Сайт Лицензий на ПО Принципала за период от даты подписания Договора до первого числа следующего календарного месяца. 3.3. Доходы Принципала, принимаемые во внимание при расчете Агентского вознаграждения, будут определяться как сумма поступивших от Покупателей средств. 3.4. Выплата вознаграждения будет производиться путем его удержания Агентом в момент перечисления им денежных средств Принципалу. 3.5. Принципал подает Агенту запросы на перечисление денежных средств, полученных Агентом от Покупателей, в любое время, но не более чем 2 (два) раза в течение 1 (одного) календарного месяца. Агент производит выплаты по мере обработки запросов, но не чаще чем раз в две недели. Агент производит выплату в течение 3 (трех) максимум 7 (семи) рабочих дней с момента получения соответствующего запроса от Принципала. 3.6. Агент может, в зависимости от выбора Принципала, производить выплаты путем перечисления денежных средств на расчетные счета Принципала в платежных системах или на банковскую карту МИР/VISA/MasterCard Принципала. 3.7. Агент может производить выплаты не только в российских рублях, но и в прочих валютах – в зависимости от выбора Принципала в случае, если это предоставляется возможным. Все расходы, связанные с конвертированием валют при перечислении денежных средств Принципалу, оплачиваются Принципалом и могут удерживаться Агентом с денежных средств, которые перечисляются Принципалу. Агент оставляет за собой право самостоятельно провести Принципалу выплату в российских рублях вне зависимости от валюты, которую Принципал указал в запросе на перечисление денежных средств как желаемую. 3.8. Запрос на выплату средств подается Принципалом через его Аккаунт, а в случае блокировки Аккаунта - с электронной почты, привязанной к его Аккаунту, на электронную почту: support@opencart.club 3.9. Агент не проводит выплату, если сумма средств, которая подлежит перечислению Принципалу, составляет меньше 2000,00 рублей, за исключением случаев расторжения данного Договора. 3.10. В случае, если сумма средств, которая запрашивается Принципалом к перечислению, составляет менее 5 000,00 рублей, все расходы по перечислению такой суммы несет Принципал. Комиссия банка или платежной системы удерживается Платежной системой из суммы, которая подлежит переводу. Принципал не может запросить перечисление средств, сумма которых в эквиваленте согласно официальному курсу Альфа Банка на дату подачи Принципалом запроса на перечисление средств, составляет меньше 100 долларов США. 3.11. В случае, если Принципал запрашивает перечисление средств в другой валюте, нежели в той, для которой у такого Принципала открыт платежный счет, на который Принципал запрашивает перечислить средства, конвертация таких средств при их перечислении производится в соответствии с официальным курсом Альфа Банка на дату подачи Принципалом запроса о перечислении таких средств. 3.12. Стороны согласовали, что реквизиты счета Принципала, на который осуществляется перечисление средств указываются в этом Договоре, но Стороны могут согласовать иные реквизиты путем направления электронных писем с указанных в п. 10.5. данного Договора электронных почт. 3.13. Стороны договорились, что за предоставление агентских услуг связанных с продажей Лицензий на Программное обеспечение в случае присвоения Принципалу статуса Разработчика\Фрилансера, Принципал выплачивает Агенту Агентское вознаграждение. Размер Агентского вознаграждения определяется вне зависимости от суммы Лицензионных Договоров, которые были заключены в 1 (одном) календарном месяце и составляет 15% от суммы заключенных Агентом договоров с Покупателями за 1 (один) календарный месяц. 3.14. В случае, если Агенту станет известно, что Принципал нарушил требования установленные в настоящем Договоре, то размер Агентского вознаграждения за предоставление агентских услуг, связанных с продажей Лицензий через Сайт, немедленно повышается до 30% от дохода с таких продаж за 1 (один) календарный месяц. В случае нарушения условий Разработчика\Фрилансера, Принципал не может вернуть себе прежние условия Агентских вознаграждений даже при устранении нарушений. 3.15. В случае изменения размера Агентского вознаграждения согласно п. 3.14., размер Агентского вознаграждения остается фиксированным в течение всего сотрудничества Агента и Принципала, и остается в размере 30% от дохода с продаж Лицензий на Программное Обеспечение через Сайт, не зависимо от суммы цен заключенных договоров с Покупателями. Стороны договорились, что в таком случае формулы п. 3.1 к расчету Агентского вознаграждения не применяются. 3.16. В случае первого нарушения Принципалом требований, предусмотренных пунктом 2.4. этого Договора, Агент имеет право вынести Принципалу письменное/устное предупреждение и объяснить последствия повторного или систематического нарушения таких требований. В случае повторного, а также систематического нарушения Принципалом требований, предусмотренных пунктом 2.4. этого Договора, размер Агентского вознаграждения в течении каждого из трех календарных месяцев, которые следуют за месяцем, в котором Принципал повторно нарушил вышеуказанные требования, будет составлять 50% от дохода с продаж лицензий Принципала через Сайт, в течении соответствующего месяца. 4. ГАРАНТИИ ПРИНЦИПАЛА 4.1. Принципал гарантирует что: 4.1.1. Права интеллектуальной собственности на ПО, которое реализуется в рамках данного Договора принадлежат Принципалу в необходимом объеме для предоставления Лицензии, в том числе для продажи интеллектуальных прав третьим лицам на условиях, установленных в такой Лицензии; 4.1.2. Принципал не нарушает какой-либо договор или другое свое обязательство, заключая данный Договор; 4.1.3. Предоставляемая Принципалом информация и информация о реквизитах платежных систем является достоверной и точной; 4.1.4. Принципал не будет загружать на Сайт ПО, содержащее вредоносный код или способное любым образом привести к нарушению функционирование Сайта, или нанести вред; 4.2. Принципал обязуется не устанавливать стоимость лицензии на Сайте выше, чем стоимость лицензий с аналогичными условиями на других веб-сайтах; 4.3. Принципал обязуется не размещать на Сайте сторонние ссылки, объявления о продаже своих услуг или иным образом использовать Сайт в рекламных целях. В том числе, но не ограничиваясь, Принципалу запрещено оформлять, заполнять Профиль или создавать темы с целью рекламы своих услуг или программного обеспечения, размещенного на сторонних сайтах, если с Агентом дополнительно не согласовано иное; 4.4. В случае нарушения Принципалом пп. 4.2., 4,3. Агент имеет право удалить такую информацию/Объект и/или расторгнуть данный Договор в одностороннем порядке, и/или удалить, или заблокировать Аккаунт Принципала; 4.5. Чтобы в случае необходимости Агент мог вовремя реагировать на запросы банков, платежных систем и соответствующих государственных органов, Агент может требовать, а Принципал обязуется предоставить дополнительные документы и сведения; 4.5.1. Агент может затребовать у Принципала документы, подтверждающие следующую информацию: имя, персональный идентификационный код или, если таковой отсутствует, дата и место рождения и место регистрации или размещения главного офиса Пользователя (или его представителя); название юридического лица, регистрационный код, дата регистрации, имя директора, участников правления или аналогичного органа, их полномочия на представление юридического лица, контакты юридического лица; цели хозяйственных отношений или разовой транзакции с указанием постоянного местопребывания, места ведения хозяйственной деятельности или резидентства; профессия или поле деятельности; происхождение денежных средств, использованных для транзакции; происхождение доходов Принципала, конечный бенефициар юридического лица; другая деятельность Принципала, не связанная с Сайтом, которая касается или может касаться уголовной деятельности, отмывания денег или финансирования терроризма; происхождение провайдера финансовых услуг и так далее. 5. ЛИЦЕНЗИЯ 5.1. Если иное не установлено Принципалом, срок Лицензии составляет 365 дней со дня активации Объекта. Срок поддержки Объектов Принципалом не превышает срок Лицензии. 5.2. Объект доступен Покупателям к скачиванию на Сайте в течении 365 дней со дня оплаты. Срок доступа к скачиванию на Сайте не зависит от срока действия Лицензии за исключением случаев, предусмотренных п. 5.5. 5.3. Если Принципал не указал детальные условия Лицензии на соответствующей веб-странице Объекта на Сайте то применяется общие условия Лицензии размещённые на Сайте OpenCart club по ссылке Лицензионное соглашение . 5.4. Принципал обязан придерживаться установленных им условий лицензий независимо от того продолжаются ли его взаимоотношения с Агентом. 5.5. Если действие Договора по каким-либо причинам прекращается, Аккаунт Принципала может быть частично ограничен или удален Агентом с Сайта по какой-либо причине, предусмотренной данным Договором, все Объекты, загруженные Принципалом на Сайт, также могут быть удалены. Все обязательства по предоставлению Объектов Покупателям, а также оказанию предусмотренной Лицензией поддержки в случае расторжения Договора между Агентом и Принципалом несет Принципал. 6. ОТВЕТСТВЕННОСТЬ СТОРОН 6.1. Агент не несет ответственности за качество ПО, которое реализуется в рамках данного Договора. Принципал обязуется реагировать на претензии Покупателей в течение 96 часов с момента их получения посредством Сайта OpenCart club или через обращение к Агенту. 6.2. Агент не несет ответственности за любой ущерб, причиненный Покупателям в связи с использованием ПО. 6.3. В случае получения жалоб или претензий со стороны Покупателей на ПО Принципала, Агент имеет право временно прекратить оказание услуг по данному Договору до выяснения обстоятельств или немедленно расторгнуть Договор, а также ограничить Принципалу доступ к Сайту. В таком случае ранее полученные от Покупателей денежные средства перечисляются Агентом Принципалу по правилам 3 Раздела данного Договора. 6.4. За неисполнение или ненадлежащее исполнение обязательств по настоящему Договору Стороны несут ответственность в соответствии с действующим законодательством Российской Федерации. 7. ФОРС-МАЖОР 7.1. Ни одна из Сторон настоящего Договора не несет ответственности перед другой Стороной за невыполнение обязательств, обусловленное обстоятельствами непреодолимой силы, возникшими помимо воли и желания сторон, которые нельзя предвидеть или избежать, включая объявленную или фактическую войну, гражданские волнения, эпидемии, блокаду, землетрясения, наводнения, пожары и другие стихийные бедствия. 7.2. Документ, выданный соответствующим компетентным органом, является достаточным подтверждением наличия и продолжительности действия обстоятельств непреодолимой силы. 7.3. Сторона, которая не исполняет своего обязательства вследствие действия обстоятельств непреодолимой силы, должна немедленно известить другую Сторону о препятствии и его влиянии на исполнение обязательств по Договору. 8. ПОРЯДОК РАЗРЕШЕНИЯ СПОРОВ 8.1. Все споры и разногласия между Сторонами, возникающие в период действия настоящего Договора, разрешаются Сторонами путем переговоров. Переговоры являются приоритетным способом разрешения конфликтных ситуаций. 8.2. В случае невозможности разрешения разногласий путем переговоров, споры подлежат разрешению в соответствии с законодательством Российской Федерации. 9. СРОК ДЕЙСТВИЯ ДОГОВОРА. ПОРЯДОК ИЗМЕНЕНИЯ УСЛОВИЙ И ПРЕКРАЩЕНИЯ ДОГОВОРА 9.1. Общий срок предоставления услуг по настоящему Договору с __.__.202_ года по __.__.202_ г. включительно. 9.2. Настоящий Договор может быть изменен или прекращен по взаимному письменному соглашению сторон, а также в других случаях, предусмотренных законодательством. 9.3. Принципал вправе в любое время отказаться от исполнения настоящего Договора путем направления уведомления Агенту на электронную почту за 7 (семь) дней до предполагаемой даты расторжения договора. Если Принципал отказался от настоящего Договора, Агент сохраняет право на вознаграждение за услуги, оказанные им до прекращения Договора, на возмещение понесенных до этого момента расходов. Принципал в любом случае не может отказаться от своих обязательств по заключенным агентом лицензионным договорам. 9.4. Агент вправе в любое время отказаться от исполнения настоящего Договора путем направления уведомления Принципалу на электронную почту за 7 (семь) дней до предполагаемой даты расторжения договора. Агент, отказавшийся от настоящего Договора, сохраняет право на вознаграждение за услуги, оказанные им до прекращения Договора, а также на возмещение понесенных до этого момента расходов. 9.5. Агент вправе в любое время отказаться от исполнения настоящего Договора, в случае нарушения Принципалом условий данного Договора, путем направления уведомления Принципалу на электронную почту. 10. ЗАКЛЮЧИТЕЛЬНЫЕ ПОЛОЖЕНИЯ 10.1. Стороны заверяют друг друга, что действуют в полном соответствии с законодательством своих стран, в отношении них не возбуждено дела (и не было подано соответствующего заявления) о признании несостоятельным (банкротом), не принималось решения о ликвидации и (или) приостановлении деятельности. 10.2. Во всем остальном, что не предусмотрено настоящим Договором, стороны руководствуются действующим законодательством Российской Федерации. 10.3. Любые изменения и дополнения к настоящему Договору действительны при условии, если они совершены в письменной форме и подписаны Сторонами или уполномоченными на то представителями Сторон. 10.4. Все уведомления и сообщения в рамках настоящего Договора должны направляться Сторонами друг другу в письменной или электронной форме по реквизитам, указанным в данном Договоре. 10.5. Стороны согласовали, что надлежащим предоставлением информации, а также документов, в рамках настоящего Договора, будут электронные письма с адресов Принципала и Агента направлены друг другу, в частности: Электронный адрес Агента: ______ Электронный адрес Принципала: _____ 10.6. Настоящий Договор составлен в двух экземплярах, имеющих одинаковую юридическую силу, по одному экземпляру для каждой из Сторон. 10.7. Настоящий Договор и его Приложения (если есть) составляют единый договор между Сторонами и регулируют все обещания, гарантии, заверения, условия, понимания и договоренности между Сторонами по предмету настоящего Договора. 10.8. Если какое-либо положение настоящего Договора будет признано любым судом или компетентным органом недействительным полностью или. частично, настоящий Договор продолжит быть действующим в части пунктов, не признаны недействительными. 11. АДРЕСА, РЕКВИЗИТЫ, ПОДПИСИ СТОРОН ПРИНЦИПАЛ ИП ФИО полностью\ ООО наименование полностью ИНН: __ ОГРНИП: __ ОГРН: ___ Банковские реквизиты: Расчетный счет: _ Банк __ БИК: __ SWIFT: __ Корр. счет __ ________________________________ . _ . _ . АГЕНТ Индивидуальный предприниматель Самонин Владимир Андреевич ИНН: 773271615649 ОГРНИП: 317774600120858 Банковские реквизиты: Расчетный счет: 40802810600000103957 Банк АО «ТБанк» БИК: 044525974 SWIFT: _________ Корр. счет 30101810145250000974 __________________________________Самонин В.А. ____________________________________________________________________________________________
  4. content bot

    Реквизиты

    Реквизиты: ИП - Самонин Владимир Андреевич ИНН: 773271615649 ОГРНИП: 317774600120858 Банковские реквизиты: Расчетный счет 40802810600000103957 Банк АО «ТБанк» БИК 044525974 Корр. счет 30101810145250000974 Уважаемые коллеги! Сообщество OpenCart club создано исключительно для поддержки разработчиков и нацелено на совместное принятие участия в развитии опенкарт и расширений. Вся доходная часть (комиссия 15%) с продаж дополнений на маркетплейсе OpenCart club, уходит исключительно на поддержку, развитие и продвижение данного сообщества, и опенкарт в целом, а так-же ваших расширений.
  5. Уточняйте все интересующие вас вопросы перед покупкой и/или загрузкой ПО на Площадке OpenCart.Club непосредственно у Разработчиков и Авторов ПО в соответствующих ПО темах технической поддержки на форуме, а также внимательно читайте описание к ПО и условия Лицензии, если таковая имеется. Подробнее о Лицензионном Соглашении. Торговая площадка OpenCart Club содержит файлы ПО, загруженные третьими лицами, их Разработчиками и Авторами. Платформа OpenCart Club предоставляет торговую площадку для удобства клиентов. Расширения, дополнения, модули, шаблоны для OpenCart и сборок на его основе могут поддерживаться или не поддерживаться по усмотрению автора. Расширения, дополнения, модули и шаблоны могут работать или не работать для конкретной версии программного обеспечения, могут содержать недостатки или дефекты и могут не работать так, как рекламируется. Если у вас как у клиента, нет необходимых навыков загрузки и установки ПО на ваш сайт, то лучше будет вам обратиться за помощью на форум в соответствующие разделы или воспользоваться платными услугами в разделе Услуги на Платформе OpenCart.Club. В ином случае, Администрация Платформы OpenCart Club не дает никаких гарантий на пригодность ресурсов, загруженных с данной торговой площадки. Любая оплата перечисляется автору опубликованного материала, за вычетом комиссии торговой площадки. Администрация OpenCart Club не обеспечивает техническую поддержку файлов, купленных и/или загруженных с торговой площадки OpenCart Club. Для получения технической поддержки, свяжитесь с автором по любым вопросам, связанным с вашей покупкой для оказания вам технической поддержки в соответствии с лицензионным соглашением. Если же вы исчерпали все методы, вы можете оставить заявку в разделе Тех Поддержка Форума OpenCart Club, чтобы можно было рассмотреть вашу проблему. Все продажи на торговой площадке OpenCart.Club окончательные. Любые запросы по возврату денежных средств за приобретённое ПО должны быть утверждены автором ПО, без исключений. По результатам рассмотрения спора ваш аккаунт может быть частично ограничен. Если вы не принимаете эти условия, то лучше откажитесь от приобретения ПО! Неотъемлемой частью настоящей Политики являются: Условия соглашения. Политика конфиденциальности. Лицензионное соглашение. Публичный договор Информация по оплате Условия для разработчиков Ценовая политика Реквизиты При возникновении вопросов вы можете обратиться в службу поддержки OpenCart.Club.
  6. Партнёрство с OpenCart Club Рекомендуйте покупку расширений и услуг с платформы OpenCart Club своим клиентам и зарабатывайте. Продвигайте расширения, модули, шаблоны и услуги зарабатывая совместно с OpenCart Club. Условия партнерской программы OpenCart Club Партнерские условия 5% с комиссии предполагают, что вы будете предлагать к покупке, продвигать или рекламировать определенное расширение ПО, модули, шаблоны или услугу, и получать процент от каждой продажи, которая была сделана через вашу уникальную партнерскую ссылку. Допустим, вы являетесь партнером OpenCart Club и рекламируете определенный модуль или шаблон. Каждый раз, когда кто-то переходит на сайт OpenCart Club по вашей партнерской ссылке и совершает покупку, вы получаете 5% от суммы комиссии в качестве вознаграждения с привлечённого клиента. Партнерские условия OpenCart Club предусматривают вознаграждение в размере 5% с комиссии, это означает, что вы будете получать 5% от суммы комиссии, которую получает OpenCart Club за каждую продажу расширений ПО, модулей, шаблонов и услуг, совершенную по вашей партнерской ссылке. Таким образом, чем больше продаж будет сделано через вашу партнерскую ссылку, тем больше будет ваше вознаграждение. Это выгодная возможность для тех, кто хочет зарабатывать дополнительные средства на площадке OpenCart Club, используя свои навыки в продвижении дополнений и услуг. Вывод средств Вывод накопленных средств по партнерской программе: Средства накопленные по партнерской программе вы можете видеть на счёте своего аккаунта. Выплата средств Партнёру производится по запросу, заранее согласованным методом (перечисление на расчетный счет или на карту), но не чаще, чем 2 раза в месяц после 15 и\или 30-31 числа в течении последующих нескольких дней, с учётом выходных и праздничных дней. Для уточнения метода проведения выплаты партнёру следует оставить соответствующий запрос в службу поддержки OpenCart.Club. Запрос на выплату обрабатывается в течение 2 рабочих дней, либо позже, но не позднее, чем через 10 банковских рабочих дней. Минимальная сумма к выплате составляет 2000 рублей, кроме случаев, когда Партнёр удаляет свой Аккаунт с Площадки OpenCart.Club и выводит остаток средств со своего счета. В случае, если сумма средств, которая запрашивается Партнёром к перечислению, составляет менее 5000 рублей, все расходы по перечислению такой суммы несет Партнёр. Партнёр имеет возможность, не выводя заработанные средства, совершать ими со своего внутреннего счета на платформе OpenCart.Club оплату Дополнений и услуг других Разработчиков. Советуем вам предлагать своим клиентам и заказчикам регистрироваться на платформе и предлагать им приобретать дополнения самостоятельно. Так же использовать для этих целей альтернативные контакты - через которые ваши клиенты могут подключить вас к своим аккаунтам.
  7. content bot

    MVC - Model-View-Controller

    Model-View-Controller (MVC, «Модель-Представление-Контроллер», «Модель-Вид-Контроллер») — схема разделения данных приложения и управляющей логики на три отдельных компонента: модель, представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо. MVC Модель (Model) предоставляет данные и реагирует на команды контроллера, изменяя своё состояние. Представление (View) отвечает за отображение данных модели пользователю, реагируя на изменения модели. Контроллер (Controller) интерпретирует действия пользователя, оповещая модель о необходимости изменений. Основная цель применения этой концепции состоит в отделении бизнес-логики (модели) от её визуализации (представления, вида). За счёт такого разделения повышается возможность повторного использования кода. Наиболее полезно применение данной концепции в тех случаях, когда пользователь должен видеть те же самые данные одновременно в различных контекстах и/или с различных точек зрения. В частности, выполняются следующие задачи: К одной модели можно присоединить несколько видов, при этом не затрагивая реализацию модели. Например, некоторые данные могут быть одновременно представлены в виде электронной таблицы, гистограммы и круговой диаграммы; Не затрагивая реализацию видов, можно изменить реакции на действия пользователя (нажатие мышью на кнопке, ввод данных) — для этого достаточно использовать другой контроллер; Ряд разработчиков специализируется только в одной из областей: либо разрабатывают графический интерфейс, либо разрабатывают бизнес-логику. Поэтому возможно добиться того, что программисты, занимающиеся разработкой бизнес-логики (модели), вообще не будут осведомлены о том, какое представление будет использоваться. Концепция MVC позволяет разделить модель, представление и контроллер на три отдельных компонента: Модель Модель предоставляет данные и методы работы с ними: запросы в базу данных, проверка на корректность. Модель не зависит от представления (не знает как данные визуализировать) и контроллера (не имеет точек взаимодействия с пользователем), просто предоставляя доступ к данным и управлению ими. Модель строится таким образом, чтобы отвечать на запросы, изменяя своё состояние, при этом может быть встроено уведомление «наблюдателей». Модель, за счёт независимости от визуального представления, может иметь несколько различных представлений для одной «модели» Представление Представление отвечает за получение необходимых данных из модели и отправляет их пользователю. Представление не обрабатывает введённые данные пользователя. Контроллер Контроллер обеспечивает «связь» между пользователем и системой. Контролирует и направляет данные от пользователя к системе и наоборот. Использует модель и представление для реализации необходимого действия. Источник: wikipedia .
  8. content bot

    Bootstrap

    Bootstrap (также известен как Twitter Bootstrap) — свободный набор инструментов для создания сайтов и веб-приложений. Включает в себя HTML и CSS шаблоны оформления для типографики, веб форм, кнопок, меток, блоков навигации и прочих компонентов веб-интерфейса, включая JavaScript расширения. Bootstrap использует современные наработки в области CSS и HTML, поэтому необходимо быть внимательным при поддержке старых браузеров. Основные инструменты Bootstrap: Сетки — заранее заданные размеры колонок, которые можно сразу использовать, например, ширина колонки 140 px относится к классу .span2 (.col-md-2 в третьей версии фреймворка), который можно использовать в CSS-описании документа. Шаблоны — фиксированный или резиновый шаблон документа. Типографика — описания шрифтов, определение некоторых классов для шрифтов, таких как код, цитаты и т. п. Медиа — предоставляет некоторое управление изображениями и видео. Таблицы — средства оформления таблиц, вплоть до добавления функциональности сортировки. Формы — классы для оформления форм и некоторых событий, происходящих с ними. Навигация — классы оформления для панелей, вкладок, перехода по страницам, меню и панели инструментов. Алерты — оформление диалоговых окон, подсказок и всплывающих окон. 5 мая 2021 года был официально выпущен Bootstrap 5 Основные изменения включают: Новый компонент меню offcanvas. Удаление зависимости от jQuery в пользу ванильного JavaScript. Переписывание сетки для поддержки адаптивных желобов и столбцов, размещенных за пределами строк. Перенос документации с Jekyll на Hugo. Прекращение поддержки Internet Explorer[19]. Перенос инфраструктуры тестирования с QUnit на Jasmine. Добавление собственного набора иконок SVG. Добавление пользовательских свойств CSS. Улучшенный API. Усовершенствованная система сетки. Улучшенная настройка документов. Обновленные формы. RTL-поддержка Источник: wikipedia .
  9. content bot

    ЧПУ - URL

    Человекопонятный URL - ЧПУ Человекопонятный URL (сокр. ЧПУ, также семантический URL, англ. friendly URL) — URL-путь, состоящий из понятных слов, вместо идентификаторов, и отражающий файловую структуру сайта. Например, вместо /c14/3/97/ или /index.php?cat=10&subcat=2&id=41 используется /apple/smartphone/iphone-14-pro/. Человекопонятные пути улучшают удобство использования, кроме того, позволяют по названию ссылки заранее предполагать содержимое страницы по ней и представлять структуру сайта. Технически URL может содержать только буквы латинского алфавита и некоторые символы. Все другие символы, включая русские буквы, кодируются (percent‐encoding) и могут выглядеть вроде %D0%9B%D1%83%D0%BA. Поэтому обычно в адресах используют латиницу, чтобы избегать осложнений для пользователей «Понятные человеку URL» предполагают сокращение адресов страниц до максимально лаконичных и понятных. Они создают подобие естественной для человека логической структуры данных на сервере, представляя её в виде иерархичной (древовидной) структуры, аналогично файловой системе. Такие адреса удобней прочитать, понять и воспроизвести. К тому же это помогает ориентироваться в логической структуре сайта, лишь взглянув на вложенность каталогов. Не обязательно переходить на страницу, чтобы узнать, что на ней размещено. В некоторых случаях для того, чтобы пройти на родительские каталоги, необходимо всего лишь стереть до нужного места адрес, а чтобы перейти на главную страницу, стирается всё, кроме доменного имени. Такие адреса демонстрируются поисковыми системами прямо в поисковой выдаче, в том числе по этим адресам происходит поиск ключевых слов. ЧПУ используют в методах поисковой оптимизации (SEO). Источник: wikipedia .
  10. content bot

    Доме́нное имя

    Доме́нное имя — символьное имя, служащее для идентификации областей, которые являются единицами административной автономии в сети Интернет, в составе вышестоящей по иерархии такой области. Каждая из таких областей называется доме́ном. Общее пространство имён Интернета функционирует благодаря DNS — системе доменных имён. Доменные имена дают возможность адресации интернет-узлов и расположенным на них сетевым ресурсам (веб-сайтам, серверам электронной почты, другим службам) быть представленными в удобной для человека форме. Источник: wikipedia .
  11. Безопасность для вашего интернет магазина на OpenCart Перед тем как приступить к созданию интернет магазина, стоит учесть несколько факторов. Мошенничество opencartforum.com больше не поддерживает Российские и Беларусские домены и сайты, а также разработчиков с РФ и РБ, в связи с последними событиями. Советуем обходить стороной этот ресурс и все, что связаны с ними ресурсы. Учитывая то, что они делают с сайтами из РФ и РБ их действия смело можно отнести к мошенническим. Раздел на форуме: О пиратах, варезе и мошенниках в среде OpenCart Варез - Nulled На сегодняшний день полно ресурсов, предлагающих различные услуги по OpenCart, и подавляющая их часть откровенно вредоносного характера. Мошенники распространяют чужое программное обеспечение на варезных ресурсах, как бесплатно, так и платно (обычно по очень заманчивым ценам). При этом они внедряют в программное обеспечение ( ПО) заведомо вредоносный код. Скачивая или покупая на подобных ресурсах расширения, вы подвергаете риску не только свои сайты и средства, но и данные всех своих покупателей, т.к. через различного рода внедренные в нелегальное программное обеспечение уязвимости мошенники получают полный доступ и к их персональным данным. Мало того, что нелегальное ПО содержит вирусы, шэлы и прочие дыры, так эти "умельцы" ещё туда впихивают майнеры и скрипты подмены реквизитов. Скрипты подмены реквизитов заменяют данные по оплате для ваших покупателей, в результате чего получается такая ситуация, когда заказ покупателем оплачен и у вас он числится также оплаченным, а деньги при этом получает мошенник. В итоге покупатель заплатил и ждёт товар, а вы оказываетесь без денег и без товара, т.к. покупатель не виноват, что вы пустили мошенников на сайт. Подобные случаи, к сожалению, встречаются нередко. К слову, такими ресурсами не брезгуют и многие "веб-разработчики" и "веб-мастера". Если вы делегировали полномочия на покупку модулей исполнителю при создании сайтов и дополнений, то требуйте от них подтверждения происхождения скачанных или приобретенных ими модулей и дополнений для OpenCart! В обязательном порядке свяжитесь с авторами этих дополнений для уточнения информации, а лучше всего сами приобретайте необходимое непосредственно у автора на легальных ресурсах, где свои услуги предоставляют множество разработчиков! Так вы будете более, чем уверены, что приобретаете или скачиваете качественное и чистое от всяких вшитых дыр дополнение. Помните, что избежать таких эксцессов можно только одним способом - приобретать и\или скачивать необходимые вам расширения только на легальных ресурсах! На таких площадках всё открыто и справедливо, без цензуры, у авторов нет возможности удалить неугодные отзывы, если они соответствуют действительности! Ссылки по теме Подробнее об Использовании вареза и его последствий для конечного пользователя opencart!
  12. content bot

    .htaccess

    Стандартные конфигурации HTTP-сервера Apache .htaccess — это конфигурационный файл веб-сервера Apache, позволяющий управлять работой веб-сервера и настройками сайта с помощью различных параметров (директив) без изменения основного конфигурационного файла веб-сервера. Директивы файла .htaccess действуют для каталога, в котором размещён такой файл, и для всех его подкаталогов. Если вы желаете с помощью .htaccess изменить настройки для сайта в целом, его следует размещать в корневом каталоге сайта ~/ваш_домен/docs. Будьте внимательны при редактировании файла .htaccess! так как при сохранении такого файла в кодировке UTF-8 в нём не должно присутствовать BOM-сигнатуры. Для редактирования файла .htaccess и других конфигурационных файлов рекомендуем использовать не специальные текстовые редакторы, к примеру Notepad++. # ###################################################################### # # CROSS-ORIGIN # # ###################################################################### # ---------------------------------------------------------------------- # | Cross-origin requests | # ---------------------------------------------------------------------- # Allow cross-origin requests. # # https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS # http://enable-cors.org/ # http://www.w3.org/TR/cors/ # <IfModule mod_headers.c> # Header set Access-Control-Allow-Origin "*" # </IfModule> # ---------------------------------------------------------------------- # | Cross-origin images | # ---------------------------------------------------------------------- # Send the CORS header for images when browsers request it. # # https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image # https://blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html <IfModule mod_setenvif.c> <IfModule mod_headers.c> <FilesMatch "\.(bmp|cur|gif|ico|jpe?g|png|svgz?|webp)$"> SetEnvIf Origin ":" IS_CORS Header set Access-Control-Allow-Origin "*" env=IS_CORS </FilesMatch> </IfModule> </IfModule> # ---------------------------------------------------------------------- # | Cross-origin web fonts | # ---------------------------------------------------------------------- # Allow cross-origin access to web fonts. <IfModule mod_headers.c> <FilesMatch "\.(eot|otf|tt[cf]|woff2?)$"> Header set Access-Control-Allow-Origin "*" </FilesMatch> </IfModule> # ---------------------------------------------------------------------- # | Cross-origin resource timing | # ---------------------------------------------------------------------- # Allow cross-origin access to the timing information for all resources. # # If a resource isn't served with a `Timing-Allow-Origin` header that # would allow its timing information to be shared with the document, # some of the attributes of the `PerformanceResourceTiming` object will # be set to zero. # # http://www.w3.org/TR/resource-timing/ # http://www.stevesouders.com/blog/2014/08/21/resource-timing-practical-tips/ # <IfModule mod_headers.c> # Header set Timing-Allow-Origin: "*" # </IfModule> # ###################################################################### # # ERRORS # # ###################################################################### # ---------------------------------------------------------------------- # | Custom error messages/pages | # ---------------------------------------------------------------------- # Customize what Apache returns to the client in case of an error. # https://httpd.apache.org/docs/current/mod/core.html#errordocument ErrorDocument 404 /404.html # ---------------------------------------------------------------------- # | Error prevention | # ---------------------------------------------------------------------- # Disable the pattern matching based on filenames. # # This setting prevents Apache from returning a 404 error as the result # of a rewrite when the directory with the same name does not exist. # # https://httpd.apache.org/docs/current/content-negotiation.html#multiviews Options -MultiViews # ###################################################################### # # INTERNET EXPLORER # # ###################################################################### # ---------------------------------------------------------------------- # | Document modes | # ---------------------------------------------------------------------- # Force Internet Explorer 8/9/10 to render pages in the highest mode # available in the various cases when it may not. # # https://hsivonen.fi/doctype/#ie8 # # (!) Starting with Internet Explorer 11, document modes are deprecated. # If your business still relies on older web apps and services that were # designed for older versions of Internet Explorer, you might want to # consider enabling `Enterprise Mode` throughout your company. # # http://msdn.microsoft.com/en-us/library/ie/bg182625.aspx#docmode # http://blogs.msdn.com/b/ie/archive/2014/04/02/stay-up-to-date-with-enterprise-mode-for-internet-explorer-11.aspx <IfModule mod_headers.c> Header set X-UA-Compatible "IE=edge" # `mod_headers` cannot match based on the content-type, however, # the `X-UA-Compatible` response header should be send only for # HTML documents and not for the other resources. <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$"> Header unset X-UA-Compatible </FilesMatch> </IfModule> # ---------------------------------------------------------------------- # | Iframes cookies | # ---------------------------------------------------------------------- # Allow cookies to be set from iframes in Internet Explorer. # # http://msdn.microsoft.com/en-us/library/ms537343.aspx # http://www.w3.org/TR/2000/CR-P3P-20001215/ # <IfModule mod_headers.c> # Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\"" # </IfModule> # ###################################################################### # # MEDIA TYPES AND CHARACTER ENCODINGS # # ###################################################################### # ---------------------------------------------------------------------- # | Media types | # ---------------------------------------------------------------------- # Serve resources with the proper media types (f.k.a. MIME types). # # https://www.iana.org/assignments/media-types/media-types.xhtml # https://httpd.apache.org/docs/current/mod/mod_mime.html#addtype <IfModule mod_mime.c> # Data interchange AddType application/json json map topojson AddType application/ld+json jsonld AddType application/vnd.geo+json geojson AddType application/xml atom rdf rss xml # JavaScript # Normalize to standard type. # https://tools.ietf.org/html/rfc4329#section-7.2 AddType application/javascript js # Manifest files # If you are providing a web application manifest file (see # the specification: https://w3c.github.io/manifest/), it is # recommended that you serve it with the `application/manifest+json` # media type. # # Because the web application manifest file doesn't have its # own unique file extension, you can set its media type either # by matching: # # 1) the exact location of the file (this can be done using a # directive such as `<Location>`, but it will NOT work in # the `.htaccess` file, so you will have to do it in the main # server configuration file or inside of a `<VirtualHost>` # container) # # e.g.: # # <Location "/.well-known/manifest.json"> # AddType application/manifest+json json # </Location> # # 2) the filename (this can be problematic as you will need to # ensure that you don't have any other file with the same name # as the one you gave to your web application manifest file) # # e.g.: # # <Files "manifest.json"> # AddType application/manifest+json json # </Files> AddType application/x-web-app-manifest+json webapp AddType text/cache-manifest appcache manifest # Media files AddType audio/mp4 f4a f4b m4a AddType audio/ogg oga ogg opus AddType image/bmp bmp AddType image/webp webp AddType video/mp4 f4v f4p m4v mp4 AddType video/ogg ogv AddType video/webm webm AddType video/x-flv flv AddType image/svg+xml svg svgz # Serving `.ico` image files with a different media type # prevents Internet Explorer from displaying then as images: # https://github.com/h5bp/html5-boilerplate/commit/37b5fec090d00f38de64b591bcddcb205aadf8ee AddType image/x-icon cur ico # Web fonts AddType application/font-woff woff AddType application/font-woff2 woff2 AddType application/vnd.ms-fontobject eot # Browsers usually ignore the font media types and simply sniff # the bytes to figure out the font type. # https://mimesniff.spec.whatwg.org/#matching-a-font-type-pattern'>https://mimesniff.spec.whatwg.org/#matching-a-font-type-pattern # # However, Blink and WebKit based browsers will show a warning # in the console if the following font types are served with any # other media types. AddType application/x-font-ttf ttc ttf AddType font/opentype otf # Other AddType application/octet-stream safariextz AddType application/x-bb-appworld bbaw AddType application/x-chrome-extension crx AddType application/x-opera-extension oex AddType application/x-xpinstall xpi AddType text/vcard vcard vcf AddType text/vnd.rim.location.xloc xloc AddType text/vtt vtt AddType text/x-component htc </IfModule> # ---------------------------------------------------------------------- # | Character encodings | # ---------------------------------------------------------------------- # Serve all resources labeled as `text/html` or `text/plain` # with the media type `charset` parameter set to `UTF-8`. # # https://httpd.apache.org/docs/current/mod/core.html#adddefaultcharset AddDefaultCharset utf-8 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Serve the following file types with the media type `charset` # parameter set to `UTF-8`. # # https://httpd.apache.org/docs/current/mod/mod_mime.html#addcharset <IfModule mod_mime.c> AddCharset utf-8 .atom \ .bbaw \ .css \ .geojson \ .js \ .json \ .jsonld \ .rdf \ .rss \ .topojson \ .vtt \ .webapp \ .xloc \ .xml </IfModule> # ###################################################################### # # REWRITES # # ###################################################################### # ---------------------------------------------------------------------- # | Rewrite engine | # ---------------------------------------------------------------------- # (1) Turn on the rewrite engine (this is necessary in order for # the `RewriteRule` directives to work). # # https://httpd.apache.org/docs/current/mod/mod_rewrite.html#RewriteEngine # # (2) Enable the `FollowSymLinks` option if it isn't already. # # https://httpd.apache.org/docs/current/mod/core.html#options # # (3) If your web host doesn't allow the `FollowSymlinks` option, # you need to comment it out or remove it, and then uncomment # the `Options +SymLinksIfOwnerMatch` line (4), but be aware # of the performance impact. # # https://httpd.apache.org/docs/current/misc/perf-tuning.html#symlinks # # (4) Some cloud hosting services will require you set `RewriteBase`. # # http://www.rackspace.com/knowledge_center/frequently-asked-question/why-is-modrewrite-not-working-on-my-site # https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase # # (5) Depending on how your server is set up, you may also need to # use the `RewriteOptions` directive to enable some options for # the rewrite engine. # # https://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriteoptions <IfModule mod_rewrite.c> # (1) RewriteEngine On # (2) Options +FollowSymlinks # (3) # Options +SymLinksIfOwnerMatch # (4) # RewriteBase / # (5) # RewriteOptions <options> </IfModule> # ---------------------------------------------------------------------- # | Forcing `https://` | # ---------------------------------------------------------------------- # Redirect from the `http://` to the `https://` version of the URL. # https://wiki.apache.org/httpd/RewriteHTTPToHTTPS # <IfModule mod_rewrite.c> # RewriteEngine On # RewriteCond %{HTTPS} !=on # RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] # </IfModule> # ---------------------------------------------------------------------- # | Suppressing / Forcing the `www.` at the beginning of URLs | # ---------------------------------------------------------------------- # The same content should never be available under two different # URLs, especially not with and without `www.` at the beginning. # This can cause SEO problems (duplicate content), and therefore, # you should choose one of the alternatives and redirect the other # one. # # By default `Option 1` (no `www.`) is activated. # http://no-www.org/faq.php?q=class_b # # If you would prefer to use `Option 2`, just comment out all the # lines from `Option 1` and uncomment the ones from `Option 2`. # # (!) NEVER USE BOTH RULES AT THE SAME TIME! # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Option 1: rewrite www.example.com → example.com <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} !=on RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L] </IfModule> # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Option 2: rewrite example.com → www.example.com # # Be aware that the following might not be a good idea if you use "real" # subdomains for certain parts of your website. # <IfModule mod_rewrite.c> # RewriteEngine On # RewriteCond %{HTTPS} !=on # RewriteCond %{HTTP_HOST} !^www\. [NC] # RewriteCond %{SERVER_ADDR} !=127.0.0.1 # RewriteCond %{SERVER_ADDR} !=::1 # RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] # </IfModule> # ###################################################################### # # SECURITY # # ###################################################################### # ---------------------------------------------------------------------- # | Clickjacking | # ---------------------------------------------------------------------- # Protect website against clickjacking. # # The example below sends the `X-Frame-Options` response header with # the value `DENY`, informing browsers not to display the content of # the web page in any frame. # # This might not be the best setting for everyone. You should read # about the other two possible values the `X-Frame-Options` header # field can have: `SAMEORIGIN` and `ALLOW-FROM`. # https://tools.ietf.org/html/rfc7034#section-2.1.'>https://tools.ietf.org/html/rfc7034#section-2.1. # # Keep in mind that while you could send the `X-Frame-Options` header # for all of your website’s pages, this has the potential downside that # it forbids even non-malicious framing of your content (e.g.: when # users visit your website using a Google Image Search results page). # # Nonetheless, you should ensure that you send the `X-Frame-Options` # header for all pages that allow a user to make a state changing # operation (e.g: pages that contain one-click purchase links, checkout # or bank-transfer confirmation pages, pages that make permanent # configuration changes, etc.). # # Sending the `X-Frame-Options` header can also protect your website # against more than just clickjacking attacks: # https://cure53.de/xfo-clickjacking.pdf. # # https://tools.ietf.org/html/rfc7034 # http://blogs.msdn.com/b/ieinternals/archive/2010/03/30/combating-clickjacking-with-x-frame-options.aspx # https://www.owasp.org/index.php/Clickjacking # <IfModule mod_headers.c> # Header set X-Frame-Options "DENY" # # `mod_headers` cannot match based on the content-type, however, # # the `X-Frame-Options` response header should be send only for # # HTML documents and not for the other resources. # <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$"> # Header unset X-Frame-Options # </FilesMatch> # </IfModule> # ---------------------------------------------------------------------- # | Content Security Policy (CSP) | # ---------------------------------------------------------------------- # Mitigate the risk of cross-site scripting and other content-injection # attacks. # # This can be done by setting a `Content Security Policy` which # whitelists trusted sources of content for your website. # # The example header below allows ONLY scripts that are loaded from the # current website's origin (no inline scripts, no CDN, etc). That almost # certainly won't work as-is for your website! # # For more details on how to craft a reasonable policy for your website, # read: http://www.html5rocks.com/en/tutorials/security/content-security-policy/ # (or the specification: http://www.w3.org/TR/CSP11/). Also, to make # things easier, you can use an online CSP header generator such as: # http://cspisawesome.com/. # <IfModule mod_headers.c> # Header set Content-Security-Policy "script-src 'self'; object-src 'self'" # # `mod_headers` cannot match based on the content-type, however, # # the `Content-Security-Policy` response header should be send # # only for HTML documents and not for the other resources. # <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$"> # Header unset Content-Security-Policy # </FilesMatch> # </IfModule> # ---------------------------------------------------------------------- # | File access | # ---------------------------------------------------------------------- # Block access to directories without a default document. # # You should leave the following uncommented, as you shouldn't allow # anyone to surf through every directory on your server (which may # includes rather private places such as the CMS's directories). <IfModule mod_autoindex.c> Options -Indexes </IfModule> # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Block access to all hidden files and directories with the exception of # the visible content from within the `/.well-known/` hidden directory. # # These types of files usually contain user preferences or the preserved # state of an utility, and can include rather private places like, for # example, the `.git` or `.svn` directories. # # The `/.well-known/` directory represents the standard (RFC 5785) path # prefix for "well-known locations" (e.g.: `/.well-known/manifest.json`, # `/.well-known/keybase.txt`), and therefore, access to its visible # content should not be blocked. # # https://www.mnot.net/blog/2010/04/07/well-known # https://tools.ietf.org/html/rfc5785 <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} "!(^|/)\.well-known/([^./]+./?)+$" [NC] RewriteCond %{SCRIPT_FILENAME} -d [OR] RewriteCond %{SCRIPT_FILENAME} -f RewriteRule "(^|/)\." - [F] </IfModule> # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Block access to files that can expose sensitive information. # # By default, block access to backup and source files that may be # left by some text editors and can pose a security risk when anyone # has access to them. # # http://feross.org/cmsploit/ # # (!) Update the `<FilesMatch>` regular expression from below to # include any files that might end up on your production server and # can expose sensitive information about your website. These files may # include: configuration files, files that contain metadata about the # project (e.g.: project dependencies), build scripts, etc.. <FilesMatch "(^#.*#|\.(bak|conf|dist|fla|in[ci]|log|psd|sh|sql|sw[op])|~)$"> # Apache < 2.3 <IfModule !mod_authz_core.c> Order allow,deny Deny from all Satisfy All </IfModule> # Apache ≥ 2.3 <IfModule mod_authz_core.c> Require all denied </IfModule> </FilesMatch> # ---------------------------------------------------------------------- # | HTTP Strict Transport Security (HSTS) | # ---------------------------------------------------------------------- # Force client-side SSL redirection. # # If a user types `example.com` in their browser, even if the server # redirects them to the secure version of the website, that still leaves # a window of opportunity (the initial HTTP connection) for an attacker # to downgrade or redirect the request. # # The following header ensures that browser will ONLY connect to your # server via HTTPS, regardless of what the users type in the browser's # address bar. # # (!) Remove the `includeSubDomains` optional directive if the website's # subdomains are not using HTTPS. # # http://www.html5rocks.com/en/tutorials/security/transport-layer-security/ # https://tools.ietf.org/html/draft-ietf-websec-strict-transport-sec-14#section-6.1 # http://blogs.msdn.com/b/ieinternals/archive/2014/08/18/hsts-strict-transport-security-attacks-mitigations-deployment-https.aspx # <IfModule mod_headers.c> # Header set Strict-Transport-Security "max-age=16070400; includeSubDomains" # </IfModule> # ---------------------------------------------------------------------- # | Reducing MIME type security risks | # ---------------------------------------------------------------------- # Prevent some browsers from MIME-sniffing the response. # # This reduces exposure to drive-by download attacks and cross-origin # data leaks, and should be left uncommented, especially if the server # is serving user-uploaded content or content that could potentially be # treated as executable by the browser. # # http://www.slideshare.net/hasegawayosuke/owasp-hasegawa # http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx # http://msdn.microsoft.com/en-us/library/ie/gg622941.aspx # https://mimesniff.spec.whatwg.org/ <IfModule mod_headers.c> Header set X-Content-Type-Options "nosniff" </IfModule> # ---------------------------------------------------------------------- # | Reflected Cross-Site Scripting (XSS) attacks | # ---------------------------------------------------------------------- # (1) Try to re-enable the cross-site scripting (XSS) filter built # into most web browsers. # # The filter is usually enabled by default, but in some cases it # may be disabled by the user. However, in Internet Explorer for # example, it can be re-enabled just by sending the # `X-XSS-Protection` header with the value of `1`. # # (2) Prevent web browsers from rendering the web page if a potential # reflected (a.k.a non-persistent) XSS attack is detected by the # filter. # # By default, if the filter is enabled and browsers detect a # reflected XSS attack, they will attempt to block the attack # by making the smallest possible modifications to the returned # web page. # # Unfortunately, in some browsers (e.g.: Internet Explorer), # this default behavior may allow the XSS filter to be exploited, # thereby, it's better to inform browsers to prevent the rendering # of the page altogether, instead of attempting to modify it. # # http://hackademix.net/2009/11/21/ies-xss-filter-creates-xss-vulnerabilities # # (!) Do not rely on the XSS filter to prevent XSS attacks! Ensure that # you are taking all possible measures to prevent XSS attacks, the # most obvious being: validating and sanitizing your website's inputs. # # http://blogs.msdn.com/b/ie/archive/2008/07/02/ie8-security-part-iv-the-xss-filter.aspx # http://blogs.msdn.com/b/ieinternals/archive/2011/01/31/controlling-the-internet-explorer-xss-filter-with-the-x-xss-protection-http-header.aspx # https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29 # <IfModule mod_headers.c> # # (1) (2) # Header set X-XSS-Protection "1; mode=block" # # `mod_headers` cannot match based on the content-type, however, # # the `X-XSS-Protection` response header should be send only for # # HTML documents and not for the other resources. # <FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|woff2?|xloc|xml|xpi)$"> # Header unset X-XSS-Protection # </FilesMatch> # </IfModule> # ---------------------------------------------------------------------- # | Server software information | # ---------------------------------------------------------------------- # Prevent Apache from sending in the `Server` response header its # exact version number, the description of the generic OS-type or # information about its compiled-in modules. # # (!) The `ServerTokens` directive will only work in the main server # configuration file, so don't try to enable it in the `.htaccess` file! # # https://httpd.apache.org/docs/current/mod/core.html#servertokens # ServerTokens Prod # ###################################################################### # # WEB PERFORMANCE # # ###################################################################### # ---------------------------------------------------------------------- # | Compression | # ---------------------------------------------------------------------- <IfModule mod_deflate.c> # Force compression for mangled `Accept-Encoding` request headers # https://developer.yahoo.com/blogs/ydn/pushing-beyond-gzipping-25601.html <IfModule mod_setenvif.c> <IfModule mod_headers.c> SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding </IfModule> </IfModule> # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Compress all output labeled with one of the following media types. # # (!) For Apache versions below version 2.3.7 you don't need to # enable `mod_filter` and can remove the `<IfModule mod_filter.c>` # and `</IfModule>` lines as `AddOutputFilterByType` is still in # the core directives. # # https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype <IfModule mod_filter.c> AddOutputFilterByType DEFLATE "application/atom+xml" \ "application/javascript" \ "application/json" \ "application/ld+json" \ "application/manifest+json" \ "application/rdf+xml" \ "application/rss+xml" \ "application/schema+json" \ "application/vnd.geo+json" \ "application/vnd.ms-fontobject" \ "application/x-font-ttf" \ "application/x-javascript" \ "application/x-web-app-manifest+json" \ "application/xhtml+xml" \ "application/xml" \ "font/eot" \ "font/opentype" \ "image/bmp" \ "image/svg+xml" \ "image/vnd.microsoft.icon" \ "image/x-icon" \ "text/cache-manifest" \ "text/css" \ "text/html" \ "text/javascript" \ "text/plain" \ "text/vcard" \ "text/vnd.rim.location.xloc" \ "text/vtt" \ "text/x-component" \ "text/x-cross-domain-policy" \ "text/xml" </IfModule> # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Map the following filename extensions to the specified # encoding type in order to make Apache serve the file types # with the appropriate `Content-Encoding` response header # (do note that this will NOT make Apache compress them!). # # If these files types would be served without an appropriate # `Content-Enable` response header, client applications (e.g.: # browsers) wouldn't know that they first need to uncompress # the response, and thus, wouldn't be able to understand the # content. # # https://httpd.apache.org/docs/current/mod/mod_mime.html#addencoding <IfModule mod_mime.c> AddEncoding gzip svgz </IfModule> </IfModule> # ---------------------------------------------------------------------- # | Content transformation | # ---------------------------------------------------------------------- # Prevent intermediate caches or proxies (e.g.: such as the ones # used by mobile network providers) from modifying the website's # content. # # https://tools.ietf.org/html/rfc2616#section-14.9.5 # # (!) If you are using `mod_pagespeed`, please note that setting # the `Cache-Control: no-transform` response header will prevent # `PageSpeed` from rewriting `HTML` files, and, if the # `ModPagespeedDisableRewriteOnNoTransform` directive isn't set # to `off`, also from rewriting other resources. # # https://developers.google.com/speed/pagespeed/module/configuration#notransform # <IfModule mod_headers.c> # Header merge Cache-Control "no-transform" # </IfModule> # ---------------------------------------------------------------------- # | ETags | # ---------------------------------------------------------------------- # Remove `ETags` as resources are sent with far-future expires headers. # # https://developer.yahoo.com/performance/rules.html#etags # https://tools.ietf.org/html/rfc7232#section-2.3 # `FileETag None` doesn't work in all cases. <IfModule mod_headers.c> Header unset ETag </IfModule> FileETag None # ---------------------------------------------------------------------- # | Expires headers | # ---------------------------------------------------------------------- # Serve resources with far-future expires headers. # # (!) If you don't control versioning with filename-based # cache busting, you should consider lowering the cache times # to something like one week. # # https://httpd.apache.org/docs/current/mod/mod_expires.html <IfModule mod_expires.c> ExpiresActive on ExpiresDefault "access plus 1 month" # CSS ExpiresByType text/css "access plus 1 year" # Data interchange ExpiresByType application/atom+xml "access plus 1 hour" ExpiresByType application/rdf+xml "access plus 1 hour" ExpiresByType application/rss+xml "access plus 1 hour" ExpiresByType application/json "access plus 0 seconds" ExpiresByType application/ld+json "access plus 0 seconds" ExpiresByType application/schema+json "access plus 0 seconds" ExpiresByType application/vnd.geo+json "access plus 0 seconds" ExpiresByType application/xml "access plus 0 seconds" ExpiresByType text/xml "access plus 0 seconds" # Favicon (cannot be renamed!) and cursor images ExpiresByType image/vnd.microsoft.icon "access plus 1 week" ExpiresByType image/x-icon "access plus 1 week" # HTML ExpiresByType text/html "access plus 0 seconds" # JavaScript ExpiresByType application/javascript "access plus 1 year" ExpiresByType application/x-javascript "access plus 1 year" ExpiresByType text/javascript "access plus 1 year" # Manifest files ExpiresByType application/manifest+json "access plus 1 year" ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds" ExpiresByType text/cache-manifest "access plus 0 seconds" # Media files ExpiresByType audio/ogg "access plus 1 month" ExpiresByType image/bmp "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/svg+xml "access plus 1 month" ExpiresByType video/mp4 "access plus 1 month" ExpiresByType video/ogg "access plus 1 month" ExpiresByType video/webm "access plus 1 month" # Web fonts # Embedded OpenType (EOT) ExpiresByType application/vnd.ms-fontobject "access plus 1 month" ExpiresByType font/eot "access plus 1 month" # OpenType ExpiresByType font/opentype "access plus 1 month" # TrueType ExpiresByType application/x-font-ttf "access plus 1 month" # Web Open Font Format (WOFF) 1.0 ExpiresByType application/font-woff "access plus 1 month" ExpiresByType application/x-font-woff "access plus 1 month" ExpiresByType font/woff "access plus 1 month" # Web Open Font Format (WOFF) 2.0 ExpiresByType application/font-woff2 "access plus 1 month" # Other ExpiresByType text/x-cross-domain-policy "access plus 1 week" </IfModule> # ---------------------------------------------------------------------- # | File concatenation | # ---------------------------------------------------------------------- # Allow concatenation from within specific files. # # e.g.: # # If you have the following lines in a file called, for # example, `main.combined.js`: # # <!--#include file="js/jquery.js" --> # <!--#include file="js/jquery.timer.js" --> # # Apache will replace those lines with the content of the # specified files. # <IfModule mod_include.c> # <FilesMatch "\.combined\.js$"> # Options +Includes # AddOutputFilterByType INCLUDES application/javascript \ # application/x-javascript \ # text/javascript # SetOutputFilter INCLUDES # </FilesMatch> # <FilesMatch "\.combined\.css$"> # Options +Includes # AddOutputFilterByType INCLUDES text/css # SetOutputFilter INCLUDES # </FilesMatch> # </IfModule> # ---------------------------------------------------------------------- # | Filename-based cache busting | # ---------------------------------------------------------------------- # If you're not using a build process to manage your filename version # revving, you might want to consider enabling the following directives # to route all requests such as `/style.12345.css` to `/style.css`. # # To understand why this is important and even a better solution than # using something like `*.css?v231`, please see: # http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/ # <IfModule mod_rewrite.c> # RewriteEngine On # RewriteCond %{REQUEST_FILENAME} !-f # RewriteRule ^(.+)\.(\d+)\.(bmp|css|cur|gif|ico|jpe?g|js|png|svgz?|webp)$ $1.$3 [L] # </IfModule> #AddHandler application/x-httpd-php .html .htm .js Редирект с site.ru/brand/product на site.ru/product: #RewriteRule (.*)/(.*) http://site.ru/$2? [R=301,L] RewriteCond %{HTTP_HOST} ^/product&manufacturer_id=\[0-9]/product_id=\[0-9]$ RewriteRule ^(.*)$ http://site.ru/product_id=\[0-9]$2? [R=301,L]
  13. content bot

    NGINX 301 редиректы

    Nginx, 301 редиректы с http на https протоколы и наоборот Nginx, 301 редирект с http на https протокол Если у вас на сайте есть SSL сертификат для домена, то вы можете настроить https протокол. После чего для 301-го редиректа вам необходимо добавить следующий код в файл конфигурации nginx для домена: server { #... if ($scheme = http) { return 301 https://$server_name$request_uri; } } или server { #... listen server_ip:80; server_name www.site.com; rewrite ^ https://www.site.com$request_uri? permanent; } Nginx, 301 редирект с https на http протокол Обратный пример конфигурации для редиректа с http на https: server { listen 443; server_name www.site.com; rewrite ^ http://www.site.com$request_uri? permanent; } server { listen 80; server_name www.site.com; #... } Nginx, 301 редирект с www на без www Пример 301-го редиректа на основное зеркало без www: server { #... if ($host ~* www\.(.*)) { set $host_without_www $1; rewrite ^(.*)$ http://$host_without_www$1 permanent; } } или server { #... server_name www.site.com; rewrite ^/(.*)$ http://site.com/$1 permanent; } Nginx, 301 редирект с без www на с www Обратный пример 301-го редиректа на основное зеркало сайта с www: server { #... server_name site.com; rewrite ^/(.*)$ http://www.site.com/$1 permanent; } server { listen 80; server_name www.site.com; #... } Nginx, 301 редирект для одной страницы Если у страницы поменялся URL, то лучше сделать 301 редирект на новый URL: server { #... if ( $request_filename ~ oldpage/ ) { rewrite ^ http://www.site.com/newpage/? permanent; } #... } Nginx, 301 редирект для папки Аналогичный пример 301-го редиректа для папки: server { #... if ( $request_filename ~ oldfolder/.+ ) { rewrite ^(.*) http://www.site.com/newfolder/$1 permanent; } #... } Nginx, 301 редирект с одного домена на другой Если вы сменили домен сайт и хотите перенести вес старого домена на новый, то можно сделать 301-й редирект со старого домена на новый: server { server_name domain.com www.site.com; rewrite ^ $scheme://www.new-site.com; } Nginx, 301 редирект с каждой страницы одного домена на такой же URL адрес другого домена Если вы планируете изменить свой домен или изменить название предприятия, то пере направление домена является единственным лучшим решением для сохранения пользователей и перевода их запросов на новый домен: server { server_name site.com www.site.com; rewrite ^ $scheme://www.new-site.com$request_uri permanent; } Nginx, 301 редирект со страниц со слешем "/" на страницы без слеша в конце URL Часто бывает так что одна и та же страница доступна по двум URL, например /may-best-page и /my-best-page/, если человеку понятно что это одна и та же страница, то поисковые системы понимают это как две разные страницы, соответственно разбивают вес страницы, а также показываются в аналитике (статистике) как 2 разные страницы. Для того, что бы избежать этого вы можете сделать 301 редирект со страниц со слешем в конце URL на без него: server { #... rewrite ^/(.*)/$ /$1 permanent; #... } Nginx, 301 редирект со страниц без слеша на страницы со слешем в конце URL Причина делать такой редирект та же, что и в ситуации описанным выше, за исключением того, что редирект необходимо делать со страницы без слеша в конце URL на страницу со слешем в конце URL: server { #... rewrite ^(.*[^/])$ $1/ permanent; #... } Дополнительно Не забудьте перед использованием примеров сменить site.com на свой домен. После внесения изменений в файл конфигурации nginx для домена необходимо перезапустить nginx: service nginx reload или service nginx restart или перезапустить с панели Для редиректа с site.ru/brand/product на site.ru/product при переездах и т.д. добавлять в блок server : if (!-d $request_filename){ set $r 1; } if (!-f $request_filename){ set $r 2$r; } if ($r = 21){ rewrite ^/(.*)/(.*)$ $scheme://$host/$2 permanent; }
  14. content bot

    TWIG

    Twig - компилирующий обработчик шаблонов с открытым исходным кодом, написанный на языке программирования PHP. TWIG - WIKI Документация - ENG Документация - RUS GitHub - TWIG Конвертер - PHP в TWIG Конвертер - TWIG в PHP Ещё один Конвертер - PHP в TWIG
  15. content bot

    PHP.ini

    php.ini —текстовый конфигурационный файл, содержащий множество настроек интерпретатора PHP, а также отвечающий за загрузку модулей. Синтаксис файла php.ini довольно прост, что позволяет редактировать его, не обладая глубокими специальными знаниями. Файл можно редактировать в любом текстовом редакторе к примеру - Блокнот в Windows, Notepad++ или emacs в Unix и прочих редакторах. Файл php.ini содержит параметры интерпретации PHP-кода, безопасности системы, способов работы с файлами и данными, а также информация о доступных расширениях PHP. В OpenCart php.ini по умолчанию содержит: magic_quotes_gpc = Off register_globals = Off default_charset = UTF-8 memory_limit = 64M max_execution_time = 36000 upload_max_filesize = 999M safe_mode = Off mysql.connect_timeout = 20 session.auto_start = Off session.use_only_cookies = On session.use_cookies = On session.use_trans_sid = Off session.cookie_httponly = On session.gc_maxlifetime = 3600 allow_url_fopen = On ;display_errors = 1 ;error_reporting = E_ALL С полным списком директив файла php.ini и их описаниями можно ознакомиться в документации к PHP в разделе - Директивы php.ini
  16. Включение вывода всех ошибок и предупреждений в файле .htaccess php_value display_errors 1 php_value display_startup_errors 1 php_value error_reporting E_ALL Включение вывода всех ошибок и предупреждений в файле php.ini error_reporting = E_ALL display_errors = On display_startup_errors = On Включение вывода всех ошибок и предупреждений в коде PHP-скриптов Включить вывод уведомлений и предупреждений можно, добавив в начало нужного .php файла следующие строки: ini_set('error_reporting', E_ALL); ini_set('display_errors', 1); ini_set('display_startup_errors', 1); Исключая тип Notice error_reporting(E_ALL & ~E_NOTICE) Вывод с логированием через конфигурацию веб-сервера Чтобы настроить вывод с логированием через конфигурацию веб-сервера, введите: для Apache — ErrorLog «/var/log/apache2/my-website-error.log» для Nginx — error_log /var/log/nginx/my-website-error.log
  17. Если вы разместили на маркетплейс OpenCart.Club свои дополнения, то для удобства оказания технической поддержки и возможности получения доступа к купленным у вас дополнениям для ваших клиентов, вы можете разместить их покупки и на площадке OpenCart.Club. Подробнее о функции добавления покупок. В меню переходите в "Ваши продажи": Далее - справа вверху есть кнопка "Добавить продажу": Нажимаете её, и в открывшемся окне добавляете всю необходимую информацию: В итоге: файл с нулевой ценой добавлен в список покупок и доступен для скачивания клиенту. Клиент (прежде должен быть зарегистрирован на OpenCart.Club) может скачивать файл и его обновления в будущем, а также оставлять отзывы, и писать свои предложения в тему поддержки дополнения.
  18. Краткие условия сотрудничества для разработчиков: Размещая свои модули на площадке, вы можете быть уверены в их сохранности и неприкосновенности (подробности расписаны в Лицензионном Соглашении, хотя её никто обычно не читает). Как автор, разместив свои модули на данном маркетплейсе OpenCart Club, вы можете их продавать где угодно. Никаких запретов и никаких репрессий. Единственная просьба к вам, это назначать одну цену на ваше дополнения одинаково везде. Продав модуль на другой площадке либо лично в руки, вы можете открыть покупателю доступ к скачиванию на данном маркетплейсе OpenCart Club, чтобы вам было удобно в дальнейшем обеспечивать поддержку покупателю, и попутно принимать участие в развитии сообщества. Если ваш модуль будет куплен через площадку OpenCart Club, то комиссия площадки всего лишь 15%, и с ростом числа активных пользователей и разработчиков, возрастает вероятность снижения этого процента. Подробности о выплатах - в Ценовой Политике, также вы всегда можете задать свой вопрос в службу поддержки. В большей степени цель создания данной площадки - собрать русскоязычное сообщество OpenCart в тихом, культурном и уютном месте, которое расположено на территории Российской Федерации и находится под её юрисдикцией.
  19. Уважаемые коллеги! Сообщество OpenCart club создано исключительно для поддержки разработчиков и нацелено на совместное принятие участия в развитии опенкарт и расширений. Вся доходная часть с продаж дополнений на маркетплейсе OpenCart club, уходит исключительно на поддержку, развитие и продвижение данного сообщества, и опенкарт в целом, а так-же ваших расширений, как это указано в п. 2.1.6. Публичного договора. Думаем что, подавляющее большинство разработчиков согласится с тем, что комиссию лучше инвестировать в самих себя, в продвижение и развитие единого совместного сообщества без предвзятого подхода! Присоединяйтесь, время инвестировать в себя!
  20. Тема для публикации разработчиками анонсов модулей, которые планируются к релизу, а также оповещения для пользователей о предлагаемых акциях и скидках на свои модули.
  21. Уважаемые коллеги, Разработчики и Фрилансеры! Сообщество OpenCart club создано исключительно для поддержки пользователей opencart и разработчиков, и нацелено на совместное принятие участия в развитии опенкарт и расширений для него. Вся доходная часть с продаж дополнений (15% комиссионных сборов) на маркетплейсе OpenCart club, расходуется на поддержку, развитие и продвижение данного сообщества, и опенкарт в целом, в том числе и ваших расширений - согласно публичному договору п. 2.1.6. Думаем что, подавляющее большинство разработчиков согласится с тем что, комиссию лучше инвестировать в самих себя, в продвижение и развитие единого совместного сообщества без предвзятого подхода! Присоединяйтесь, время инвестировать в себя! Любой автор впервые выкладывая свои модули, шаблоны или услугу в маркетплейс OpenCart Club Автоматически после модерации дополнения пользователь получает статус Разработчика или Фрилансера входя в соответствующую группу соответственно. Статус разработчика предоставляет вам доступ в закрытый раздел для разработчиков. Статус Разработчика \ Фрилансера призван увеличить к вам доверие и лояльность сообщества к вам на форуме среди обычных пользователей которые по сути являются вашими потенциальными клиентами. По мимо статуса вам как разработчику стоит позаботиться о своей репутации в сообществе OpenCart Club как автора расширений, призывая своих клиентов оставлять отзывы к вашим дополнениям, что дополнительно привлечёт вам потенциальных клиентов. Всё это в связке очень сильно поможет продвижению ваших дополнений и услуг. Выкладывая модуль на продажу или в свободный доступ Выкладывая модуль на площадке OpenCart club, старайтесь максимально подробнее описывать возможности созданного вами модуля, его версию и тех требования, а так же иметь его демонстрационную версию если того требует модуль, для того чтобы ваш клиент мог наглядно посмотреть возможности дополнения непосредственно перед покупкой. Не преувеличивайте возможности дополнения если они не соответствуют его функционалу во избежании претензий со стороны клиента. Правила распространения Дополнений. Все Дополнения, опубликованные на маркетплейсе OpenCart.Club, являются объектами авторского права и принадлежат их создателям (Разработчикам). При продаже Дополнения (модуля, шаблона, модификатора) Разработчик гарантирует работоспособность Дополнения на OpenCart указанной версии и шаблоне по умолчанию. Соблюдать условия GPLv3 при распространении ПО, если это необходимо. Предоставляйте всю необходимую информацию и документацию на ПО, а также все необходимые инструкции для Покупателей и условия получения ключа, если это необходимо. Обеспечить безопасность передаваемого Покупателям ПО. При продаже Разработчик гарантирует осуществлять техническую поддержку покупателям в случае неработоспособности Дополнения, за исключением случаев, специально оговоренных в описании Дополнения. Если иное не оговорено Разработчиком в описании Дополнения на маркетплейсе OpenCart.Club, срок доступности дополнения для скачивания составляет 365 дней со дня покупки Дополнения. Срок поддержки Дополнений Разработчиком также составляет 365 дней. Разработчику запрещено размещать и распространять Дополнение в случае, если он не является его автором. Запрещена перепродажа ПО, его дарение, сдача в аренду, использование нелегальных ("пиратских \ варезных, nuled") копий и версий ПО , в том числе и для бесплатного Программного обеспечения. За несоблюдение авторских прав в любом его виде следует бан! Запрещено использование чужого кода полностью или частично без согласия на то его автора, по мимо случаев когда автор явно обозначил в описании лицензии такую возможность. Правила оказания технической поддержки пользователям В случае невозможности предоставления ПО или обнаружения каких-либо неполадок в ранее загруженном на Сайт ПО, уведомить об этом Администрацию, как только вам станет известно о таких обстоятельствах. В случае необходимости предоставления Покупателям ключа, предоставить такой ключ на условиях, которые были указаны Принципалом при размещении ПО на Сайте но не позднее чем в течение 96 часов после обращения Покупателя за ключом, если Принципал не указал иные условия. Самостоятельно нести ответственность перед Покупателями за качество и безопасность ПО. Предоставлять Администрации пояснения или дополнительные материалы в случае обращения с претензией Покупателя относительно качества ПО разработчика. В течении срока поддержки Объекта, реагировать на запросы Покупателей о поддержке в течении 96 часов с момента получения такого запроса. Не размещать на Сайте рекламные материалы или сторонние ссылки без разрешения Администрации. Вежливо и уважительно общаться с пользователями Сайта при любых обстоятельствах. Администрация OpenCart.Club не обеспечивает техническую поддержку файлов, купленных и/или загруженных с торговой Площадки OpenCart.Club. Для получения технической поддержки необходимо связаться с Разработчиком Дополнения. Если все методы исчерпаны, Пользователь имеет право оставить заявку в разделе Тех Поддержка Форума OpenCart.Club, чтобы Администрация могла рассмотреть возникшую проблему. Выплаты с площадки OpenCart.Club Выплаты осуществляются путём запроса через ваш аккаунт -согласно п. 3.8. публичного договора. Между Администрацией OpenCart.Club и вами как ООО, ИП или самозанятым заключается договор, после подписания сторонами которого вам будут перечислены ваши средства. P.S. Для физических лиц осуществляющих свою деятельность на площадке OpenCart.Club не являющимися самозанятыми: Мы получаем средства на счёт ИП с него нет возможности выводить физ лицам без статуса ИП и самозанятого без выплаты НДФЛ, а иногда могут начислить и страховые взносы., т.к. иначе это подпадает под уход от оплаты налогов, что может повлечь за собой приличные штрафы Вывести физ лицу с минимальными потерями можно только через самозанятого, но в таком случае удержат налог с самозанятого т.к. между самозанятыми и Юр лицами налог в размере 6%. И уже самозанятый выведет вам деньги на карту удержав с вас 6% налога который ему придется оплатить в налоговую. Настоятельно советуем вам, как физ лицу, получить статус самозанятого, тем более что, государственная программа стимулирования развития бизнеса от органов социальной защиты дает возможность получить стартовый капитал для развития своего дела. Максимальная сумма дотации на развитие бизнеса в 2023 году составляет 350 тыс. рублей. + вы после регистрации как самозанятый получите бонус в размере 10 000 рублей на налоговые вычеты. Изучите этот вопрос прежде чем регистрироваться как самозанятый. Неотъемлемой частью настоящей Политики являются: Условия соглашения. Политика конфиденциальности. Лицензионное соглашение. Публичный договор Информация по оплате Условия покупок Ценовая политика Реквизиты При возникновении вопросов вы можете обратиться в службу поддержки OpenCart.Club.
  22. Добро пожаловать на Платформу Opencart Club! Opencart Club - это сообщество, форум и маркетплейс для разработчиков и пользователей CMS Opencart. Как пользователь, здесь вы можете задать любой интересующий вас вопрос по теме Opencart, найти исполнителя для ваших задач, а также скачать и приобрести необходимые дополнения для своего сайта. Как разработчик, вы имеете возможность размещать на маркетплейсе свои бесплатные и платные модули, а также предлагать свои услуги другим пользователям площадки. Присоединяйтесь сами и приглашайте друзей и знакомых, кому это может быть интересно. Наша команда открыта для любых пожеланий и предложений по развитию форума и маркетплейса. Все возникающие у вас вопросы и предложения, а также уведомления об ошибках, оставляйте в соответствующих разделах форума. Мы обязательно всё рассмотрим и приложим все усилия, для того, чтобы вместе сделать эту площадку лучшим русскоязычным ресурсом по Opencart.
  23. Как обновить OpenCart на новую версию OpenCart периодически обновляется с выпуском новых версий. Рекомендуется обновлять свой магазин с каждой новой выпущенной версией, чтобы воспользоваться исправлениями ошибок и новыми функциями. Может показаться хлопотным обновлять магазин каждый раз, когда выходит новая версия, но это стоит усилий в долгосрочной перспективе. Есть способы избежать проблем, связанных с обновлением, такие как использование качественных тем и модулей, которые не изменяют ядро OpenCart, или использование ocMod. В этом руководстве будет объяснено, как обновить версию v2.x. x вплоть до последней версии OpenCart 3. Версии более ранние, чем 1.5.4, не будут включены, поскольку они более не поддерживаются. Обратите внимание! Все нижеперечисленные действия по обновлению вашей версии OpenCart вы делаете на свой страх и риск. Описание обновления касается только тех магазинов, у которых весь функционал идет по умолчанию. Если у вас внедрены дополнительные функции то наверняка вы столкнетесь с кучей ошибок и несоответствий вплоть до потери данных, имейте это в виду! *Если вы не уверены в правильном обновлении вашего магазина то лучше обратиться за квалифицированной помощью к специалистам в раздел услуг. Проверка требований к новой версии opencart Чтобы проверить, может ли магазин с более старой версией обновиться до самой новой версии, ваш веб-сервер должен соответствовать основным техническим требованиям. Ознакомиться с последними техническими требованиями к последней версии OpenCart, 3.0.x, см. Системные требования. РЕЗЕРВНОЕ КОПИРОВАНИЕ СУЩЕСТВУЮЩИХ ФАЙЛОВ МАГАЗИНА И БАЗЫ ДАННЫХ!! Создайте резервную копию базы данных в админ части магазина > Система > Бекап и Восстановление, нажмите кнопку загрузить базу данных. Сделайте резервное копирование файлов с помощью FTP file copy или используйте cPanel filemanager для создания zip-архива всех существующих файлов и папок opencart. Обновление OpenCart от 2.x.x до 3.0.x Загрузите последнюю версию OpenCart и загрузите все новые файлы поверх текущей установки, кроме вашей конфигурации.php и admin / config.РНР. - #1 резервное копирование и удаление всех 2.x.x файлов просмотра. Потому что OpenCart 3 начинает использовать TWIG для замены формата TPL. - #2 Перед обновлением последней версии, вы должны дважды проверить существующие расширения (в вашем магазине) на совместимость с последней версией. Пожалуйста, свяжитесь с разработчиком для уточнения этого вопроса перед обновлением. - #3 не только расширения, но и все темы в OpenCart 2 нельзя использовать в OpenCart 3. Вы должны установить свою тему магазина на тему по умолчанию и отключить все расширения. Перейдите в раздел http://ваш-домен.ru/install Замените yourstore.com вашим фактическим сайтом (или подкаталогом, если это применимо). Вы должны увидеть сценарий обновления OpenCart. - Если вы видите страницу установки OpenCart, то это означает, что вы переписали сви файлы config.php. Сначала восстановите их из резервной копии. И после попробуйте еще раз. Нажмите кнопку Обновить, через несколько секунд вы увидите страницу успешного обновления - Если вы видите какие-либо ошибки, немедленно сообщите о них на форуме, прежде чем продолжить. Очистите все файлы cookie в вашем браузере Перейдите в административную часть вашего магазина и нажмите Ctrl+F5 или Ctrl+Shift+R несколько раз, чтобы обновить кэш браузера. Это предотвратит странное смещение элементов из-за изменений таблиц стилей. Войдите в систему вашего магазина в качестве главного администратора. Перейдите в меню Администрирование > Пользователи > Группы пользователей и отредактируйте группу Администратора. Отметьте все флажки. - Это гарантирует, что у вас будут разрешения для всех новых файлов. Перейдите в раздел Администрирование > Расширения > Расширения > Шаблоны и снова сохраните тему по умолчанию. Перейдите в раздел Администрирование > Система > Настройки - Обновите все пустые поля и нажмите кнопку "Сохранить". Даже если вы не видите никаких новых полей, нажмите кнопку "Сохранить" в любом случае, чтобы обновить базу данных с любыми новыми именами полей. Другие настройки, которые могут быть необходимы, в зависимости от того, с какой версии вы обновляетесь. Они разбиты по тому, в какой версии они были добавлены. Поэтому, если вы в данный момент не используете эту версию, вам может потребоваться внесение изменений. Загрузите витрину магазина и снова нажмите CTRL+F5 3 раза, чтобы обновить кэш браузера. Это предотвратит странное смещение элементов из-за таблицы стилей. (Если вы пропустили шаг 8, вы получите сообщение об ошибке.) Обновление OpenCart от 1.5.x до последней версии Обновление с 1.5.x версия до самой новой версии - это более простой процесс, чем обновление с версии 1.4.x. Чтобы получить доступ к последней версии OpenCart, посетите страницу загрузки: OpenCart релизы и сборки. Нажмите кнопку "Скачать файл, последней актуальной версии opencart, чтобы сохранить zip-файл. Распакуйте zip-файл в место, которое можно легко найти позже. Следующим шагом в обновлении является загрузка файлов из последней версии в каталог файлов магазина через FTP-клиент. Передача этих файлов приведет к перезаписи существующих файлов, поэтому рекомендуется сохранить существующие файлы из корневого каталога магазина на компьютере администратора в виде zip-файла. Кроме того, если вы еще не сделали этого, вам следует посетить раздел резервное копирование/восстановление, чтобы сохранить Резервный sql-файл, содержащий информацию о базе данных хранилища. Бекап и Восстановление в OpenCart . При резервном копировании файлов магазина новейшая версия может быть загружена с помощью FTP-клиента. См. раздел Установка, чтобы узнать, как подключиться к каталогу магазина с помощью Filezilla. На стороне локального сайта найдите папку Загрузки версии OpenCart и откройте ее для просмотра содержимого. Есть два файла, которые необходимо исключить из загрузки в корневой каталог магазина: "upload/config.php", а затем "upload/admin/config.php" Самый простой способ загрузить файлы последней версии, без этих двух config.php файлов, это удалить их со стороны локального сайта перед загрузкой. Таким образом, вы можете выбрать все, что находится в папке Загрузки, не беспокоясь о том, что config.php файлы могут быть загружены случайно. На скриншоте ниже, магазин находится в "public_html/update", поэтому все файлы из "upload" выбираются и перетаскиваются на полосу прокрутки. Каждый файл в "upload" автоматически загружается таким образом по правильному пути. Эти файлы должны перезаписывать существующие файлы, поэтому выберите "перезаписать" по запросу FTP-клиента. После загрузки файлов новой версии на FTP-клиент, администратор должен перейти на страницу установки. Страница установки находится в месте расположения магазина, за которым следует "/install", например: http://ваш-домен.ru/install. На следующем снимке экрана отображаются инструкции по обновлению после завершения обновления при просмотре страницы установки. После того, как в OpenCart обновление завершено, на следующей странице будет информация об успешном обновлении. Теперь каталог установки можно удалить. Хотя обновление уже завершено, есть еще несколько пунктов, которые нужно сделать, чтобы привести в порядок административную часть вашего магазина: Удалите файлы cookie из вашего браузера. Нажмите CTRL+F5 три раза как на стороне администратора, так и на передней панели магазина. Посетите настройки магазина и заполните любую недостающую информацию. См. раздел Настройки, чтобы узнать, как изменить настройки магазина. Посетите группы пользователей и предоставьте высшему администратору все права, необходимые для запуска администрирования. Дополнительные сведения об изменении групп пользователей см. в разделе Пользователи. После того, как административная часть будет в порядке, вы можете возобновить рутинную работу по управлению вашим магазином; за исключением того, что теперь вы оснащены всеми улучшенными инструментами и функциями, добавленными в ваш магазин вместе с обновлением. Обновление OpenCart 1.4.x до 1.5.x Если вы в настоящее время используете 1.4.x версию и хотите перенести свой магазин на последнюю версию, то настоятельно рекомендуем вам воспользоваться услугами профессионала - Услуги и Сервис. В противном случае вы производите все операции на свой страх и риск! Если вы решили перенести свой магазин на последнюю версию и в настоящее время используете 1.4.x версию, вам нужно скачать этот скрипт: Beta3-upgrade-14x-to-15x-YES-OPTv4.zip Этот скрипт представляет собой набор всех исправлений и версий opencart от версии 1.4.0 до версии 1.5.1.2. Это означает, что вы запускаете этот скрипт, чтобы привести базу данных вашего магазина к версии 1.5.1.2 Если вы хотите установить версию более позднюю, чем 1.5.1.2, это нормально. Просто убедитесь, что после запуска этого скрипта вы запустили установщик, который поставляется с последней версией OpenCart. Подробнее об этом ниже... ПРОЧИТАЙТЕ ВНИМАТЕЛЬНО: Используйте этот скрипт только в том случае, если ваш магазин работает под управлением OpenCart версии 1.4.x НЕ ИСПОЛЬЗУЙТЕ ЭТОТ СКРИПТ ДЛЯ ОБНОВЛЕНИЯ СУЩЕСТВУЮЩИХ МАГАЗИНОВ ВЕРСИИ 1.5.x Архив скрипта содержит ПОШАГОВЫЙ файл readme. Следуйте ему в точности! Скрипт будет работать еще на OpenCart версии 1.4.0 Этот скрипт работает! Ни разу не было подтвержденной ошибки. Если вы видите предупреждения или ошибки, это ложные срабатывания. Просто игнорируйте их. Этот скрипт запускался достаточное количество раз, чтобы убедиться, что на самом деле ошибок в нем нет. После обновления сообщайте о любых функциональных ошибках в соответствующей теме для вашей версии, а не здесь. Обновление OpenCart до версий более поздних, чем 1.5.1.2 ВАМ НЕ НУЖНО СНАЧАЛА УСТАНАВЛИВАТЬ 1.5.1.2. ВЫ МОЖЕТЕ ПЕРЕЙТИ НЕПОСРЕДСТВЕННО К ПОСЛЕДНЕЙ ВЕРСИИ Как я уже говорил выше, этот скрипт приведет вашу базу данных к версии 1.5.1.2 Если вы устанавливаете сразу более позднюю версию, например 1.5.1.3, то вам просто нужно сначала выполнить пошаговое руководство по обновлению из этой бета-версии 3, установив последнюю версию opencart. Затем, после завершения работы с этим скриптом, вы можете запустить установщик, который поставляется с версией 1.5.1.3 или более поздней. Сначала запустите этот скрипт для Beta3, следуя пошаговому руководству, которое прилагается к нему После выполнения этого сценария для Beta3 выполните следующие действия. upgrade.txt файл, который поставляется вместе с последней версией OpenCart. Готово! Чего ожидать после обновления OpenCart с 1.4.x до 1.5.x Для вашей темы будет установлена тема opencart 1.5.x по умолчанию На главной странице вы пока не увидите никаких модулей или продуктов, только верхний и нижний колонтитулы. Вам нужно зайти на страницу "Администратор"-> "Расширения"-> "Модули" и добавить свои модули, чтобы увидеть продукты на лицевой стороне. Ваши продукты, категории, клиенты, заказы будут в безопасности и доступны для просмотра в административной области Если у вас были установлены какие-либо сторонние модули из версии 1.4.x, вы можете увидеть ошибки типа "Document::setTitle". Это означает, что модуль еще не был обновлен. Вам следует удалить его из области модулей и получить последнее обновление от автора мода В админке появились новые меню, так что обязательно ознакомьтесь с ними. Обратите внимание! Все вышеперечисленные действия по обновлению вашей версии OpenCart вы делаете на свой страх и риск. Описание обновления касается только тех магазинов, у которых весь функционал идет по умолчанию. Если у вас внедрены дополнительные функции, то наверняка вы столкнетесь с кучей ошибок и несоответствий вплоть до потери данных, имейте это ввиду! *Если вы не уверены в правильном обновлении вашего магазина то лучше обратиться за квалифицированной помощью к специалистам в раздел услуг.
  24. Модификаторы - OCMOD OCMOD - Модификаторы в OpenCart - это разновидность расширений, позволяющих вносить изменения в функционал или внешний вид, не затрагивая оригинальные файлы. Тем самым обеспечивается неизменность оригинальных файлов самого OpenCart, при том, что появляется возможность заменять или расширять необходимый функционал. История появления модификаторов началась с vQmod в opencart версии 1.5х, и уже в версии opencart 2x он был усовершенствоваван и преобразован в OCMOD. В отличии от vQmod который устанавливался отдельно, OCMOD внедрён по умолчанию как стандартный функционал в CMS OpenCart2х и выше. OCMOD - Модификатор в OpenCart - расширение представляющее из себя XML файл, которое содержит набор инструкций о том, в каких оригинальных файлах OpenCart-а, в каких местах, какой код нужно заменить, добавить или удалить. OpenCart при выполнении инструкций xml файла создает копии исходных файлов в специальную директорию кэша модификаторов с внесёнными изменениями в этих копиях. В результате, при работе сайта используются измененные файлы, а не их оригинальные файлы. Модификатор OCMOD может быть как самостоятельным модулем, изменяющим или расширяющим стандартный функционал, так и входить в состав полноценного модуля с дополнительными php, tpl или twig и прочими файлами. Структура архива OCMOD модификатора image/catalog/doc/ru/ocmod/ocmod.jpg Название архива модификатора - должно быть задано в соответствии с требованиямя OCMOD - "название_файла".ocmod.zip , где вместо "название_файла" вы пишите свое название без кавычек. Таким образом, название архива всегда должно заканчиваться ".ocmod.zip", иначе система проигнорирует модификатор. Начиная с версии OpenCart 3x предполагается, что модификатор будет использоваться в составе полного модуля в виде архива - в отличии от OpenCart2x, где файл модификатора в виде "название_файла".ocmod.xml можно было загружать через установщик расщирений прямо в папку system, расположенную в корне сайта. Соответственно, при использовании файла модификатора в составе полного модуля и при его загрузке через административную часть в разделе Расширения > Установка расширений название файла-модификатора в архиве должно быть install.xml. В OpenCart 3x файл-модификатор также можно загрузить в папку system на постоянное размещение, используя FTP клиент, при условии, что название файла модификатора будет соответствовать требованиям OCMOD в виде "название_файла".ocmod.xml . Директории Кэш модификаторов - все изменённые модификатором файлы располагаются в папке system/storage/modification с такой же точно структурой папок, как и корень сайта, кроме папки image. Т.е. если вы сделали модификатор для файла /admin/controller/catalog/product.php то его измененная копия будет находится по пути system/storage/modification/admin/controller/catalog/product.php. Логи модификаторов - распалагаются в папке system/storage/logs , в ней находятся 2 основных лог-файла: ocmod.log - ведет запись об оработке и последовательности выполнении инструкций модификаторов, error.log - содержит ошибки, произошедшие при преобразовании. Обновление кэша модификаторов Чтобы система увидела файлы-модификаторы и выполнила их инструкции, необходимо нажать кнопку "Обновить" в правом верхнем углу на странице Модификаторы. Возможны ситуации, когда кэш обновлён, но изменения на сайте не вступили в силу. Обычно это связано с тем, что на сайте используются дополнительные модули кэширования, ускорители загрузки и т.п., в которых также необходимо обновить кэш. Синтаксис модификатора OCMOD Файл модификатора OCMOD обязательно должен содержать общую описательную часть и инструкции по изменению файлов: <?xml version="1.0" encoding="utf-8"?> <modification> <name>Мod</name> <!-- Название модификатора --> <code>mod_dev</code> <!-- Уникальный код модификатора --> <version>1.0</version> <!-- Версия модификатора --> <author>Develop</author> <!-- Автор модификатора --> <link>https://opencart.club</link> <!-- Сайт разработчика --> <file path="catalog/controller/product/category.php"> <!-- Файл который будет модифицироваться --> <operation> <search> <!-- Поиск кода в файле --> <![CDATA[ $result['name'], ]]> </search> <add position="after"> <!-- Добавление модификации (после найденного куска кода) --> <![CDATA[ 'sku' => $result['sku'], ]]> </add> </operation> </file> </modification> Данный пример модификатора меняет файл category.php. Он находит кусок строчки кода "$result['name']," и сразу за ним добавляет "'sku' => $result['sku'],". В одном xml файле может быть любое количество секций <file> и возможность менять любое количество файлов одним модификатором. Теги модификатора OCMOD и их функциональность Тег - File Указывает, в каком файле или файлах нужно внести изменения. Обязательный атрибут path содержит путь до изменяемого файла. Может указывать на один файл или на несколько. Для указания нескольких файлов, расположенных в разных папках, используется символ "|". Например, внести изменения в category.php, manufacturer.php, search.php и в special.php . <file path="catalog/controller/product/category.php|catalog/controller/extension/module/special.php"> Для сокращения кода можно использовать фигурные скобки, которые позволяют указать несколько значений через запятую: Например, внести изменения сразу в четыре файла category.php, manufacturer.php, search.php и в special.php. при этом суфикс .php можно вынести за фигурные скобки. . <file path="catalog/controller/product/{category,manufacturer,search,special}.php"> Так же можно использовать символы "*" и "?", чтобы указать путь по "маске". Бывает полезно для модификации файлов шаблонов. <file path="catalog/view/theme/*/template/product/category.twig"> Т.к. мы не знаем заранее, какие именно темы установлены в OpenCart, мы указали "*" после "theme", тогда будут модифицироваться все category.twig во всех шаблонах, находящихся в папке "theme". Тег - Operation Указывает начало секции производимой модификации. Внутри file секций <operation> может быть несколько. Т.е мы можем делать сразу несколько изменений в одном файле. Тег operation может иметь необязательный атрибут error, который может принимать значения: skip - в случае ошибки пропустить текущую секцию <operation> и перейти к следующей <operation> log (по умолчанию) - в случае ошибки пропустить всю секцию <file> и перейти к следующему <file> abort - в случае ошибки прервать все модификации в xml файле Например, найти в файле category.twig код "<div class="caption">" и если его нет, тогда пропустить и перейти к следующей операции и найти "<p class="price"> ". <file path="catalog/view/theme/*/template/product/category.twig"> <operation error="skip"> <search><![CDATA[<div class="caption">]]></search> <add position="after"><![CDATA[ <span class="sku">{{ product.sku}}</span> ]]></add> </operation> <operation error="skip"> <search><![CDATA[<p class="price">]]></search> <add position="before"><![CDATA[ <span class="sku">{{ product.sku}}</span> ]]></add> </operation> </file> Если не указать атрибут error="skip", тогда на первом поиске текста "<div class="caption">" вся секция <file> будет прервана и проигнорирована. Тег - Search Указывает, какой текст необходимо найти в текущей операции. Содержит несколько правил использования тега: Тег search может быть использован только 1 раз внутри секции operation. Поиск можно делать только 1 строки целиком или части строки (нельзя искать несколько строк одновременно). Искомый текст необходимо размещать строго между <![CDATA[ и ]]>. Пробелы и переносы строки до искомого текста и после искомого текста игнорируются, текст можно написать или сразу после CDATA или с новой строки после CDATA, если только не указан атрибут trim="false". Изменения применятся ко всем найденным в файле строчкам кода или их частям, если не указан атрибут index . Специальные теги <![CDATA[ и ]]> - используются в xml файлах для указания любых символьных данных, что означает, что между ними может находиться любой текст, содержащий скобки, значки больше, меньше и прочие, в том числе html и php код. Тег search содержит следующие атрибуты, которые используются для наиболее точного определения места внесения изменения: index - указывает, в каком по порядку найденном тексте внести изменения. Т.е. если в файле искомый текст встречается несколько раз, тогда index позволяет указать номер найденного по порядку текста (0 всегда первый найденный текст, 1 - второй и т.д.) Можно также указать несколько номеров через запятую. trim - указывает игнорировать (true) или нет (false) пробелы и переносы строк до и после искомого текста. regex - если установлено значении true, значит искомый текст представляет собой регулярное выражение для поиска. Пример: поиск атрибутом index среди схожих строчек кода. <file path="admin/controller/common/column_left.php"> <operation> <search index="0" trim="true"><![CDATA[ $data['menus'][] = array( ]]></search> <add position="before"><![CDATA[ $data['menus'][] = array( 'id' => 'new_menu', 'icon' => 'fa-menu', 'name' => 'New Menu', 'href' => 'new-menu/' ); ]]></add> </operation> </file> В примере по index найдена первая строчка кода "$data['menus'][] = array(" и перед ней добавляем свой код. Тег - Add Тег add содержит текст, который будет заменён или добавлен до или после искомого текста. Так же, как и тег search, тег add должен содержать <![CDATA[ и ]]>, между которыми вставляется текст кода, который будет добавлен или на который будет заменён искомый текст. Тег add имеет свои атрибуты: position - может принимать значения: replace (по умолчанию) - замена найденного текста before - добавить текст перед найденным текстом after - добавить текст после найденного текста offset - означает смещение относительно найденного текста на указанное количество строк. Если position="before", тогда смещение будет вверх от найденного текста, если position="after" или position="replace", тогда смещение будет вниз от найденного текста. trim - указывает игнорировать (true) или нет (false) пробелы и переносы строк до и после искомого текста. Пример: Добавим ссылку "Link" в футер на фронтальной части. <file path="catalog/view/theme/default/template/common/footer.twig"> <operation> <search index="1" trim="true"><![CDATA[ <ul class="list-unstyled"> ]]></search> <add position="after" offset="1" trim="true"><![CDATA[ <li><a href="#">Link</a></li> ]]></add> </operation> </file> Атрибут index="1" находит 2-й по порядку код <ul class="list-unstyled">, затем используя атрибут offset="1" на одну строку ниже найденного текста добавляет код <li><a href="#">Link</a></li>. Модификатор OCMOD позволяет в OpenCart расширить возможности, не затрагивая оригинальные файлы, а для возврата в исходное состояние вам просто будет достаточно удалить его.
×
×
  • Создать...