Basit bir Linux çekirdek modülü yazıyoruz. Çekirdek modüllerini çıkarma

]

Modüller ZNC'nin çalışma şeklini genişletmek ve değiştirmek için kullanılır. Kullanıcılar modüllerle çoğunlukla IRC'de özel bir kullanıcıya mesaj göndererek etkileşime girer. Örneğin, izleme listenizdeki öne çıkan anahtar kelimeleri görüntülemek için /msg *izleme listesi. ZNC, mesajlaştığınız nickin bir yıldız işaretiyle başladığını gördüğünde, mesajı IRCd/sunucuya iletmez, bunun yerine işlenmek üzere uygun modüle gönderir. Bu durumda izleme modülü mesajı alacak ve yanıtlayacaktır. senle anahtar kelimelerinizin bir listesi. Bu, yüklü modüllerinizi yapılandırmak veya onlarla başka türlü iletişim kurmak için çok kullanışlı ve standart bir yol sağlamanın yanı sıra, yüklü modüllerinizin durumu veya diğer bilgileri görüntülemesi için ortak ve standart bir yol sağlar. Fark etme bu yüklü modüller içindir. Örneğin belirli bir modülü yüklemelisiniz /znc yükleme modu izle, izleme modülüyle arayüz oluşturmadan önce. Çoğu modül yanıt verecektir /msg *modül yardımı Kullanılabilir komutların bir listesiyle birlikte.

ZNC modülleri de yüklenir küresel olarak, ağ başına, veya kullanıcı başına temel. Her modül global, ağa özel ve/veya kullanıcıya özel olarak yüklemeye uygun olup olmadığını kendisi belirler. Kullanıcı seviyesi ve ağ modülleri şunları yapabilir: gelen/giden mesajları değiştirme ile tam gelişmiş bir Twitter istemcisinin uygulanması. Ayrıca aşağıdakiler gibi daha geleneksel IRC görevlerini de yapabilirler: meydan okumaya dayalı otomatik operasyon , seni uzaklaştırmak, veya diske giriş yapmak. Her kullanıcı, deneyimlerini tercihlerine göre özelleştirmek için kendi modül setini yükleyebilir ve yapılandırabilir.

Global modüller yöneticiler tarafından yüklenebilir ve tüm kullanıcılar için işlevsellik veya değişiklik davranışı sağlar. Örneğin, parti hattı modülün küresel olması gerekir çünkü belirli bir ZNC örneğindeki tüm kullanıcıların ZNC'nin içinden birbirleriyle iletişim kurabilmesine yönelik işlevsellik sağlar. Global modüller, kullanıcı düzeyindeki modüllerin yapabileceği her şeyin yanı sıra birkaç ekstrayı da yapabilir. ZNC'lerin yerini alabilirler kimlik doğrulama sistemi, yapılandırma yazma sürecini değiştirin, CAP ile ilgilenin vb.

Oluşturduğunuz modüller hakkında wiki sayfaları oluşturmaktan çekinmeyin, ancak bir indirme bağlantısı, iletişim bilgileri eklemeyi ve geri kalan modüllerle aynı düzeni kullanmayı unutmayın. Katkılar her zaman çok takdir edilir.

Modül Listesi [ düzenlemek ]

Küresel Modüller [ düzenlemek ]

yönetici günlüğü Kullanıcının bir dosyaya ve/veya sistem günlüğüne bağlanmasını, bağlantıyı kesmesini ve başarısız oturum açmalarını günlüğe kaydedin. engelleyici Hesaplarının devre dışı bırakıldığını söyleyerek belirli kullanıcıların ZNC kullanmasını engeller. kesinlik Bu modül, kullanıcıların SSL istemci anahtarları aracılığıyla oturum açmasına olanak tanır. Cyrusauth Bu modül, bir kabuk/web/e-posta/vb sunucusu çalıştıran ve mevcut kullanıcılarına ZNC erişimi sağlamak isteyen yöneticiler için tasarlanmıştır. başarısız2ban Başarısız bir oturum açma işleminden sonra IP'leri bir süre engelleyin. kimlik dosyası Bağlanmaya çalışırken kullanıcının kimliğini bir dosyaya gönderir. imapauth Kullanıcıların IMAP aracılığıyla kimlik doğrulaması yapmasına izin verin. son görülme Bir kullanıcının ZNC'de en son ne zaman oturum açtığını günlüğe kaydeder. modperl Perl komut dosyalarını ZNC modülleri olarak yükler. modpython Python'da yazılmış modülleri kullanmanızı sağlar. bildirim_bağlantısı Bir kullanıcı ZNC'de oturum açtığında veya ZNC'de oturum açtığında tüm yöneticilere bir bildirim gönderir. parti hattı ZNC kullanıcılarının dahili kanallara katılmasına ve aynı ZNC üzerindeki diğer ZNC kullanıcılarını sorgulamasına olanak tanır. web yöneticisi Bir web tarayıcısı aracılığıyla kullanıcıları ve ayarları anında eklemenizi/kaldırmanızı/düzenlemenizi sağlar.

Kullanıcı Modülleri [ düzenlemek ]

yönetici(Şimdi kontrol Paneli) IRC mesajları aracılığıyla kullanıcıları ve ayarları anında eklemenizi/kaldırmanızı/düzenlemenizi sağlar. otomatik ekleme seninkini izliyor müstakil otomatik ekleme listenize eklediğiniz bir kanalda belirli bir etkinlik olduğunda sizi otomatik olarak yeniden bağlar. otomatik yanıt Birisi size mesaj gönderirse otomatik yanıt verir sen uzak. blok_motd Sunucunun Günün Mesajını engeller. geri döndücc DCC aktarımlarını doğrudan kullanıcıya göndermek yerine znc sunucusu aracılığıyla geri döndürür. buffextra'lar Takma ad değişiklikleri, birleştirmeler, parçalar, konu değişiklikleri vb. ekleyin. oynatma arabelleğinize. şans koruyucu Kullanıcı katıldığında ve ayrıldığında kanalları yapılandırılacak şekilde kaydeder. karakter seti Karakter kodlamalarını normalleştirir (yani dönüştürür). clearbufferonmsg Bu modül, eğer KeepBuffer=true; ve KeepBuffer=false değeriniz varsa, ping attığınızda muhtemelen eksik mesajlar olur. müşteri bildirimi Kullanıcınıza yeni gelen bağlantılar hakkında bilgi verin. kontrol Paneli Kullanıcıları ve ayarları anında IRC mesajları aracılığıyla eklemenizi/kaldırmanızı/düzenlemenizi sağlar. ctcpflood Bu modül CTCP taşkınlarını engellemeye çalışır. dcc Bu modül ZNC'ye ve ZNC'den dosya aktarmanıza olanak tanır diskalifiye etmek Bu modül, ZNC'nin sunucuyla bağlantısı kesilirse istemcinizi tüm kanallardan atacaktır. Taşkın ayrılması Bu modül sizi su basmış kanallardan ayırır. liste yuvaları Bu modül ZNC'deki tüm açık soketlerin bir listesini görüntüler. kayıt Sohbet etkinliğini dosyaya kaydedin. eksikmotd Bu kullanıcı modülü, istemcilere oturum açtıklarında 422 gönderecektir. notlar Notları saklayın ve tekrar oynatın. Bu bir örnektir WebMod'lar. örnek Bu yardımcı olacak örnek bir modüldür yazma modülleri ne istersen onu yapmak. send_raw Diğer kullanıcılardan IRC'ye ham trafik göndermenizi sağlar. kabuk Unix kabuğunuza doğrudan IRC istemcinizin içinden sorgu yoluyla erişin.

Ağ Modülleri [ düzenlemek ]

otomobil döngüsü Orada tek olduğunuzda kanala yeniden katılın (operatör statüsü kazanmak için). otomatik çalıştırmaİyi adamlara otomatik olarak operatör statüsü verin. modtcl ZNC'de Tcl komut dosyalarını çalıştırmanıza izin verir. otomatik ses Bir kanala katılan herkese otomatik olarak ses durumu verin. uzaktaki Uzakta olduğunuzda takma adınızı değiştirin. uzaktaki mağaza Uzaklaştığınızda veya ayrı kaldığınızda, bu modül tüm özel mesajları sizin için kaydedecektir. Mesajlar siz silene kadar okunabilir. Bu modül ayrıca bir süre boşta kaldığınızda sizi uzaklaştıracaktır. sertifika Bu modül, kullanıcıların bir sunucuya bağlanmak için kendi SSL sertifikalarını kullanmalarına olanak tanır. mahzen Kanal/özel mesajlar için şifreleme. kale takma adı Birincil nickinizi alınırsa almaya ve korumaya çalışır. yeniden katılmak Vuruşta otomatik olarak yeniden katılmayı uygular. modüller_online Bazı istemcileri düzeltmek için ZNC modüllerinin çevrimiçi durumunu taklit eder. Nickserv NickServ ile sizi yetkilendirir. rol yapmak Bağlanıldığında komutları gerçekleştirir. Çiğçiğ Rota yanıtları Route_replies Sasl sasl Kaydetme desteği kaydetme tutkunu Schat saçmalık SSL (şifreli) DCC sohbetleri. basit_away Yapışkanchan yapışkankan kol saati Belirli kullanıcıların belirli metin kalıplarına yönelik etkinliğini izleyin ve metnin özel bir sorgu penceresine gönderilmesini sağlayın.

Daha Fazla Modül [ düzenlemek ]

Modülleri Yönetme [ düzenlemek ]

Modüller kolaylıkla eklenebilir veya çıkarılabilir. Modüller varsayılan olarak ~/.znc/modules ve /usr/local/lib/znc konumunda saklanabilir. ZNC, modüllerini aslında $(prefix)/lib/znc olan ikinci dizine yükler, ancak bu, derlemeden önce ./configure --module-prefix=DIR ile değiştirilebilir.

ZNC, modülleri ararken ilk olarak yerel alt dizin modüllerine bakacaktır. Yalnızca ".so" ile biten dosyalar modül olarak görülecektir. Modülleri kaldırmak için bunları klasörden silebilirsiniz. Başka hiçbir konfigürasyon değişikliği veya yeniden başlatma gerekli değildir. Bir modülü kaldırmak ama aynı zamanda daha sonra kullanmak üzere saklamak için, örneğin adını da değiştirebilirsiniz: mv sample.so sample.so_ .

Yeni bir modülü derlemek için öncelikle kaynağı ".cpp" dosyası olarak kaydetmelisiniz. Modüllerin derlenmesi süreci ayrıntılı olarak anlatıyor.

Global, kullanıcı ve ağ modülleri şuradan yüklenebilir/yüklenebilir web yöneticisi veya *durum sorgu penceresi aracılığıyla:

/msg *status LoadMod [--type=global|kullanıcı|ağ] /msg *status UnloadMod [--type=global|kullanıcı|ağ]

  • yapılandırma
  • [--type=global|user|network] isteğe bağlı olarak modülün global, kullanıcı veya ağ modülü olarak yüklenip yüklenmeyeceğini belirtir. Tüm modüller her seviyede yüklenemez; bireyi gör Modül belgeleri nereye yüklenebileceğini öğrenmek için.
  • ".so" uzantısı hariç modül dosya adını temel alır.
  • Her modüle özeldir ve zorunlu değildir: Modülü yüklerken parametreleri sağlayabilirsiniz veya modülü yükledikten sonra ayarlayabilirsiniz.

Yani, yüklemek için kayıt şuradaki modül küresel düzeyinde (kullanıcı veya ağ yerine) ve tüm renk/biçimlendirme kontrol kodlarını - sterilize etmek parametre, şunu yazarsınız:

/msg *status LoadMod --type=genel günlük -sanitize

ZNC'nin eski sürümleri için, [--type=global|user|network] belirtme seçeneğiniz olmayacaktır. Bu durumda, yalnızca şunu kullanın:

/msg *durum LoadMod /msg *durum Boşaltma Modu

"DenyLoadMod" yönergesi true olarak ayarlanırsa kullanıcının bir modülü yükleyemeyeceğini lütfen unutmayın. Bir modülü yüklemeye çalışmak "Yüklenemiyor [" ile başarısız olur ] Erişim engellendi."

Bir modül ZNC'nin başlatılmasını engelliyorsa ve bu nedenle ZNC'yi kullanarak modülü kaldıramıyorsanız web yöneticisi, düzenleyebilirsiniz znc.conf ve karşılık gelen LoadModule satırını kaldırın.

Modülleri kullanma [ düzenlemek ]

Bir modülün nasıl çalıştığını öğrenmek istiyorsanız modülün wiki sayfasını okumanız önerilir. Alternatif olarak bir komut listesi almak için aşağıdaki komut kullanılabilir:

/mesaj * yardım

  • * cihazınızda ayarlanan StatusPrefix'tir yapılandırma. Genellikle yalnızca bir yıldız işaretidir ("*").

Pek çok el yazısı modülün bulunduğu sitelerden birinde Drupal sürümünü güncelledikten sonra, aşağıdaki içeriğe sahip birkaç hata mesajının arka arkaya geldiğini hayretle gördüm:

Kullanıcı uyarısı: Dosya sisteminde aşağıdaki modül eksik:...

Daha sonra sistemin tespit edemediği modüllerin adları geldi. Bir zamanlar bu modülleri kendim yazmıştım, ancak oluşturma sürecinde bir şekilde başkalarıyla birleştiler, yeniden adlandırıldılar veya başka bir şey... genel olarak tarihte kayboldular. İlk başta tüm bunlardan vazgeçmeye karar verdim, ancak çok geçmeden yazı beni rahatsız etmeye başladı ve sorunla ilgili mesajın yanında listelenen bağlantıyı kullanarak yazıya bakmaya gittim. Bilgileri okuduktan sonra modülleri doğrudan sunucudan sildiğimde ve bunun için yönetici paneli seçeneklerini kullanmadığımda yanıldığımı anladım. Şimdi bunun neden kötü olduğunu ayrıntılı olarak açıklamayacağım, ancak yapmaya değmezdi, ancak Drupal'ın kendisi geliştiricilerin bu tür değersiz eylemlerini durdurmadı. Ve 7.50 ve üzeri sürümlerde, bu muhteşem CMS'nin yaratıcıları herkesi sipariş vermeye çağırmaya karar verdi.

Siz de bu sinir bozucu yazılardan bıktıysanız ve web sitesi yapılandırmasındaki kusurları ortadan kaldırmak istiyorsanız ne yapmalısınız? Her şey çok basit ve sorunu çözmek için kaldırdığınız modülleri internette tekrar aramanıza ve siteye tekrar kurmanıza bile gerek yok (Drupal geliştiricileri tarafından önerildiği gibi). Ve bunun kendi yarı mamul ürününüz olması ve onu tamamen unutmuş olmanız bile, bir hipnoz seansına girmeniz ve kodu bilinçaltının derinliklerinden geri yüklemeniz gerektiği anlamına gelmez. Sorun üç basit adımda çözülebilir:

İşte bu. Üç adım sözü verdim ama altı oldu. Ama bu her şeyin zor olduğu anlamına gelmiyor, sadece zevki uzattım :) İyi şanslar!

Depo GitHub'dan kopyalandıktan sonra bağımlılıkları yüklemek için npm kurulumuna giriyorum ve başarısız oluyorum. İşte süreç listesi:
bimbatron:bem bimba$ npm kurulumu > [e-posta korumalı] postinstall /Users/bimba/BEM > npm çalıştırma depoları > [e-posta korumalı] deps /Users/bimba/BEM > bower i --allow-root bower EACCES EACCES: izin reddedildi, mkdir "/Users/bimba/.cache/bower/registry/bower.herokuapp.com" Yığın izleme: Hata: EACCES: izin reddedildi, mkdir "/Users/bimba/.cache/bower/registry/bower.herokuapp.com", senkronizasyon sırasında Object.fs.mkdirSync'te (fs.js:922:18) Hata (yerel) (/Users/bimba/) BEM/node_modules/bower/lib/node_modules/bower-registry-client/node_modules/mkdirp/index.js:55:12) Function.sync'de (/Users/bimba/BEM/node_modules/bower/lib/node_modules/bower-) Registry-client/node_modules/mkdirp/index.js:61:24) yeni Önbellekte (/Users/bimba/BEM/node_modules/bower/lib/node_modules/bower-registry-client/lib/util/Cache.js:21) :16) RegistryClient'ta. (/Users/bimba/BEM/node_modules/bower/lib/node_modules/bower-registry-client/lib/lookup.js:162:35) Array.forEach'te (yerel) RegistryClient.initCache'de (/Users/bimba/BEM) /node_modules/bower/lib/node_modules/bower-registry-client/lib/lookup.js:149:34) RegistryClient._initCache'de (/Users/bimba/BEM/node_modules/bower/lib/node_modules/bower-registry-client) /Client.js:65:27) yeni RegistryClient'te (/Users/bimba/BEM/node_modules/bower/lib/node_modules/bower-registry-client/Client.js:19:10) Konsol izleme: StandardRenderer.error'da hata (/Users/bimba/BEM/node_modules/bower/lib/renderers/StandardRenderer.js:81:37) Logger'da. (/Users/bimba/BEM/node_modules/bower/lib/bin/bower.js:110:26) emitOne'da (events.js:96:13) Logger.emit'te (events.js:188:7) Logger'da .emit (/Users/bimba/BEM/node_modules/bower/lib/node_modules/bower-logger/lib/Logger.js:29:39) /Users/bimba/BEM/node_modules/bower/lib/commands/index.js adresinde. js:48:20 - _rejected (/Users/bimba/BEM/node_modules/bower/lib/node_modules/q/q.js:844:24) - /Users/bimba/BEM/node_modules/bower/lib/node_modules/q Promise.when'de /q.js:870:30 (/Users/bimba/BEM/node_modules/bower/lib/node_modules/q/q.js:1122:31) Promise.promise.promiseDispatch'te (/Users/bimba/) BEM/node_modules/bower/lib/node_modules/q/q.js:788:41) Sistem bilgisi: Bower sürümü: 1.7.9 Düğüm sürümü: 6.9.1 İşletim Sistemi: Darwin 15.6.0 x64 npm ERR! Darwin 15.6.0 npm HATA! argv "/Users/bimba/.nvm/versions/node/v6.9.1/bin/node" "/Users/bimba/.nvm/versions/node/v6.9.1/bin/npm" "run" "deps" npm HATA! düğüm v6.9.1 npm HATA! npm v3.10.8 npm HATA! kod ELIFECYCLE npm ERR! [e-posta korumalı] deps: `bower i --allow-root` npm ERR! Çıkış durumu 1 npm ERR! npm HATA! Başarısız oldu [e-posta korumalı] deps betiği "bower i --allow-root". npm HATA! Node.js ve npm'nin en son sürümünün kurulu olduğundan emin olun. npm HATA! Bunu yaparsanız, bu büyük olasılıkla bem-project-stub paketindeki bir sorundur, npm ERR! npm'nin kendisiyle değil. npm HATA! Yazara bunun sisteminizde başarısız olduğunu söyleyin: npm ERR! bower i --allow-root npm ERR! Bu proje için nasıl konu açılacağına dair bilgiyi şu şekilde alabilirsiniz: npm ERR! npm hataları bem-proje-saplaması npm ERR! Veya bu mevcut değilse, şu adresten bilgi alabilirsiniz: npm ERR! npm sahibi ls bem-project-stub npm ERR! Yukarıda muhtemelen ek günlük kaydı çıktısı vardır. Lütfen herhangi bir destek isteğine aşağıdaki dosyayı ekleyin: npm ERR! /Users/bimba/BEM/npm-debug.log npm ERR! npm ERR "/Users/bimba/.nvm/versions/node/v6.9.1/bin/node" "/Kullanıcılar /bimba/.nvm/ versiyonlar/düğüm/v6.9.1/bin/npm" "yükle" npm ERR! düğüm v6.9.1 npm ERR! npm v3.10.8 npm ERR! kodu ELIFECYCLE npm ERR! [e-posta korumalı] kurulum sonrası: `npm çalıştırma deps' npm ERR! Çıkış durumu 1 npm ERR! npm HATA! Başarısız oldu [e-posta korumalı] kurulum sonrası komut dosyası "npm çalıştırma deps". npm HATA! Node.js ve npm'nin en son sürümünün kurulu olduğundan emin olun. npm HATA! Bunu yaparsanız, bu büyük olasılıkla bem-project-stub paketindeki bir sorundur, npm ERR! npm'nin kendisiyle değil. npm HATA! Yazara bunun sisteminizde başarısız olduğunu söyleyin: npm ERR! npm çalıştırma deps npm ERR! Bu proje için nasıl konu açılacağına dair bilgiyi şu şekilde alabilirsiniz: npm ERR! npm hataları bem-proje-saplaması npm ERR! Veya bu mevcut değilse, şu adresten bilgi alabilirsiniz: npm ERR! npm sahibi ls bem-project-stub npm ERR! Yukarıda muhtemelen ek günlük kaydı çıktısı vardır. Lütfen herhangi bir destek isteğine aşağıdaki dosyayı ekleyin: npm ERR /Users/bimba/BEM/npm-debug.log

Gözünüze çarpan ilk hata, heroku uygulamasından bahseden bir yoldur. Bower önbelleğini temizlemeyi denedim, yardımcı olmadı, hata tekrar ortaya çıktı (bu arada, Heroku sistemden tamamen nasıl kaldırılır?).

İçeriğin şablon gövdesinde görüntülenmesine yönelik yöntemler konusuna kısaca değindik. Şimdi ne olduğuna ve neyle yenildiğine daha yakından bakalım. Yani, yöntem bildirimleri jdoc her Joomla şablonunda mevcuttur ve bunu veya bu bilgiyi şablonun gövdesinde (yani site sayfasında) görüntüleyin. Genel olarak yöntem bildirimi şuna benzer

Bu satır, sitedeki bileşenlerden gelen bilgileri (örneğin com_content'teki makaleler) görüntüler. Çıkış öğelerinin türü öznitelikte belirtilir.

1. tip - çıktı elemanlarının tipleri.

  • bileşen- yukarıda yazdığım gibi sayfanın ana içeriğini görüntüler. Şablon başına yalnızca bir kez çağrılabilir.
  • KAFA- ayrıca açılış etiketinden sonra bir kez duyurulur . Stilleri, komut dosyalarını, ve geçerli sayfanın meta verileri.</li><li><i>mesaj</i><i>- </i> sistem mesajlarını görüntüler. Belgenin gövdesinde bir kez bildirildi.</li><li><i>kurulum</i>- hiçbir şey göstermez ve kurulum için bir “talimattır”.</li><li><i>modül -</i> sayfada tek bir modül görüntüler. İlan sayısı sınırsızdır.</li><li><i>modüller</i>- Önceki türden farklı olarak, birden fazla sayıda modülü kendi konumunda görüntülemenize olanak tanır.</li> </ul><p>Listelenen ilk dört tür için bunları sayfada belirtmeniz yeterlidir. Modül türü söz konusu olduğunda görev biraz daha karmaşık hale gelir. Sayfada bir modül görüntülemek için öncelikle onun için bir modül oluşturmamız gerekir. <b>modüler konum</b> benzersiz bir tanımlayıcıyla (modül konum adı). Bu, name = "position name" niteliği ve satırın zorunlu eklenmesi kullanılarak yapılır:</p><p> <position>konum adı</position>şablonDetails.xml dosyasına. TemplateDetails.xml dosyasındaki pozisyonun ismini açıklayarak sistemde belirliyoruz ve modül yöneticisinde görüyoruz. Üst menüyü görüntülemek için varsayılan olarak name = "user3" konumu kullanılmasına rağmen, konumların adları isteğe bağlı olabilir.</p><p><b>2. stil - çıktı stilinin açıklaması (mod kromu).</b></p> <p>Modül kabuğunun görünümü ve yapısı belirtilen stile bağlıdır. Öyle görünüyor</p><p> :<jdoc:include type="modules" name="user1" style="xhtml" />Varsayılan olarak birkaç modül çıktısı stili vardır:</p><ul><li><i>xhtml -</i> modülü modChrome_xhtml($module, &$params, &$attribs) başlık fonksiyonuna sahip bir blokta görüntüler <br>{<br>if (!empty ($module->content)) : ?> <br> <div class="moduletable<?php echo htmlspecialchars($params->get("moduleclass_sfx")); ?>"> <br> <?php if ($module->gösteri başlığı != 0) : ?> <br> <h3><?php echo $module->başlık; ?></h3><br> <?php endif; ?><br> <?php echo $module->içerik; ?> <br> </div><br> <?php endif;<br>}</li><li><i>masa -</i> modülü bir tablo yapısı düzeninde görüntüler <br>function modChrome_table($module, &$params, &$attribs) <br>{ ?><br> <table cellpadding="0" cellspacing="0" class="moduletable<?php echo htmlspecialchars($params->get("moduleclass_sfx")); ?>"> <br> <?php if ($module->gösteri başlığı != 0) : ?> <br> <tr><br> <th><br> <?php echo $module->başlık; ?> <br> </th><br> </tr><br> <?php endif; ?><br> <tr><br> <td><br> <?php echo $module->içerik; ?> <br> </td><br> </tr><br> </table><br> <?php<br>}</li><li><i>horz -</i> bir modülün içeriğini bir tablo hücresinde görüntüler, yatay olarak işlev modChrome_horz($module, &$params, &$attribs) <br>{ ?><br> <table cellspacing="1" cellpadding="0" width="100%"><br> <tr><br> <td><br> <?php modChrome_table($module, $params, $attribs); ?><br> </td><br> </tr><br> </table><br> <?php<br>}</li><li><i>yuvarlak</i>- grafik kenarlıkları (örn. yuvarlatılmış köşeler) biçiminde karmaşık şekillendirme için modülü birkaç iç içe blok halinde görüntüler function modChrome_rounded($module, &$params, &$attribs) <br>{ ?><br> <div class="module<?php echo htmlspecialchars($params->get("moduleclass_sfx")); ?>"> <br> <div><br> <div><br> <div><br> <?php if ($module->gösteri başlığı != 0) : ?> <br> <h3><?php echo $module->başlık; ?></h3><br> <?php endif; ?><br> <?php echo $module->içerik; ?> <br> </div><br> </div><br> </div><br> </div><br> <?php<br>}</li><li><i>taslak</i>- modül bloğu işlevine önceden ayarlanmış css stilleri ekler modChrome_outline($module, &$params, &$attribs) <br>{<br>statik $css=yanlış; <br>eğer (!$css) <br> {<br>$css=doğru; <br>jimport("joomla.environment.browser"); <br>$doc = JFactory::getDocument(); <br>$tarayıcı = JBrowser::getInstance(); <br>$doc->addStyleDeclaration(".mod-preview-info ( dolgu: 2px 4px 2px 4px; kenarlık: 1px düz siyah; konum: mutlak; arka plan rengi: beyaz; renk: kırmızı;)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper ( arka plan rengi:#eee; border: 1px noktalı siyah; color:#700;)"); <br>if ($browser->getBrowser()=="msie") <br> {<br>if ($tarayıcı->getMajor()<= 7) {<br>$doc->addStyleDeclaration(".mod-preview-info (filter: alpha(opacity=80);)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper (filter: alpha(opacity=50);)"); <br> } <br>başka( <br>$doc->addStyleDeclaration(".mod-preview-info (-ms-filter: alpha(opacity=80);)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper (-ms-filter: alpha(opacity=50);)"); <br> } <br> } <br>başka <br> {<br>$doc->addStyleDeclaration(".mod-preview-info (opaklık: 0.8;)"); <br>$doc->addStyleDeclaration(".mod-preview-wrapper (opaklık: 0,5;)"); <br> } <br> } <br> ?><br> <div class="mod-preview"><br> <div class="mod-preview-info"><?php echo $module->konum."[".$module->style."]"; ?></div><br> <div class="mod-preview-wrapper"><br> <?php echo $module->içerik; ?> <br> </div><br> </div><br> <?php<br>}</li><li><i>hiçbiri</i>- hiç belirtilmeyen stile benzer. Tasarım ve başlık işlevi olmayan bir modülü görüntüler modChrome_none($module, &$params, &$attribs) <br>{<br>echo $modül->içerik; <br>}</li> </ul><p>Tüm önceden ayarlanmış stiller şablonlar/sistem/html/modules.php dosyasında bulunur. Ancak yalnızca sunulan seçenekleri kullanmakla sınırlı değiliz, aynı zamanda kendimizinkini yaratma konusunda da oldukça yetenekliyiz.</p> <p><b>3. Özel bir krom modu oluşturun.</b></p> <p><b><br></b> Bu nedenle, sağlanan varsayılan modül gösterim türleri mevcut gereksinimleri karşılamamaktadır. Kendi tasarım stilinizi eklemeniz gerekir. Örnek olarak oldukça sık tekrarlanan bir durumu seçelim. Göreve göre yerine <h3>modül başlığını etikete koy <span>, anlamsal olarak tarafsızdır. Ayrıca modül içerik bloğunu ayrı bir yere yerleştirmeniz gerekir. <div>. Kendi modül çıktı stilinizi oluşturmak için standart araçları kullanacağız. Çoğu Joomla şablonunda, şablon oluşturma olarak adlandırılan bir html/ klasörü (şablonlar/şablon adı/html/) bulunur. Yani, bu klasöre bir modül şablonu kopyalarsanız, modüller/my_module/tmpl/default dizinindeki şablon yerine, şablonlar/şablon adı/html/my_modules/default dosyasındaki dosyanın çıktısı alınacaktır. Bileşenler aynı şekilde şablonlanır. Kullanışlı ve pratik. Şablonunuzun html/ klasöründe bir module.php dosyası oluşturun. Şablonda böyle bir klasör yoksa oluşturacağız. Bunu bir dosyaya yazalım</p><p> <?php<br>function modChrome_modbox($module, &$params, &$attribs) // Fonksiyonu çağır <br>{<br>if (!empty ($module->content)) : /* Konumun etkin bir modül içerip içermediğini kontrol edin */?> <br> <div class="moduletable<?php echo htmlspecialchars($params->get("moduleclass_sfx")); /* modül sınıfının css sonekini göster */ ?>"> <br> <?php if ($module->showtitle != 0) : /* modül başlığının içerip içermediğini kontrol edin */ ?> <br> <span class="title"><?php echo $module->başlık; /* Başlığı yazdır */ ?></span><br> <?php endif; ?><br> <div class="modcontent"><br> <?php echo $module->içerik; /* Modülün içeriğinin çıktısı */ ?> <br> </div><br> </div><br> <?php endif;<br>} <br>?> Bitti. Şimdi bunu çıktı stili olarak belirtmeniz yeterli. <jdoc:include type="modules" name="user1" style="modbox"/>Pozisyonumuza bir modül atayıp sonuca bakıyoruz.</p> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> </div> </article> </div> </main> <noindex> <aside class="sidebar sidebar_midle"> <div class="section-posts-box section"> <div class="title">Popüler makaleler</div> <div class="section-posts"> <div class="section-posts__item"> <img src="/uploads/4be64ff6d222da4105692245d96c0c1c.jpg" width="300" height="180" class="section-posts__item-img" alt="Vasili III. Biyografi. Pano. Aile. Vasily III hakkında ilginç gerçekler Vasily 3 hakkında kısaca bir mesaj" / loading=lazy loading=lazy> <div class="section-posts__item-title"> <a href="https://netdenegnakino.ru/tr/vasilii-iii-biografiya-pravlenie-semya-interesnye-fakty-o-vasilii.html">Vasili III. Biyografi. Pano. Aile. Vasily III hakkında ilginç gerçekler Vasily 3 hakkında kısaca bir mesaj</a> </div> <div class="section-posts__item-text">Vasily 3 (saltanat 1505-1533), Rus topraklarının son koleksiyonuna damgasını vurdu...</div> <div class="post-info section-posts__item-info"> <time class="post-info__time post-info__time_popular" datetime="">2024-04-15 01:49:22</time> </div> </div> <div class="section-posts__item"> <img src="/uploads/888d10e708a1a32369d88c15e49bf7ab.jpg" width="300" height="180" class="section-posts__item-img" alt="Köklerden kuvvetlere ve geriye geçiş, örnekler, çözümler Üsler ve köklerle örnekler nasıl çözülür?" / loading=lazy loading=lazy> <div class="section-posts__item-title"> <a href="https://netdenegnakino.ru/tr/izvlechenie-kornei-sposoby-primery-resheniya-perehod-ot-kornei-k.html">Köklerden kuvvetlere ve geriye geçiş, örnekler, çözümler Üsler ve köklerle örnekler nasıl çözülür?</a> </div> <div class="section-posts__item-text">Kökleri çıkarmanın yollarına bakmanın zamanı geldi. Köklerin özelliklerine dayanırlar...</div> <div class="post-info section-posts__item-info"> <time class="post-info__time post-info__time_popular" datetime="">2024-04-12 01:52:34</time> </div> </div> <div class="section-posts__item"> <img src="/uploads/c6b834710dd0f89e1c2f6accaac858c2.jpg" width="300" height="180" class="section-posts__item-img" alt="Görünmez Yıldızın İşareti (OS) Banliyöler ve şehirler arasındaki geçiş bölgesinin gökyüzü" / loading=lazy loading=lazy> <div class="section-posts__item-title"> <a href="https://netdenegnakino.ru/tr/pochemu-ne-vidno-zvezd-znamenie-nevidimoi-zvezdy-lp-nebo.html">Görünmez Yıldızın İşareti (OS) Banliyöler ve şehirler arasındaki geçiş bölgesinin gökyüzü</a> </div> <div class="section-posts__item-text">Bilginin ekolojisi. Bilim ve keşifler: Evren sonsuzdur ve içinde çok sayıda yıldız yoktur. İÇİNDE...</div> <div class="post-info section-posts__item-info"> <time class="post-info__time post-info__time_popular" datetime="">2024-04-11 01:52:27</time> </div> </div> </div> </div> <div class="section section_widget widget_text" id="text-7"> <div class="textwidget"> </div> </div> </aside> </noindex> </div> </div> <footer class="footer"> <link href="https://fonts.googleapis.com/css?family=Roboto:400,400i,500,700,700i&subset=cyrillic" rel="stylesheet"> <nav class="footer-nav"> <ul> <li class="menu-item type-post_type object-page "><a href="https://netdenegnakino.ru/tr/feedback.html">Kişiler</a></li> <li class="menu-item type-post_type object-page "><a href="https://netdenegnakino.ru/tr/sitemap.xml">Site haritası</a></li> </ul> </nav> <div class="footer-bottom"> <div class="copy">© 2024 netdenegnakino.ru - İkili için hayır. Kimya. Fizik. Yazım. Coğrafya</div> </div> </footer> </div> <script type='text/javascript'> /* <![CDATA[ */ var tocplus = { "smooth_scroll": "1", "visibility_show": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c", "visibility_hide": "\u0421\u043a\u0440\u044b\u0442\u044c", "width": "Auto" }; /* ]]> */ </script> <script type='text/javascript' src='https://netdenegnakino.ru/wp-content/plugins/table-of-contents-plus/front.min.js?ver=1509'></script> <script type='text/javascript' src='https://netdenegnakino.ru/wp-content/plugins/wp-postratings/js/postratings-js.js?ver=1.85'></script> <script type='text/javascript'> var q2w3_sidebar_options = new Array(); q2w3_sidebar_options[0] = { "sidebar": "sidebar-2", "margin_top": 10, "margin_bottom": 0, "stop_id": "", "screen_max_width": 0, "screen_max_height": 0, "width_inherit": false, "refresh_interval": 1500, "window_load_hook": false, "disable_mo_api": false, "widgets": ['text-7', 'text-6'] }; </script> <script type='text/javascript' src='https://netdenegnakino.ru/wp-content/plugins/q2w3-fixed-widget/js/q2w3-fixed-widget.min.js?ver=5.0.4'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js?ver=4.9.2'></script> </div> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> </body> </html> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>