5

मैंने एक ज़ेंड एप्लिकेशन लिखा है और ब्लॉगिंग के लिए वर्डप्रेस शामिल किया है। जब मैंने पहली बार वर्डप्रेस स्थापित किया था तो मैंने इसे थीम किया ताकि वह उसी एप्लिकेशन को मुख्य एप्लिकेशन के रूप में इस्तेमाल कर सके। मैंने मुख्य थीम को दो बार फिर से शुरू कर दिया है और मिलान करने के लिए वर्डप्रेस थीम को फिर से करना है। वर्डप्रेस के लिए मेरे ज़ेंड लेआउट का उपयोग करने का कोई तरीका है? मेरा पहला विचार हेडर/फ़ूटर फ़ाइलों में अपना लेआउट तोड़ना है और उन्हें पूर्ण पथ का उपयोग करके वर्डप्रेस से शामिल करना है। हालांकि यह काम करेगा, यह आदर्श से बहुत दूर है (मैं लेआउट फ़ाइल को एक टुकड़े में रखना पसंद करूंगा)।वर्डप्रेस थीम के रूप में ज़ेंड लेआउट का उपयोग कैसे करें?

+0

आपको लगता है कि आपको किसी प्रकार का "टेम्पलेट रैपर" चाहिए जो वर्डप्रेस सामान के साथ आपके लेआउट में प्लेसहोल्डर्स को प्रतिस्थापित करता है। – opHASnoNAME

+2

आप आंशिक, अलग हेडर, पाद लेख का उपयोग कर सकते हैं और इसे WordPress संरचना में शामिल कर सकते हैं। –

उत्तर

0

कई वेबसाइटों के लिए आपको ब्लॉगिंग एकीकरण के लिए वर्डप्रेस स्थापित करने की आवश्यकता हो सकती है। जब ब्लॉग को स्किन करने की बात आती है तो आप HTML को अपने Zend_Layout से Wordpress header.php और footer.php फ़ाइलों में कॉपी करने के लिए बहुत सीमित हैं। यह डुप्लिकेशंस है, और यदि आप अपने लेआउट में कोई भी बदलाव करते हैं, तो आपको ब्लॉग थीम को भी अपडेट करना होगा। खैर, एक और तरीका है!

परिवर्तन आपका Zend आवेदन

(उदाहरण के लिए इस गाइड का पालन करते हुए: अन्य अनुप्रयोग से पहुंच Zend आवेदन Resouces) अपने Zend आवेदन के लिए एक अलग बूटस्ट्रैप फ़ाइल करें।

include('bootstrap.php'); //where bootstrap.php is the file of the new bootstrap file 
$application->run(); 

Wordpress जादू

अब Wordpress जादू आता है:

<?php 
// Define path to application directory 
defined('APPLICATION_PATH') 
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); 

// Define application environment 
defined('APPLICATION_ENV') 
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); 

// Ensure library/ is on include_path 
set_include_path(implode(PATH_SEPARATOR, array(
     realpath(APPLICATION_PATH . '/../library'), 
     get_include_path(), 
    ))); 

/** Zend_Application */ 
require_once 'Zend/Application.php'; 

// Create application, bootstrap, and run 
$application = new Zend_Application(
     APPLICATION_ENV, 
     APPLICATION_PATH . '/configs/application.ini' 
); 
$application->bootstrap(); 

अपने index.php फ़ाइल में, आपके आवेदन को चलाने के लिए।

Zend लेआउट

अपने नए Wordpress विषय फ़ोल्डर में, 'Zend_Layout.php' और प्रतिलिपि नाम की एक फ़ाइल बनाने/इसे में इस कोड को प्राप्त करें:

<?php 
//load Zend_Layout 
$layout = new Zend_Layout(); 

//add the blog's stylesheet to the header 
$view = $layout->getView(); 
$view->headLink()->appendStylesheet(get_bloginfo('stylesheet_url')); 

// Set a layout script path: 
$layout->setLayoutPath(APPLICATION_PATH . "/modules/default/views/scripts"); 
$layout = $layout->render(); 

हैडर

header.php फ़ाइल को इस पर बदलें:

<?php 
include('zend_layout.php'); 
echo substr($layout, 0, strpos($layout, '<div id="container">')); 
?> 
    <div id="container"> 

यह पिछले स्क्रिप्ट से $ लेआउट वैरिएबल लोड करेगा और सब कुछ आपके मुख्य कंटेनर div पर गूंज देगा। पाद

footer.php समान है:

</div><!-- #main --> 
<?php 

include('zend_layout.php'); 
echo substr($layout, strpos($layout, '<div id="footer">')); 
+0

वर्डप्रेस सबसे अच्छा समय पर अपेक्षाकृत भारी प्रणाली है, लेकिन इसके ऊपर एक संपूर्ण 'Zend_Aplication' परत को पूर्ण पागलपन है! यदि आप चाहें, तो आप 'Zend_Layout' और' Zend_View' का उपयोग स्टैंडअलोन घटकों के रूप में 'Zend_Aplication' के साथ आने वाली सभी चीज़ों को लोड किए बिना कर सकते हैं। [दस्तावेज़ पढ़ें ->] (http://framework.zend.com/manual/en/zend.layout.quickstart.html#zend.layout.quickstart.standalone) – adlawson

0

आपको लगता है कि लेआउट/दृश्य स्क्रिप्ट का उपयोग करता है या इसी तरह आप वर्डप्रेस विषय फ़ाइल में कुछ इस तरह कर सकता है एक पृष्ठ वर्ग है:

$page = new Page; 
$page->setTitle(get_the_title()); 

$content = ''; 

if (have_posts()) 
{ 
    while (have_posts()) 
    { 
     ob_start(); 
     the_post(); 
     $content .= ob_get_clean(); 
    } 
} 

$page->setContent($content); 
... 

$view = new Zend_View(); 
$view->page = $page; 
... 

Wordpress यह अपने कार्यों के साथ आसान नहीं है उत्पादन लौटने की बजाय, इसलिए ob_start()।

मुझे नहीं पता कि यह सबसे अच्छा तरीका है, लेकिन मुझे यह देखने में दिलचस्पी होगी कि कोई बेहतर तरीका है या नहीं।

0

मैंने अपनी layout.phtml फ़ाइल को हेडर और पाद लेख आंशिक रूप से अलग कर दिया है।

मेरी वर्डप्रेस थीम फ़ाइलों में मैं अपने आंशिक रूप से शामिल हूं।

मेरा खुद का get_header/footer फ़ंक्शन लिखने के लिए एक और सुरुचिपूर्ण समाधान हो सकता है जिसमें इन आंशिक शामिल हैं? मुझे लगता है कि यह विषय की function.php फ़ाइल में जाएगा?

0

तुम बस दृश्य वस्तु गुजर (Wordpress से मॉडल) वार्स अपने लेआउट की जरूरत है।

यह मैं इसे कैसे अपनी परियोजनाओं में उपयोग के उदाहरण के एक प्रकार है (मैं पूर्ण Zend_Layout का उपयोग करें: Headlink, headTitle, headStyle ...), लेकिन बिंदु 1 मिश्रित उदाहरण है:

<?php 
// Layout: New; or get from registry if it's stored in; 
// or set your own new Layout with ->setLayout(). 
$Layout = new Zend_Layout(); 
$view = $Layout->getView(); ?> 

<!-- Header --> 
<?php echo $Layout->render('header.phtml'); ?> 
<!-- /Header --> 

<?php // 1. Now assume you have an usual Wordpress loop: 
// (but IMHO I prefer use $wp_query->posts and partialLoop) 
if (have_posts()) { 
    while (have_posts()) { 
     the_post(); 
     $view->post = get_post(get_the_ID()); 
     $view->render('partials/article.phtml'); 
     // article.phtml works with $this->post as model. 
    } 
} 

// 2. Example out of loop with $wp_query: 
if ($wp_query instanceof WP_Query && $wp_query->have_posts()) { 
    // Now, we can render your partial article template 
    // passing the posts as model: 
    $view->partialLoop()->setObjectKey('post'); // $this->post in article partial template. 
    $view->posts  = $view->partialLoop( 'partials/article.phtml', 
          $wp_query->posts); 
    // You can render here your $view->posts var or passing anything. 
} 
?> 

<!-- Sidebar --> 
<?php echo $Layout->render('sidebar.phtml'); 
// or call your Wordpress sidebars: get_sidebar('my_sidebar'); 
// but, again, I prefer use placeholders for that. ?> 
<!-- /Sidebar --> 

<!-- Footer --> 
<?php echo $Layout->render('footer.phtml'); ?> 
<!-- /Footer --> 

उम्मीद है कि यह मदद करता है;)

+0

वास्तव में, आपको यह मानना ​​चाहिए कि टेम्पलेट का भार ज़ेंड से वर्डप्रेस के get_template_part() फ़ंक्शन के रूप में कुछ (अधिक या कम) है। – Covi

संबंधित मुद्दे