Php का उपयोग करके श्रेणियां, उपश्रेणियाँ और लेख बनाएँ


10

क्या PHP लिपियों का उपयोग करके जूमला श्रेणियों, उपश्रेणियों और लेखों को गतिशील रूप से बनाना संभव है?

क्या कोई उदाहरण लिंक है?


2
हां यह संभव है लेकिन बहुत कठिन है और मैं इसके खिलाफ सुझाव दूंगा जब तक आप PHP से बेहद परिचित नहीं होंगे com_contentजैसा कि जूमला में सबसे जटिल अंतर्निहित विस्तार है। आप इसे एक अलग तरीके से संपर्क करना चाहते हैं, संभव है कि वर्तमान कार्यक्षमता में से कुछ का विस्तार किया जाए और अपनी खुद की कक्षा
लिखी जाए

@Lodder आपके उत्तर के लिए धन्यवाद। सच कहूं तो मुझे php का ज्ञान है और मैं बैकएंड इंटरफेस का उपयोग करके जूमला का उपयोग करता हूं। मैं जो बनाना चाहता हूं, उसमें एक साइट है जिसमें मैंने जूमला एडमिन कंसोल (मेनू, पेज आदि) का उपयोग करके कुछ विशेषताएं जोड़ी हैं और मैं php स्क्रिप्ट का उपयोग करके मामूली बदलाव करना चाहता हूं। क्या इसे बनाने के लिए किसी तरह का ट्यूटोरियल है?
यूजरसुसर 17

जवाबों:


15

यह ऐसा करने के लिए एक व्यापक प्रक्रिया है, लेकिन यहां कोड का एक ट्रिम डाउन संस्करण है जिसे मैं आमतौर पर उपयोग करता हूं। मैं जरूरी नहीं है कि यह दिखाया जाएगा के रूप में मैं आंतरिक सामान का एक गुच्छा फट से चला जाएगा कि हम जिस तरह से साथ करते हैं, लेकिन ये टुकड़े आप इसे करने की जरूरत है।

आपको तालिकाओं को देखने #__categoriesऔर #__contentउन सभी क्षेत्रों को प्राप्त करने की आवश्यकता होगी जिन्हें आप आबादी देना चाहते हैं और उन्हें दिए गए $category_dataऔर $article_dataसरणियों में जोड़ सकते हैं ।

मुझे यह उल्लेख करना चाहिए कि आप इसे jDatabase या jTable के साथ रिकॉर्ड सम्मिलित करते हुए पूरा कर सकते हैं , लेकिन मैं आमतौर पर यह अनुशंसा नहीं करूंगा कि जो महत्वपूर्ण चीज़ आपको याद आ रही है वह अंतर्निहित Joomla नियम और तर्क है जो कि विशिष्टता की जाँच करने जैसी चीज़ें करते हैं। एलियास के लिए, और नई सामग्री मदों के लिए एसीएल का प्रबंधन।

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;
    }
}

जूमला को निश्चित रूप से लोड करना पड़ता है, इसलिए यदि आप कुछ मौजूदा कोड में नहीं कर रहे हैं, तो आपको इसे लोड करने की आवश्यकता है। मैंने अपना उत्तर अपडेट कर दिया है, इसलिए आप जाने के लिए अच्छे हैं।
जीडीपी

इस कोड के लिए नहीं, यह जूमला मॉडल का उपयोग उन्हें जोड़ने के लिए करता है जैसे कि जूमला खुद करता है। आपको इस कोड को php फ़ाइल में रखने में सक्षम होना चाहिए, अन्य क्षेत्रों के साथ $ डेटा सरणी को पूरा करना चाहिए जिसे आप अपडेट करना चाहते हैं और इसे सफलतापूर्वक चलाते हैं। मुझे कुछ मिनट दें, और मैं 100% कार्यात्मक कोड को शामिल करने के लिए अपने उत्तर को अपडेट करूंगा।
जीडीपी

अपडेट किया गया कोड अब एक श्रेणी और उसके भीतर एक लेख बनाता है जब इसे निष्पादित किया जाता है। FYI करें, यदि आप या तो के लिए 0 के बजाय एक वैध आईडी निर्दिष्ट करते हैं, तो वह इसे जोड़ने के बजाय उस श्रेणी या लेख को अपडेट करेगा। इसके अलावा, ACL के नियम वैकल्पिक हैं ... मैंने इसे अपनी एक स्क्रिप्ट से कॉपी किया है जो ACL का उपयोग करता है, इसीलिए यह वहाँ है, लेकिन यह भी जानना आसान है।
जीडीपी

1
मैं केवल यह सुझाव दे सकता हूं कि आप यह तैयार करें कि आप यह मानकर कि क्या करना चाहते हैं, खाका या MVC इसके कुछ भाग हैं। आमतौर पर जूमला क्या करता है, इसे अनुकूलित करने के लिए प्लगइन्स सबसे अच्छा तरीका है, लेकिन आप जो करना चाहते हैं उसकी स्पष्टता यह निर्धारित करना सबसे महत्वपूर्ण है कि सबसे अच्छा समाधान क्या है।
जीडीपी

1
यह समाधान अभी भी जूमला में अच्छी तरह से काम कर रहा है! 3.9.11
एंडीगास्केल

3

जूमला एक्सटेंशन डायरेक्टरी में कम से कम एक एक्सटेंशन, "OSContent" है जिसे आप एक उदाहरण के रूप में उपयोग कर सकते हैं:

http://extensions.joomla.org/extensions/miscellaneous/mass-content/18000

OSContent आपको थोक में लेख और श्रेणियां बनाने की अनुमति देता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.