İçeriğe geç
Olcay Irmak
Yazılar
Web2 dk okuma

0 Error decoding JSON data: Syntax Error

Yıllarca Joomla kullandım ve hep standart içerik (content) sistemini tercih ettim. Beğenerek satın aldığım bir temanın tüm özelliklerinin K2 bileşeni üzerine kurulu olduğunu görünce hayal kırıklığına uğradım; çünkü standart dışı sistemleri ve üçüncü parti bileşenleri yoğun şekilde kullanmayı sevmiyorum.

Temayı siteme kurduktan sonra Joomla’nın kendi makaleleri bir tarafta, K2’nin makale sistemi diğer tarafta kaldı. Bunları nasıl birleştirebileceğimi araştırırken bu işlemin kolayca yapılabildiğini gördüm.

Joomla Makaleleri K2 Makaleye Dönüştürme – Content to K2

Aşağıdaki görselde görüldüğü gibi K2 bileşeninin öğelerini (items) açtığınızda 3 numaralı alanda “import Joomla! content” butonunu göreceksiniz. Buna tıkladığınızda açılan pencere işlemi yapmak istediğinizden emin olup olmadığınızı soracak. Onayladıktan sonra Joomla’nın kendi makaleleri K2 altına aktarılmış olacak. Asıl sorun ise bundan sonra başlıyor.

Error decoding JSON data: Syntax error – Bir Hata Oluştu

Aktarılan makalelerden herhangi birini düzenlemek istediğinizde aşağıdaki gibi bir hata alırsınız. Bu hatanın nedenini ve çözümünü bulmam yaklaşık 4-5 saatimi aldı; umarım bu yazı sizin zamanınızı kurtarır.

Hatanın nedeni, Joomla’nın kendi makale sisteminde bulunan robots, author, rights, xreference gibi metadata bilgilerinin K2 sisteminde karşılığının olmaması ve bundan kaynaklanan uyumsuzluktur.

Bu hatanın iki çözümü bulunmaktadır.

1.Yöntem

K2’ye taşınamayan bu fazla metadata alanlarını silerek uyumsuzluğu giderebilirsiniz. Bunun için phpMyAdmin’de bir SQL sorgusuyla ilgili alanı güncelleyeceğiz. phpMyAdmin’den veritabanınızı seçip SQL sekmesine gelin ve aşağıdaki kodu yapıştırın. “burayaTabloÖnEkiGelecek” yazan yeri kendi tablonuzun ön ekiyle değiştirin; bu değer siteye göre değişir, örneğin WordPress sitelerinde wp_ şeklindedir.
Önemli: Olası bir hataya karşı mutlaka veritabanınızın yedeğini alın.

UPDATE `burayaTabloÖnEkiGelecek_k2_items` SET `metadata` = ''

Sorgu başarıyla çalıştıysa fazla metadata alanları silinmiş ve makaleler yeniden düzenlenebilir hale gelmiş olacaktır.

2.Yöntem

Bence en doğru yöntem bu: K2’de karşılığı olmayan metadata alanlarını kod ile tanımlamak. Bunun için sitenizin bulunduğu root dizinine girip view.html.php dosyasını düzenliyoruz. Benim dosyam aşağıdaki dizinde yer alıyor; bu yola bakarak kendi dosyanızı bulabilirsiniz.

/home/root/public_html/life/administrator/components/com_k2/views/item/view.html.php

Dosyayı açtıktan sonra aşağıdaki kodu

JFilterOutput::objectHTMLSafe($item, ENT_QUOTES, array(
			'video',
			'params',
			'plugins',
		));

şununla değiştirin:

JFilterOutput::objectHTMLSafe($item, ENT_QUOTES, array(
			'video',
			'params',
			'plugins',
			'metadata'
		));

Dosyayı kaydettikten sonra makalelerinizi yeniden kontrol edin; artık düzenlenebiliyor olmaları gerekir. Sonucu yorum olarak paylaşırsanız sevinirim; yöntemin başkalarına da yardımcı olduğunu görmek güzel olur.