Opencart ile basit entegrasyon temelleri-XML nedir, yapısı nasıldır ? |
|||
Konuyu görüntüleyenler: 1 Misafir
|
|||
|
|||
![]() ![]() |
|||
![]() ![]() ![]() |
|||
sabitertan
![]() Süper Moderator ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Mesajlar: 290 Konular: 31 Katılma Tarihi: Dec 2011 Rep Puanı: 21 Teşekkürler: 22
127 Mesajına, 601 Teşekkür edildi. Kişisel Bilgileri: ![]()
Konu Tarihi: 02-13-2012 02:45 PM
XML, eXtensible Markup Language (Genişletilebilir İşaretleme Dili) tanımının kısaltmasıdır. XML yapısı hem insanların hem de bilgi işleyicilerin kolay anlayabilmesi için veri topluluklarını ağaç-veri yapısında dizme amacını taşır. Bu amaca uygun olarak çeşitli alanlarda XML yapısı kullanılmıştır. Bunların bazıları şunlardır: XHTML, RSS, Atom, Microsoft Office (Office Open XML), OpenOffice.org (OpenDocument) vb. XML verinin hem yığın halinde hem de belirli bir yapıda aktarılmasını ve saklanmasını sağlar. Veriye erişim gayet kolaydır ve veri herkes tarafından rahatlıkla anlaşılabilecek durumdadır. Aşağıdaki örneği inceleyelim Kod: <?xml version="1.0" encoding="UTF-8"?> Tabiki XML hakkında konuşacak çok şey var ancak burada daha çok xml-opencart bağlantısı üzerinde durmak istiyorum. Opencart halihazırda php ile kodlanmıştır dolayısıyla bir başka dil kullanılarak da yapılabilecek olmasına rağmen ben burada xml-php işleme özelliklerden bahsedeceğim. PHP için bir çok xml işleme kütüphanesi mevcuttur. Ancak bir çoğunun kurulum yada konfigurasyon sıkıntısı içinde olduğu bilinmektedir (Ör:xmlparser). Bu nedenle php çekirdeği ile halihazırda derlenmiş ve kullanıma sunulan SimpleXML ile yolumuza devam edebiliriz. SimpleXML adından da anlaşılacağı gibi gayet basit bir şekilde xml verisini php içerisinde işlememize olanak sağlar. Simple XML bir çok özellik içerir ancak ben burada opencart entegrasyonu için kodlama yapmak isteyen arkadaşların işine yarayacağını düşündüğüm kısımları anlatacağım. (Temel PHP bilginizin olduğunu varsayıyorum) Örnek Kod: PHP Kod: <?php Kod: SimpleXMLElement Object ( [Kategori] => Array ( PHP Kod: <?php Veriyi istediğimiz hale getirelim.Bunun için istediğimiz herbir kategorinin id ve ismini ayrı ayrı elde edebilmek. Bu noktada php temel fonksiyonlarına başvuruyoruz. PHP Kod: <?php Kod: Sonuç: Görüldüğü üzere $xml dizisinin Kategori alt dizisinde bulunan herbir elemanı $kategori dizisi olarak aldık böylece herbir kategorinin id ve isim etiketlerini foreach komutuyla $kategori dizisinde görebilmekteyiz. Şimdi bunları bir değişkene doğrudan atayalım ve istediğimiz şekilde görüntüleyelim. PHP Kod: <?php Kod: Sonuç: ![]() Tipik bir config.php dosyası aşağıdaki gibidir. PHP Kod: <?php |
|
sabitertan
![]() Süper Moderator ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Mesajlar: 290 Konular: 31 Katılma Tarihi: Dec 2011 Rep Puanı: 21 Teşekkürler: 22
127 Mesajına, 601 Teşekkür edildi. Kişisel Bilgileri: ![]()
Konu Tarihi: 02-13-2012 07:26 PM
Veritabanına girmeden önce verilerimizi derli toplu tutalım. Neredeyiz ne yapıyoruz bilelim.
Opencart'ın kurulu olduğu dizinde "entegrasyon" adlı bir yeni bir dizin oluşturalım. entegrasyon dizini içerisindede xml dosyalarımızı koyacağımız bir "xml" dizinimiz olsun. Şu anda kategori ekle işiyle uğraştığımızdan kodları içine yazacağımız php dosyamızın adıda "kategori.php" olsun. Amacımızı unutmayalım kategorileri kategori.xml den okuyup opencart veritabanına yazdıracağız. Devam etmeden önce veritabanımızı tanımalıyız. Kategorilerle ilgili veritabanı tabloları aşağıdaki gibidir.(ben verdiğim örnekte olduğu gibi "svn_" önekini kullanacağım sizlerde kendi önekinize dikkat ederek inceleyiniz.) Bu üç tabloyu incelediğimizde temel almamız gereken svn_category tablosundaki category_id değeridir. Çünkü bu değer AUTO_INCREMENT ifadesi içerir. Bu nedenle mySQL bu değeri otomatik olarak artıracaktır. Bizde bunu aklımızda tutarak yolumuza devam edeceğiz. Dikkat edilmesi gereken bir diğer nokta kategori isimlerinin svn_category_description içerisinde saklanacak olmasıdır. Aynı zamanda ekleyeceğimiz her bir kategorinin hangi mağazaya ait olduğunu belirtmek için svn_category_to_store tablosuna da değer yazdırmamız gerekmektedir. Yapmamız gerekenleri ve dikkat etmemiz gerekenleri belirledik. Şimdi veritabanına bağlanıp önceden ayıklamış olduğumuz xml verisini veritabanımıza ekleyelim. entegrasyon klasörü içerisinde ayar.php oluşturup içerisine config.php de bulunan değerleri giriyoruz. (bu dosyayı daha sonra oluşturacağımız dosyalarda kod tekrarı yapmamak için oluşturuyoruz) aşağıdaki gibi bir kod görünümümüz olacak PHP Kod: <?php Aşağıdaki kodu inceleyiniz. PHP Kod: <?php Kod: Ekrana basılan çıktı: http://siteadiniz/entegrasyon/kategori.php çalıştırılıp yukarıdaki çıktı elde edildikten sonra svn_category, svn_category_description ve svn_category_to_store tabloları aşağıdaki gibi görünmelidir. Görüldüğü üzere svn_category tablosunda top değerini 1 olarak parent_id değerini de 0 olarak yolladık , column değerimizi de 3 olarak yollamıştık. date_added ve date_modified değerlerini NOW() değeriyle tanımladığımızdan kategori.php yi çalıştırdığımız andaki değerler işlendi. top değeri bu kategorinin üst menüde görüntülenip görüntülenmeyeceğini belirler. parent_id ise eklediğimiz kategorinin bir üst kategorinin alt kategorisi olup olmadığını belirler. "0" değeri bu kategorinin hiçbir üst kategoriye sahip olamadığını belirtir. column değeri üst menü de eğer ki bu kategorinin alt kategorileri varsa kaç kolonda gösterileceğini belirtir. |
|
sabitertan
![]() Süper Moderator ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Mesajlar: 290 Konular: 31 Katılma Tarihi: Dec 2011 Rep Puanı: 21 Teşekkürler: 22
127 Mesajına, 601 Teşekkür edildi. Kişisel Bilgileri: ![]()
Konu Tarihi: 02-14-2012 12:16 PM
Buraya kadar yapılanları düzgün bir şekilde takip ettiyseniz aşağıdaki sıralayacağımız konuları az çok kavramış olmanız gerekir.
1. XML yapısı gayet basittir. Dolayısıyla veri taşınmasında tercih edilir. 2. XML yapısında bir dosyayı SimpleXML kütüphanesinin sağladığı imkanlarla istediğimiz yapıya dönüştürebiliriz. 3. SimpleXML ile oluşturduğumuz veriyi düzgün bir şekilde ayıklamamız gerekir 4. Opencart veritabanında neyin ne olduğu konusunda bilgi sahibi olursak istediğimiz her türlü veriyi XML entegrasyonu aracılığıyla veritabanımıza doğrudan yazdırabiliriz. sonuç olarak XML-opencart entegrasyonu için basit bir model önermiş bulunuyorum. Pek tabiki bu tek ve mutlak izlenmesi gereken yol değildir. Bu yazıyı hazırlamamdaki tek amaç temel php-mysql bilgisine sahip herkesin kendi XML entegrasyonunu yapabileceğini göstermektir. Burada daha farklı örnekler de vererek farklı XML dosyalarını önerdiğim metodla nasıl doğrudan entegre edebileceğinizi göstermeye çalışacağım. Umarım az da olsa faydalı olmuştur. Herkese iyi çalışmalar. Not: Konu cevap yazmaya açılmıştır. Buraya kadar anlatılanlara dair dosyaları mesaja ekli dosyada bulabilirsiniz. Bu dosya içerisinde bulunan bosalt.php veritabanınızdaki kategori-ürün-marka bilgilerinin tamamını siler o nedenle kullanmak isterseniz dikkatli olunuz ![]()
|
|
turk182
![]() Acemi Üye ![]() ![]() ![]() ![]() ![]() Mesajlar: 3 Konular: 0 Katılma Tarihi: Mar 2012 Rep Puanı: 0 Teşekkürler: 0
0 Mesajına, 0 Teşekkür edildi. Kişisel Bilgileri: ![]()
Konu Tarihi: 03-23-2012 02:56 PM
Selamlar,
Bayisi olduğumuz firma bize 2 adet .ashx uzantılı dosya ve resimler için ftp kullanıcı adı ve şifre verdi. ashx uzantılı dosyalardaki veriler alışık olduğumuz xml yapısından farklı ve karışık geldi bana biraz. products.ashx yapısı : Kod: <?xml version="1.0" encoding="UTF-8"?> properties.ashx yapısı : Kod: <?xml version="1.0" encoding="UTF-8"?> Ürün resimleri stok kodları ile aynı. Yani bu ürünün resmi ANAAMD0001AMD030.jpg Elimizde products.ashx, properties.ashx dosyaları ve ANAAMD0001AMD030.jpg var. Bu ashx yapılarını, alışık olduğumuz xml yapısına dönüştürebilecek bir class yada daha farklı bir şekilde bu dataları veritabanımıza aktarabileceğimiz bir yöntem önerebilir misiniz? |
sabitertan
![]() Süper Moderator ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Mesajlar: 290 Konular: 31 Katılma Tarihi: Dec 2011 Rep Puanı: 21 Teşekkürler: 22
127 Mesajına, 601 Teşekkür edildi. Kişisel Bilgileri: ![]()
Konu Tarihi: 03-23-2012 03:25 PM
http://www.tr-opencart.com/Konu-opencart...tegrasyonu
konusundaki örneği inceleyin tedarikçinizin size verdiği xml de bir karışıklık yok. Normal bir şekilde XML yapısına uygun hazırlanmış uzantının ashx olması da önemli değil, özellik sistemini de ayrı şekilde tutmaları da daha sağlıklı bir şekilde opencart entegrasyonu hazırlanmasına zemin hazırlamış zaten. Burada belki sıkıntı yaşayacağınız nokta fiyatları kurlara göre çevirmek ve gerekirse belirleyeceğiniz kar oranına göre veritabanına yazdırmak. Onun dışında rahatlıkla yapabileceğiniz bir entegrasyon. Deneyin bir sıkıntı yaşarsanız paylaşın yardımcı olmaya çalışırız. |
turk182
![]() Acemi Üye ![]() ![]() ![]() ![]() ![]() Mesajlar: 3 Konular: 0 Katılma Tarihi: Mar 2012 Rep Puanı: 0 Teşekkürler: 0
0 Mesajına, 0 Teşekkür edildi. Kişisel Bilgileri: ![]() |
openflz
![]() Acemi Üye ![]() ![]() ![]() ![]() ![]() Mesajlar: 3 Konular: 0 Katılma Tarihi: Mar 2012 Rep Puanı: 0 Teşekkürler: 0
0 Mesajına, 0 Teşekkür edildi. Kişisel Bilgileri: ![]()
Konu Tarihi: 03-31-2012 01:14 AM
TEDARİKCİ Modülünü opencart da kurmaya çalışıyorum. Opencart ta çok yeniyim.
elimdeki tedarikcinin dosyasında xml verilerini oku dediğimde uzun bir sayfa dolusu bu hatayı veriyor Warning: Invalid argument supplied for foreach() in C:\Users\Pc\Desktop\xampp_localhost\xampp\htdocs\opencard\tedarikci\modules\yyithalat.php on line 105 105. satırda ise foreach($product->{$urun_resimgalerisi}->{$urun_resimgalerisi_resim} as $resimler) bu sorgu bulunmaktadır. core_image_setopt(true,$pid); core_image_setopt(true,$pid); $this->image = array( 'pid' => $pid, 'image'=>$product->{$urun_buyukresim}, 'thumb'=>$product->{$urun_kucukresim}, 'number' =>0 ); core_image(); $resimid=1; foreach($product->{$urun_resimgalerisi}->{$urun_resimgalerisi_resim} as $resimler) { $this->image = array( 'pid' => $pid, 'image'=>$resimler->{$urun_resimgalerisi_buyuk}, 'thumb'=>$resimler->{$urun_resimgalerisi_kucuk}, 'number' =>$resimid ); core_image(); $resimid++; } core_image_setopt(false,$pid); yakrıdaki kodlarda düzeltilmesi gereken kısım için yardımcı olabilecek arkadaşlara şimdiden teşekkür ederim. |
sabitertan
![]() Süper Moderator ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Mesajlar: 290 Konular: 31 Katılma Tarihi: Dec 2011 Rep Puanı: 21 Teşekkürler: 22
127 Mesajına, 601 Teşekkür edildi. Kişisel Bilgileri: ![]() |
alkimoberon
![]() Acemi Üye ![]() ![]() ![]() ![]() Mesajlar: 3 Konular: 0 Katılma Tarihi: Jan 2012 Rep Puanı: 0 Teşekkürler: 2
0 Mesajına, 0 Teşekkür edildi. Kişisel Bilgileri: ![]()
Konu Tarihi: 08-30-2012 10:21 AM
merhaba gerçekten teşekkürler faydalı bilgiler için, dediklerini adım adım yaptım ve kategorileri eklendiğini gördüm, bayisi olmayı düşündüğüm bir tedarikçiden xml dosyası geldi ama bu biraz detaylı çözemedim, bu xmli import edebilmem için sanırım ayrı bir çalışma gerekecek yardımcı olabilirmisiniz.
tek bir ürüne ait xml kodu aşağıdaki gibidir. <Product> <CategoryCode>12110</CategoryCode> <CategoryID>12110</CategoryID> <CategoryName>Peluş Oyuncaklar</CategoryName> <ParentCategoryCode>12097</ParentCategoryCode> <ParentCategoryID>12097</ParentCategoryID> <ParentCategoryName>Oyuncak</ParentCategoryName> <CategoryPath>Oyuncak > Peluş Oyuncaklar</CategoryPath> <ProductID>89719</ProductID> <SKU>BJK/4912</SKU> <Manufacture>Beşiktaş</Manufacture> <ModelNumber>8697436449125</ModelNumber> <ModelName>Beşiktaş Lisanslı Peluş Büyük Top</ModelName> <Price>19.3981</Price> <BuyingPrice>12.5600</BuyingPrice> <TRLPrice>19.3981</TRLPrice> <KDVPrice>20.9499</KDVPrice> <EFTPrice>20.9499</EFTPrice> <KDV>0.08</KDV> <CurrencyType>TRL</CurrencyType> <Description>İncelediğiniz peluş oyuncak Beşiktaş lisanslı ürünüdür. Peluş oyuncakların üretiminde birinci sınıf malzeme kullanılmaktadır. Üretim sonrasında tüm peluş oyuncaklar birçok teste tabi tutulmaktadır. Sitemizde bulunan ithal peluş oyuncakların tamamı Avrupa norm ve standartlarına uygun CE sertifikasına sahiptir. Peluş oyuncaklar her Yaş Grubuna hitap etmektedir. Ancak peluş oyuncakların 0-3 Yaş Grubu bebeklere verilmesi kesinlikle önerilmez. Peluş oyuncaklar 30 derecede, kimyevi madde kullanılmadan ve sıkmadan yıkanmalı, oda sıcaklığında kurutulmalıdır. Oyuncak kuruduktan sonra ütülenmemeli ve yumuşak bir fırça ile taranmalıdır. </Description> <Image>http://www.locopoco.com/ProductImages/89719/4912.jpg</Image> <BigImage>http://www.locopoco.com/ProductImages/89719/B4912.jpg</BigImage> <UnitInStock>4</UnitInStock> <InStock>True</InStock> <IsEnabled>True</IsEnabled> <DeliveryTime>1</DeliveryTime> <ShippingVolume>12</ShippingVolume> <DetailLink>http://www.locopoco.com/urun/besiktas-lisansli-pelus-buyuk-top.aspx</DetailLink> </Product> |
fbulak
![]() Acemi Üye ![]() ![]() ![]() ![]() ![]() Mesajlar: 2 Konular: 0 Katılma Tarihi: Dec 2012 Rep Puanı: 0 Teşekkürler: 0
0 Mesajına, 0 Teşekkür edildi. Kişisel Bilgileri: ![]()
Konu Tarihi: 12-18-2012 01:00 AM
Merhabalar,vermiş oldugunuz bilgiler için çok teşekkürler,yaklasık 3-4 saattir yazdıklarınızı bir kitap okur gibi tek tek okuyarak yapmaya çalıştım,bu konuda yapılmıs en iyi ve kapsamlı çalışma sizinki bence.Adım adım dediklerinizi yaptıgımızda sorunsuzca katagori eklenmesi yapılıyor,örnek olarak verdiğiniz index çalışması da sorunsuzca ekleniyor-siliniyor..
yalnız benim merak ettiğim nokta;sızin ilk paylastıgınız adımlarda kategoriye girebiliyoruz ve kategorileri sorunsuzca ekleyebiliyorum fakat bu çalışmanın içine ürünler bölümünüde eklemek için ne yapmamız gerekiyor? yani basit bi kodlamayla sistemimize ürünleri nasıl ekleyebiliriz?veritabanının ürün kısmına nasıl ulaşabilirim? Herşey için tesekkurler tekrar soylemek istiyorum cok faydalı ve yararlı bir paylasım olmus gercekten EDİT Ürün eklemeyide yapabildim sonunda :)sizin verdiğiniz index örnegının ustunde oynama yaparak istediğim kadar ürünü ekleyebiliyorum ancak suan son sorunum resimleri eklemek kaldı ![]() ""Warning: mysql_fetch_row() expects parameter 1 to be resource, null given in /home/......com/httpdocs/a/index.php on line 55"" ürün ve katagoriler eklenmesine ragmen bu hatayıda alıyorum resımler bu yuzden eklenmıyor olabilirmi? |
|
|
![]() |
|
![]() |
|
![]() |
|
![]() |