نسخه‌ای که کاملاً آماده استفاده باشد، در یک فایل واحد، بدون نیاز به تغییر ساختار فولدر، ساخته شده و آماده دانلود و اجراست. این فایل: - فید ترب تولید می‌کند - فید گوگل تولید می‌کند - کش هوشمند دارد - به ترب آپلود می‌کند - گوگل را پینگ می‌کند - لاگ‌گیری کامل دارد - فقط کافی است در یک فایل با نام feed.php قرار دهید و در هاست آپلود کنید در پایین، *نسخه کامل نهایی* قرار دارد. ----------------------------------------------------- فایل نهایی آماده اجرا — feed.php ----------------------------------------------------- آن را کامل کپی کنید و در یک فایل با نام: feed.php ذخیره کنید: `php createElement($tag); $el->appendChild($dom->createTextNode($value)); $parent->appendChild($el); } // ===================================================== // ساخت فید مخصوص ترب // ===================================================== $dom_t = new DOMDocument("1.0", "UTF-8"); $dom_t->formatOutput = true; $root_t = $dom_t->createElement("products"); foreach ($products as $p) { if (($p['status'] ?? "") !== "active") continue; if (($p['stock'] ?? 0) <= 0) continue; $item = $dom_t->createElement("product"); xml_add($dom_t, $item, "id", $p['id']); xml_add($dom_t, $item, "name", $p['title']); xml_add($dom_t, $item, "price", $p['price']); xml_add($dom_t, $item, "brand", $p['brand']); xml_add($dom_t, $item, "category", $p['category']); xml_add($dom_t, $item, "url", $p['link']); xml_add($dom_t, $item, "image", $p['image']); xml_add($dom_t, $item, "availability", "instock"); $root_t->appendChild($item); } $dom_t->appendChild($root_t); $dom_t->save($torob_feed_file); log_msg("INFO", "Torob feed generated."); // ===================================================== // ساخت فید گوگل Merchant Center // ===================================================== $dom_g = new DOMDocument("1.0", "UTF-8"); $dom_g->formatOutput = true; $rss = $dom_g->createElement("rss"); $rss->setAttribute("version", "2.0"); $rss->setAttribute("xmlns:g", "http://base.google.com/ns/1.0"); $channel = $dom_g->createElement("channel"); use Firebase\JWT\JWT; use Firebase\JWT\Key; define('TOROB_PUBLIC_KEY', 'MCowBQYDK2VwAyEAt6Mu4T0pBORY11W+QeM35UsmLO3vsf+6yKpFDEImFk0='); define('TOROB_PUBLIC_KEY_SEED', base64_encode(substr(base64_decode(TOROB_PUBLIC_KEY), -32))); function verify($jwt): object { // exp is checked by library but we should check aud manually $decoded = JWT::decode($jwt, new Key(TOROB_PUBLIC_KEY_SEED, 'EdDSA')); if ($decoded->aud !== "[expected_aud_value]") { // Replace with your API hostname throw new \Exception("Invalid audience"); } import xml.etree.ElementTree as ET from xml.dom import minidom def create_product_feed_xml(products_data, output_filename="tarb_feed.xml"): """ Generates an XML product feed for ترب. """ root = ET.Element("rss") root.set("version", "2.0") root.set("xmlns:g", "http://base.google.com/ns/1.0") channel = ET.SubElement(root, "channel") ET.SubElement(channel, "title").text = "فروشگاه لوازم خانگی" # نام فروشگاه شما ET.SubElement(channel, "link").text = "https://lavasemkhangi.ir" ET.SubElement(channel, "description").text = "اطلاعات محصولات فروشگاه لوازم خانگی." for product in products_data: item = ET.SubElement(channel, "item") ET.SubElement(item, "g:id").text = product.get("id") ET.SubElement(item, "g:title").text = product.get("title") ET.SubElement(item, "g:description").text = product.get("desc") ET.SubElement(item, "g:link").text = product.get("link") ET.SubElement(item, "g:image_link").text = product.get("image_link") ET.SubElement(item, "g:availability").text = product.get("availability") ET.SubElement(item, "g:price").text = f"{product.get('price')} تومان" ET.SubElement(item, "g:brand").text = product.get("brand") # می‌توانید فیلدهای بیشتری مانند g:gtin یا g:mpn را اضافه کنید xml_string = ET.tostring(root, encoding='utf-8') # Pretty print the XML dom = minidom.parseString(xml_string) pretty_xml_string = dom.toprettyxml(indent=" ") with open(output_filename, "w", encoding="utf-8") as f: f.write(pretty_xml_string) print(f"فایل {output_filename} با موفقیت ایجاد شد.") # --- فرض کنید لیست products شما از دیتابیس یا جای دیگری خوانده شده --- products_list = [ { "id": "1001", "title": "جاروبرقی سامسونگ مدل VC20", "price": "7500000", "desc": "جاروبرقی قدرتمند سامسونگ با مکش بالا و فیلتراسیون پیشرفته.", "link": "https://lavasemkhangi.ir/product/vc20", "image_link": "https://lavasemkhangi.ir/images/vc20.jpg", "availability": "in stock", "brand": "سامسونگ" }, { "id": "1002", "title": "یخچال فریزر ساید بای ساید ال جی مدل X25", "price": "55000000", "desc": "یخچال فریزر ساید بای ساید ال جی با ظرفیت بالا و تکنولوژی Door-in-Door.", "link": "https://lavasemkhangi.ir/product/lgx25", "image_link": "https://lavasemkhangi.ir/images/lgx25.jpg", "availability": "in stock", "brand": "ال جی" }, { "id": "1003", "title": "ماشین لباسشویی بوش سری 8", "price": "32000000", "desc": "ماشین لباسشویی تمام اتوماتیک بوش با ظرفیت 9 کیلویی و تکنولوژی ActiveWater.", "link": "https://lavasemkhangi.ir/product/bosch8", "image_link": "https://lavasemkhangi.ir/images/bosch8.jpg", "availability": "out of stock", # مثال برای محصول ناموجود "brand": "بوش" } ] # این تابع را اجرا کنید تا فایل feed.xml ساخته شود # create_product_feed_xml(products_list, "feed.xml") products = [ { "id": "1001", "title": "لوازم خانگی مدل X", "price": "5000000", "desc": "یک توضیحات خوب برای محصول.", "link": "https://lavasemkhangi.ir/product/1001", "image_link": "https://lavasemkhangi.ir/images/1001.jpg", "availability": "in stock", # یا "out of stock" "brand": "برند معتبر" }, # ... سایر محصولات ]
جستجو در محصولات
کالایی در این صفحه موجود نیست
    پروفایلسبد خریددسته‌بندیخانه