ar díol chun an saol beaga éiceilíoch fóir airgid a bheith agat. Tithe Cottagecore is ea na tithe beaga áiteanna amháin den phaisin i gcrích...">
,需要通过父级DOM结构来判断
*/
var trackActionPhone = function (node) {
var nodeInnerText = node.innerText || '';
if (!limitRegLength(nodeInnerText)) return;
var nodeText = trimText(nodeInnerText);
if (nodeText.length < 5 || nodeText.length > 20) return false;
var type =
arguments.length > 1 && arguments[1] !== undefined
? arguments[1]
: 'click';
var str = trimText(node.href || node.innerHTML || '');
if (phoneReg.test(str) && numUseReg.test(str)) {
_paq.push(['trackEvent', type, 'phone', nodeText]);
return true;
}
/** 排查父级嵌套非标签场景,并且对dom的正则校验做一个性能兜底,通过控制innerText的长度,来确保正则的性能 */
var fatherText = trimText(node.parentNode.innerText || '');
if (fatherText.length < 5 || fatherText.length > 20) return false;
var fatherDom = trimText(node.parentNode.innerHTML || '');
if (phoneReg.test(fatherDom) && numUseReg.test(fatherDom)) {
_paq.push(['trackEvent', type, 'phone', nodeText]);
return true;
}
return false;
};
window.addEventListener('click', function (e) {
var node = e.target;
/** 社媒点击 */
var appName = '';
var getAppAriaLabel =
node.ariaLabel || node.parentNode.ariaLabel || '';
if (mediaList.includes(getAppAriaLabel.toLowerCase())) {
appName = getAppAriaLabel;
}
if (
!appName &&
node.nodeName &&
node.nodeName.toLowerCase() === 'a'
) {
appName = getMediaName(node.href) || getMediaName(node.alt);
}
if (
!appName &&
node.nodeName &&
node.nodeName.toLowerCase() === 'img'
) {
appName = getMediaName(node.alt) || getMediaName(node.src);
}
if (
!appName &&
node.nodeName &&
node.nodeName.toLowerCase() === 'i'
) {
appName = getMediaName(node.className);
}
if (appName) {
_paq.push(['trackEvent', 'click', 'contactApp', appName]);
return;
}
/** 联系方式点击 */
if (trackActionPhone(node, 'click')) return;
if (node.nodeName && node.nodeName.toLowerCase() === 'a') {
var val = node.href;
if (!limitRegLength(val)) return;
if (emailReg.test(val)) {
_paq.push(['trackEvent', 'click', 'email', val]);
return;
}
}
if (node.nodeName && node.nodeName.toLowerCase() === 'i') {
var val = node.className;
var content = node.parentNode.href || '';
if (val.includes('email')) {
_paq.push(['trackEvent', 'click', 'email', content]);
return;
}
}
var nodeChildList = node.childNodes;
for (var i = 0; i < nodeChildList.length; i++) {
if (nodeChildList[i].nodeType !== 3) continue;
var val = nodeChildList[i].textContent.replace(/\s?:?/g, '');
if (!limitRegLength(val)) continue;
if (emailReg.test(val)) {
_paq.push(['trackEvent', 'click', 'email', val]);
return;
}
}
trackNumberData(node);
});
window.addEventListener('copy', function (e) {
if (trackActionPhone(e.target, 'copy')) return;
var text = e.target.textContent;
if (!text) return;
var val = text.replace(/\s:?/g, '');
if (!limitRegLength(val)) return;
if (emailReg.test(val)) {
_paq.push(['trackEvent', 'copy', 'email', val]);
return;
}
trackNumberData(e.target);
});
}
trackContactInit();
/**
* 基于custom_inquiry_form.js 以及 form.js 对于询盘表单提交的实现,来反推询盘表单的input标签触发,用来收集意向客户
* 1. 缓存的KEY:TRACK_INPUT_ID_MTM_00;
* 2. 缓存策略 - lockTrackInput:单个页面内,10分钟内,不重复上报
*/
function trackActionInput() {
const CACHE_KEY = 'TRACK_INPUT_ID_MTM_00';
const pathName = window.location.hostname + window.location.pathname;
var lockTrackInput = function () {
try {
const lastCacheData = localStorage.getItem(CACHE_KEY);
if (!lastCacheData) return false;
const cacheData = JSON.parse(lastCacheData);
const cacheTime = cacheData[pathName];
if (!cacheTime) return false;
return Date.now() - cacheTime < 1000 * 60 * 10; // 10分钟内,不重复上报
} catch (error) {
console.error('lockTrackInput Error', error);
return false;
}
};
var setInputTrackId = function () {
try {
const curCacheData = localStorage.getItem(CACHE_KEY);
if (curCacheData) {
const cacheData = JSON.parse(curCacheData);
cacheData[pathName] = Date.now();
localStorage.setItem(CACHE_KEY, JSON.stringify(cacheData));
return;
}
const cacheData = {
[pathName]: Date.now(),
};
localStorage.setItem(CACHE_KEY, JSON.stringify(cacheData));
} catch (error) {
console.error('setInputTrackId Error', error);
}
};
var getInputDom = function (initDom) {
var ele = initDom;
while (ele) {
/**
* isWebSiteForm 是站点的表单
* isChatWindowForm 是聊天窗口的表单
*/
/** 旧模板表单 */
var isWebSiteForm = !!(
/crm-form/i.test(ele.className) && ele.querySelector('form')
);
/** 1:新模板自定义表单、2:Get a Quote 弹框表单 */
var isWebSiteFormNew = !!(
/inquiry/i.test(ele.className) && ele.querySelector('form')
);
if (isWebSiteForm || isWebSiteFormNew) {
_paq.push(['trackEvent', 'formInquiry', 'formInput', 'page']);
setInputTrackId();
return;
}
/** Mkt会话触达-聊天弹框的表单输入: MKT由于是iframe嵌入,所以MKT的上报,会单独写到MKT-form代码上 */
var isInquiryChatForm = !!(
/comp-form/i.test(ele.className) && ele.querySelector('form')
);
if (isInquiryChatForm) {
_paq.push(['trackEvent', 'formInquiry', 'formInput', 'chat']);
setInputTrackId();
return;
}
/** 向上查找父节点 */
ele = ele.parentNode;
}
};
function initInputListener() {
var inputUseDebounce = function (fn, delay) {
var timer = null;
var that = this;
return function () {
var args = Array.prototype.slice.call(arguments);
if (timer) clearTimeout(timer);
timer = setTimeout(function () {
fn.apply(that, args);
}, delay);
};
};
var optimizeGetInputDom = inputUseDebounce(getInputDom, 300);
window.addEventListener('input', function (e) {
/** 如果已经上报过,则不再上报 */
if (lockTrackInput()) return;
optimizeGetInputDom(e.target);
});
}
try {
initInputListener();
} catch (error) {
console.log('initInputListener Error', error);
}
}
trackActionInput();
}
/** 第三方消息上报:目前主要是针对全点托管会话;在msgCollect/index.js中调试,访问test.html */
function thirdMsgCollect() {
/** 先检测是否是stayReal托管:如果stayReal脚本都没有,那么说明当前站点未开启stayReal会话托管 */
const scriptList = Array.prototype.slice.call(
document.querySelectorAll('script'),
);
const checkStayReal = () =>
!!scriptList.find((s) => s.src.includes('stayreal.xiaoman.cn'));
if (!checkStayReal()) return;
/** 缓存当前消息队列的最后一条消息id */
const CACHE_KEY = 'CACHE_KEY_MONITOR';
const setCache = (msgIndex) => {
/** 对缓存KEY进行base64转码处理 */
const cacheMsgIndex = btoa(msgIndex);
localStorage.setItem(CACHE_KEY, cacheMsgIndex);
};
const getCache = () => {
const cacheMsgIndex = localStorage.getItem(CACHE_KEY);
if (cacheMsgIndex) return Number(atob(cacheMsgIndex));
return -1;
};
/** 拉取最新msg列表 */
const pullMsgList = () => {
const msgEleList = Array.prototype.slice.call(
document.querySelectorAll('#chat-list li'),
);
const msgIds = [];
const msgMap = msgEleList.reduce((acc, item) => {
const sendTime = item
.querySelector('.message-data-time')
.textContent.trim();
const sendContent = item.querySelector('.message').textContent.trim();
/** msg带有class:other-message的是访客消息,my-message的是客服消息 */
const isOtherMessage = item
.querySelector('.message')
.classList.contains('other-message');
const msgId = item.querySelector('.message').getAttribute('id');
const msgItemData = {
msgId,
user: isOtherMessage ? 'visitor' : 'official',
time: sendTime,
content: sendContent,
};
msgIds.push(msgId);
acc[msgId] = msgItemData;
return acc;
}, {});
return {
ids: msgIds,
dataMap: msgMap,
};
};
/** 加密并上传消息数据 */
let ENCRYPT_KEY = 'de29f1aab63ab033';
let ENCRYPT_IV = 'b8d2badf875e76ac';
const baseUrl = 'https://cms.xiaoman.cn';
// var getEncryptConfig = function () {
// const url = baseUrl + '/shop-api/innerApi/getKeyIv'
// $.get(
// url,
// function (result) {
// console.log('result', result)
// if (Number(result.code) === 0 && result.data.key && result.data.iv) {
// ENCRYPT_KEY = result.data.key
// ENCRYPT_IV = result.data.iv
// uploadMsgData()
// } else {
// /** 如果获取失败,则重试 */
// setTimeout(() => {
// getEncryptConfig()
// }, 1000)
// }
// },
// 'json'
// )
// }
// getEncryptConfig()
const encryptMsg = function (msgData) {
const enc = new TextEncoder();
// 转字节
const keyBytes = enc.encode(ENCRYPT_KEY);
const ivBytes = enc.encode(ENCRYPT_IV);
const plainBytes = enc.encode(msgData);
// 导入密钥并加密
return crypto.subtle
.importKey('raw', keyBytes, { name: 'AES-CBC' }, false, ['encrypt'])
.then(function (cryptoKey) {
return crypto.subtle.encrypt(
{ name: 'AES-CBC', iv: ivBytes },
cryptoKey,
plainBytes,
);
})
.then(function (encryptedBuffer) {
// 转 base64 返回
return btoa(
String.fromCharCode(...new Uint8Array(encryptedBuffer)),
);
})
.catch((err) => {
return Promise.reject(err);
});
};
let uploadFlag = false;
const uploadMsgData = function () {
if (uploadFlag) return;
uploadFlag = true;
const { ids, dataMap } = pullMsgList();
let cacheMsgIndex = getCache();
const msgLen = ids.length;
if (!msgLen) {
// 消息DOM未挂载 || 消息DOM已挂载,但是消息列表为空
uploadFlag = false;
return;
}
if (msgLen - 1 < cacheMsgIndex) {
/** 针对站点挂后台一段时间,消息列表会自动塞入重复消息,导致消息有重复,刷新后又重置回正常消息列表,所以这里需要更新锚点下标 */
cacheMsgIndex = msgLen - 1;
setCache(cacheMsgIndex);
uploadFlag = false;
return;
}
if (msgLen - 1 === cacheMsgIndex) {
// 缓存的最后一次发送的消息ID是最后一条(说明当前消息均已经上报),则不跳过本地上报
uploadFlag = false;
return;
}
const currentMsgIds = ids.slice(cacheMsgIndex + 1, msgLen);
const currentMsgData = currentMsgIds.map((id) => dataMap[id]);
const mtmId = window.matomo_site_id_cookie_key || ''; // 获取mtm会话id
const msgBody = {
mtmId,
curl: window.location.href,
msgList: currentMsgData,
};
const msgBodyStr = JSON.stringify(msgBody);
encryptMsg(msgBodyStr)
.then(function (encryptedMsg) {
console.log('encryptedMsg:', encryptedMsg, msgBodyStr);
const url = baseUrl + '/shop-api/External/ListenSiteActiveStatus';
$.ajax({
type: 'POST',
url,
data: JSON.stringify({ d_v: encryptedMsg }),
contentType: 'application/json',
success: function (result) {
if (Number(result.code) === 0) {
// 更新消息队列
setCache(msgLen - 1);
}
uploadFlag = false;
},
error: function (err) {
console.error(err, '请求异常');
uploadFlag = false;
},
});
})
.catch((err) => {
console.error(err, '数据加密失败');
uploadFlag = false;
});
};
/** 监控chat-list的DOM变更 */
const initChatListObserver = () => {
// 需要监听的 DOM 节点
const target = document.getElementById('chat-list');
if (!target) return;
// 回调函数
const callback = function (mutationsList, observer) {
for (const mutation of mutationsList) {
console.log('mutation', mutation);
if (mutation.type === 'childList') {
uploadMsgData();
}
}
};
// 配置
const config = {
childList: true, // 监听子节点的增删
subtree: true, // 是否也监听后代节点
};
// 创建 observer
const observer = new MutationObserver(callback);
// 开始监听
observer.observe(target, config);
};
let testCount = 30;
let itv = null;
const checkChatDom = () => !!document.querySelector('#vc-model');
const initTalkCheck = () => {
itv = setTimeout(() => {
console.log('checkChatDom', checkChatDom(), testCount);
if (!checkChatDom() && testCount > 0) {
testCount--;
initTalkCheck();
return;
}
clearTimeout(itv);
uploadMsgData();
initChatListObserver();
}, 1500);
};
initTalkCheck();
}
try {
gtmTrack();
thirdMsgCollect();
console.log('inserted gtm code');
} catch (error) {
console.error('gtmTrack Error', error);
}
});
})();
Aimsigh Tí Bheaga Réamh-thógtha Ar Dísceart do Mhuintir a bhfuil suim acu sa saol beatha glas éadomhach. Tá na tithe Cottagecore ann mar ghníomhaí beag árachta, agus is ceann de na picíní atá i gceist chun an fhadhb a réiteach agus teach ábalta a thógáil. Tá rogha leathan beagán tithe ar fáil againn CDPH. Is féidir iad a shaincheap go mór é go mbeidh stíl uathúil orthu. Tá siad níos cothromaí freisin, nach amháin toisc go mbreathnaíonn siad go hiontach ach toisc go gcuirtear níos lú ábhair agus fuinnimh i mbun tógála orthu. Brabhsáil tríd ár gcomhthéacs leathan taitneamhach fuinnimh tithe beaga ar rothaí . Níos mó ná dul isteach i siopa milseáin, ach tú ag ceannach do thithe bheaga féin. Is féidir leat roghnú an méid seomraí, an dath ar mhaith leat ar na ballaí, agus fiú an stíl sleamhna at mhaith leat. Agus a fhios tú cad? Tá ár dtithe go han-mhaith insilte mar sin úsáidfidh siad lánúin chucu féin, rud a bhaineann leis an bplainéad. Siopaíl ár bhfhostaithe ar mhais mhiondéanta réidh-le-tógáil mar réiteach ar do theach mórthimpeall a sheans do theach mórthaitneamh ar mhodh timpeallachta-buiséid. Má táimid cinnte nach bhfuil a fhios agat cad is éanra an fhóstaíocht! Tá sé cosúil le níos mó a fháil ar cheann de na míreanna breá. Tairgeann muid ár dtithe beaga réidh-le-tógáil ag fhostaithe ag CDPH, chun cabhrú leat fós bheith in ann bheith in ann teach a shealbhadh do theach mórthaitneamh ag íosláimh ar an gcostas. D'fhéadfaimis é a thabhairt ainm ar bharraíl mar táimid ag íoc orlach. Ansin is féidir leat do airgead a úsáid ar rudaí spraoi cosúil le cluichidh nó milseáin do do mhadra! Ár Craobhacha Tithe Beaga Réidh le Comhdhúil: Coibhéiseach & Ardfheabhas An ndearna tú riamh puzal, nó thóg tú samhail ar bith? Téigh isteach ar ár gcuid scoth teachín (a bhfuil gach rud beag beann ar theastaíonn uait chun do theach beag féin a thógáil!) Tagann sé i mbosca mór leis na piecanna go léir ann — níl ach oiread fathaigh ag teastáil uait agus treoracha a leanúint! Smaoinigh air mar imirt le Legos, ach ar scála níos mó. Agus tá sé fiú níos fearr toisc is féidir leat fanacht ann tar éis dóibh an phróisis a chríochnú. Roghnaigh rud éifeachtach agus uathúil—ár ngníomhaí bheaga ardchaighdeáin a leanann an treimhse stíle beatha cothrom. Éifeachtach, an bhfuil tú riamh chualta an focal sin? D'fhéadfadh sé a bheith difriúil ó mar a mbeadh súil agat, ach ciallaíonn sé freisin a bheith ag cuidiú leis an Domhan & níos lú acmhainní a úsáid ionas go bhféadfaí Mámó Nádúr a chosaint ar mhórmhéid. Tógáil ardchaighdeáin — Beidh ár ngníomhaí réamh-tógtha beaga fágtha ar feadh míonna i gcónaí mar gheall ar ár dtaibhseoireacht ardchaighdeáin agus ár ndaoine páirteach scileáilte. Gan mhoill a dhéanamh ort, is breá deas atá siad amuigh agus tá stíl orthu, ceann de na míreanna is fearr sa taispeántas má tá tú ag iarraidh! Mar sin, bí ina cheann de na páistí leis an gcuid seo threndbhailte chun an Domhan a choimeád i gcomhthéacs; faigh teach beag réamh-tógtha ó CDPH. Tá na tithe beaga réamhghníomhaithe tar éis a thógáil i bpríomhchóras modúil a d’fhéadfá a eagrú de réir riachtanais do theach. Cuireann sé seo ar chumas an t-ábhar a tháirgeadh i mblocanna móra agus cuireann sé sin do theach níos sláintiúla, níos stiúrtha agus níos oiriúnaí. Ag an am céanna, is féidir an seomra scuabtha a chur le chéile go soléir chun freastal ar riachtanais úsáide éagsúla, mar sin is féidir leat sult a bhaint as comfhort do theach ar bith, ar bith áit. Díoladh tapa! Tá an longas agus an pacáil an-tapa, agus úsáideann muid foireann phacála oiliúnaí chun do spás scuabtha a phacáil de réir do riachtanais, agus chun a chinntiú go mbainfidh tú an táirge is fearr. Le linn an phróisis longais, leanann muid gach céim den phróisis chun a chinntiú go mbainfidh an mhála le sláinte agus le sábháilteacht ag an mbunáit. Is é seo an rogha is coitianta freisin, mar is féidir an seomra a scuabhadh go héasca gan gá le himpleabáil ar an suíomh. Soláthraímid treoracha le haghaidh suiteála chun do shuiteáil a dhéanamh níos tapúla agus níos éifeachtaí. Ar an gcoinníoll go ndéanann tú an obair de réir na gcéimeanna a léirítear sa treoir, is féidir leat an t-ábhar scuabtha a shuiteáil go héasca. Tá na tithe beaga réamhmhonataithe éasca le tógáil agus níl aon scileanna ar leith de dhíth orthu. Is féidir iad a úsáid do bheatha, oifige, stórála nó aon chúlachas eile. Is féidir le teach inbhuanaithe crua a chruthú spás ina bhfuil níos mó sláinte agus níos cóngaraí! Úsáideann muid dearadh modúlach caighdeánach, agus tá gach comhpháirt struchtúrtha réamhghinmheasaithe i bhfabhrac i gcaighdeán. Roghnaigh an méid agus an chumraí ceart ionas go mbeidh tú in ann spás ina bhfuil cónaí a thógáil go tapa a chomhlíonfaidh do riachtanais. De réir a gcriosanna agus a roghanna, is féidir roinnt modúl a chur le chéile i mbun éagsúla cumraí seomra chun tithe beaga réamhthógtha a chruthú, lena n-áirítear spásanna ina bhfuil cónaí comhtháite mar an seomra cónaí, an gcuisneoir nó an leaba. Tá na gairdíní iontacha seo sa teach inbhuanaithe againn, mar shampla: torthaí uisce, torthaí uisce, agus torthaí corrú agus torthaí tine. Is éasca agus simplí an tionsaí agus ní ghiarrann sé eolas teicniúil ar leith. Má tá sé do úsáid pearsanta, do oifig sealadach, do stóráil nó do chúiseanna eile, tá ár tithe inbhuanaithe réamhthógtha deartha chun freastal ar do riachtanais. Tá an t-am anois ann chun infheistíocht a dhéanamh i seomra bosca agus baint as an luach níos ísle, mar aon le seirbhís cliantach cuimhneach. Déan do shaol níos fearr trí sheomra inbhuanaithe a cheannach! Cabin Apple, cruth uiniceach, taispeánann sé dea-mhais, agus déanann sé do bhaile níos pearsanta. Tá rogha leathan stíleanna agus dathanna ar fáil chun freastal ar do thuairimí pearsanta, ó stíl simplí comhaimseartha go dtí stíl traidisiúnta. Tá Beijing Chengdong dírithe ar theacháin bheaga réamhghníomhaithe, agus is féidir iad a shaincheapadh de réir do riachtanais. Chun freastal ar do miananna agus do roghanna pearsanta, is féidir leat an dearadh, an t-earrach, agus na córais uisce agus leictreachais a shaincheapadh chun teach idéalach agus eiscluisiúnta a thógáil duit. Dhearna muid dealramh agus tógáil na mbóthar leictreachais agus uisce roimh thógáil an tí, mar sin seachnaítear an tasc ama-chrua de athshocrú na mbóthar uisce agus leictreachais tar éis an tí a adhmadh, agus méadaítear éifeacht an adhmaid agus an cháilíocht. Is féidir leat roghnú as raon leathan réitigh don spás ina bhfuil tú ag maireachtáil, don spás ithe, don leaba, don chócaireacht, agus i bhfad níos mó. Saol cáilíochta, ón gCabin Apple! Is ceantar uiniceach é Cabin Apple! Tógann agus déanann CDPH den scoth éagsúlta nádúrtha teach, teach príomhphobal agus teach fheist. Rang leathan nádúrtha againn a chuireann ar ár gcumas freastal ar chóras chun gach laghaire a sholáthar.tí Bheaga Réamh-thógtha
Féach ar ár rogha leathan de thighíní atá saincheaptha agus éifeachtacha i ngineas fuinnimh

Aimsigh do theach mórthola ar budgeat le hár prísí mórfhóna ar thigíní réamhmhonataithe

Bain triail as an gconspóid agus ardchaighdeán ár gcuid tacair tigíní réady-le-montáil

Bí páirtach sa chruthú a bhfuil ag teacht ar bheatha ina bhfuil comhtháite leis an nDúlra le ár dtigíní réamh-mhionlaithiúla atá daonnacha agus stíle
Why choose CDPH
tí Bheaga Réamh-thógtha?
Folláin ardchaighdeán
Nua-éagsúil teach réadaithe
Seomra díograis Maith
Stíl Módarnach cabin apple
Catagóirí Táirge Gaolmhara
An bhfuil tú ag iarraidh rud éigin nach bhfuil tú ag fáil?
Iarratas ar Shárú Anois
Déan teagmháil le haghaidh níos mó táirgí ar fáil leis na comhairlí.BÍ I LÉIGE LIOM
27+ Bliain De Sheirbhís
Buidheacht Laghairse