Php kullanarak kategori, alt kategori ve makale oluşturma


10

PHP komut dosyalarını kullanarak Joomla kategorileri, alt kategorileri ve makaleleri dinamik olarak oluşturmak mümkün müdür?

Örnek bir bağlantı var mı?


2
Evet mümkün ama çok zor ve com_contentJoomla en karmaşık yerleşik uzantısı olduğu gibi PHP son derece aşina sürece buna karşı öneriyoruz . Buna farklı bir şekilde yaklaşmak isteyebilirsiniz, mevcut işlevselliğin bir kısmını genişletmek ve kendi sınıfınızı yazmak mümkündür
Lodder

@ Lodder Cevabınız için teşekkür ederim. Dürüst olmak gerekirse ben php bilgim var ve ben arka uç arayüzü kullanarak Joomla kullanın. Ne yapmak istiyorum Joomla yönetici konsolu (menü, sayfalar, vb.) Kullanarak bazı özellikler eklediğim bir site var ve ben php komut dosyalarını kullanarak küçük değişiklikler yapmak istiyorum. Bunu yapmak için herhangi bir öğretici var mı?
useruseruser

Yanıtlar:


15

Bunu yapmak oldukça kapsamlı bir işlemdir, ancak genel olarak kullandığım kodun kırpılmış bir versiyonu. Yol boyunca yaptığımız bir sürü iç şeyi yırttığımdan, gösterildiği gibi çalışacağını garanti etmeyeceğim, ancak bunlar yapmanız gereken parçalar.

Tablolara bakmanız #__categoriesve #__contentdoldurmak istediğiniz tüm alanları almanız ve bunları verilen $category_datave $article_datadizilere eklemeniz gerekir .

Bunu belirtmeliyim olabilir o jDatabase veya JTable ile kayıt eklenmesi başarmak, ancak eksik olacağını önemli şeydir çünkü genellikle tavsiye edersin yerleşik benzersizliğini kontrol gibi şeyler yapmak Joomla kuralları ve mantık ve yeni içerik öğeleri için EKL'yi yönetme.

if (!defined('_JEXEC')) {
    define( '_JEXEC', 1 );
    define('JPATH_BASE', realpath(dirname(__FILE__)));
    require_once ( JPATH_BASE .'/includes/defines.php' );
    require_once ( JPATH_BASE .'/includes/framework.php' );
    defined('DS') or define('DS', DIRECTORY_SEPARATOR);
}
$app = JFactory::getApplication('site');

$category_data['id'] = 0;
$category_data['parent_id'] = 0;
$category_data['title'] = 'My Category Title';
$category_data['alias'] = 'my-categegory-title-alias';
$category_data['extension'] = 'com_content';
$category_data['published'] = 1;
$category_data['language'] = '*';
$category_data['params'] = array('category_layout' => '','image' => '');
$category_data['metadata'] = array('author' => '','robots' => '');

$category_id = createCategory($category_data);
if(!$category_id){
    echo "Category create failed!";
}else{
    $article_data = array(
        'id' => 0,
        'catid' => $category_id,
        'title' => 'My article title',
        'alias' => 'my-article-alias',
        'introtext' => 'My intro text',
        'fulltext' => '<p>My full text</p>',
        'state' => 1,
        'language' => '*'
    );
    $article_id = createArticle($article_data);
    if(!$article_id){
        echo "Article create failed!";
    }
}

function createCategory( $data )
{
    $data['rules'] = array(
        'core.edit.state' => array(),
        'core.edit.delete' => array(),
        'core.edit.edit' => array(),
        'core.edit.state' => array(),
        'core.edit.own' => array(1=>true)
    );

    $basePath = JPATH_ADMINISTRATOR.'/components/com_categories';
    require_once $basePath.'/models/category.php';
    $config  = array('table_path' => $basePath.'/tables');
    $category_model = new CategoriesModelCategory($config);
    if(!$category_model->save($data)){
        $err_msg = $category_model->getError();
        return false;
    }else{
        $id = $category_model->getItem()->id;
        return $id;
    }
}
function createArticle($data)
{
    $data['rules'] = array(
        'core.edit.delete' => array(),
        'core.edit.edit' => array(),
        'core.edit.state' => array(),
    );

    $basePath = JPATH_ADMINISTRATOR.'/components/com_content';
    require_once $basePath.'/models/article.php';
    $config = array();
    $article_model = new ContentModelArticle($config);
    if(!$article_model->save($data)){
        $err_msg = $article_model->getError();
        return false;
    }else{
        $id = $article_model->getItem()->id;
        return $id;
    }
}

Joomla'nın elbette yüklenmesi gerekiyor, bu yüzden mevcut bir kodda yapmıyorsanız, yüklemeniz gerekir. Bunu başarmak için cevabımı güncelledim, bu yüzden hazırsınız.
GSYİH

Bu kod için değil, Joomla'nın kendisi gibi eklemek için Joomla modellerini kullanır. Bu kodu bir php dosyasına yerleştirebilmeniz, $ data dizisini güncellemek istediğiniz diğer alanlarla tamamlayabilmeniz ve başarıyla çalıştırabilmeniz gerekir. Bana birkaç dakika verin, cevabımı% 100 işlevsel kod içerecek şekilde güncelleyeceğim.
GSYİH

Güncellenen kod şimdi olduğu gibi çalıştırıldığında bir kategori ve içinde bir makale oluşturur. Bilginize, her ikisi için 0 yerine geçerli bir kimlik belirtirseniz, o kategoriyi veya makaleyi eklemek yerine güncelleyecektir. Ayrıca, ACL kuralları isteğe bağlıdır ... Bunu ACL kullanan scriptlerimden birinden kopyaladım, bu yüzden orada, ama aynı zamanda bilmek de kullanışlı.
GSYİH

1
Yalnızca, şablonların veya MVC'nin bir parçası olduğunu varsaymadan başarmak istediğiniz şeyi formüle etmenizi önerebilirim. Eklentiler genellikle Joomla'nın yaptıklarını özelleştirmenin en iyi yoludur, ancak en iyi çözümün ne olduğunu belirlemek için ne yapmak istediğinizin netliği çok önemlidir.
GSYİH

1
Bu çözüm hala Joomla! 3.9.11
AndyGaskell

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.