Как сделать, чтобы если пользователь сайта не загрузил свой favicon, то использовать favicon который я загрузил сам?
Как сделать, чтобы если пользователь сайта не загрузил свой favicon, то использовать favicon который я загрузил сам в папке backend/web/images/defaulffavicon.png Распишите пожалуйста полный алгоритм, а точнее действия MVC.
Код виджета:
<?= FileInput::widget([ 'name' => 'Company[favicon]', 'id' => 'favicon-input', 'options' => [ 'accept' => 'application/favicon', ], 'pluginOptions' => [ 'fileActionSettings' => [ 'showZoom' => false, 'showRemove' => true, 'showUpload' => true, 'showDrag' => false, ], 'allowedFileTypes' => ['image'], 'allowedPreviewTypes' => ['image'], 'dropZoneEnabled' => false, 'browseClass' => 'btn btn-primary btn-block', 'showCaption' => false, 'showRemove' => false, 'showUpload' => false, 'autoReplace' => true, 'showCancel' => false, 'maxFileCount' => 1, 'initialPreview' => $favicon_preview, 'initialPreviewAsData' => true, 'initialPreviewFileType' => 'image', 'overwriteInitial' => true, 'previewFileType' => 'application/*', 'uploadUrl' => Url::to(['/media/upload-favicon']), 'deleteUrl' => Url::to(['/media/delete-favicon', 'company_id' => $model->id, 'type' => 'company-favicon']), 'uploadExtraData' => [ 'fileKey' => 'Company[favicon]', 'resourceType' => 'company-favicon', 'company_id' => $model->id, ], 'layoutTemplates' => [ 'actions' => '<div class="file-actions">' . ' <div class="file-footer-buttons">' . ' {delete}' . ' </div>' . '</div>', ], ], 'pluginEvents' => [ 'filebatchselected' => 'function(event, params) { $("#favicon-input").fileinput("upload"); }', 'fileuploaded' => 'function(event, data, previewId, index){ if(data.response && data.response.files && data.response.files.length > 0) { if($("#companyform-favicon_id").length > 0){ $("#companyform-favicon_id").val(data.response.files[0].id); } else { $("#company-favicon_id").val(data.response.files[0].id); $("#company-favicon_id").trigger("change"); } } }', ], ]); ?> if ($model->has_favicon) { $favicon_preview[] = $model->faviconPreview; } if (!empty ($model->has_favicon)) { "........." } } |
<?= FileInput::widget([ 'name' => 'Company[favicon]', 'id' => 'favicon-input', 'options' => [ 'accept' => 'application/favicon', ], 'pluginOptions' => [ 'fileActionSettings' => [ 'showZoom' => false, 'showRemove' => true, 'showUpload' => true, 'showDrag' => false, ], 'allowedFileTypes' => ['image'], 'allowedPreviewTypes' => ['image'], 'dropZoneEnabled' => false, 'browseClass' => 'btn btn-primary btn-block', 'showCaption' => false, 'showRemove' => false, 'showUpload' => false, 'autoReplace' => true, 'showCancel' => false, 'maxFileCount' => 1, 'initialPreview' => $favicon_preview, 'initialPreviewAsData' => true, 'initialPreviewFileType' => 'image', 'overwriteInitial' => true, 'previewFileType' => 'application/*', 'uploadUrl' => Url::to(['/media/upload-favicon']), 'deleteUrl' => Url::to(['/media/delete-favicon', 'company_id' => $model->id, 'type' => 'company-favicon']), 'uploadExtraData' => [ 'fileKey' => 'Company[favicon]', 'resourceType' => 'company-favicon', 'company_id' => $model->id, ], 'layoutTemplates' => [ 'actions' => '<div class="file-actions">' . ' <div class="file-footer-buttons">' . ' {delete}' . ' </div>' . '</div>', ], ], 'pluginEvents' => [ 'filebatchselected' => 'function(event, params) { $("#favicon-input").fileinput("upload"); }', 'fileuploaded' => 'function(event, data, previewId, index){ if(data.response && data.response.files && data.response.files.length > 0) { if($("#companyform-favicon_id").length > 0){ $("#companyform-favicon_id").val(data.response.files[0].id); } else { $("#company-favicon_id").val(data.response.files[0].id); $("#company-favicon_id").trigger("change"); } } }', ], ]); ?> if ($model->has_favicon) { $favicon_preview[] = $model->faviconPreview; } if (!empty ($model->has_favicon)) { "........." } }
Дополнительно:
Распишите пожалуйста полный алгоритм, а точнее действия MVC
Это шутка?
Проверяешь в базе, если есть значение в поле "favicon" то подставляем его, если поле пусто то "default.png".
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы использовать собственный favicon на вашем сайте в случае, если пользователь не загрузил свой собственный, вам нужно внедрить логику проверки наличия favicon у пользователя и, при его отсутствии, подставить ваш собственный.
Прежде всего, у вас должен быть ваш собственный favicon, который вы загрузили на сервер. Затем вам нужно добавить следующий код в тег вашего HTML документа:
Далее, чтобы проверить, загрузил ли пользователь свой собственный favicon, вам нужно добавить следующий JavaScript код перед закрывающим тегом :
document.addEventListener('DOMContentLoaded', function() { var link = document.querySelector("link[rel*='icon']"); if (!link) { var newLink = document.createElement('link'); newLink.rel = 'shortcut icon'; newLink.href = '/путь_к_вашему_фавикону/favicon.ico'; document.head.appendChild(newLink); } });document.addEventListener('DOMContentLoaded', function() { var link = document.querySelector("link[rel*='icon']"); if (!link) { var newLink = document.createElement('link'); newLink.rel = 'shortcut icon'; newLink.href = '/путь_к_вашему_фавикону/favicon.ico'; document.head.appendChild(newLink); } });
Этот скрипт будет проверять наличие favicon у пользователя при загрузке страницы и, если favicon не найден, будет автоматически подставлять ваш собственный.
Убедитесь, что замените "/путь_к_вашему_фавикону/favicon.ico" на реальный путь к вашему собственному favicon на сервере.
Таким образом, вы сможете обеспечить наличие favicon на вашем сайте даже в случае, если пользователь не загрузил свой собственный.