2017/02/16، 05:30 PM
سلام
چرا میخوایم از شناسهی ویژگی به جای نام ویژگی در فایل CSV محصولات استفاده کنیم؟
آیا واقعاً نیاز میشه؟
وقتی که 2 یا چند ویژگی با نامهای یکسان داشته باشید،
اگر توی فایل CSV محصولات، از نام ویژگی استفاده کنید،
پرستاشاپ اولین ویژگیای که رو که با اون نام پیدا کنه در نظر میگیره.
منظور از اولین، اونی هست که زودتر توی دیتابیس ثبت شده (وارد جزئیات دیتابیس نمیشم).
اما چه دلیلی داره که ویژگیهایی با اسم مشابه داشته باشیم؟
در حالت عادی این کار معنایی نداره!
ولی مدیرانی که با یک ماژول، ویژگیهای محصول رو دسته بندی میکنن ممکنه بخوان توی دستههای مختلف، ویژگیهایی با اسامی تکراری داشته باشن.
ما فایل AdminImportController.php رو دستکاری میکنیم تا اگر در فایل CSV محصولات، به جای نام ویژگی، یک عدد صحیح معتبر بود،
ویژگی با اون شناسه رو پیدا کنه و اگر پیدا نکرد، ناچاراً یک ویژگی به اسم اون عدد ساخته میشه!
فایلی که باید ویرایش بشه توی این مسیر هست:
فایل رو که در حالت ویرایش باز کردین، عبارت // Features import رو جستجو کنید.
برای پرستاشاپ 1.6
اگر کدهای شما دقیقاً به این شکل هستند:
میتونید به این شکل تغییر بدین:
برای پرستاشاپ 1.7
فقط اگر کدهای شما دقیقاً به این شکل هستند:
میتونید به این شکل تغییر بدین:
اگر فایل CSV رو با نرم افزار مدیریت محصولات پرستاشاپ (PPM) تولید میکنید و میخواید که نرم افزار هم شناسهی ویژگیها رو توی فایل CSV ثبت کنه، لازمه کارهای زیر رو انجام بدید:
چرا میخوایم از شناسهی ویژگی به جای نام ویژگی در فایل CSV محصولات استفاده کنیم؟
آیا واقعاً نیاز میشه؟
وقتی که 2 یا چند ویژگی با نامهای یکسان داشته باشید،
اگر توی فایل CSV محصولات، از نام ویژگی استفاده کنید،
پرستاشاپ اولین ویژگیای که رو که با اون نام پیدا کنه در نظر میگیره.
منظور از اولین، اونی هست که زودتر توی دیتابیس ثبت شده (وارد جزئیات دیتابیس نمیشم).
اما چه دلیلی داره که ویژگیهایی با اسم مشابه داشته باشیم؟
در حالت عادی این کار معنایی نداره!
ولی مدیرانی که با یک ماژول، ویژگیهای محصول رو دسته بندی میکنن ممکنه بخوان توی دستههای مختلف، ویژگیهایی با اسامی تکراری داشته باشن.
ما فایل AdminImportController.php رو دستکاری میکنیم تا اگر در فایل CSV محصولات، به جای نام ویژگی، یک عدد صحیح معتبر بود،
ویژگی با اون شناسه رو پیدا کنه و اگر پیدا نکرد، ناچاراً یک ویژگی به اسم اون عدد ساخته میشه!
این تغییرات با آپدیت کردن پرستاشاپ، از بین خواهند رفت!
فایلی که باید ویرایش بشه توی این مسیر هست:
کد php:
controllers/admin/AdminImportController.php
فایل رو که در حالت ویرایش باز کردین، عبارت // Features import رو جستجو کنید.
برای پرستاشاپ 1.6
اگر کدهای شما دقیقاً به این شکل هستند:
کد php:
// Features import
$features = get_object_vars($product);
if (isset($features['features']) && !empty($features['features'])) {
foreach (explode($this->multiple_value_separator, $features['features']) as $single_feature) {
if (empty($single_feature)) {
continue;
}
$tab_feature = explode(':', $single_feature);
$feature_name = isset($tab_feature[0]) ? trim($tab_feature[0]) : '';
$feature_value = isset($tab_feature[1]) ? trim($tab_feature[1]) : '';
$position = isset($tab_feature[2]) ? (int)$tab_feature[2] - 1 : false;
$custom = isset($tab_feature[3]) ? (int)$tab_feature[3] : false;
if (!empty($feature_name) && !empty($feature_value)) {
$id_feature = (int)Feature::addFeatureImport($feature_name, $position);
$id_product = null;
if ($force_ids || $match_ref) {
$id_product = (int)$product->id;
}
$id_feature_value = (int)FeatureValue::addFeatureValueImport($id_feature, $feature_value, $id_product, $id_lang, $custom);
Product::addFeatureProductImport($product->id, $id_feature, $id_feature_value);
}
}
}
میتونید به این شکل تغییر بدین:
کد php:
// Features import
$features = get_object_vars($product);
if (isset($features['features']) && !empty($features['features'])) {
foreach (explode($this->multiple_value_separator, $features['features']) as $single_feature) {
if (empty($single_feature)) {
continue;
}
$tab_feature = explode(':', $single_feature);
$feature_name = isset($tab_feature[0]) ? trim($tab_feature[0]) : '';
$feature_value = isset($tab_feature[1]) ? trim($tab_feature[1]) : '';
$position = isset($tab_feature[2]) ? (int)$tab_feature[2] - 1 : false;
$custom = isset($tab_feature[3]) ? (int)$tab_feature[3] : false;
// شروع بخش اول تغییرات
$id_feature = null;
if (is_numeric($feature_name)) {
$feature_search = Feature::getFeature($id_lang, $feature_name);
if (is_array($feature_search)) $id_feature = $feature_search['id_feature'];
}
// پایان بخش اول تغییرات
if (!empty($feature_name) && !empty($feature_value)) {
// شروع بخش دوم تغییرات
if (!isset($id_feature)) {
$id_feature = (int)Feature::addFeatureImport($feature_name, $position);
}
// پایان بخش دوم تغییرات
$id_product = null;
if ($force_ids || $match_ref) {
$id_product = (int)$product->id;
}
$id_feature_value = (int)FeatureValue::addFeatureValueImport($id_feature, $feature_value, $id_product, $id_lang, $custom);
Product::addFeatureProductImport($product->id, $id_feature, $id_feature_value);
}
}
}
برای پرستاشاپ 1.7
فقط اگر کدهای شما دقیقاً به این شکل هستند:
کد php:
// Features import
$features = get_object_vars($product);
if (!$validateOnly && isset($features['features']) && !empty($features['features'])) {
foreach (explode($this->multiple_value_separator, $features['features']) as $single_feature) {
if (empty($single_feature)) {
continue;
}
$tab_feature = explode(':', $single_feature);
$feature_name = isset($tab_feature[0]) ? trim($tab_feature[0]) : '';
$feature_value = isset($tab_feature[1]) ? trim($tab_feature[1]) : '';
$position = isset($tab_feature[2]) ? (int)$tab_feature[2] - 1 : false;
$custom = isset($tab_feature[3]) ? (int)$tab_feature[3] : false;
if (!empty($feature_name) && !empty($feature_value)) {
$id_feature = (int)Feature::addFeatureImport($feature_name, $position);
$id_product = null;
if ($force_ids || $match_ref) {
$id_product = (int)$product->id;
}
$id_feature_value = (int)FeatureValue::addFeatureValueImport($id_feature, $feature_value, $id_product, $id_lang, $custom);
Product::addFeatureProductImport($product->id, $id_feature, $id_feature_value);
}
}
}
میتونید به این شکل تغییر بدین:
کد php:
// Features import
$features = get_object_vars($product);
if (!$validateOnly && isset($features['features']) && !empty($features['features'])) {
foreach (explode($this->multiple_value_separator, $features['features']) as $single_feature) {
if (empty($single_feature)) {
continue;
}
$tab_feature = explode(':', $single_feature);
$feature_name = isset($tab_feature[0]) ? trim($tab_feature[0]) : '';
$feature_value = isset($tab_feature[1]) ? trim($tab_feature[1]) : '';
$position = isset($tab_feature[2]) ? (int)$tab_feature[2] - 1 : false;
$custom = isset($tab_feature[3]) ? (int)$tab_feature[3] : false;
// شروع بخش اول تغییرات
$id_feature = null;
if (is_numeric($feature_name)) {
$feature_search = Feature::getFeature($id_lang, $feature_name);
if (is_array($feature_search)) $id_feature = $feature_search['id_feature'];
}
// پایان بخش اول تغییرات
if (!empty($feature_name) && !empty($feature_value)) {
// شروع بخش دوم تغییرات
if (!isset($id_feature)) {
$id_feature = (int)Feature::addFeatureImport($feature_name, $position);
}
// پایان بخش دوم تغییرات
$id_product = null;
if ($force_ids || $match_ref) {
$id_product = (int)$product->id;
}
$id_feature_value = (int)FeatureValue::addFeatureValueImport($id_feature, $feature_value, $id_product, $id_lang, $custom);
Product::addFeatureProductImport($product->id, $id_feature, $id_feature_value);
}
}
}
اگر فایل CSV رو با نرم افزار مدیریت محصولات پرستاشاپ (PPM) تولید میکنید و میخواید که نرم افزار هم شناسهی ویژگیها رو توی فایل CSV ثبت کنه، لازمه کارهای زیر رو انجام بدید:
- وارد تنظیمات برنامه بشید
- از سربرگهایی که به شکل یک نوار افقی هستن، روی سربرگ ورود محصولات کلیک کنید
- از سربرهایی که زیرمجموعهی سربرگ «ورود محصولات» هستن، روی «دیگر» کلیک کنید
- گزینهی «ذخیرهی شناسهی ویژگیهای موجود به جای نام آنها در فایل سی.اس.وی در بخش وارد سازی محصولات جدید» رو فعال کنید
- روی دکمهی تأیید کلیک کنید تا تنظیمات ذخیره بشن