Yii - थिमिंग

थीमिंग आपको मूल दृश्य फ़ाइलों को संशोधित करने की आवश्यकता के बिना विचारों के एक सेट को दूसरे के साथ बदलने में मदद करता है। आपको सेट करना चाहिएtheme थीमिंग का उपयोग करने के लिए व्यू एप्लिकेशन घटक की संपत्ति।

आपको निम्नलिखित गुणों को भी परिभाषित करना चाहिए -

  • yii\base\Theme::$basePath - सीएसएस, जेएस, छवियों और आगे के लिए आधार निर्देशिका को परिभाषित करता है।

  • yii\base\Theme::$baseUrl - थीम्ड संसाधनों के आधार URL को परिभाषित करता है।

  • yii\base\Theme::$pathMap - प्रतिस्थापन नियमों को परिभाषित करता है।

उदाहरण के लिए, यदि आप कॉल करते हैं $this->render('create') UserController में, @app/views/user/create.phpदृश्य फ़ाइल प्रदान की जाएगी। फिर भी, यदि आप निम्न एप्लिकेशन कॉन्फ़िगरेशन की तरह उन्हें सक्षम करते हैं, तो इसके बजाय व्यू फ़ाइल @ ऐप / थीम / बेसिक / उपयोगकर्ता / create.php प्रदान किया जाएगा।

Step 1 - संशोधित करें config/web.php इस तरह से फाइल करें।

<?php
   $params = require(__DIR__ . '/params.php'); $config = [
      'id' => 'basic',
      'basePath' => dirname(__DIR__),
      'bootstrap' => ['log'],
      'components' => [
         'request' => [
            // !!! insert a secret key in the following (if it is empty) - this
               //is required by cookie validation
            'cookieValidationKey' => 'ymoaYrebZHa8gURuolioHGlK8fLXCKjO',
         ],
         'cache' => [
            'class' => 'yii\caching\FileCache',
         ],
         'user' => [
            'identityClass' => 'app\models\User',
            'enableAutoLogin' => true,
         ],
         'errorHandler' => [
            'errorAction' => 'site/error',
         ],
         'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => true,
         ],
         'log' => [
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
               [
                  'class' => 'yii\log\FileTarget',
                  'levels' => ['error', 'warning'],
               ],
            ],
         ],
         'view' => [
            'theme' => [
               'basePath' => '@app/themes/basic',
               'baseUrl' => '@web/themes/basic',
               'pathMap' => [
                  '@app/views' => '@app/themes/basic',
               ],
            ],
         ],
         'db' => require(__DIR__ . '/db.php'),
      ],
      'modules' => [
         'hello' => [
            'class' => 'app\modules\hello\Hello',
         ],
      ],
      'params' => $params, ]; if (YII_ENV_DEV) { // configuration adjustments for 'dev' environment $config['bootstrap'][] = 'debug';
      $config['modules']['debug'] = [ 'class' => 'yii\debug\Module', ]; $config['bootstrap'][] = 'gii';
      $config['modules']['gii'] = [ 'class' => 'yii\gii\Module', ]; } return $config;
?>

हमने व्यू एप्लिकेशन कंपोनेंट जोड़ा है।

Step 2 - अब बनाएँ web/themes/basic निर्देशिका संरचना और themes/basic/site। थीम / बेसिक / साइट फोल्डर के अंदर एक फाइल बनाई जाती है जिसे कहा जाता हैabout.php निम्नलिखित कोड के साथ।

<?php
   /* @var $this yii\web\View */ use yii\helpers\Html; $this->title = 'About';
   $this->params['breadcrumbs'][] = $this->title;
   $this->registerMetaTag(['name' => 'keywords', 'content' => 'yii, developing, views, meta, tags']); $this->registerMetaTag(['name' => 'description', 'content' => 'This is the
      description of this page!'], 'description');
?>

<div class = "site-about">
   <h1><?= Html::encode($this->title) ?></h1>
	
   <p style = "color: red;">
      This is the About page. You may modify the following file to customize its content:
   </p> 
</div>

Step 3 - अब, करने के लिए जाओ http://localhost:8080/index.php?r=site/about, को themes/basic/site/about.php इसके बजाय फ़ाइल प्रदान की जाएगी views/site/about.php

Step 4 - थीम मॉड्यूल के लिए, yii \ base \ Theme :: $ pathMap संपत्ति को इस तरह कॉन्फ़िगर करें।

'pathMap' => [
   '@app/views' => '@app/themes/basic',
   '@app/modules' => '@app/themes/basic/modules',
],

Step 5 - थीम विजेट के लिए, कॉन्फ़िगर करें yii\base\Theme::$pathMap इस तरह से संपत्ति।

'pathMap' => [
   '@app/views' => '@app/themes/basic',
   '@app/widgets' => '@app/themes/basic/widgets', // <-- !!!
],

कभी-कभी आपको एक मूल विषय को निर्दिष्ट करने की आवश्यकता होती है जिसमें एक मूल रूप और आवेदन का अनुभव होता है। इस लक्ष्य को प्राप्त करने के लिए, आप विषय विरासत का उपयोग कर सकते हैं।

Step 6 - दृश्य अनुप्रयोग घटक को इस तरह से संशोधित करें।

'view' => [
   'theme' => [
      'basePath' => '@app/themes/basic',
      'baseUrl' => '@web/themes/basic',
      'pathMap' => [
         '@app/views' => [
            '@app/themes/christmas',
            '@app/themes/basic',
         ],
      ]
   ],
],

उपरोक्त विन्यास में, ए @app/views/site/index.phpव्यू फ़ाइल को या तो @ ऐप / थीम / क्रिसमस / साइट / इंडेक्स। एफपी या @ ऐप / थीम / बेसिक / साइट / इंडेक्स.फपी के रूप में देखा जाएगा, जिसके आधार पर फाइल मौजूद है। यदि दोनों फाइलें मौजूद हैं, तो पहले वाले का उपयोग किया जाएगा।

Step 7 - बनाएँ themes/christmas/site निर्देशिका संरचना।

Step 8 - अब, विषयों / क्रिसमस / साइट फ़ोल्डर के अंदर, निम्नलिखित कोड के साथ about.php नामक एक फ़ाइल बनाएं।

<?php
   /* @var $this yii\web\View */
   use yii\helpers\Html;
   $this->title = 'About'; $this->params['breadcrumbs'][] = $this->title; $this->registerMetaTag(['name' => 'keywords', 'content' => 'yii, developing,
      views, meta, tags']);
   $this->registerMetaTag(['name' => 'description', 'content' => 'This is the
      description of this page!'], 'description');
?>

<div class = "site-about">
   <h2>Christmas theme</h2>
   <img src = "http://pngimg.com/upload/fir_tree_PNG2514.png" alt = ""/>
   <p style = "color: red;">
      This is the About page. You may modify the following file to customize its content:
   </p>
</div>

Step 9 - अगर तुम जाओ http://localhost:8080/index.php?r=site/about, आप क्रिसमस विषय का उपयोग कर पृष्ठ के बारे में अद्यतन देखेंगे।