Extension:TemplateStyles

This page is a translated version of the page Extension:TemplateStyles and the translation is 82% complete.
Outdated translations are marked like this.
MediaWiki manüel uzantıları
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
  • $wgTemplateStylesUseCodeEditor
  • $wgTemplateStylesDisable
  • $wgTemplateStylesDefaultNamespace
  • $wgTemplateStylesDisallowedAtRules
  • $wgTemplateStylesDisallowedProperties
  • $wgTemplateStylesAllowedUrls
  • $wgTemplateStylesAutoParseContent
  • $wgTemplateStylesMaxStylesheetSize
  • $wgTemplateStylesNamespaces
<templatestyles src=... />
Quarterly downloads 1,304 (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 to be 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.
  • 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 bir font-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 veya html öğeleri üzerindeki diğer sınıflar da aynı şekilde hedeflenebilir. See phab:T197617. 1.32+

Kurulum

  • Dosyaları indirin ve extensions/ klasörünüzdeki TemplateStyles 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
Sözdizimi vurgulamalı ve autoindent özellikli bir kod düzenleyicili daha hoş bir kullanıcı arabirimi için aşağıdaki uzantıları yükleyin:

Yapılandırma

Yapılandırma ayarları
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:

audio
CSS Konuşma Modülünün cue özellikleri için ses dosyası.
image
background gibi özellikler için resim dosyası.
svg
Kamufle ve Filtreler için SVG dosyası.
font
@font-face için src.
namespace
@namespace. için
$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 'sanitized-css' ekleyin.

$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