const jsonString = `{"items":[{"id":2,"title":"Футболка","slug":"futbolka","price":1000,"colors":[{"id":77,"color":{"id":27,"title":"white","code":"#ffffff"},"gallery":[{"file":{"url":"ссылка на изображение","name":"36efa79c31cb4400f8f9ce69a7d6f6a6.png","originalName":"Rectangle 13++.png","extension":"png","size":"63.5 Кб"}}]}],"seasons":[{"id":3,"title":"Лето","code":"summer","productsCount":10}],"materials":[{"id":1,"title":"Хлопок","code":"cotton","productsCount":6},{"id":2,"title":"Шерсть","code":"wool","productsCount":4}]}]}`;
const data = JSON.parse(jsonString);
// дальше перебором ищем где есть изображение
if (data?.items[0]?.colors.length) {
for (let i = 0; i <= data.items[0].colors.length; i++) {
// проваливаемся в еще один цикл уже на элементы в gallery, и там ищем url, и если есть то заканчиваем цикл через r
for (let j = 0; j <= data.items[0].colors[i].length; j++) {
//и еще цикл на галерии
for (let n = 0; n <= data.items[0].colors[i].gallery.length; j++) {
if (data?.items[0]?.colors[i]?.gallery[n]?.url) {
return data.items[0].colors[i].gallery[n].url;
}
}
}
}
}
// не забудьте дописать выход из всех циклов
items.forEach(item => {
const keys = Object.keys(item);
let imageKey = '';
keys.some(key => {
if (typeof item[key] === 'object' && item[key] !== null) {
const subkeys = Object.keys(item[key]);
const file = subkeys.find(subkey => {
if (typeof item[key][subkey] === 'object' && item[key][subkey] !== null) {
return item[key][subkey].hasOwnProperty('url');
}
return false;
});
if (file) {
imageKey = key;
return true;
}
}
return false;
});
return `${item.title}" "${imageKey}`;
// можно дальше делать что угодно с ключем или сразу брать изображение
});
const arr = document.getElementsByClassName('seller-details__parameter');
(function traverse(node = arr[0]) {
// Проверяем тип узла, чтобы получить только текстовые узлы
if (node.nodeType === Node.TEXT_NODE && node.textContent.trim() !== '') {
console.log(node.textContent);
}
// Рекурсивно обходим все дочерние узлы
node.childNodes.forEach(traverse);
})();
const cors = require('cors');
module.exports = {
serverMiddleware: [
cors()
]
}
const dateStr = '02 апреля, 21:10';
const dateRegex = /^(\d{2}\s\w+)/;
const match = dateStr.match(dateRegex);
if (match) {
const date = match[1];
console.log(date); // '02 апреля'
}
const str = 'Алабинскаяот 31 мин.Российскаяот 31 мин.Московскаяот 31 мин.Самарская область, Самара, Буянова ул. , 42';
const regex = /Самара,\s*(.*)/;
const match = str.match(regex);
if (match) {
const result = match[1];
console.log(result); // 'Буянова ул. , 42'
}
@media (hover: none) {
/* Стили для устройств с тачскрином */
}
@media (min-width: 765px) and (max-width: 1240px) {
/* Стили для планшетов */
}
modules: [
'@nuxtjs/axios',
],
axios: {
baseURL: 'https://my-rds-endpoint.amazonaws.com',
credentials: true,
auth: {
username: 'db-username',
password: 'db-password',
},
headers: {
'Content-Type': 'application/json',
},
},
const { data } = await $axios.get('/my-data')
return { myData: data }
package.json
pluginsсоздать
vuetify.js(название можно менять).
import { createVuetify, ThemeDefinition } from "vuetify";
import {
VApp,
} from "vuetify/components";
export default defineNuxtPlugin((nuxtApp) => {
const vuetify = createVuetify({
locale: {
fallback: "ru", // локаль если нужны переключения языков
},
theme: {
// тут кастомные темы
},
components: {
VApp, // тут компоненты вьютифая
},
ssr: true, // nuxt 3 - ssr
});
nuxtApp.vueApp.use(vuetify);
});
nuxt.cinfig.tsвам понадобиться добавить стили вьютифая и при билде сам пакет
css: [
"vuetify/lib/styles/main.sass",
"@mdi/font/css/materialdesignicons.min.css", // если нужны mdi
],
build: {
transpile: ["vuetify"],
},
import Vue from 'vue'
import Vuetify from 'vuetify'
import 'vuetify/dist/vuetify.min.css'
Vue.use(Vuetify)
export default new Vuetify({
icons: {
iconfont: 'mdi'
}
})
export default {
plugins: [
{ src: '~/plugins/vuetify.js' }
]
}
this.file = event.target.files[0]; //можно через реф при нажатии на кнопку отправить если не нужны проверки
conts formData = new FormData();
formData.append('правильное_имя_ключа', this.file);
axios.post('правильный_путь', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).then(response => {
// что-то отобразить при успешной отправке
}).catch(error => {
// что-то отобразить при ошибке
});
<template>
<div class="navbar">
<nav>
<router-link to="/">Home</router-link> | <router-link to="/about">About</router-link> | <router-link to="/test">Test</router-link>
</nav>
</div>
</template>
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$msg = $_POST['message'];
require_once('phpmailer/PHPMailerAutoload.php');
$mail = new PHPMailer;
$mail->CharSet = 'utf-8';
//тут бы я добавил еще язык/ Путь, само собой, зависит от установки
$mail->setLanguage('ru', '../vendor/phpmailer/phpmailer/language');
$mail->SMTPDebug = SMTP::DEBUG_SERVER;
$mail->isSMTP();
$mail->Host = 'imap.yandex.ru'; //тут скорее 'ssl://smtp.yandex.ru' проверьте на сайте яндекса
$mail->SMTPAuth = true;
$mail->Username = 'artur**********@yandex.ru';
$mail->Password = '***********;
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->setFrom('test@domain.ru', 'Иван Обрамов');
$mail->addAddress('artur.sidorenko.02@mail.ru', 'Артур Сидоренко');
//$mail->addAddress('ellen@example.com');
//$mail->addReplyTo('info@example.com', 'Information');
//$mail->addCC('cc@example.com');
//$mail->addBCC('bcc@example.com');
//$mail->addAttachment('/var/tmp/file.tar.gz');
//$mail->addAttachment('/tmp/image.jpg', 'new.jpg');
$mail->isHTML(true);
$mail->Subject = 'Данные';
$mail->Body = '
Пользователь оставил данные
Имя: ' . $name . '
E-mail: ' . $email . ''; '
Сообщение: ' . $message . '';
if(!$mail->send()) {
return false;
} else {
return true;
}
?>
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' '*';
ddd_header 'Access-Control-Allow-Methods', '*';
return 204;
}
if ($request_method = 'POST') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' '*';
ddd_header 'Access-Control-Allow-Methods', '*';
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' '*';
ddd_header 'Access-Control-Allow-Methods', '*';
}
res.header('Access-Control-Allow-Methods', '*');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: *');