Extension:TemplateStyles
![]() Sürüm durumu: kararlı |
|
---|---|
Uygulama | Etiket , ContentHandler , Kanca |
Açıklama | Dezenfekte edilmiş CSS stil sayfalarını bir şablondan yüklemeye izin verir. |
Yazar(lar) | |
En son sürüm | Continuous updates |
Uyumluluk politikası | MediaWiki ile birlikte anlık görüntüler yayımlanır. Master geriye dönük olarak uyumlu değil. |
MediaWiki | 1.30+ |
PHP | 7.3+ |
Lisans | GNU Genel Kamu Lisansı 2.0 veya üstü |
İndir | |
|
|
<templatestyles src=... /> |
|
Quarterly downloads | 989 (Ranked 1st) |
Public wikis using | 1,977 (Ranked 199th) |
Translatewiki.net adresinde mevcutsa, TemplateStyles uzantısını çevirin | |
Sorunlar | Açık görevler · Hata bildir |
TemplateStyles uzantısı, bir viki sayfasından bir stil sayfasının yüklenmesi gerektiğini belirtmek için <templatestyles>
etiketi sunar. The extension allows only a safe subset of CSS syntax stored in embeddable style pages. This is powered by the css-sanitizer library.
Bunu bir şablona yerleştirmek, şablonun MediaWiki:Common.css ile yerleştirmek zorunda kalmadan özel stillere sahip olmasını sağlar.
Uzantıyı bir vikide düzenleyici olarak kullanma talimatları için Help:TemplateStyles sayfasına bakın.
Kullanım
İlk olarak, CSS sayfası oluşturulmalıdır. Varsayılan olarak, Şablon ad alanındaki başlığı ".css" ile biten herhangi bir alt sayfa, sözdizimi hatası içermiyorsa, "Temizlenmiş CSS" content model ile oluşturulur.
Ad alanları seti $wgTemplateStylesNamespaces
ile ayarlanabilir veya Special:ChangeContentModel herhangi bir sayfada kullanılabilir.
Ardından, şablonun vikimetinde stilleri yüklemek için <templatestyles src="..." />
etiketini ekleyin.
"Sterilize edilmiş CSS" içerik modeli kullanılarak kaydedilen CSS, kesin geçerlilik gereksinimlerini karşılamalıdır: geçersiz CSS, tanınmayan kurallar ve tanınmayan veya desteklenmeyen özellikler veya özellik değerleri kaydedilemez. Geçersiz CSS yine de bir şekilde kaydedilirse, CSS tarayıcıya çıktılandığında rahatsız edici yapılar kaldırılır.
Etiketteki src
özelliğinin değeri, varsayılan olarak Şablon ad alanı olan sayfanın başlığıdır.
(Bu varsayılan, $wgTemplateStylesDefaultNamespace
ile değiştirilebilir.)
Örneğin, <templatestyles src="Example/styles.css" />
, "Template:Example/styles.css" sayfasını yükler.
Bu sayfa yoksa veya "Sterilize edilmiş CSS" dışında bir içerik modeli varsa bu başarısız olur.
Stiller, etikete isteğe bağlı wrapper
parametresi kullanılarak sayfa içinde, ör. <templatestyles src="Example/styles.css" wrapper="div.example" />
, ana ayrıştırılmış içeriğin içindeki herhangi bir <div class="example">
ile yüklenen stilleri kapsar.
wrapper
parametresi için herhangi bir CSS basit seçici dizisi kullanılabilir.
Bunun amacı, bir şablonun canlı ve korumalı alan sürümlerinin yan yana karşılaştırılmasına olanak sağlamaktır.
Dezenfekte edilmiş CSS kullanımı, şablonların kopyalanması gibi izlenir ve Special:WhatLinksHere bir dönüşüm olarak görünecektir.
Caveatlar
- TemplateStyles tarafından eklenen stillerin kapsamı, ayrıştırılmış ana içeriğin dışında kullanıcı arayüzünde değişiklik yapılmasını önlemek için
.mw-parser-output
kapsamındadır.- TemplateStyles'ı tr:MediaWiki:Protectedpagetext gibi bir şeye stil vermek için kullanmak için, mesajın içeriğini
<div class="mw-parser-output">...</div>
içine almanız gerekir.
- TemplateStyles'ı tr:MediaWiki:Protectedpagetext gibi bir şeye stil vermek için kullanmak için, mesajın içeriğini
- Stiller, belirli CSS sınıflarını hedefleyecek şekilde yazılmalıdır ve bu sınıflarla öğeler oluşturan her şey, bunu yapmak için başka bir şablona güvenmek yerine, stillerin kendisini de içerdiğinden emin olmalıdır.
- Bir şablon tarafından dahil edilen stiller, o şablon tarafından oluşturulan içeriğin dışındaki sayfadaki içeriği şu anda etkileyebilir, ancak bu özellik gelecekte kaldırılabilir ve bunlara güvenilmemelidir. (See discussion from phab:T155813#2996589 and in phab:T176272.)
- Bir şablona, o şablonun dışındaki içerikleri etkileyen stiller eklemek, bu şablonu içermeyen bir bölümü düzenlerken bu stillerin uygulanmamasına neden olur. Örnek: sayfanın tüm tablolarını etkileyen bir bilgi kutusuna stiller dahil olmak üzere, bilgi kutusunu içermeyen bir bölümü düzenlerken, o bölümün önizlemesi yapılırken bu tablolara stil uygulanmayacaktır.
- TemplateStyles does not support CSS variables, see phab:T320322.
- TemplateStyles birkaç standart olmayan CSS özelliğine izin verir. Ek özellikleri destekleme istekleri css-dezenfektan ve TemplateStyles projelerinde Phabricator'da dosyalanmalıdır.
- İstekler, istenen özelliklerin sözdizimini açıklayan standartlar içeren dokümanlara (ör. w3.org) bağlantılar ve özellikler için mevcut tarayıcı desteğinin bir analizini içermelidir (örneğin özellikler hakkında bir caniuse.com sayfasına bağlantı).
- Satıcı tarafından önceden eklenmiş özelliklerin (ör.
-webkit-
,-moz-
veya-ms-
ile başlayan herhangi bir şey), modern tarayıcılar için gerekli olmadıkları takdirde reddedilir.
@font-face
kuralları, "TemplateStyles" önekine sahip birfont-family
kullanmalıdır. Bu, belgenin başka bir yerinde kullanılan yazı tiplerinin yeniden tanımlanmasını büyük ölçüde engellemelidir.- Stilleri görünümlere göre hedeflemek için
body.skin-vector .myClass
gibi bir seçici kullanın;body
öğesinin belirtilmesi zorunludur ve bunu bir torun birleştiricisi (yani boşluk) takip etmelidir.body
veyahtml
öğeleri üzerindeki diğer sınıflar da aynı şekilde hedeflenebilir. See phab:T197617. 1.32+
Kurulum
- Dosyaları indirin ve
extensions/
klasörünüzdekiTemplateStyles
adlı dizine yerleştirin.
Developers and code contributors should install the extension from Git instead, using:cd extensions/
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/TemplateStyles - Yalnızca git dizininden yüklerken, PHP bağımlılıklarını uzantı dizinine
composer install --no-dev
vererek yüklemek için Composer komutunu çalıştırın. (Potansiyel komplikasyonlar için görev T173141 sayfasına bakınız.) - LocalSettings.php dosyanızın altına aşağıdaki kodu ekleyin:
wfLoadExtension( 'TemplateStyles' );
- Gerektiği gibi yapılandırın.
- Yapıldı – Uzantının başarıyla yüklendiğini doğrulamak için vikinizde Special:Version seçeneğine gidin.
Vagrant kurulumu:
- Vagrant kullanıyorsanız,
vagrant roles enable templatestyles --provision
ile yükleyin
Yapılandırma
parametre | varsayılan | yorum |
---|---|---|
$wgTemplateStylesAllowedUrls
|
[
"audio" => [
"<^https://upload\\.wikimedia\\.org/wikipedia/commons/>"
],
"image" => [
"<^https://upload\\.wikimedia\\.org/wikipedia/commons/>"
],
"svg" => [
"<^https://upload\\.wikimedia\\.org/wikipedia/commons/[^?#]*\\.svg(?:[?#]|$)>"
],
"font" => [],
"namespace" => [
"<.>"
],
]
|
PCRE düzenli ifadeleri, çeşitli harici kaynak türleri için izin verilen URL'lerle eşleşir.
Anahtarlar harici kaynak türleridir, değerler izin verilen URL'lerle eşleşecek şekilde normal ifadelerin (sınırlayıcılar dahil) dizileridir. Mevcut harici kaynak türleri:
|
$wgTemplateStylesNamespaces
|
[ NS_TEMPLATE => true ]
|
".css" ile biten başlıklar için "Sterilize edilmiş CSS" içerik modelinin ayarlanacağı ad alanları.
Bunu 2 (Kullanıcı) veya 8 (MediaWiki) için etkinleştirmek kötü bir fikirdir, çünkü bu ad alanlarındaki normal CSS dosyalarıyla çakışacaktır. |
$wgTemplateStylesPropertyBlacklist
|
[]
|
CSS stil kurallarında kara listeye alınacak özellikler.
TemplateStylesPropertySanitizer kanca daha hassas kontrol sağlar. |
$wgTemplateStylesAtRuleBlacklist
|
[]
|
Stil sayfalarında kara listeye almak için kurallar.
TemplateStylesStylesheetSanitizer kanca daha hassas kontrol sağlar. |
$wgTemplateStylesUseCodeEditor
|
true
|
"Sterilize edilmiş CSS" içerik türü için Extension:CodeEditor etkinleştirilip etkinleştirilmeyeceği. |
$wgTemplateStylesAutoParseContent
|
true
|
True olursa, "Sterilize edilmiş CSS" içerik modeli, CSS içerik modeli zaten bu dizide mevcutsa $wgTextModelsToParse ile eklenir.
False ise, kategorileri ve bu tür öğelerin CSS sayfasından ayrıştırılmasını istiyorsanız, bu diziye manüel olarak |
$wgTemplateStylesMaxStylesheetSize
|
102400
|
Stil sayfasının maksimum boyutu (bayt cinsinden). Sınırsız null .
|
$wgTemplateStylesDefaultNamespace
|
NS_TEMPLATE
|
<templatestyles> etiketinin src özniteliği için varsayılan ad alanı.
|
Diğer bağımlılıklar
$wgTidyConfig
toplama veya RemexHtml kullanacak şekilde yapılandırılmalıdır.
Raggett sürücülerinden herhangi biriyle kullanılırsa, paragrafın ortasındaki <templatestyles />
satırlık etiket (satır içi şablon dahil), bu noktada paragrafın kırılmasına neden olur.
Diğer sürücüler bu sorun için test edilmemiştir.
Olası hatalar
Aşağıdaki hatalardan herhangi birini yaşayıp yaşamadığınızı belirlemek için LocalSettings.php
dosyanızda $wgShowExceptionDetails ile etkinleştirmek yardımcı olabilir.
Class 'Wikimedia\CSS\Parser\Parser' not found
- This means a required library has not been installed. Bu hata, bir viki CSS sayfası içe aktarılmaya çalışıldığında veya bir sayfanın içerik modelini değiştirme "santized-css" olarak belirlendiğinde ortaya çıkabilir. 16 NBu, uzantı dağıtıcısındaki bir hata nedeniyle geçmişte yaygındı; artık olmamalı.
Import failed: The content model 'sanitized-css' is not registered on this wiki.
- Happens when you try to import a wiki page created via TemplateStyles, but TemplateStyles is not installed on your wiki.
Ayrıca bakınız
- Help:TemplateStyles
- css-sanitizer - CSS dezenfeksiyonu için kullanılır.
- phab:T483 "RfC: Şablonlarda stile izin ver" (bu uzantıyı Wikimedia vikilere depolama hakkında)
- phab:T56864 "ResourceLoader: Viki modüllerinde (kullanıcı ve site) LESS desteğini uygulayın, örn. MediaWiki:Common.less"
- phab:T155813 "TemplateStyles CSS için depolama ve dağıtım yöntemine karar verin"
- Mobil cihazlar için içerik hazırlamak artık daha kolay: Wikimedia Blog'da Vikipedi ölçeğinde duyarlı web tasarımı.
- Extension:TemplateStylesExtender
Bu uzantı bir veya daha fazla Wikimedia projelerinde kullanılıyor. Bu, muhtemelen uzantının kararlı olduğu ve bu tür yüksek trafikli web siteleri tarafından kullanılacak kadar iyi çalıştığı anlamına gelir. Nerede kurulduğunu görmek için bu uzantının adını Wikimedia'nın CommonSettings.php ve InitialiseSettings.php yapılandırma dosyalarında arayın. Belirli bir vikide yüklü olan uzantılar listesinin tamamı vikinin Special:Version sayfasında görülebilir. |
This extension is included in the following wiki farms/hosts and/or packages: This is not an authoritative list. Some wiki farms/hosts and/or packages may contain this extension even if they are not listed here. Always check with your wiki farms/hosts or bundle to confirm. |