ฉันจะแทนที่สไตล์ CSS ในเทมเพลตของฉันได้อย่างไร


21

เมื่อใช้เทมเพลต Joomla ฟรี / โฆษณาเชิงพาณิชย์จาก Template Club X / Y / Z วิธีที่ดีที่สุดในการรวมสไตล์ CSS ของตัวเองคืออะไร?


1
เพิ่มสไตล์ชีท custom.css หากเทมเพลตของคุณไม่มารับโดยอัตโนมัติคุณสามารถเพิ่มไว้ใน head.php ของคุณโดยปกติคือพา ธ : template / templatename / tpls / blocks / head.php <link rel = "stylesheet" href = "/ template / templatename / css / custom.css "type =" text / css "/>
Tony M

คำตอบ:


22

เหตุใดจึงต้องใช้การแทนที่ CSS

เป็นความคิดที่ดีที่จะแยกสไตล์ CSS ของคุณออกจากสไตล์เทมเพลตที่มีอยู่หากคุณใช้เทมเพลต Joomla ที่สร้างไว้ล่วงหน้า

  • ง่ายต่อการบำรุงรักษา
  • การเปลี่ยนแปลงของคุณจะไม่สูญหายไปหากคุณอัปเกรดแม่แบบ
  • คุณสามารถคัดลอก / ย้ายการแก้ไขไปยังเทมเพลตอื่นหรือไซต์อื่นได้อย่างง่ายดาย

การแทนที่ CSS ทำงานอย่างไร

CSS หมายถึง "Cascading Style Sheets", "Cascading" ในบริบทนี้มีความหมายว่าเนื่องจากกฎสไตล์ชีทมากกว่าหนึ่งรายการสามารถใช้กับส่วนใดส่วนหนึ่งของ HTML ได้กฎที่ใช้จะถูกเลือกโดยการเรียงลำดับจากกฎทั่วไปเพิ่มเติมไปยังกฎเฉพาะที่ต้องการ เลือกกฎเฉพาะส่วนใหญ่) หรือตามลำดับของกฎสำหรับองค์ประกอบใด ๆ (เลือกกฎล่าสุดที่พบ)

ตราบใดที่ไฟล์ CSS ที่กำหนดเองของคุณถูกโหลดหลังจากไฟล์ CSS เทมเพลตเริ่มต้นคุณสามารถเพิ่มสไตล์ของคุณเองเพื่อแทนที่องค์ประกอบเฉพาะตามต้องการ (มีข้อยกเว้นบางประการเพิ่มเติมด้านล่าง)

การใช้งานทั่วไป

ในการโหลดสไตล์ชีตแบบกำหนดเองใน<head>แท็กJoomla คุณสามารถเพิ่มโค้ดต่อไปนี้ลงในindex.phpไฟล์เทมเพลตของคุณ ( YOURDOMAIN.COM/templates/yourtemplate/index.php) ด้านขวาก่อน</head>แท็กสิ้นสุดเพื่อให้แน่ใจว่าไฟล์ของคุณจะถูกโหลดล่าสุด

JHtml::_('stylesheet', JUri::root() . 'templates/' . $this->template . '/css/custom.css');

(ไฟล์ CSS สามารถมีชื่อใด ๆ และไม่จำเป็นต้องอยู่ใน / css / โฟลเดอร์ย่อย แต่วิธีนี้จะสะอาดกว่า)

เป็นไปได้ที่จะเพิ่ม<link>แท็กปกติแต่ตัวเลือกนี้มีความยืดหยุ่นน้อยกว่าตัวเลือกที่กล่าวถึงข้างต้น:

<link rel="stylesheet" href="/joomla//templates/mytemplate/css/custom.css" type="text/css" />

!สิ่งสำคัญ

ส่วนขยายบางอย่างอาจโหลดสไตล์ CSS ของคุณหลังจากคุณ (หรือเพิ่มสไตล์โดยตรงในไฟล์ index.php) ดังนั้นจึงแทนที่การแทนที่ของคุณ โดยปกติสามารถแก้ไขได้ด้วยการเพิ่ม!importantสไตล์ของคุณเช่นh1{color:red!important;}

การใช้งานในกรอบที่แตกต่างกัน

ตอนนี้ความสนุก: กรอบแม่แบบหลายอย่างมีความเป็นไปได้ที่ผู้ใช้จะต้องการเปลี่ยนแปลงแม่แบบของพวกเขาดังนั้นจึงเป็นการเพิ่มวิธีที่ง่ายในการรวมการแทนที่ CSS ของคุณ นี่คือวิธีการบางส่วนที่ใช้:

RocketTheme Gantry 4

RocketTheme เทมเพลตขับเคลื่อนโดย Gantry Framework และไฟล์ CSS ที่กำหนดเองจะถูกโหลดโดยอัตโนมัติหากพบ ไฟล์ CSS ต้องถูกวางไว้ใน/templates/yourtemplate/css/โฟลเดอร์และชื่อจะต้องYOURTEMPLATEFOLDER-custom.cssเป็น

ตัวอย่าง:หากคุณกำลังใช้ฟรีของพวกเขาแม่ไดเรกทอรีแม่แบบเริ่มต้นคือAfterburner 2 /templates/rt_afterburner2/เพิ่มไฟล์ที่เรียกว่าrt_afterburner-custom.css(carefull with underscore and hyphen) ไปที่ / css / โฟลเดอร์ย่อยและมันจะถูกโหลดโดยอัตโนมัติโดย Gantry framework

รูปที่ 5

แม่แบบ Shape 5 มาพร้อมกับcustom.cssไฟล์เปล่าใน / css / ไดเรกทอรีย่อยของแม่แบบของคุณ เพียงเพิ่มสไตล์ของคุณลงในไฟล์นี้และจะรวมอยู่ในเลย์เอาต์ของคุณ

Gavick Pro

แม่แบบ Gavick Pro มาพร้อมกับoverrides.cssไฟล์เปล่าใน / css / ไดเรกทอรีย่อย แต่โปรดทราบว่าไฟล์นี้ไม่ได้โหลดตามค่าเริ่มต้นคุณต้องเปิดใช้งานOverride CSSในแท็บการตั้งค่าขั้นสูงในการตั้งค่าแม่แบบ

Joomla Shine

สร้างไฟล์ CSS ที่กำหนดเองใน css / / โฟลเดอร์ย่อยของเช่นแม่แบบของคุณและระบุชื่อไฟล์ที่custom.cssExtensions -> Templates -> [template name] -> SEO & System -> Custom CSS/JS File(s)

กรอบงาน T3

เทมเพลตที่อ้างอิงกับ T3 Framework อาจ / อาจไม่รวมcustom.cssไฟล์ใน / css / โฟลเดอร์ย่อยของเทมเพลตของคุณ (เพียงสร้างถ้ามันไม่มี) แต่เมื่อมีไฟล์จะถูกโหลดหลังจากไฟล์ CSS อื่น ๆ

Warp Framework

เทมเพลตที่ยึดตาม Warp Framework จะโหลดcustom.cssไฟล์ที่พบใน / css / โฟลเดอร์ย่อยโดยอัตโนมัติ ไฟล์ CSS เพิ่มเติมสามารถโหลดได้โดยการเพิ่ม

$this->warp->stylesheets->add('css:yourcssfile.css');

/layouts/template.config.phpไปยังแฟ้ม


2
สำหรับการใช้งานทั่วไปฉันขอแนะนำให้ใช้JHtml::_('stylesheet', 'path/to/file')มากกว่าที่addStyleSheetเป็นที่ถกเถียงกันอยู่แล้วเกี่ยวกับคำตอบอื่น :) นอกเหนือจากนั้นคำตอบที่ดีเลือด จะมีประโยชน์สำหรับคนทั่วไปอย่างแน่นอน
Lodder

ขอบคุณ @Lodder ฉันหวังว่าข้อมูลนี้จะเป็นประโยชน์กับผู้คน เกี่ยวกับข้อเสนอแนะของฉันฉันได้อ่านการอภิปราย สามารถJHtml::_ใช้กับได้$this->templateอย่างไร?
johanpw

2
JHtml::_('stylesheet', JUri::root() . 'templates/' . $this->template . '/css/style.css');
บ้านพัก

3
ที่จริงแล้วธีมจรวดที่ใหม่กว่านั้นใช้น้อยกว่า สิ่งที่คุณต้องทำคือสร้างไฟล์ในโฟลเดอร์ LESS ชื่อ template-custom.less และใส่รหัสของคุณลงไป จากนั้นคุณสามารถเพลิดเพลินกับเทคนิคที่น้อยกว่านำมา Warp 7 ช่วยให้คุณสร้าง "สไตล์" ของคุณเองในโฟลเดอร์สไตล์และคุณสามารถติดไฟล์ custom.css ในโฟลเดอร์นั้น (ภายในโฟลเดอร์ css ของตัวเอง) วิธีนั้นแต่ละสไตล์สามารถมี CSS ที่กำหนดเองได้ มันยังทำให้มันยืนขึ้นเพื่ออัพเกรดเทมเพลต การใช้ไฟล์ custom.css เริ่มต้นหมายความว่าไฟล์จะถูกเขียนทับทุกครั้งที่คุณอัพเกรดธีม
Brian Peat

1
คำตอบที่ดีและมีประโยชน์มาก! ตัวเลือกที่คุณอาจต้องการที่จะเพิ่มสำหรับแม่แบบ / กรอบที่ไม่ได้รวมถึงการจัดไฟล์ CSS ที่กำหนดเองก็คือการใช้ส่วนขยายของบุคคลที่สามเช่น CSSConfig extensions.joomla.org/extensions/style-a-design/templating/...ซึ่ง ถูกออกแบบมาเพื่อวัตถุประสงค์ที่แน่นอนนี้
Neil Robertson

7

Joomla 3.5+ (เทมเพลต Protostar)

ในฐานะของ Joomla 3.5 คุณสามารถสร้างไฟล์ชื่อuser.cssและวางไว้ใน:

แม่แบบ / Protostar css / / user.css

หมายเหตุ:ชื่อไฟล์จะต้องเป็นuser.css


เทมเพลต Protostar จะตรวจสอบว่า:

  • มีไฟล์อยู่
  • > 0ขนาดของไฟล์

หากตรงตามเงื่อนไขทั้งสองข้อมันจะนำเข้าไฟล์นี้โดยอัตโนมัติ

ดูคำขอดึงบน Github


5

Helix Framework ( JoomShaper )

เฟรมเวิร์กเทมเพลต Joomla อีกอันที่เอื้อต่อขั้นตอนการปรับแต่ง

แม่แบบ Helix Framework มอบวิธีที่ง่ายในการเพิ่มสไตล์ที่คุณกำหนดเองด้วย 2 วิธีที่สะดวก

  1. ในแผงควบคุมเทมเพลตในแบ็กเอนด์จะมีฟิลด์ CSS ที่กำหนดเอง ที่นี่คุณสามารถพิมพ์ css ของคุณซึ่งจะถูกเพิ่มเป็นองค์ประกอบสไตล์ในส่วนหัวของหน้าของคุณและเช่นนั้นมันจะมีความสำคัญมากกว่าไฟล์ css ภายนอกอื่น ๆ แน่นอนว่าตัวเลือกนี้ไม่เหมาะถ้าคุณวางแผนที่จะเขียนกลุ่มของบรรทัดของ css ดังนั้นจึงมีวิธีที่สอง

  2. ในฐานะแม่แบบเฟรมเวิร์กอื่น ๆ อีกมากมายHelixยังให้ความสามารถในการสร้างไฟล์ custom.css ของคุณ เพียงสร้างและวางไว้ในโฟลเดอร์ css ของแม่แบบ เทมเพลตจะแยกวิเคราะห์และจะรวมไว้ในส่วนหัวของหน้าเว็บของคุณ


3

Johanpw ทำงานได้ดีมากโดยตอบคำถามของเขาเอง ... โดยเฉพาะอย่างยิ่งเกี่ยวกับการแทนที่ CSS สำหรับเทมเพลตเชิงพาณิชย์จำนวนมาก

ฉันต้องการเพิ่มสองเซ็นต์ของฉันที่นี่เท่านั้น ...

ตามที่ Johanpw ขีดเส้นใต้การสร้างการแทนที่ CSS เป็นแนวทางปฏิบัติที่แนะนำ การรักษา CSS ที่กำหนดเองของคุณไว้ในไฟล์เดียวที่คุณรู้ว่ามันจะไม่ถูกลบหรือลบล้างหลังจากการอัปเดตเป็นสิ่งจำเป็น

นี่เป็นสิ่งสำคัญที่ต้องจำสำหรับส่วนขยาย Joomla ทั้งหมด อย่าพยายามเปลี่ยนไฟล์ css หลักของโมดูลหรือส่วนประกอบ ให้ลองสร้างไฟล์เทมเพลตที่กำหนดเองของคุณเองโหลดดีกว่าและสร้างสไตล์ที่กำหนดเองทั้งหมดของคุณขึ้นมา

ในกรณีที่เทมเพลตการค้าไม่มีวิธีเพิ่ม css override คุณสามารถใช้ส่วนขยายดังนี้: เพิ่ม CSS ที่กำหนดเองซึ่งอนุญาตสิ่งนี้ เพื่อสร้างไฟล์แทนที่ CSS ที่กำหนดเองของคุณและโหลดล่าสุด

ตัวเลือกอื่นที่ฉันมักทำในไซต์ที่ฉันจัดการคือการแก้ไขเทมเพลตและเพิ่มลิงค์ของตัวเองไปยังไฟล์ custom.css ของฉันก่อนแท็กส่วนหัวปิดของเทมเพลต นี่เป็นเรื่องเล็กน้อยจำง่ายและกู้คืนการแก้ไขซึ่งฉันไม่สามารถจัดการได้เมื่อมีการอัปเดตแม่แบบ


3

โครงสำหรับตั้งสิ่งของ 5 (RocketTheme)

Gantry 5เป็นเวอร์ชันล่าสุดของกรอบงานแม่แบบที่ได้รับความนิยมและมีคุณสมบัติและความสามารถใหม่มากมาย

เกี่ยวกับการแทนที่ CSS มีความยืดหยุ่นและตัวเลือกมากมาย

การใช้ชุดรูปแบบไฮโดรเจนที่วางจำหน่ายเป็นเทมเพลต Gantry 5 มาตรฐานจะมีโฟลเดอร์ที่กำหนดเอง

โฟลเดอร์นี้มีไว้สำหรับผู้ใช้ในการวางไฟล์ / การแทนที่แบบกำหนดเองสำหรับโครงร่าง / เทมเพลตโครงสำหรับตั้งสิ่งของ (เพื่อไม่ให้สับสนกับการแทนที่เทมเพลต Joomla ซึ่งยังคงอยู่ในโฟลเดอร์ template / html) คุณสามารถใส่ไฟล์ custom.css ในนั้นได้ จากนั้นผ่าน Gantry Template Administration Panel คุณสามารถปรับแต่งเลย์เอาต์แม่แบบของคุณและใช้Custom CSS / JS Atom Particle (ฟีเจอร์ gantry 5 ใหม่) เพื่อเพิ่มcustom.cssของคุณไปยังเทมเพลต Gantry 5 ยังมีลิงก์สตรีมที่เรียกว่า(เช่นทางลัด) เพื่อเชื่อมโยงไฟล์ custom.css ของคุณได้อย่างง่ายดาย

ดังนั้นจากภายในอนุภาค Atom คุณจะเชื่อมโยงมันโดยใช้:

gantry-theme://custom/thing.css

gantry-theme://ลัดเสมอจะอ้างถึงโฟลเดอร์กล้องแม่แบบปัจจุบัน

การใช้วิธีนี้เป็นวิธีที่มีประสิทธิภาพในการเพิ่ม custom.css สำหรับแม่แบบเฉพาะของแม่แบบ gantry5 ของคุณ

วิธีที่สองที่ใช้ได้ทั่วโลกสำหรับเทมเพลตโครงสำหรับตั้งสิ่งของทั้งหมดคือโดยการเพิ่มไฟล์custom.scssภายใน:

template_directory/custom/scss/custom.scss

การทำเช่นนั้น gantry5 จะทำการโหลดและคอมไพล์ไฟล์ scss นี้เสมอและกฎ css ใด ๆ ที่คุณใช้จะแทนที่กฎเริ่มต้นของเทมเพลต

ภายในไฟล์ scss คุณจะปรับได้อย่างสมบูรณ์แบบไม่ว่าจะใช้ SCSS หรือเพียงแค่ CSS คอมไพเลอร์สามารถรวบรวมทั้งสอง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.