cuốn sách gpt4 ai đã làm

php - Magento : Category Name instead of category ids in category path.

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 06:03:15 26 4
mua khóa gpt4 Nike

Tôi đang cố gắng lấy tên danh mục trong đường dẫn danh mục dựa trên id sản phẩm trong magento.

Giả sử ID sản phẩm của tôi = 1 và tôi có danh mục5 (id = 5) được xác định trong đó và tôi nhận được đường dẫn danh mục như 2/3/5. Tôi cần đường dẫn danh mục như Category2/category3/category5 chứ không phải loại đường dẫn danh mục này. Điều này có nghĩa là tôi cần tên danh mục trong đường dẫn thay vì ID danh mục. Tôi đã nhận được điều này bằng cách sử dụng đoạn mã sau nhưng phải mất rất nhiều thời gian. Tôi cần giảm thời gian xử lý.

Xin vui lòng cho tôi đề xuất về cách giảm thời gian xử lý.

$category_model = Pháp sư::getModel('catalog/category');  
$product_model = Mage::getModel('catalog/product');
$all_cats = mảng();
$product_model->reset();
$_product = $product_model->load($entityId);
$all_cats = $product_model->getCategoryIds($_product);
$main_cnt = đếm($all_cats);
$cat_str_main = '';
$j = 0;
foreach($all_cats as $ac)
{
$root_category = $category_model->load($ac);
$cat_path = $root_category->getPath();
$cat_arr = nổ("/",$cat_path);
$cnt = đếm($cat_arr);
$cat_str = '';
$main_str = '';
$i=0;
foreach($cat_arr dưới dạng $ids)
{
$root_category = $category_model->load($ids); //tải danh mục gốc
nếu($i == 2)
{
$cat_str = $category_model->getName();
}
ngược lại nếu($i > 2)
{
$cat_str = $cat_str."/".$category_model->getName();
}
$i = $i+1;
}
nếu($j < 1)
{
$cat_str_main = $cat_str;
}
khác
{
$cat_str_main = $cat_str_main .",".$cat_str;
}
$j = $j+1;
}

Cảm ơn.....

câu trả lời hay nhất

Bạn nên sử dụng tập hợp các danh mục thay vì tải từng danh mục để giảm truy vấn cơ sở dữ liệu.

EDIT: Tôi đã viết một ví dụ về mã cho bạn. Tôi giả sử bạn có ID danh mục của danh mục và bạn muốn tên đường dẫn của nó là $categoryId:

$category = Mage::getModel('catalog/category')->load($categoryId);
$collection = $category->getResourceCollection();
$pathIds = $category->getPathIds();
$collection->addAttributionToSelect('name');
$collection->addAttributionToFilter('entity_id', array('in' => $pathIds));
$kết quả = '';
foreach ($bộ sưu tập dưới dạng $cat) {
$result .= $cat->getName().'/';
}

Về php - Magento: Tên danh mục thay vì id danh mục trong đường dẫn danh mục., chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/14118213/

26 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress