Jared hace 1 año
commit
465eced651
Se han modificado 90 ficheros con 6279 adiciones y 0 borrados
  1. 6 0
      archetypes/default.md
  2. 9 0
      config.toml
  3. 51 0
      content/news/1/1.md
  4. 23 0
      content/news/10/1.md
  5. 39 0
      content/news/11/1.md
  6. 29 0
      content/news/12/1.md
  7. 47 0
      content/news/13/1.md
  8. 36 0
      content/news/14/1.md
  9. 39 0
      content/news/15/1.md
  10. 61 0
      content/news/16/1.md
  11. 84 0
      content/news/17/1.md
  12. 79 0
      content/news/18/1.md
  13. 26 0
      content/news/19/1.md
  14. 37 0
      content/news/2/1.md
  15. 40 0
      content/news/3/1.md
  16. 40 0
      content/news/4/1.md
  17. 230 0
      content/news/5/1.md
  18. 137 0
      content/news/6/1.md
  19. 99 0
      content/news/7/1.md
  20. 40 0
      content/news/8/1.md
  21. 48 0
      content/news/9/1.md
  22. 2 0
      layouts/shortcodes/rawhtml.html
  23. 129 0
      static/css/reset.css
  24. 436 0
      static/css/style.css
  25. 0 0
      static/css/style.css.map
  26. 499 0
      static/css/style.scss
  27. 1 0
      static/googlea343783bd909616f.html
  28. BIN
      static/img/image.jpg
  29. 39 0
      static/js/main.js
  30. 20 0
      themes/hugo-bootstrap-5/LICENSE.md
  31. 52 0
      themes/hugo-bootstrap-5/README.md
  32. 105 0
      themes/hugo-bootstrap-5/exampleSite/config.toml
  33. 13 0
      themes/hugo-bootstrap-5/exampleSite/content/about.de.md
  34. 13 0
      themes/hugo-bootstrap-5/exampleSite/content/about.es.md
  35. 13 0
      themes/hugo-bootstrap-5/exampleSite/content/about.md
  36. 5 0
      themes/hugo-bootstrap-5/exampleSite/content/contact.de.md
  37. 5 0
      themes/hugo-bootstrap-5/exampleSite/content/contact.es.md
  38. 5 0
      themes/hugo-bootstrap-5/exampleSite/content/contact.md
  39. 13 0
      themes/hugo-bootstrap-5/exampleSite/content/post/2015-01-04-first-post.es.md
  40. 13 0
      themes/hugo-bootstrap-5/exampleSite/content/post/2015-01-04-first-post.md
  41. 13 0
      themes/hugo-bootstrap-5/exampleSite/content/post/2016-01-04-first-post.de.md
  42. 4 0
      themes/hugo-bootstrap-5/exampleSite/content/post/_index.md
  43. 1147 0
      themes/hugo-bootstrap-5/exampleSite/content/post/creating-a-new-theme.md
  44. 344 0
      themes/hugo-bootstrap-5/exampleSite/content/post/goisforlovers.de.md
  45. 344 0
      themes/hugo-bootstrap-5/exampleSite/content/post/goisforlovers.es.md
  46. 344 0
      themes/hugo-bootstrap-5/exampleSite/content/post/goisforlovers.md
  47. 90 0
      themes/hugo-bootstrap-5/exampleSite/content/post/hugoisforlovers.de.md
  48. 90 0
      themes/hugo-bootstrap-5/exampleSite/content/post/hugoisforlovers.es.md
  49. 90 0
      themes/hugo-bootstrap-5/exampleSite/content/post/hugoisforlovers.md
  50. 153 0
      themes/hugo-bootstrap-5/exampleSite/content/post/migrate-from-jekyll.md
  51. 3 0
      themes/hugo-bootstrap-5/exampleSite/layouts/partials/brand.html
  52. 3 0
      themes/hugo-bootstrap-5/go.mod
  53. 29 0
      themes/hugo-bootstrap-5/i18n/de.yaml
  54. 29 0
      themes/hugo-bootstrap-5/i18n/en.yaml
  55. 29 0
      themes/hugo-bootstrap-5/i18n/es.yaml
  56. 29 0
      themes/hugo-bootstrap-5/i18n/fr.yaml
  57. 29 0
      themes/hugo-bootstrap-5/i18n/it.yaml
  58. BIN
      themes/hugo-bootstrap-5/images/screenshot.png
  59. BIN
      themes/hugo-bootstrap-5/images/screenshot2.png
  60. BIN
      themes/hugo-bootstrap-5/images/tn.png
  61. 10 0
      themes/hugo-bootstrap-5/layouts/404.html
  62. 53 0
      themes/hugo-bootstrap-5/layouts/_default/baseof.html
  63. 27 0
      themes/hugo-bootstrap-5/layouts/_default/content.html
  64. 115 0
      themes/hugo-bootstrap-5/layouts/_default/list.html
  65. 45 0
      themes/hugo-bootstrap-5/layouts/_default/single.html
  66. 45 0
      themes/hugo-bootstrap-5/layouts/_default/taxonomy.html
  67. 64 0
      themes/hugo-bootstrap-5/layouts/index.html
  68. 1 0
      themes/hugo-bootstrap-5/layouts/partials/brand.html
  69. 38 0
      themes/hugo-bootstrap-5/layouts/partials/focus.html
  70. 12 0
      themes/hugo-bootstrap-5/layouts/partials/footer.html
  71. 31 0
      themes/hugo-bootstrap-5/layouts/partials/head.html
  72. 44 0
      themes/hugo-bootstrap-5/layouts/partials/header.html
  73. 59 0
      themes/hugo-bootstrap-5/layouts/partials/news-all.html
  74. 46 0
      themes/hugo-bootstrap-5/layouts/partials/news-featured.html
  75. 44 0
      themes/hugo-bootstrap-5/layouts/partials/news-main.html
  76. 87 0
      themes/hugo-bootstrap-5/layouts/partials/news-tab.html
  77. 16 0
      themes/hugo-bootstrap-5/layouts/partials/news.html
  78. 45 0
      themes/hugo-bootstrap-5/layouts/partials/paginator.html
  79. 8 0
      themes/hugo-bootstrap-5/layouts/partials/post-categories.html
  80. 11 0
      themes/hugo-bootstrap-5/layouts/partials/post-date.html
  81. 8 0
      themes/hugo-bootstrap-5/layouts/partials/post-tags.html
  82. 9 0
      themes/hugo-bootstrap-5/layouts/partials/post-title.html
  83. 29 0
      themes/hugo-bootstrap-5/layouts/partials/recent.html
  84. 11 0
      themes/hugo-bootstrap-5/layouts/partials/related.html
  85. 1 0
      themes/hugo-bootstrap-5/layouts/partials/sidebar-custom.html
  86. 23 0
      themes/hugo-bootstrap-5/layouts/partials/sidebar.html
  87. 29 0
      themes/hugo-bootstrap-5/layouts/partials/taxonomies.html
  88. 10 0
      themes/hugo-bootstrap-5/layouts/partials/translations.html
  89. 8 0
      themes/hugo-bootstrap-5/static/css/style.css
  90. 17 0
      themes/hugo-bootstrap-5/theme.toml

+ 6 - 0
archetypes/default.md

@@ -0,0 +1,6 @@
+---
+title: "{{ replace .Name "-" " " | title }}"
+date: {{ .Date }}
+draft: true
+---
+

+ 9 - 0
config.toml

@@ -0,0 +1,9 @@
+baseURL = "https://news.aimedia.cc/"
+languageCode = "en-us"
+title = "AI Media News"
+theme = "hugo-bootstrap-5"
+paginate = 10
+publishDir = "/tmp/news_aimedia_cc"
+[taxonomies]
+  tag = 'tags'
+  category = 'categories'

+ 51 - 0
content/news/1/1.md

@@ -0,0 +1,51 @@
+---
+title: "ACML bans use of ChatGPT and AI language tools to write academic papers"
+date: 2023-01-25T00:56:29+08:00
+draft: false
+display: true
+tags: ["chatgpt"]
+categories: ["AI"]
+description: "-"
+url: "/blog/1"
+image: "https://cdn.searchenginejournal.com/wp-content/uploads/2022/12/what-is-chatgpt-6393027101b3c-sej.jpg"
+type: "focus"
+---
+
+AI tools can be used to ‘edit’ and ‘polish’ authors’ work, say the conference organizers, but text ‘produced entirely’ by AI is not allowed. This raises the question: where do you draw the line between editing and writing?
+
+One of the world’s most prestigious machine learning conferences has banned authors from using AI tools like ChatGPT to write scientific papers, triggering a debate about the role of AI-generated text in academia.
+
+The International Conference on Machine Learning (ICML) announced the policy earlier this week, stating, “Papers that include text generated from a large-scale language model (LLM) such as ChatGPT are prohibited unless the produced text is presented as a part of the paper’s experimental analysis.” The news sparked widespread discussion on social media, with AI academics and researchers both defending and criticizing the policy. The conference’s organizers responded by publishing a longer statement explaining their thinking. (The ICML responded to requests from The Verge for comment by directing us to this same statement.)
+
+According to the ICML, the rise of publicly accessible AI language models like ChatGPT — a general purpose AI chatbot that launched on the web last November — represents an “exciting” development that nevertheless comes with “unanticipated consequences [and] unanswered questions.” The ICML says these include questions about who owns the output of such systems (they are trained on public data, which is usually collected without consent and sometimes regurgitate this information verbatim) and whether text and images generated by AI should be “considered novel or mere derivatives of existing work.”
+
+The latter question connects to a tricky debate about authorship — that is, who “writes” an AI-generated text: the machine or its human controller? This is particularly important given that the ICML is only banning text “produced entirely” by AI. The conference’s organizers say they are not prohibiting the use of tools like ChatGPT “for editing or polishing author-written text” and note that many authors already used “semi-automated editing tools” like grammar-correcting software Grammarly for this purpose.
+
+“It is certain that these questions, and many more, will be answered over time, as these large-scale generative models are more widely adopted. However, we do not yet have any clear answers to any of these questions,” write the conference’s organizers.
+
+As a result, the ICML says its ban on AI-generated text will be reevaluated next year.
+
+The questions the ICML is addressing may not be easily resolved, though. The availability of AI tools like ChatGPT is causing confusion for many organizations, some of which have responded with their own bans. Last year, coding Q&A site Stack Overflow banned users from submitting responses created with ChatGPT, while New York City’s Department of Education blocked access to the tool for anyone on its network just this week.
+
+In each case, there are different fears about the harmful effects of AI-generated text. One of the most common is that the output of these systems is simply unreliable. These AI tools are vast autocomplete systems, trained to predict which word follows the next in any given sentence. As such, they have no hard-coded database of “facts” to draw on — just the ability to write plausible-sounding statements. This means they have a tendency to present false information as truth since whether a given sentence sounds plausible does not guarantee its factuality.
+
+In the case of ICML’s ban on AI-generated text, another potential challenge is distinguishing between writing that has only been “polished” or “edited” by AI and that which has been “produced entirely” by these tools. At what point do a number of small AI-guided corrections constitute a larger rewrite? What if a user asks an AI tool to summarize their paper in a snappy abstract? Does this count as freshly generated text (because the text is new) or mere polishing (because it’s a summary of words the author did write)?
+
+Before the ICML clarified the remit of its policy, many researchers worried that a potential ban on AI-generated text could also be harmful to those who don’t speak or write English as their first language. Professor Yoav Goldberg of the Bar-Ilan University in Israel told The Verge that a blanket ban on the use of AI writing tools would be an act of gatekeeping against these communities.
+
+“There is a clear unconscious bias when evaluating papers in peer review to prefer more fluent ones, and this works in favor of native speakers,” says Goldberg. “By using tools like ChatGPT to help phrase their ideas, it seems that many non-native speakers believe they can ‘level the playing field’ around these issues.” Such tools may be able to help researchers save time, said Goldberg, as well as better communicate with their peers.
+
+But AI writing tools are also qualitatively different from simpler software like Grammarly. Deb Raji, an AI research fellow at the Mozilla Foundation, told The Verge that it made sense for the ICML to introduce policy specifically aimed at these systems. Like Goldberg, she said she’d heard from non-native English speakers that such tools can be “incredibly useful” for drafting papers, and added that language models have the potential to make more drastic changes to text.
+
+“I see LLMs as quite distinct from something like auto-correct or Grammarly, which are corrective and educational tools,” said Raji. “Although it can be used for this purpose, LLMs are not explicitly designed to adjust the structure and language of text that is already written — it has other more problematic capabilities as well, such as the generation of novel text and spam.”
+
+“At the end of the day the authors sign on the paper, and have a reputation to hold.”
+
+Goldberg said that while he thought it was certainly possible for academics to generate papers entirely using AI, “there is very little incentive for them to actually do it.”
+
+“At the end of the day the authors sign on the paper, and have a reputation to hold,” he said. “Even if the fake paper somehow goes through peer review, any incorrect statement will be associated with the author, and ‘stick’ with them for their entire careers.”
+
+This point is particularly important given that there is no completely reliable way to detect AI-generated text. Even the ICML notes that foolproof detection is “difficult” and that the conference will not be proactively enforcing its ban by running submissions through detector software. Instead, it will only investigate submissions that have been flagged by other academics as suspect.
+
+In other words: in response to the rise of disruptive and novel technology, the organizers are relying on traditional social mechanisms to enforce academic norms. AI may be used to polish, edit, or write text, but it will still be up to humans to assess its worth.
+

+ 23 - 0
content/news/10/1.md

@@ -0,0 +1,23 @@
+---
+title: "Michael Cudlitz Joins ‘Superman & Lois’ As New Lex Luthor In Season 3"
+date: 2023-01-24T22:56:29+08:00
+draft: false
+display: true
+tags: ["Michael Cudlitz"]
+categories: ["entertainment"]
+description: "-"
+url: "/blog/10"
+image: "https://deadline.com/wp-content/uploads/2023/01/michael-cudlitz.jpg?w=681&h=383&crop=1"
+type: "post"
+---
+
+The Walking Dead‘s Michael Cudlitz has been tapped to play a new version of Lex Luthor in the upcoming third season of CW’s Superman & Lois. The actor confirmed the news, first reported by EW, on Twitter.
+
+Per the official character description: Lex is “known to the world as the visionary billionaire behind LexCorp, but secretly, the criminal underworld knows who Lex truly is: a brutal psychopath who terrorizes anyone he crosses paths with. When Lex debuts this season, it’s been years since he dropped out of the public eye and he’s re-emerging hellbent on correcting a personal injustice by enacting revenge on the two people he feels have wronged him — Superman (played by Tyler Hoechlin) and Lois Lane (Elizabeth Tulloch).
+
+The third season of Superman & Lois opens weeks after Superman’s blowout defeat of Ally Allston. Clark (Hoechlin) and Lois (Tulloch) now are working at the Smallville Gazette together and enjoying small town life. But the Kents’ romantic bliss only shines a light on how isolating “the secret” can be, as Chrissy (Sofia Hasmik) struggles to balance a new love interest and her friendship with Lois. However, Lois’ own work-life balance is put to the test when an undercover assignment reveals a deadly foe that promises to change the Kent family forever. Superman would move heaven and earth for his family, but with a villain this merciless, even that might not be enough.
+
+Meanwhile, the Kent boys find themselves being pulled in opposite directions as Jordan (Alex Garfin) discovers what a superhero-identity really means and Jonathan (Michael Bishop) searches for purpose beyond the football field. Amid all this upheaval, John Henry (Wolé Parks) is haunted by his doppelgänger’s past, leading to dangerous consequences for him and Natalie (Tayler Buck). Lana Lang (Emmanuelle Chriqui) and Kyle (Erik Valdez) redefine their family post-separation, while Sarah (Inde Navarrette) explores what the future holds for her and Jordan now that she knows the truth about his powers. Having learned the hard way that no one else can be trusted to work with Superman, General Samuel Lane (Dylan Walsh) reclaims his post at the Department of Defense, only to face his own conflict in working with his grandson, Jordan.
+
+Based on the characters from DC created by Jerry Siegel and Joe Shuster, Superman & Lois is from Berlanti Productions in association with Warner Bros. Television, with executive producers Greg Berlanti, Todd Helbing, Sarah Schechter, Geoff Johns, and David Madden.
+

+ 39 - 0
content/news/11/1.md

@@ -0,0 +1,39 @@
+---
+title: "T-ara’s Jiyeon Announces Marriage To Professional Baseball Player Hwang Jae Gyun"
+date: 2023-01-24T22:56:29+08:00
+draft: false
+display: true
+tags: ["Jiyeon"]
+categories: ["entertainment"]
+description: "-"
+url: "/blog/11"
+image: "https://6.viki.io/image/37eb3f38925e416eae1b36cc75f33ed4/dummy.jpeg?s=900x600&e=t"
+type: "post"
+---
+
+T-ara’s Jiyeon and KT Wiz professional baseball player Hwang Jae Gyun are getting married!
+
+On February 10, Jiyeon wrote a letter to fans on Instagram.
+
+Hello, this is Jiyeon.
+
+There’s something I wanted to share with my fans directly, so I took courage in order to write this.
+
+I debuted in my teens, and somehow the time has flown by and I’m now in my 30s.
+
+When I was surrounded by anxieties and uncertainties after my debut as a young and scared teenager, when I wanted to give up due to hard times in my 20s, it was thanks to you who reached out your hands to me and cheered me on that I was able to pass through the long tunnel and get to where I am today.
+
+Rather than hearing the news from other people, I wanted to tell my fans directly through my own words.
+
+Last year, I had a boyfriend whom I started dating after meeting through an acquaintance. He is always considerate of me, takes care of me, and taught me what happiness is. Next winter, I will exchange vows with this boyfriend who has been like a gift that life has given me.
+
+I will live happily and beautifully with my dependable boyfriend, who has always given me his shoulder to lean on and took firm hold of me when I was feeling unstable.
+
+I’m worried that you might be surprised by the sudden news. Now that the day has come for me to share this happiness with everyone, I’m also nervous and shaking as I write word by word.
+
+I will continue to repay the love and support of fans by showing a good image. Thank you and I love you.
+
+Hwang Jae Gyun wrote, “I have found a person that I want to spend forever with. During a difficult period last year, I met someone who took firm hold of me and helped me even just standing by my side, and we have decided to get married. I was worried that I could affect the mood of my team, KT, who are working hard with the one goal of winning, with news about my dating and marriage in the middle of the season where we need to be focused on games. That’s why we are announcing this ahead of the start of the season.”
+
+Congratulations to the couple!
+

+ 29 - 0
content/news/12/1.md

@@ -0,0 +1,29 @@
+---
+title: "Daveed Diggs Signs With CAA "
+date: 2023-01-24T22:56:29+08:00
+draft: false
+display: true
+tags: ["Daveed Diggs"]
+categories: ["entertainment"]
+description: "-"
+url: "/blog/12"
+image: "https://variety.com/wp-content/uploads/2023/01/daveed-diggs-caa-pc-sophie-elgort.jpg?w=681&h=383&crop=1"
+type: "post"
+---
+
+Daveed Diggs has signed with CAA for representation.
+
+Diggs originated the dual role of Thomas Jefferson and Marquis de Lafayette in the Broadway production of “Hamilton,” which won him a Tony and Grammy award. For his performance in Disney+’s 2021 filmed production of “Hamilton,” Diggs was also nominated for an Emmy award for outstanding supporting actor in a limited or anthology series or movie and a SAG award for performance by a male actor in a TV movie or miniseries.
+
+He co-wrote, produced and starred opposite Rafael Casal in Lionsgate’s critically acclaimed feature “Blindspotting” and co-wrote and executive produced the Starz television spinoff, starring Jasmine Cephas Jones.
+
+Diggs earned an Independent Spirit Award nomination for his performance, while the series — which has been renewed for a second season — garnered a Gotham Award nomination and an Indie Spirit Award nomination.
+
+More recently, he’s taken his talents to Disney. Diggs is scheduled to appear as Sebastian alongside Halle Bailey and Melissa McCarthy in Rob Marshall’s live-action adaptation of “The Little Mermaid.” Javier Bardem and Awkwafina will also star in the film. He also starred in Pixar’s “Soul.”
+
+His additional film credits include Lionsgate’s “Wonder” opposite Julia Roberts, Netflix’s “Velvet Buzzsaw” opposite Jake Gyllenhaal and “The Starling” opposite Melissa McCarthy. He also starred for three seasons on HBO Max’s “Snowpiercer” opposite Jennifer Connelly, and will next be seen in Apple TV+’s “Extrapolations” from showrunner Scott Burns.
+
+Diggs is also a member of the West Coast-based experimental hip-hop trio, Clipping.
+
+He continues to be represented by Brookside Artist Management, The Lede Company and Johnson, Shapiro, Slewett and Kole.
+

+ 47 - 0
content/news/13/1.md

@@ -0,0 +1,47 @@
+---
+title: "Neil Diamond: A Five-Decade Songwriting Celebration"
+date: 2023-01-24T22:56:29+08:00
+draft: false
+display: true
+tags: ["Neil Diamond"]
+categories: ["entertainment"]
+description: "-"
+url: "/blog/13"
+image: "https://s.yimg.com/ny/api/res/1.2/Z8zdXHaa.oA64KM28Fb.HA--/YXBwaWQ9aGlnaGxhbmRlcjt3PTk2MDtoPTU3NjtjZj13ZWJw/https://media.zenfs.com/en/udiscovermusic_435/8469c4b029b90613f883b01291a3e91a"
+type: "focus"
+---
+
+The March 2017 release of Neil Diamond 50 — The 50th Anniversary Collection not only marked half a century of creativity by an American original. It also provided the chance to single out some landmark songs from the compilation, across five decades of superb songwriting and performing by this Grammy Award-winning member of the Rock and Roll Hall of Fame, born on January 24, 1941.
+
+1966-1976: No Solitary Man
+The 50 retrospective observed the 50th anniversary of 1966’s “Solitary Man,” the first hit by Brooklyn-born Neil Leslie Diamond. He had paid plenty of dues by then as a jobbing songwriter and formative recording artist. Some of those experiences were indeed solitary in their lack of wider recognition, but they served him well once he made the grade and became prolifically successful.
+
+“Solitary Man” was prefaced by his first hit cover, when Jay and the Americans took Diamond’s “Sunday And Me” into the US Top 20 in late 1965. When the Monkees became international TV and recording sensations, the New Yorker played a key role, as they sang his “I’m A Believer,” “A Little Bit Me, A Little Bit You,” and others.
+
+‘Passing By 1999’: Jacky Cheung’s Mandopop Masterpiece
+Lady Gaga And Rihanna Score Oscars 2023 Nominations
+Becky Hill, Lizzo, David Guetta To Perform At 2023 BRIT Awards
+But Diamond was now keeping many of his best songs for himself, hitting the US Top 10 with other such early gems as “Cherry, Cherry” and “Girl, You’ll Be A Woman Soon.” By the late 1960s, he was complementing his singles output with chart albums, tapping into the LP market with such discs as Touching You, Touching Me, the 1969 set whose title was inspired by “Sweet Caroline.” That was one of many anthems in a decade that also included his two solo US No.1s, “Cracklin’ Rosie” and “Song Sung Blue.”
+
+1977-1986: Hello Again
+After 1976’s Beautiful Noise, produced by Robbie Robertson, Diamond segued effortlessly into his second decade of acclaim with such albums as I’m Glad You’re Here With Me Tonight and You Don’t Bring Me Flowers. The title song of the latter LP gave him a third US bestseller in an inspired pairing with his old school friend Barbra Streisand.
+
+Diamond was already noted for his momentous live shows, which had produced 1972’s celebrated Hot August Nights album. That was followed in 1977 by Love At The Greek, recorded like its predecessor at the Greek Theater in Los Angeles. As the clock turned to the 1980s, the hit songs continued to pour from him, including three consecutive American Top 10 singles in “Love On The Rocks,” “Hello Again,” and “America.” All three came from the soundtrack of the 1980 remake of The Jazz Singer, in which Diamond starred alongside Laurence Olivier.
+
+An unbroken run of gold and platinum-selling albums of the period included September Morn and Heartlight, the title track from which became another Top 10 success, inspired as it was by the smash hit movie E-T. This was also the decade in which British reggae band UB40 took Diamond’s “Red Red Wine” to the top of the UK charts in 1983, a feat it repeated in America in 1988.
+
+1987-1996: Backwards & Forwards
+Always exploring new avenues as a writer and performer, Diamond’s catalog from the later 1980s to the mid-90s included a nod to his early days on Up On The Roof — Songs From The Brill Building, in 1993, and the country-themed Tennessee Moon album of 1996. The first saw him addressing the vintage pop songs of others, from Leiber & Stoller to Bacharach & David, but the second had him duetting on his own new material, with such fellow great voices as Waylon Jennings and Raul Malo.
+
+
+His songs may no longer have been featuring on the Billboard Hot 100, but Diamond continued to be a fixture on the Adult Contemporary charts. During the decade, he had Top 10 AC singles with “This Time” and “The Best Years Of Our Lives,” both from the 1988 album also titled The Best Years Of Our Lives, which went gold as usual.
+
+By now, Diamond was reaching another new generation of fans, with many of his earlier hits enshrined as all-time American classics. He happily performed them on his many tours, and found great success with two Christmas albums in the first half of the 90s, the first of which sold four million copies in the US alone.
+
+1997-2006: A 12-song Rebirth
+Diamond was now equally comfortable taking on entire discs of themed covers, such as 1998’s The Movie Album: As Time Goes By, as he was collections of his own continuingly productive songwriting. In 2001, he released Three Chord Opera, whose 12 songs included the Top 30 Adult Contemporary hit “You’re The Best Part Of Me.”
+
+In 2000, Diamond was paid a huge artistic compliment when Johnny Cash covered his “Solitary Man,” and made it effectively the title track, on the third instalment of his American Recordings series, American III: Solitary Man. Herein was a link to a remarkable refuelling of Neil's own career a few years later. In 2005, the producer of those momentous Cash albums, Rick Rubin, oversaw a similar retooling of Diamond’s sound and image.
+
+The album in question was 12 Songs, which stripped Neil’s songwriting back to its essential incisiveness and was universally hailed as his best work in many years. Indeed, many of the musicians who played on the Cash albums were present here, including Mike Campbell and Benmont Tench from Tom Petty’s Heartbreakers; 12 Songs (featuring “Hell Yeah”) also contained a guest appearance by Brian Wilson on the special edition bonus track “Delirious Love,” and the last-ever album contribution by Billy Preston, who died the following year.
+

+ 36 - 0
content/news/14/1.md

@@ -0,0 +1,36 @@
+---
+title: "'Vincenzo,' 'Weak Hero Class 1' actor Na Chul dies at 36"
+date: 2023-01-24T22:56:29+08:00
+draft: false
+display: true
+tags: ["Na Chul"]
+categories: ["entertainment"]
+description: "-"
+url: "/blog/14"
+image: "https://s.yimg.com/ny/api/res/1.2/Xf_hijxgqMg_uu8Atl5OlA--/YXBwaWQ9aGlnaGxhbmRlcjt3PTcwNTtoPTM5NztjZj13ZWJw/https://media.zenfs.com/en/nextshark_articles_509/4b2aa3b98650f584748c47fc93fe4583"
+type: "focus"
+---
+
+
+South Korean actor Na Chul died in a hospital over the weekend at the age of 36, according to local reports.
+
+Na, whose health had taken a turn for the worse recently, died while undergoing treatment for an undisclosed illness on Saturday morning, South Korean media reported.
+
+His funeral was held at Soonchunhyang University Hospital Funeral Home in Seoul on Monday.
+
+Several South Korean celebrities posted their condolences online after news of Na’s death surfaced over the weekend.
+
+More from NextShark: South Korea Passes Law to Allow BTS to Delay Military Service Until Age 30
+
+Kim Go-eun, a friend of Na who also appeared in the 2022 tvN series “Little Women,” reportedly canceled an upcoming fashion show appearance after hearing about his death.
+
+“The best actor Na-cheol. The greatest person, father, husband, son and friend Na-cheol,” Kim wrote in Korean in an Instagram tribute on Saturday.
+
+She then uploaded a picture of her and Na together with other people on Sunday. "I'm sorry I couldn't stay by your side," she wrote in the post's caption in Korean. "Thank you for creating those precious times. I don't know why you were in such a rush but that place will be better than here. I'll take care of your two treasures left here. Don't worry."
+
+Meanwhile, Uhm Ji-won, who also appeared in “Little Women,” paid tribute to Na via Instagram Stories. "Dear Na-cheol, thank you for showing us great acting... I was looking forward to seeing more of your acting... RIP," she wrote in Korean.
+
+Known for his roles in movies and TV shows such as the hit tvN series “Vincenzo,” Na, who recently celebrated his birthday in December 2022, reportedly made his debut in the play “Anne’s Diary” in 2010.
+
+In addition to "Vincenzo" and "Little Women," Na has also appeared in other projects, such as "The Good Wife" and the second season of "Hospital Playlist." His role as Kim Gil-soo in the web series “Weak Hero Class 1” is his most recent onscreen appearance.
+

+ 39 - 0
content/news/15/1.md

@@ -0,0 +1,39 @@
+---
+title: "‘Blood Batteries’ Drive America’s Frantic EV Ambitions"
+date: 2023-01-24T22:56:29+08:00
+draft: false
+display: true
+tags: ["EV"]
+categories: ["Automotive"]
+description: "-"
+url: "/blog/15"
+image: "https://assets.bwbx.io/images/users/iqjWHBFdfxIU/i4lJhaliW2b8/v1/150x-1.jpg"
+type: "focus"
+---
+
+In its quest to secure the raw materials needed to make electric vehicles, the US is turning to some questionable places.
+
+In its rush to secure and build America’s electric vehicle and battery-supply chains, the US government is reaching far and wide, splashing out billions in commitments. But the desperation is leading it astray.
+
+Last week, the State Department quietly released a Memorandum of Understanding it signed in December to support a commitment between the Democratic Republic of Congo, or the DRC, and Zambia to build a “productive supply chain, from mine to assembly line.” The agreement, in theory, is meant to drive investment and ensure the private sector has a “level playing field” in projects.
+
+It’s turning to Africa for obvious reasons: An abundance of raw materials. Almost 70% of the world’s cobalt — a key ingredient in certain types of batteries — is mined in the DRC, where nearly half of the world’s reserves are located. Zambia is one of the largest producers of copper, used for other important components. The US also imports copper from the DRC, the third-largest producer of the metal.
+
+
+However, the US government conveniently failed to mention that cobalt from the Congo has been at the center of child labor abuses, as the State Department’s country report states. The press release announcing the MoU left it at “corruption,” noting that it was “committing to respect international standards to prevent, detect, and take legal action to fight corruption throughout this process.”
+
+The move is hypocritical. Now that the US needs the cobalt and copper as part of its supply-chain push, it is willing to go into business and urge private investors to work in the DRC, overlooking one of the most significant issues there.
+
+What’s worse, it comes after strong criticism around China’s alleged infractions. The US Labor Department put solar-grade polysilicon from Xinjiang province on a 2022 list(1) of goods produced by child or forced labor — alongside cobalt from the DRC. In the report, US Labor Secretary Martin Walsh called the abuses in the Chinese region “egregious, systemic and ongoing” and said that “the goods produced under these conditions have no place in the US economy.”
+
+The US then went on to ban goods from the western Chinese province and was willing to take strong measures — all because it saw the country as a strategic threat. In 2021, a tabled amendment to the US Innovation and Competition Act (titled “Securing United States Supply Chains of Strategic Metals and Minerals”) expressed concern around Chinese control.
+
+That doesn’t seem to apply to the DRC — an unstable country in a volatile region. An insurgency in the eastern part has displaced over 450,000 people. That makes cobalt the blood diamond equivalent in batteries.
+
+The US has, for several years, committed foreign aid to the DRC for economic support and health programs of around $250 million to as much as around $300 million annually. It renewed its development cooperation agreement that ensures $1.6 billion dollars over the next five years. All noble, but by no means a justifiable path to secure cobalt and copper resources and boost industrialization there. Putting terms and conditions on the aid would be one place to start.
+
+The abuses associated with cobalt are not peripheral issues. Mercedes-Benz AG, for instance, goes to great lengths to disclose its use to ensure transparency. The carmaker assesses and audits its battery-cell suppliers to prevent child and forced labor. Agreements for procuring these parts require disclosure from the entire cobalt supply chain. Even Tesla Inc. Chief Executive Officer Elon Musk, who came under heavy criticism a few years ago for use of the battery material in his company’s vehicles, has walked away from the crucial element altogether.
+
+Trying to secure cobalt supplies and elevating its importance, along with encouraging private investment to go into the DRC, is misguided.
+
+The approach highlights the deeper flaws with the US’s botched attempt at industrial policy. It’s been largely focused on its foreign affairs, not on what’s actually possible, or helpful, domestically. If it does want to sign up for the goods it now needs, then it should take a stand on who it will do business with, and on what terms.

+ 61 - 0
content/news/16/1.md

@@ -0,0 +1,61 @@
+---
+title: "BNPL 「先買後付」是什麼?"
+date: 2023-01-28T00:56:29+08:00
+draft: false
+display: true
+tags: ["BNPL"]
+categories: ["business"]
+description: "-"
+url: "/blog/bnpl"
+image: "https://image1.thenewslens.com/2022/8/7rxun95wj8u2boo0yoznh6ls1h8gs1.jpg?auto=compress&h=648&q=80&w=1080%201080w"
+type: "focus"
+---
+
+貸款餘額不受月收入22倍限制
+800萬無信用卡族成目標客群
+
+〔記者李靚慧/台北報導〕國人背負的無擔保貸款,除信貸外,近年來海外蓬勃發展的「先買後付」(Buy Now Pay Later;BNPL),進軍台灣鎖定銀行不承做信貸的客戶,給予消費分期,實際業績有多少,恐成難以掌控的黑數。
+
+要申請信用貸款,首先必須是滿二十歲的中華民國國民,其次須「工作穩定」,年收入大多要求須達三十萬元以上,要提供薪資帳戶等資料佐證。更重要的是,雙卡風暴後,金管會訂定「無擔保貸款餘額不得超過申請者月收入的二十二倍」,若借款人已負擔過多無擔保貸款,包含信用卡循環餘額、信用卡分期還款,能再借的信貸金額就得降低。
+
+信用卡大咖也搶進BNPL市場
+但對資融、租賃及BNPL業者而言,因屬經濟部管轄,不受所得二十二倍限制,約八百萬無信用卡族成為目標客群。包括台灣的中租、新加坡的Atome、日本恩沛科技「AFTEE先享後付」,以及樂分期、BeautyPay、fasney、PChome合體「慢點付」,就連信用卡、信貸龍頭中信金,也透過旗下中信資融推「Fula付啦」APP,台灣BNPL市場進入百家爭鳴時代。
+
+「AFTEE」不需註冊會員,購物時只要輸入「手機號碼」就可結帳,若再下載APP註冊會員,即可使用分期付款功能;Atome訴求三期零利率,用戶需下載APP註冊會員,在與BNPL業者合作的電商通路就可直接三期零利率還款;中租「zingala銀角零卡」供年滿二十歲用戶下載APP加入會員,分期最長可達三十六期。
+
+業者多強調自身有一套借助AI的徵審機制,例如會員已破百萬的「zingala銀角零卡」,會以電話錄音方式提醒客戶繳款,讓逾放率低於一%;AFTEE逾放率也低於一%,且借重日本母公司經驗,今年可再降至○.五%。
+
+銀行業者分析,相較信用卡多向商家收取二%手續費,BNPL可幫商家開拓沒信用卡的「金融小白」、手續費可達五%;另信用卡滯納金依信用狀況約六%到上限的十五%,而BNPL業者滯納金大多收取到民法上限的十六%,且加收違約金,例如某家BNPL收取日息萬分之五,年利率換算逾十八%,多出的部分就當違約金。
+
+
+
+買後付(Buy Now Pay Later, BNPL)越來越夯,但其審核快速恐衍生過度消費或信用過度擴張之疑慮,並引發外界擔憂BNPL恐發生如同當年雙卡風暴的金融風險。
+
+對此,金管會今(12)日對業者提出兩項建議,包含建立適當風險控管機制、應有完善消費者保護措施;同時也對民眾提醒三大注意事項,以避免民眾過度消費,並維護自身權益。
+
+
+金管會銀行局指出,近期外界關注先買後付(Buy Now Pay Later, BNPL)業務發展情況,該項業務為存在於市場多年之分期付款服務,非屬金融特許業務。
+
+近年BNPL業者與電商平臺合作發展,惟其審核快速衍生過度消費或信用過度擴張之疑慮;BNPL業者對各項費用及利息計收等資訊揭露、個資蒐集與利用、債務催收方式等,亦攸關民眾權益,爰引發關注。
+
+銀行局指出,金管會由三個層面看待BNPL議題:一是BNPL業務類似信用貸款分期還款業務,銀行得提供類此服務,BNPL業者亦可參考銀行風險控管及資訊揭露等做法。
+
+二是金融機構之轉投資事業如有經營BNPL業務,金管會將要求金融機構督導該轉投資事業強化內部控制及風險管理。三是據金管會瞭解,亦有非金融機構轉投資但具規模之BNPL業者,願意因應市場發展,強化風險控管機制及消費者保護。因此,金管會提供兩項建議,供辦理BNPL業務之參考;一是建立適當風險控管機制,包括對消費者及合作商家之徵授信管理、財業務風險評估、資安風險管理及防範詐騙。
+
+二是應有完善消費者保護措施:包括個資保護、客訴爭議處理、客戶財務風險警示及債務協處機制、訂約公平誠信、資訊充分揭露,及行銷廣告招攬應確保無虛偽不實或誤導消費者之情形。
+
+此外,金管會提醒民眾於利用BNPL服務時,宜具有風險意識,並提出三項注意事項,以避免過度消費及維護自身權益。一是量入為出,避免過度消費;建議民眾消費前先衡量自己的收入與支出,先計劃再消費,避免因衝動性購買,造成個人信用過度擴張,導致無力償還債務。二是先瞭解商品交付條件、還款條件及相關費用計收;建議民眾檢視契約內容,瞭解雙方權利義務之重要資訊,包括相關交易條件及各項費用計收等,例如廣告宣稱「分期零利率」,惟是否另外收取其他費用等。
+
+三是瞭解借款相關支出並預為因應;BNPL服務本質屬借貸,除利息外,可能尚有違約金、遲延利息等,建議民眾先瞭解相關計收方式,以評估是否在自己能負擔範圍。
+
+
+BNPL是什麼?
+BNPL先買後付就是Buy Now, Pay Later的縮寫,指的是一種不需要信用卡的分期消費方式,分期期數主要以3期為主,出帳後甚至可以再申請延後付款。消費者申請時只需要填寫一些資料,不像申請信用卡銀行會審查你的信用紀錄,因此受到無信用卡族群,例如學生、自由工作者等族群歡迎。這種服務雖然很早就已經出現,在疫情期間國外網購交易量大增,使BNPL變得越來越熱門,在台灣也有多家業者投入。
+
+BNPL和信用卡分期有什麼差別?
+BNPL先買後付和信用卡最大的差別就是不需要信用紀錄,不僅申請時不會審核信用評分,而且不像信用卡用佔用信用額度。分期數大部份BNPL都是分3期,而信用卡分期選項通常比較多。消費完發現自己帳單繳不出來,BNPL和信用卡都可以再採用計息的「帳單分期」手段。如果遲遲未繳兩者都要繳納滯納金,信用卡滯納金會依個人信用決定循環利率,目前最高上限為15%,而台灣BNPL業者大部份滯納金為16%。
+
+從申辦信用卡、銀行核卡、寄發卡片,通常需要幾天甚至數週,而申辦信用卡過程中填寫的各種個資也是使用者的痛點。BNPL則主打註冊申請簡便,僅短短幾分鐘就能開始購物。有在網路上留下信用卡資料有一定的風險,而BNPL相對較沒有被盜刷的疑慮。
+
+其實不論信用卡、行動支付BNPL都會向商家收取手續費,只是BNPL向商家約5%比信用卡更高。那為什麼還有商家願意和BNPL合作呢?因為BNPL可以為商家拓展那些原本沒有能力購買商品的消費者,而且台灣約有800萬以上的成年人是沒有信用卡的小白,這個商機相當龐大。
+

+ 84 - 0
content/news/17/1.md

@@ -0,0 +1,84 @@
+---
+title: "ChoozMo 5G 雲端 AI 主播應用"
+date: 2023-02-14T00:56:29+08:00
+draft: false
+display: true
+tags: ["choozmo"]
+categories: ["technology"]
+description: "-"
+url: "/blog/choozmo-5g-virtual-person"
+image: "http://5gsolution.teema.org.tw/cave.data.post/8310296802/image01.jpg?4790"
+type: "main"
+---
+
+ChoozMo 5G 雲端 AI 主播應用
+
+![](http://5gsolution.teema.org.tw/cave.data.post/8310296802/image01.jpg?4790)
+
+集仕多ChoozMo創造台灣第一個AI主播,也是目前唯一一家獲得工業局,人工智慧技術服務機構能量登錄,具虛擬人像技術的廠商,公司核心專注於Deep Learning與AI技術。能替客戶帶來穩定的網路流量,帶來產品曝光,並進一步轉換成訂單。集仕多ChoozMo 獲得千萬級專業創投投資,也曾獲得文策院百萬支持金。應用於Cloud Expo,可以進行跨區域、跨國際的線上會展服務,解決部分碳排放的問題,且可快速得到反饋及挖掘潛在客戶,在虛擬會議展覽,可以進行即時Q&A回饋,協助企業舉辦線上展售活動。
+
+集仕多股份有限公司總部位於新竹縣竹北市,技術核心專注於Deep Learning、AI技術與Data Analytics. 團隊已獲得多項國內外獎項與專利技術。成員皆來自工研院巨量資料中心、台積電、中華電信研究院、台大、清大、交大;並曾獲選科技部「預見。新創計畫」代表團隊,赴矽谷加速器培訓;成員多為資訊工程/資訊管理相關背景,團隊成員曾獲得工研院傑出研究獎、資訊月百大產品獎、艾奇獎等等。優異技術獲得創投青睞。
+
+我們在影片市場中發現企業線上影音行銷過程所遇到的問題與機會點:
+
+1.影片製作費用高,需要耗費多元團隊人力拍攝、器材設備、演員、剪輯特效等成本。
+
+2.若遇疫情期間不能群聚開拍作業,製片即停擺。
+
+3.傳統企業商家對數位行銷掌握度不高,或者預算有限,就算想嘗試用線上影片拓展客源,往往也感到力不從心。
+
+當前企業對數位轉型態度趨於積極,據調查顯示:38%企業願意投資在技術上藉以獲得競爭優勢,將業務拓展重新聚焦在數位技術上。疫情催生新常態,企業不轉型就面臨被淘汰威脅,帶來企業體面對快速數位化壓力,中小企業面對無法逃避的「數位轉型」課題,越早應變布局者越能存活,在影音行銷趨勢風口上,我們協助業主利用科技工具助攻企業邁向線上數位營銷,透過能說不同國家語言的AI虛擬主播製作行銷影片,協助開拓外銷、外貿的多元海外市場,提升行業產值。
+
+ChoozMo AI解決方案:
+
+基於AI TTS語音技術研發的潛力產品-AI虛擬代言人自動影片生成系統。
+
+👉️
+
+彈性輸入製作素材 (影檔| google 簡報 |圖片)
+
+👉️
+
+自動加上電視台背景特效
+
+👉️
+
+內建高科技AI主播👩‍💼就是你的最佳配音員(支援22國語言)
+
+![](http://5gsolution.teema.org.tw/cave.data.post/8310296802/image02.jpg?16764407220510)
+
+▶5分鐘一鍵輸出影片上架!
+
+AI程式自動套版製作生成影片工具,訴求預算再小的業者都負擔得起使用費,能幫助業者大幅降低企業製作影片費用,加速變通找客源方式,驅動廠商快速佈署線上影片行銷、製作多種不同語言產品宣傳影片輸出連結國際市場,促進產業發展!也無畏疫情加強線上行銷就能走出景氣低迷。另一方面,對我們AI技術公司而言,此創新服務商業模式的邊際成本接近於零,將採用SaaS線上服務化收訂閱費,產品經濟效益隨時間被放大!
+
+![](http://5gsolution.teema.org.tw/cave.data.post/8310296802/image03.jpg?16764407220510)
+
+▶專案客製企業獨家代言人服務:
+
+我們也提供人物客製化,幫企業建置專屬AI 虛擬代言人模型的服務,以及依照企業CIS形象製作風格新聞台及片頭片尾。讓業主能快速上手經營自己的主題頻道、加深消費者對企業的印象好感度圈粉。
+
+![](http://5gsolution.teema.org.tw/cave.data.post/8310296802/image04.jpg?16764407220510)
+
+▶適合應用領域:
+
+●
+
+講解產品影片 product intro
+
+●
+
+官方主題內容頻道經營 channel
+
+●
+
+企業形象代言人宣傳影片 Brand VTuber
+
+....等等
+
+![](http://5gsolution.teema.org.tw/cave.data.post/8310296802/image05.jpg?16764407220510)
+
+再搭配ChoozMo最強大的網路新聞聯播方案,將您的圖文報導製成Ai主播影音新聞影片,保證發佈曝光到包括yahoo新聞、新浪網、Pchome新聞、LineToday等十一家知名媒體平台!
+
+![](http://5gsolution.teema.org.tw/cave.data.post/8310296802/image06.jpg?16764407220510)
+
+在未來,我們希望將技術應用在他國語言的模組開發,整合Google的語音翻譯API,訓練AI主播能夠套嘴型說多國語言,並將此服務應用於走外銷的中小企業,展望2021下半年,新竹竹科園區亦是一個很好的出發地,雖疫情持續,然隨著疫苗施打率提升,也將帶動全球經濟逐步成長,加上5G應用、AIoT、新興應用與遠距商機陸續擴散,皆有利於科學園區企業的出口續航力,我們預計將第一階段驗證、優化修改過的AI影音模組技術用於需要開拓海外市場的中小企業,能協助企業將生硬的電子零組件商品搭配視覺圖像(耐震.抗摔.I/O.組裝.場域應用情境..等畫面)、結合生動AI主播旁白介紹清楚呈現給海外潛在顧客知道。

+ 79 - 0
content/news/18/1.md

@@ -0,0 +1,79 @@
+---
+title: "About Global AI Media Alliance "
+date: 2023-02-15T00:55:11+08:00
+draft: false
+display: true
+tags: ["GAIMA"]
+categories: ["ai media"]
+description: "-"
+url: "/blog/about-gaima-global-ai-media-alliance"
+image: "https://cmm.ai/ces2023vid/img/banner.jpg"
+type: "focus"
+---
+
+About Global AI Media Alliance
+Global AI Media Alliance (GAIMA) is established through mutual trust among its founding members. In the future, as the world starts to rely on AI, there will be massive and quick changes to cross-platform content creation, media production and broadcasting, and business models.
+
+GAIMA aims to link businesses and industries involved with AI media, including:
+AI content application technologies
+Media production
+Brand marketing
+
+GAIMA will focus on AI production broadcasting, media content, and brand marketing, which includes:
+Building a quick, frequent AI media industry interaction platform
+Promoting reliable AI media content and services
+Organizing AI-related events
+
+AI media covers several topics, including text-to-image and text-to-video technologies.
+
+Text-To-Image
+Text-to-image is a tool which generates an image based on text input. Before the rise in machine learning, text-to-image tools started as a tool which arranges existing, related images from text input to create a collage.[1][2] Machine learning-based text-to-image models have been developed since the mid-2010s, but it gained prominence in 2022 for its outputs that are similar to real-life human art. Examples of text-to-image models are OpenAI's DALL-E 2, Google Brain's Imagen and StabilityAI's Stable Diffusion.
+
+There are many text-to-image model architectures that have been developed over the years, but they are generally composed of:
+Text encoding
+Text encoding is usually done through transformer models. Alternatively, it can also be done using a recurrent neural network such as a long short-term memory (LSTM) network.
+Image generation
+The image generation step generally uses conditional generative adversarial networks, but diffusion models have also become a popular method recently. Rather than directly training a model to output a high-resolution image based on text input, a popular technique is to train a model to generate low-resolution images, and use auxiliary deep learning models to upscale the image and fill in finer details in the image.
+
+Text-to-image models are trained on large datasets of text-image pairs that are often scraped from the web. Datasets commonly used are:
+COCO (Common Objects in Context)
+The COCO dataset was released by Microsoft in 2014, and consists of around 123,000 images representing a diversity of objects. Each image has five captions that are generated by human annotators. 
+Oxford-120 Flowers and CUB-200 Birds
+These are smaller datasets of around 10,000 images each, with topics limited to flowers or birds.[3]
+
+In 2022, Google Brain used their Imagen model and reported positive results from using a large language model trained separately on a text-only corpus, with its weights subsequently frozen. This method marks a departure from the standard approach in text-to-image model training.[4]
+
+
+<p><a href="https://commons.wikimedia.org/wiki/File:State_of_AI_Art_Machine_Learning_Models.svg#/media/File:State_of_AI_Art_Machine_Learning_Models.svg"><img src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/13/State_of_AI_Art_Machine_Learning_Models.svg/1200px-State_of_AI_Art_Machine_Learning_Models.svg.png" alt="State of AI Art Machine Learning Models.svg"></a><br>By &lt;a href="//commons.wikimedia.org/wiki/User:The_Original_Benny_C" title="User:The Original Benny C"&gt;The Original Benny C&lt;/a&gt; - &lt;span class="int-own-work" lang="en"&gt;Own work&lt;/span&gt;, <a href="https://creativecommons.org/licenses/by-sa/4.0" title="Creative Commons Attribution-Share Alike 4.0">CC BY-SA 4.0</a>, <a href="https://commons.wikimedia.org/w/index.php?curid=123145511">Link</a></p>
+
+
+Text-To-Video
+Text-to-video models evolve from text-to-image models, in which the text-to-image models receive modifications to be able to generate videos from text prompts. Examples are CRAFT, Microsoft’s GODIVA[5], Google’s Imagen Video, and Meta’s Make-A-Video[6].
+
+Text-to-video models are trained on datasets of video clips, with each video clip labeled with a particular topic. Datasets that have ever been used include:
+HowTo100M[7]
+HowTo100M is a dataset of narrated videos focusing on instructional videos where content creators teach complex tasks such as handcrafting, cooking, and personal care. The dataset contains 136 million video clips taken from 1.2 million YouTube videos which cover a total duration of 15 years, and 23,000 activities from various domains. All videos have a corresponding narration taken from the videos’ subtitles. HowTo100M is used for training the GODIVA model.
+Kinetics Human Action Video Dataset (Kinetics)[8]
+The Kinetics dataset focuses on human action recognition and contains around 500,000 10-second video clips taken from YouTube videos. Each clip is labeled with an action class, and each action class has at least 600 video clips. The dataset covers 600 action classes.
+
+Aside from the above mentioned models, many text-to-video models also create their own training sets using publicly available videos.
+
+References
+Agnese, Jorge; Herrera, Jonathan; Tao, Haicheng; Zhu, Xingquan (October 2019). "A Survey and Taxonomy of Adversarial Neural Networks for Text-to-Image Synthesis". arXiv:1910.09399 [cs.CV].
+Retrieved from https://arxiv.org/pdf/1910.09399.pdf 
+Zhu, Xiaojin; Goldberg, Andrew B.; Eldawy, Mohamed; Dyer, Charles R.; Strock, Bradley (2007). "A text-to-picture synthesis system for augmenting communication". AAAI. 7: 1590–1595.
+Retrieved from https://www.aaai.org/Papers/AAAI/2007/AAAI07-252.pdf
+Frolov, Stanislav; Hinz, Tobias; Raue, Federico; Hees, Jörn; Dengel, Andreas (December 2021). "Adversarial text-to-image synthesis: A review". Neural Networks. 144: 187–209.
+Retrieved from https://www.sciencedirect.com/science/article/pii/S0893608021002823 
+Saharia, Chitwan; Chan, William; Saxena, Saurabh; Li, Lala; Whang, Jay; Denton, Emily; Kamyar Seyed Ghasemipour, Seyed; Karagol Ayan, Burcu; Sara Mahdavi, S.; Gontijo Lopes, Rapha; Salimans, Tim; Ho, Jonathan; J Fleet, David; Norouzi, Mohammad (23 May 2022). "Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding".
+Retrieved from https://arxiv.org/abs/2205.11487
+Narain, Rohit. “Smart Video Generation from Text Using Deep Neural Networks”. DataToBiz.
+https://www.datatobiz.com/blog/smart-video-generation-from-text/ 
+“Introducing Make-A-Video: An AI system that generates videos from text”. Meta AI
+https://ai.facebook.com/blog/generative-ai-text-to-video/
+“What is HowTo100M?”
+Retrieved from https://www.di.ens.fr/willow/research/howto100m/
+Kay et al. (2017) "The kinetics human action video dataset". ArXiv, vol. abs/1705.06950.
+Retrieved from https://arxiv.org/abs/1705.06950
+
+

+ 26 - 0
content/news/19/1.md

@@ -0,0 +1,26 @@
+---
+title: "ChoozMo AI is changing the media landscape"
+date: 2023-02-15T00:55:11+08:00
+draft: false
+display: true
+tags: ["choozmo"]
+categories: ["ai media"]
+description: "-"
+url: "/blog/choozmo-ai-is-changing-the-media-landscape"
+image: "https://cmm.ai/ces2023vid/img/banner.jpg"
+type: "focus"
+---
+
+Producing a video for a marketing campaign is time consuming and costs a lot of money.
+ 
+ChoozMo's AI Spokesgirl helps Small Medium Enterprises to create marketing videos by greatly reducing the time and cost required and simplifying the video-making process. Users can use AI Spokesgirl to create a video simply by uploading their script, images, and videos.
+ 
+The AI Spokesgirl can be used in many different scenarios such as product introductions, news reporting, and tour guides. It has high reliability, allowing users to create high-quality videos anytime, anywhere, and is also customizable through the creation of customized avatars with their own appearance.
+
+
+Lately, artificial intelligence( AI)- enabled virtual humans have been extensively used in colorful fields in our everyday lives, similar as for gallery exhibitions and as information attendants. Given the continued technological inventions in extended reality( XR), immersive display bias and commerce styles are evolving to give a feeling of togetherness with a virtual human, nominatedco-presence. With regard to similar specialized developments, one main concern is how to ameliorate the experience through the sense ofco-presence as felt by actors. still, virtual mortal systems still have limited guidelines on effective styles, and there's a lack of exploration on how to fantasize and interact with virtual humans. In this paper, we report a new system to support a strong sense ofco-presence with a virtual human, and we delved the goods onco-presence with a comparison of display and commerce types. We conducted the trial according to a specified script between the party and the virtual human, and our experimental study showed that subjects who shared in an immersive 3D display withnon-verbal commerce felt the topmostco-presence. Our results are anticipated to give guidelines on how to concentrate on constructing AI- grounded interactive virtual humans.
+
+“At the moment, media companies are mostly using AI to automate complex calculations and tasks,” he says. “Neil Vogel, CEO of Dotdash Meredith, said last week that they would never have an article written by AI ... but I’d bet a chunk of money he changes his mind on that.”
+
+“Service-based media, where people are looking for an answer to a specific question, will almost certainly be predominantly AI-driven within five years, if not entirely usurped by some new AI media service.”
+

+ 37 - 0
content/news/2/1.md

@@ -0,0 +1,37 @@
+---
+title: "Razer Edge 5G"
+date: 2023-01-25T00:00:29+08:00
+draft: false
+display: true
+tags: ["5G","Snapdragon"]
+categories: ["technology"]
+description: "-"
+url: "/blog/2"
+image: "https://static1.xdaimages.com/wordpress/wp-content/uploads/2023/01/untitled-design-8.png?q=50&fit=crop&w=480&dpr=1.5"
+type: "post"
+---
+
+Razer Edge
+The Razer Edge and Razer Edge 5G are excellent gaming handhelds that offer plenty of power with impeccable style. The Razer Edge offers support for Wi-Fi, while the Razer Edge 5G supports 5G exclusively with Verizon.
+
+
+Mobile World Congress Las Vegas is underway and Razer alongside Qualcomm and Verizon announced a new Android-handled gaming console – the Razer Edge 5G. The device will be unveiled formally on October 15 at RazerCon but we do get a brief introduction.
+
+As the name implies Razer Edge 5G will offer 5G connectivity which would be the first on a handheld gaming console of its kind. The device will be able to run games without being connected to the internet as it is equipped with the Snapdragon G3X Gen 1 platform which was announced last year alongside a dev kit built by Razer which does have its similarities to the Edge 5G.
+
+
+Being an Android device, you can expect Razer Edge 5G to run all the mobile games available on the Google Play Store though it will also run cloud gaming services and stream games from your PC or console. The video showcases the Edge 5G’s design which features dual thumbsticks, a D-pad, as well as several buttons next to the display while the back features several adaptive shoulder triggers.
+
+
+Based on last year’s Snapdragon G3X Gen 1 dev kit console, the Razer Edge 5G could feature a 6.65-inch OLED display with FHD+ resolution and a 120Hz refresh rate and an exclusive Adreno GPU, active cooling and a 6,000 mAh battery. The device is also expected to offer a 1080P webcam for live streaming and will output to a 4K TV or monitor, AR and VR headsets via a USB-C with DisplayPort support.
+
+
+## The Razer Edge 5G is now available on Verizon
+
+Late last year we got our first tease of the Razer Edge 5G and it wouldn't be long before we'd get our hands on the device at Qualcomm's Snapdragon Technology Summit. Today, the handheld console is now available for purchase through Verizon and can be pre-ordered from Razer. While Verizon will carry the 5G version for $599.99, Razer will offer the Wi-Fi model for a substantially lower price of $399.99, which is set to ship on February 8.
+
+The Razer Edge is a unique device, mainly because it's powered by Qualcomm's Snapdragon G3x Gen 1 processor, which is made specifically for gaming platforms. In addition to its powerful processor, the handheld console also packs 8GB RAM with 128GB of internal storage and has a beautiful 6.8-inch 144Hz AMOLED display with a resolution of 2400x1080. While the design looks fairly sleek, the Razer Edge comes in two parts — the core and a Kishi V2 Pro controller.
+
+While the device doesn't pack a lot of storage space, you have access to thousands of games through the Google Play Store and if you're looking for access to more serious games, you can still get plenty out of it thanks to seamless access to dedicated game streaming services like Microsoft's Xbox Cloud Gaming (Beta) and Nvidia's GeForce Now. Furthermore, you can even access your PC library through Steam Link, Moonlight, and Parsec.
+
+For the most part, the Razer Edge is a compact, powerful, and extremely capable gaming device. If you're looking to game on the go, or if you're just looking to experience your existing library of games in a different way, this is the handheld console for you. As mentioned before, you can now purchase it directly from Verizon or if you're looking to pick up the Wi-Fi version, you can head to the Razer website to secure your unit by pre-ordering right now.

+ 40 - 0
content/news/3/1.md

@@ -0,0 +1,40 @@
+---
+title: "《Minecraft》基岩 青蛙與蝌蚪 ,全新「蛙光體」光源方塊"
+date: 2023-01-24T01:56:29+08:00
+draft: false
+display: true
+tags: ["Minecraft"]
+categories: ["technology"]
+description: "-"
+url: "/blog/3"
+image: "https://s.yimg.com/ny/api/res/1.2/sIhzPfKAVaYUrnzBkbQFgA--/YXBwaWQ9aGlnaGxhbmRlcjt3PTk2MDtoPTU5NDtjZj13ZWJw/https://s.yimg.com/os/creatr-uploaded-images/2022-02/8df1ff00-8a26-11ec-bfbb-b5febe6860c6"
+type: "featured"
+---
+
+《Minecraft》將在今年內推出狂野更新,包括紅樹林、青蛙以及古城等全新環境與生物都將推出,而官方宣布首先將在基岩版本更新中推出青蛙與蝌蚪來測試,擁有基岩版的玩家可以先行展開各種實驗啦。
+
+在官方更新公告中,於 8 日更新基岩版本 1.18.10 版本,除了修復各種 BUG 與新增地球旗幟圖案外,最受玩家矚目的就是加入了青蛙與蝌蚪來進行首波測試,青蛙會在沼澤生物群中生成,目前有三種不同型態(未來能在不同生態中生成),牠會發出蛙叫、跳躍、行走與游泳,會獵食小型史萊姆,能透過海草吸引跟繁殖(官方強調這不是最終食物只是測試)、青蛙將在交配後於水中產卵,卵會生成蝌蚪。
+
+
+而蝌蚪會跟魚一樣需要水才能生存,在陸地上一樣會跳躍掙扎並因為脫水而死,牠們能裝在水桶裡面;除了這些基礎生物能力外,新增了一種相當有趣的全新光源方塊,名為 Froglight(蛙光體,暫譯),依照青蛙種類分為黃、綠、紫色,這個新光源方塊的生成方式也相當特殊,青蛙會獵食分裂的小史萊姆,要讓牠們吃掉地獄中才有的小岩漿史萊姆(Magma Cube)後,牠們就會吐出這些方塊,成為新的裝飾燈光。
+
+1.19 版本「狂野更新」預計今年推出,而遊戲將逐步對這些生物與環境開放測試。
+
+
+### 《Minecraft》新物種青蛙曾能一口吞山羊 結果是官方忘刪實驗設定搞烏龍?
+
+《Minecraft:基岩版》最新推出的 1.18.10 版實驗內容中,Mojang 團隊向玩家搶先展示預計將於今年「荒野」(Wild)更新中登場的青蛙物種。該青蛙不只能吞下小型的史萊姆以及岩漿立方怪,根據 Mojang 今(11)日 Minecraft Live 直播活動分享的秘辛,青蛙還一度可以一口吞掉整隻山羊。
+
+許多玩家在 Windows 版《Minecraft》於今年 1 月推出的最新 Beta 測試中,就發現青蛙吞山羊的誇張現象。Minecraft Live 直播活動中,Mojang 團隊的成員向玩家揭露更多與青蛙有關的細節。
+
+當其中一位玩家問到這些青蛙會不會吃掉六角恐龍(又稱墨西哥鈍口螈),官方對此給出否定的答案,接著開發人員 Alexander Östman 便提到引發玩家討論的青蛙吃山羊現象。
+
+Östman 表示在製作青蛙,並針對「吃掉其他生物」進行測試時,決定利用山羊來當成實驗對象,讓青蛙能夠誇張地一口把整隻山羊給吞下肚。然而,後續將青蛙加入 Beta 測試時,竟然忘記刪除這個設定,所以第一批下載 Beta 測試的玩家就遇到青蛙吃山羊的狀況。
+
+根據 Östman 的說法,當他看到有玩家分享相關的影片,整個笑到不行。不只玩家上傳遊戲片段, Mojang 社群管理員今年 1 月也在個人推特公開一段青蛙連吃三隻山羊的影片。
+
+
+分享開發趣事之餘,Östman 還補充另一個與青蛙有關的有趣 Bug。那就是青蛙在吞下史萊姆時會直接卡在原地,而史萊姆則會黏在舌頭上無法動彈。
+
+雖然大胃口的青蛙很有趣,但無論是吞山羊,還是被史萊姆卡住最終都經過更新修正,並不會出現在 1.19 版中。不過在「荒野」更新推出前,或許還會有其他搞笑異常發生,玩家能趁此機會協助團隊找出更多跟青蛙相關的 Bug。
+

+ 40 - 0
content/news/4/1.md

@@ -0,0 +1,40 @@
+---
+title: "Samsung Galaxy A54"
+date: 2023-01-25T01:56:29+08:00
+draft: false
+display: true
+tags: ["samsung","a54"]
+categories: ["technology"]
+description: "-"
+url: "/blog/4"
+image: "https://static1.pocketlintimages.com/wordpress/wp-content/uploads/164094-phones-news-confirmed-samsung-s-galaxy-a54-to-be-announced-on-18-january-image1-3gkzjywb86.jpg?q=50&fit=contain&w=1140&h=&dpr=1.5"
+type: "featured"
+---
+
+Samsung's Galaxy A54 is just around the corner and the phone was just certified by the FCC. The listing, published by the US regulator, revealed that an SM-A546E will have a battery with a minimal capacity of 4,905 mAh and support 25W fast charging.
+
+The Samsung Galaxy A54 is likely to have at least 5,000 mAh capacity, although previous rumors suggested a slight increase to 5,100 mAh. The FCC filing revealed it could be charged with a Samsung EP-TA800 adapter, which is a 25W Power Delivery USB-C charger, but we doubt it will ship in the retail box.
+
+Geekbench also leaked some phone specs, including a yet-to-be-announced Exynos 1380 chipset, at least 6GB RAM and Android 13 out of the box.
+
+The last two Galaxy A5x series phones came in March, and if Samsung sticks to that timeline , we have just two months until the A54 goes official.
+
+
+## Samsung Galaxy A54 5G appears on FCC website
+
+We've seen details on the Samsung Galaxy A54 5G pop up online a few times over the last month, but a speculated launch date came and went with nary a sight of the actual phone. It was tipped to be announced earlier in January, but that turned out to be the entry-level A14 instead.
+
+Surely we'll see the A54 unveiled soon though, as it has appeared on yet another certification website - this time owned by the US Federal Communications Commission (FCC).
+
+
+A [Samsung](https://www.pocket-lint.com/samsung/) device of the name SM-A546E has been approved by the regulator for use in the States and discovered by [MySmartPrice](https://www.mysmartprice.com/gear/samsung-galaxy-a54-5g-fcc-certification-battery-charging-details/). It lists its connectivity tech as being capable of Wi-Fi 6E (hence the last couple of digits in the product's codename). This means it should provide a stable and superfast connection to Wi-Fi across multiple bands.
+
+MySmartPrice / FCC
+
+It's a 5G phone, of course, and will come with Bluetooth. There's not a lot more to be learned from the posting, considering its more to ratify its communications hardware. However, we've heard a little more on it in the past that suggests it'll be a very decent mid-ranger.
+
+It will come with a 6.6-inch Full HD+ display with a 120Hz refresh rate, it is said. And, it'll be powered by Samsung's own Exynos 1380 chipset partnered with 8GB of RAM.
+
+Reportedly, there will be a 50-megapixel main camera on the rear alongside a 12-megapixel cam for ultra-wide shots. The front will house a 32-megapixel selfie cam.
+
+Its previous appearance was on a certification website in India, which shows that it will at the very least be available there (as well as the United States). We would imagine it'll come to the UK and Europe too, considering it looks to be a direct replacement to the [Samsung Galaxy A53](https://www.pocket-lint.com/phones/reviews/samsung/160409-samsung-galaxy-a53-5g-review/).

+ 230 - 0
content/news/5/1.md

@@ -0,0 +1,230 @@
+---
+title: "A flying car would cost more than Ferrari's top model"
+date: 2023-01-26T22:05:34+08:00
+tags: ["flying car"]
+categories: ["technology"]
+draft: false
+type: "post"
+url: "/news/flying-car-cost-ferraris-top-model-study"
+image: "https://a57.foxnews.com/static.foxbusiness.com/foxbusiness.com/content/uploads/2021/07/0/0/Pal-V-Flying-Car-1.jpg?ve=1&tl=1"
+type: "focus"
+---
+
+ ## A flying car would cost more than Ferrari's top model, study finds
+
+ ![img](https://a57.foxnews.com/static.foxbusiness.com/foxbusiness.com/content/uploads/2021/07/0/0/Pal-V-Flying-Car-1.jpg?ve=1&tl=1)] 
+
+People interested in owning a flying car when the vehicles become available in the marketplace can expect to be set back for more than the cost of Ferrari's top model, according to a new study out of the U.K.
+
+Pentagon Motor Group ran the numbers, and found that the cost of a flying car will come in at $686,455.43, even more than the 2021 Ferrari SF90 Stradale, which has an MSRP of $625,000.
+
+FERRARI ENTERS LUXURY FASHION, TARGETING UNINITIATED YOUTH
+
+"Although the estimated cost of a flying car is unrealistic for most, it is worth remembering that this is currently a luxury product and that the technology is in its infancy," Pentagon Motor Group marketing chief Shakeel Hussain told FOX Business in an email. "Similarly, the cost of the first electric cars started high and has slowly started to become more affordable and more widely available."
+
+"At the moment, most of the flying cars in production have high-end features, like retractable wings, a travel range of 600 miles thanks to generous fuel tanks, and boast two jet engines, all coming at high manufacturing costs," Hussain explained. "So there’s no surprise that it is valued with a hefty price tag, however in the eyes of a millionaire or billionaire, the cost isn’t astronomical, drawing parallels to exclusive supercars such as Ferrari’s top-end SF90 Stradale! On launch, flying cars will likely share similar customers to top-end hypercars, but for the same price, owners will have one big advantage – they’ll be able to fly!"
+
+AVERAGE NEW CAR PRICE HITS $41K RECORD IN MAY
+
+Between an estimated $37,000 for a flying license, $17,000 for insurance, nearly $14,000 for parking and approximately $800 in fuel, flying car buyers will spend an additional $69,000 in their first year of ownership, according to the group.
+
+"As searches for 'flying cars' have increased by 125% since this time last year, Pentagon Motor Group analyzed the average sales cost of flying cars that are currently in production," the company said in a press release, explaining that current flying car models they looked at included the AeroMobil, PAL-V, Aska, Moller Skycar 400, Terrafugia and the SkyDrive.
+
+Just last month, Klein Vision's convertible concept car-airplane hybrid – dubbed the AirCar – successfully flew from one airport to another in Slovakia, the BBC reported.
+
+GET FOX BUSINESS ON THE GO BY CLICKING HERE
+
+Dr. Stephen Wright, senior research fellow of avionics and aircraft at the University of the West of England, described the AirCar as "the lovechild of a Bugatti Veyron and a Cesna 172."
+
+"I have to admit that this looks really cool - but I've got a hundred questions about certification," Wright told the outlet. "Anyone can make an airplane but the trick is making one that flies and flies and flies for the thick end of a million hours, with a person on board, without having an incident."
+
+He added, "I can't wait to see the piece of paper that says this is safe to fly and safe to sell."
+
+FOX Business' Michael Ruiz contributed reporting.
+
+ ## 2023 Nissan Ariya first drive review: making up lost ground
+
+ ![img](https://www.digitaltrends.com/wp-content/uploads/2022/10/2023-Nissan-Ariya-front.jpeg?resize=1200%2C630&p=1)] 
+
+Nissan played an understated role in the modern era of electric cars. While Tesla gets most of the attention, the Nissan Leaf became the first modern mass-market EV when it launched in December 2010. But Nissan has squandered that early lead. The Leaf remains a decent car, but Nissan needed to follow it up with another model, specifically an SUV, that would appeal to more car shoppers. That’s where the 2023 Nissan Ariya comes in.
+
+The Ariya is the long-awaited sequel to the Leaf, boosting updated tech, better performance, and an SUV body style to match current trends. But during the Ariya’s long gestation (it was originally supposed to launch in 2021), other automakers have come up with electric SUVs of their own. So while it was once a leader, Nissan must now follow the Ford Mustang Mach-E, Hyundai Ioniq 5, and Kia EV6, among others.
+
+Pricing starts at $44,485 (with destination) for the base Ariya Engage trim level with front-wheel drive and the smaller 65-kilowatt-hour (63-kWh usable capacity) battery pack. Pricing rises to $61,485 for the top Platinum+ model with all-wheel drive and a 91-kWh (87-kWh usable capacity) pack, but all-wheel drive models won’t arrive until after the front-wheel drive models. Nissan hasn’t discussed plans to assemble the Ariya in the U.S., so it likely won’t qualify for the revised federal EV tax credit.
+
+Design and interior
+
+If it had launched even two years ago, the Ariya would have looked cutting-edge. Its rounded exterior surfaces make a nod to aerodynamics while still preserving the SUV look buyers love. It’s a nice-looking vehicle too, but so are the Ford Mustang Mach-E, Hyundai Ioniq 5, and Kia EV6, all of which have gone on sale since the Ariya was announced in 2020. Nissan is no longer a trendsetter, but the Ariya can at least claim a more SUV-like feel than those other EVs, in both its tall profile and high-and-mighty driving position.
+
+More significant than the styling, though, is that the Ariya rides on a new EV-specific platform. In contrast to the Leaf, which shares some of its structure with gasoline cars, engineers could take full advantage of the efficiencies of an electric powertrain and maximize interior space. Like certain other automakers, Nissan also opted out of a frunk in order to maximize passenger space, moving components like the air conditioner under the hood to make more room in the cabin.
+
+Rounded surfaces nod to aerodynamics while still preserving the SUV look buyers love.
+
+Nissan’s focus on interior space and the Ariya’s traditional SUV shape don’t yield more interior space than similarly priced EVs, though. The Hyundai Ioniq 5 — which draws its styling inspiration from a 1970s economy car — actually has more front headroom and rear legroom. The Ariya’s 22.8 cubic feet of cargo space with the rear seats up and 59.7 cubic feet with the rear seats folded aren’t best-in-class either. The Ford Mustang Mach-E, for example, has nearly 7.0 cubic feet more with its back seats up.
+
+However, Nissan redeems itself with some clever interior touches, including a powered center console that can slide fore and aft, and a power-opening storage compartment that’s perfect for stashing phones. We liked the interior design as well; haptic controls embedded in wood trim and ambient lighting inspired by Japanese lanterns give it a distinctive appearance.
+
+Tech, infotainment, and driver assist
+
+Nissan doesn’t skimp on infotainment tech. The Ariya comes standard with a 12.3-inch touchscreen infotainment system and 12.3-inch digital instrument cluster, along with Apple CarPlay and Android Auto connectivity (wireless for CarPlay, wired for Android Auto) and a built-in Wi-Fi hots pot. Amazon Alexa connectivity and four USB ports (one Type-C and Type-A for each row) are standard as well, while a head-up display is available on most models.
+
+The infotainment system was easy to use, thanks in part to a natural-language voice recognition system that responds to the prompt “Hey Nissan” and understands casual speech like “turn the temperature down.” But the graphics on both the touchscreen and instrument cluster seemed dated, almost like Nissan recycled them from older models. Everything also seemed crammed in; the touchscreen tiles for radio station, map, and phone made for an unappealing collage, and the instrument cluster’s display seemed disorganized.
+
+A long list of driver aids are standard under the Nissan Safety Shield 360 banner, including forward collision warning, automatic emergency braking, blind spot monitoring, rear cross traffic alert, lane departure warning, automatic high beams, and rear automatic braking.
+
+Nissan doesn’t skimp on infotainment tech.
+
+The Ariya is also available with ProPilot Assist 2.0, the latest version of Nissan’s highway driver-assist system. Unlike the original version, ProPilot Assist 2.0 is a hands-free system that can control steering, acceleration, and braking for sustained periods, as well as change lanes. Drivers still have to keep their eyes on the road, however, and a camera checks for that. ProPilot Assist 2.0 also works only on pre-mapped stretches of divided highway (Nissan claims more than 200,000 miles are currently compatible). With its hands-free capability, driver monitoring, and reliance on maps, ProPilot Assist 2.0 is similar in concept to General Motors’ Super Cruise and Ford’s BlueCruise systems.
+
+We only had a brief experience on mostly straight stretches of highway with little traffic, but ProPilot Assist 2.0 impressed. The experience was similar to that of Super Cruise, with mostly smooth control inputs, although Nissan requires drivers to keep their hands on the wheel during automatically executed lane changes. We also like Nissan’s use of colored lighting to tell the driver what’s going on. The interior ambient lighting, instrument cluster display, and head-up display (if equipped) will go blue when hands-free driving is active and white when the system is on, but not engaged. The system can also step down to hands-on mode, signified by green lighting.
+
+The Ariya also marks the U.S. debut of ProPilot Park, Nissan’s automated parking system. It can do just about everything involved in parking, controlling acceleration, braking, steering, and forward and reverse shifting, but some competitor brands already offer similar capability. The Hyundai Ioniq 5’s Remote Smart Parking Assist doesn’t even require you to be in the car. Nissan’s system is also very conservative in terms of speed and the amount of space left in front and back of the car when parallel parking, so it’s unclear how practical it will be in the real world.
+
+Driving experience
+
+A single electric motor is standard, sending 214 horsepower and 221 pound-feet of torque in the base Ariya Engage model with the 65-kWh battery pack. Models with the larger pack are rated at 238 hp, with the same torque output. Models with Nissan’s new dual-motor all-wheel drive powertrain, dubbed e-4orce, will start shipping a few months after the front-wheel drive models. Final specs for the e-4orce powertrain will be revealed closer to that time.
+
+Our front-wheel drive test car provided the typical EV acceleration experience. We could leave just about everything behind off the line. Because of this, the Ariya will feel like a sports car to anyone coming from a traditional gasoline compact SUV like Nissan’s own Rogue. That thrust drops off pretty quickly, but not before the Ariya reaches highway speeds. After this experience, we’re definitely eager to try the e-4orce all-wheel drive powertrain.
+
+Overall, the feeling was that of stability, not agility.
+
+While not sporty, the Ariya felt impressively composed in corners. While there was some body roll, the Ariya turned in nicely, without the tendency to plow ahead, known as understeer, that’s endemic in front-wheel drive cars. It also had a very comfortable ride with no jiggling over bumps. But the steering felt very loose and imprecise, which made the Ariya itself seem larger and more ungainly than it was. Overall, the feeling was that of stability, not agility.
+
+The Ariya also gets a new regenerative-braking control system called e-Step, instead of the e-Pedal system used in the Leaf. Where e-Pedal blends regenerative and friction braking to allow for true one-pedal driving — including bringing the car to a full stop in some situations — e-Step allows the car to creep forward like a gasoline vehicle and, in our experience, generally dials back the aggressiveness of regeneration. This was a conscious choice in response to customer feedback, Nissan representatives told Digital Trends, adding that the more familiar driving experience afforded by e-Step is in keeping with the Ariya’s mission of mass appeal.
+
+Range, charging, and safety
+
+Official range ratings haven’t been confirmed yet, but Nissan expects a maximum 304-mile range for the front-wheel drive Venture+ model, 216 miles for the base Engage model with the smaller battery pack, and 289 miles for all other versions.
+
+The Ariya can DC fast charge at up to 130 kilowatts, allowing for a 20% to 80% charge in 35 minutes with the smaller battery pack and in 40 minutes with the larger pack. Instead of the CHAdeMO connector used by the Leaf, the Ariya also has the more common Combined Charging Standard (CCS) connector.
+
+If you decide to Level 2 AC charge at home, the Ariya’s 7.2-kW onboard charger can fully recharge the smaller pack in 10.5 hours, while the larger pack takes 14 hours.
+
+The Ariya gets a three-year, 36,000-mile limited warranty and eight-year, 100,000-mile battery warranty. Those are pretty standard warranty terms. No crash-test ratings are available as the Ariya is a new model.
+
+How DT would configure this car
+
+Looking at the currently available front-wheel drive models, it’s impressive that even the base Ariya Engage trim levels gets the 12.3-inch touchscreen and instrument cluster, as well as most driver aids, as standard equipment. But you’ll have to upgrade to the Empower+ to get ProPilot Assist 2.0 and ProPilot Park. Those models also get the larger battery pack, which we would have added to our ideal build in any case. We don’t see a point in upgrading from the Empower+ to the top Premiere model, as the tech features carry over.
+
+That leaves us with an electric SUV that’s nice to drive, fairly spacious, loaded with tech, and has an estimated 289-mile range, all at a base price of $54,985. The specs of our ideal Ariya would look competitive against the Volkswagen ID.4, an entry-level EV that extracts up to 275 miles of range from an 82-kWh battery pack. But the pricing puts the Ariya in competition with the aforementioned Ford Mustang Mach-E, Hyundai Ioniq 5, and Kia EV6.
+
+As nice as the Ariya is, we can’t see why it costs this much. It lacks the sporty driving dynamics of the EV6 and Mach-E, and the latter has its own hands-free driving system in the form of BlueCruise. So does the Super Cruise-equipped Chevrolet Bolt EUV, which is priced well below the Ariya, for that matter. And while the Ariya has an appealing design, so does the retro-modern Ioniq 5.
+
+The Ariya is a great new entry to the EV market, but despite its charming design and array of tech features, it’s a poor value. Perhaps the upcoming all-wheel drive version will change that, but for now the Ariya shows that Nissan has made up ground but hasn’t retaken the lead.
+
+Today's tech news, curated and condensed for your inbox Subscribe Check your inbox! Please provide a valid email address to continue. This email address is currently on file. If you are not receiving newsletters, please check your spam folder. Sorry, an error occurred during subscription. Please try again later.
+
+Editors' Recommendations
+
+ ## Ride & Fly: US-Israeli Startup To Begin Testing Flying Vehicle In 2020
+
+ ![img](https://f6h8q2y9.stackpathcdn.com/wp-content/uploads/2019/06/Front-view-Aska-1.jpg)] 
+
+Flying cars may sound like a utopian fantasy or science fiction to some – think “Star Wars” and “Back To the Future” – but to entrepreneurs and husband-and-wife team Guy and Maki Kaplinsky, they may soon be a reality on our roads and in the sky.
+
+
+
+The founders of the Silicon Valley-based startup New Future Transportation (NFT) are developing the Aska Drive & Fly, an electric, autonomous flying vehicle that they say will take commuters door-to-door at a reduced cost and environmental impact. NFT unveiled the design of the vehicle last week ahead of Israel’s EcoMotion conference, the largest smart mobility event in the country.
+
+The Aska, which means “flying bird” in Japanese, looks like a sleek, futuristic vehicle with wings stored on its roof that unfold to about 40 feet (12 meters) when in flying mode. It will be able to take off vertically and fly autonomously – no pilot required – for a range of up to 150 miles (240 kilometers), NFT says.
+
+SEE ALSO: Flying Cars May Have Found Their Launch Pad In Israel
+
+The design, the company says, is in line with Federal Aviation Administration (FAA) safety requirements including high reliability, back-up systems, and a safe landing feature in case of power system failure.
+
+The company indicated it will start testing the vehicle in 2020 and may begin selling it as soon as 2025.
+
+NFT operates an R&D center in the central Israeli city of Netanya, where Israeli engineers and experts are working on the vehicle’s autonomous features.
+
+“The focus is on the autonomous flying aspect of the car,” Elena Olvovsky, algorithm leader at the Netanya R&D Center tells NoCamels at the EcoMotion event. “It takes off vertically like a helicopter and then spreads the wings in the air. It can fly for about an hour, so that’s a significant distance.”
+
+The Aska, according to NFT, will allow the user to drive to a helipad, placed in central locations throughout the city, where it will employ its VTOL (vertical take-off and landing) and then fly autonomously to the destination. It will also have the ability to re-route, adjusting the location of the landing heliport depending on weather, turbulence, traffic or preference.
+
+
+
+
+
+A side view of the Aska. Courtesy
+
+The model has been in its developmental stages for about a year. NFT has indicated that the initial cost of the Aska will run between $200,000-$300,000 but it hopes to eventually bring that down to a more affordable range of about $50,000.
+
+“The target market for Aska is families with kids,” said Olvovsky. “It has to be practical and affordable without anyone needing a flying license.”
+
+
+
+However, the company is also working on a subscription-based model that may replace the need for other modes of transportation such as Uber and other ride-sharing systems, Guy Kaplinsky, who serves as NFT chairman, tells NoCamels in a phone interview.
+
+
+
+When the Aska goes to market in 2025, customers will be able to use the car as needed on a subscription-based model, he says. The option to own the car will still be available, but it will be more cost-efficient for people to pay yearly based on how much they expect to need the vehicle.
+
+“In the future, people will not need to own the car, because 90 percent of the time the car is sitting in your garage,” Kaplinsky said. “Let’s use the car when you need it. If you need it from eight to nine, we will deliver it to you from eight to nine.”
+
+
+
+In that case, the vehicle will fly to the subscriber autonomously, leaving from and arriving at a central helipad site.
+
+
+
+Sign up for our free weekly newsletter Subscribe
+
+The helipad, at only 20 by 20 meters (65.6 by 65.6 ft) is possible because of the VTOL capabilities of the vehicle. Whereas other flying cars may need a runway or terminal in order to take off and land, the helipad allows for Aska to be brought to smaller, more urban areas.
+
+
+
+“Because ASKA is both drive and fly, it can be parked on the street/in a garage, and charge in existing charging stations,” the company said. “For takeoff and landing, minimal infrastructure is required.”
+
+
+
+
+
+A rear view of the design of the Aska, an electric, autonomous flying car by NFT. Courtesy
+
+The helipad also addresses the challenge of noise. Because they are powered by an electric propulsion system, the vehicles will likely be loud, Kaplinsky says, making it less attractive to put helipads near neighborhoods. Instead, they will be placed in central locations such as near malls and off the highways.
+
+
+
+The propulsion system is still in its developmental stages, not only for reducing the noise, but for reducing its environmental impact.
+
+
+
+“Our target is a 100 percent electric propulsion system,” the company says. “The first Aska model will have a hybrid system that works with current battery technology…and we are in development to have a hydrogen-based propulsion system for the next generation of Aska.”
+
+
+
+For the first version of the model, the 100-percent-green battery is not a reality. With the lithium batteries available to the company today, Kaplinsky says, the energy capacity doesn’t allow the vehicle to fly for 350 miles, which is the target. The solution is a range extender, which will eventually be replaced by a new, green battery technology.
+
+
+
+And while the car may go off-road for long distances, that doesn’t eliminate traffic concerns. Other companies, such as Urban Aeronautics and even Uber, are developing similar VTOL vehicles that will eventually populate the air and bring up the problem of air traffic.
+
+
+
+The Aska design includes a “sense-and-avoid package,” Kaplinsky says, that can detect and avoid other airborne things, like similar aircraft or drones. But additional solutions will come from the private sector, he adds.
+
+
+
+The Aska model at EcoMotion in Tel Aviv, June 2019. Courtesy
+
+“Today, systems already exist that are managing maybe 5,000 aircrafts in the US,” Kaplinsky tells NoCamels. “But now it will be a million, or ten million aircraft simultaneously. So it would be more managing locally, and there are startups that are experts in developing air traffic control systems.”
+
+
+
+Though the challenges are numerous and competition is rapidly expanding as companies all over the world are creating their own VTOL vehicles, Kaplinsky is hopeful for the future of the Aska.
+
+
+
+NFT’s mission is not only to revolutionize transportation and reduce traffic congestion, but also to improve the quality of life and reduce the cost of living in big cities.
+
+
+
+“Our main target is enabling people to move out of the major cities because of the cost of living,” Kaplinsky said. “If you can commute at a reasonable cost, you can have a better quality of life.”
+
+SEE ALSO: Driverless Systems & Flying Cars: Israel’s Mobility Sector Talks Trends At Annual EcoMotion Conference
+
+Although flying cars may seem like a big step, even for major technological cities like Tel Aviv and Silicon Valley, Kaplinsky predicts that this is just the beginning for this mode of transportation.
+
+
+
+“A lot of people are skeptical and I understand them,” Kaplinsky said. “[That’s] because they are not involved in the development and our discussion. Just give us time and we will show you.”
+

+ 137 - 0
content/news/6/1.md

@@ -0,0 +1,137 @@
+---
+title: "Sony and Honda’s EV goes where the Apple Car never did"
+date: 2023-01-24T00:56:29+08:00
+draft: false
+display: true
+tags: ["EV"]
+categories: ["Automotive"]
+description: "-"
+url: "/blog/6"
+image: "https://pgw.udn.com.tw/gw/photo.php?u=https://uc.udn.com.tw/photo/2022/12/24/0/19746778.jpg&x=0&y=0&sw=0&sh=0&sl=W&fw=1050"
+type: "featured"
+---
+
+It’s easy to be cynical about Sony’s entry into the automotive world. Even the name — Afeela — evokes more eye rolls than serious expressions. But here’s why you should take it seriously. 
+
+For nearly a decade now, [Apple’s Project Titan](https://www.theverge.com/2022/12/6/23496789/apple-car-cost-self-driving-project-titan) has remained the world’s greatest mystery on four wheels.
+
+What would an Apple Car look like? Why would a consumer tech company get into the car game? Who would build it, and how would they sell it? And what would it mean for the car industry’s ongoing electric and digital transformation?
+
+Today, the Apple Car remains a total enigma. But almost out of nowhere, Sony — not Apple — has emerged as the tech giant that might have figured out how to make the rubber meet the road.
+
+
+Under a new brand called “[Afeela](https://www.theverge.com/2023/1/4/23539863/sony-honda-electric-vehicle-afeela-ces-reveal-photos),” the Japanese electronics and media conglomerate is partnering with Honda to produce a new electric vehicle from 2026 onward, which will more than likely be built at Honda’s facilities in the US to take advantage of new EV tax credit rules. It will lean heavily into [subscription features](https://www.theverge.com/2022/7/12/23204950/bmw-subscriptions-microtransactions-heated-seats-feature) and Sony’s own vast library of video games and media properties for in-car entertainment. Those services could be engaged while drivers and passengers are waiting for the EV to charge or when autonomous car features are deployed — [provided those technologies can advance enough](https://www.theverge.com/2022/10/28/23427129/autonomous-vehicles-robotaxi-hype-failure-expectations) to finally ship to customers.
+
+If this joint venture from what is now called Sony Honda Mobility does come to market in three years, executives who spoke to *The Verge* say they’re in it for the long haul, not as an experiment to test the waters. At CES, the venture’s CEO, Yasuhide Mizuno, [told reporters it’s eyeing lease deals for up to 10 years](https://europe.autonews.com/automakers/sony-honda-jv-plans-decade-long-lease-high-tech-ev?utm_source=daily&utm_medium=email&utm_campaign=20230117&utm_content=article7-headline), much longer than most cars are owned today, backed up by frequent over-the-air software updates and feature additions.
+
+![Inside The 2023 CES Trade Show](https://duet-cdn.vox-cdn.com/thumbor/0x0:5500x3667/2400x1600/filters:focal(2750x1834:2751x1835):format(webp)/cdn.vox-cdn.com/uploads/chorus_asset/file/24374711/1246005836.jpg)
+
+![Inside The 2023 CES Trade Show](https://duet-cdn.vox-cdn.com/thumbor/0x0:5500x3667/2400x1600/filters:focal(2750x1834:2751x1835):format(webp)/cdn.vox-cdn.com/uploads/chorus_asset/file/24374711/1246005836.jpg)
+
+“If we sell the vehicle itself, we have to support it for 10 years, a very long time to provide our services,” Sony Honda Mobility COO Izumi Kawanishi said in an interview with *The Verge*. “Basically, it is a long-term business.”
+
+Furthermore, Kawanishi was very clear about why Sony is getting into the car business at all: to chase a new business model that could upend the industry as we know it.
+
+“The important thing is software,” Kawanishi said. “We have to strengthen our software technology. That means we can provide mobility services for the future. We have to change the business from hardware to software.”
+
+
+Sony has been planning this for a while. The Afeela prototype shown at CES was an evolution of [the Vision-S concept shown at the same show in 2020](https://www.theverge.com/2020/1/8/21056404/sony-vision-s-electric-concept-prototype-first-look-ces-2020) before Honda was involved with the project. A seven-seat SUV concept [followed in 2022](https://www.sony.com/en/SonyInfo/News/Press/202201/22-002E/).
+
+The latest prototype is a sleek EV sedan that looks like a mashup of a Tesla with the Lucid Air. It boasts screens across the width of the dashboard, 45 sensors and cameras for semi-autonomous driving assistance, all-wheel drive, and hints at augmented reality integration and “virtual worlds” embedded into the driving experience. As a result, Sony’s first foray into the automotive sector already appears designed to compete with some of the top players in the luxury EV space.
+
+![Inside The 2023 CES Trade Show](https://duet-cdn.vox-cdn.com/thumbor/0x0:4922x3281/2400x1600/filters:focal(2461x1641:2462x1642):format(webp)/cdn.vox-cdn.com/uploads/chorus_asset/file/24374722/1246009028.jpg)
+
+![Inside The 2023 CES Trade Show](https://duet-cdn.vox-cdn.com/thumbor/0x0:4922x3281/2400x1600/filters:focal(2461x1641:2462x1642):format(webp)/cdn.vox-cdn.com/uploads/chorus_asset/file/24374722/1246009028.jpg)
+
+To be sure, the “Afeela” name is hard to swallow; it [was](https://twitter.com/amirhusain_tx/status/1612464285422333952) [roundly](https://twitter.com/TweakTown/status/1612437313816264705) [mocked](https://twitter.com/MrSouthShore/status/1613350609209499648) [on](https://twitter.com/Banker69/status/1612464753141776384) [social](https://twitter.com/iamgarffi/status/1612435468708360194) [media](https://twitter.com/stefthepef/status/1610825670128435200) after its [CES debut](https://www.theverge.com/2023/1/4/23539863/sony-honda-electric-vehicle-afeela-ces-reveal-photos) earlier this month. And beyond proving itself to new customers, this joint venture faces plenty of challenges over the next three years as the EV market grows at a rapid pace.
+
+But Afeela also signals a kind of maturation in the EV market, with serious, real-deal companies jumping in to own the digitized future of cars defined by subscription services, data, and software-driven features.
+
+Sony has been planning this for a while
+
+With Honda’s manufacturing expertise, this could represent a whole new market and multiple streams of revenue for Sony, which already has a massive foothold in entertainment media and the devices we use to consume it.
+
+“It’s definitely interesting,” said Jessica Caldwell, an auto industry analyst and executive director of insights at car-buying website Edmunds. “These are brands that are extremely established in their fields, and I think that is going to be very important moving forward in getting the customer to trust these vehicles as more autonomous features are added.”
+
+Additionally, she said, while not as visually striking as the Tesla Model S was when it debuted, the Afeela car seems more focused on meeting the needs of its occupants than anything else.
+
+”We have been talking about cars moving into a virtual living room for well over a decade at this point,” Caldwell said. “It seems like the focus is being taken away from the design of the car, per se, and more towards the features of the car and what the car can do for you.”
+
+![Inside The 2023 CES Trade Show](https://duet-cdn.vox-cdn.com/thumbor/0x0:5500x3659/2400x1597/filters:focal(2750x1830:2751x1831):format(webp)/cdn.vox-cdn.com/uploads/chorus_asset/file/24374723/1246008822.jpg)
+
+![Inside The 2023 CES Trade Show](https://duet-cdn.vox-cdn.com/thumbor/0x0:5500x3659/2400x1597/filters:focal(2750x1830:2751x1831):format(webp)/cdn.vox-cdn.com/uploads/chorus_asset/file/24374723/1246008822.jpg)
+
+**Serious players**
+
+In the automotive startup space and the EV space — and increasingly, those are one and the same — Tesla has been the exception, not the rule.
+
+Making cars is hard. In the last decade, consumers and industry observers alike almost came to expect production problems, [outlandish founder claims](https://www.theverge.com/transportation/2019/10/30/20879811/faraday-future-ceo-founder-jia-yueting-carsten-breitfeld-bankruptcy), and [outright fraud](https://www.theverge.com/2022/10/14/23405107/nikola-founder-trevor-milton-guilty-verdict-hydrogen-truck) to be the norm in the car startup world. Until established automakers like General Motors and BMW started taking EVs more seriously fairly recently, a good amount of new ventures could be written off as vaporware.
+
+“It seems like the focus is being taken away from the design of the car, per se, and more towards the features of the car and what the car can do for you.”
+
+Sony and Honda can’t be described that way. One is Japan’s largest electronics concern, the leader in the [console gaming market](https://www.gamesindustry.biz/ampere-analysis-console-market-grew-to-record-usd60bn-in-2021), and one of the biggest global forces in music, TV, and movie production. The other is one of the biggest car companies in the world and one with a hard-earned reputation for quality and reliability.
+
+“On the surface level, this is two of Japan Inc.’s best-known, finest companies in their respective fields coming together,” said Tyson Jominy, VP for data and analytics at automotive research firm JD Power. “When you combine a consumer electronics company with the auto space, I guess the expectation is that magic will happen.”
+
+As for Honda, Jominy said, “They’re known for their manufacturing excellence. \[Sony\] has found a fantastic partner, certainly one of the most blue-chip of blue-chip auto companies to partner with.”
+
+At CES, Afeela’s coming-out party definitely felt like Sony’s show, not Honda’s. Sony handled communications around the car, dealt with journalists, and debuted it amid a wider keynote presentation that included a teaser for Neill Blomkamp’s *Gran Turismo* movie and accessibility-focused game controllers for people with mobility challenges.
+
+But it’s still a 50-50 venture, with Yasuhide Mizuno, a former high-ranking Honda executive, in the CEO seat.
+
+![Inside The 2023 CES Trade Show](https://duet-cdn.vox-cdn.com/thumbor/0x0:5500x3659/2400x1597/filters:focal(2750x1830:2751x1831):format(webp)/cdn.vox-cdn.com/uploads/chorus_asset/file/24374726/1246008769.jpg)
+
+![Inside The 2023 CES Trade Show](https://duet-cdn.vox-cdn.com/thumbor/0x0:5500x3659/2400x1597/filters:focal(2750x1830:2751x1831):format(webp)/cdn.vox-cdn.com/uploads/chorus_asset/file/24374726/1246008769.jpg)
+
+Honda stands to gain a lot, too. It’s rare to see any Japanese companies taking the EV market seriously. Brands like Honda, Toyota, Mazda, and Nissan [are woefully behind American, European, and South Korean competitors](https://www.bloomberg.com/news/features/2023-01-06/toyota-nissan-risk-status-loss-as-tesla-vw-byd-top-global-electric-car-market#xj4y7vzkg) in battery EVs. Honda’s first truly modern EV, the Prologue crossover, is due out next year, but even that [uses General Motors’ Ultium EV platform](https://www.caranddriver.com/honda/prologue) rather than in-house hardware.
+
+For Honda, Afeela is part of a chance to catch up. [*Automotive News* reports](https://europe.autonews.com/automakers/sony-honda-jv-plans-decade-long-lease-high-tech-ev?utm_source=daily&utm_medium=email&utm_campaign=20230117&utm_content=article7-headline) that the Sony-Honda car will use [a new all-electric Honda platform called e: Architecture](https://techcrunch.com/2022/04/11/honda-to-launch-30-ev-models-by-2030/), and the Japanese carmaker will debut a similar EV under its own brand around the time Afeela launches.
+
+“On the surface level, this is two of Japan Inc.’s best-known, finest companies in their respective fields coming together.”
+
+“From Honda’s perspective, they’re basically getting a client or customer to help pay for their own EV development and to catch up,” Jominy said. “There definitely is some kind of hesitation on Japanese automakers to really go fully into the \[EV\] space. But I think they are recognizing that this is where things are heading.”
+
+With Honda, Sony gets not only a proven partner but also one with a massive manufacturing presence in the US — its carmaking infrastructure here is now so robust that nearly all Hondas and Acuras sold in America are also made in America. Doing so would allow Sony to take advantage of [recent changes under the Inflation Reduction Act](https://www.theverge.com/23310457/inflation-reduction-act-ev-tax-credit-act-explainer-how-to) that permit the fullest EV tax incentives when a car and its battery are built in North America; indeed, Honda is now [working on a $4.4 billion battery plant in Ohio](https://www.theverge.com/2022/8/29/23326844/honda-lg-chem-ev-battery-factory-ohio).
+
+“If you look at Tesla, Rivian and others, where they really get tripped up is production,” Jominy said. “Everything is great until the plant starts to open.”
+
+![Technology fair CES - electric car from Sony and Honda](https://duet-cdn.vox-cdn.com/thumbor/0x0:4928x3280/2400x1597/filters:focal(2464x1640:2465x1641):format(webp)/cdn.vox-cdn.com/uploads/chorus_asset/file/24374728/1246006141.jpg)
+
+![Technology fair CES - electric car from Sony and Honda](https://duet-cdn.vox-cdn.com/thumbor/0x0:4928x3280/2400x1597/filters:focal(2464x1640:2465x1641):format(webp)/cdn.vox-cdn.com/uploads/chorus_asset/file/24374728/1246006141.jpg)
+
+Image: Andrej Sokolow/picture alliance via Getty Images
+
+**Why does Sony want to make a car?**
+
+Sony and Honda may both be heavy hitters, but again, making cars is hard. Profit margins are low, overhead is high, manufacturing is difficult, and sales tactics vary from country to country.
+
+But executives at Sony Honda Mobility who spoke to *The Verge* say the automotive space is seen as the next natural frontier for Sony’s media business, allowing it to offer movies, music, TV shows, and gaming in the car soon.
+
+“From Honda’s perspective, they’re basically getting a client or customer to help pay for their own EV development and to catch up.”
+
+“We found out we can make one more entertainment space in mobility, like a living room” in car form, Kawanishi said. “We already delivered the PlayStation, the Walkman. The mobility space is one more market for us.”
+
+Sony is also getting into making cloud platforms for automakers, Kawanishi said. Last year, the company announced features like custom user settings being stored in the cloud, remote driving technology for autonomous applications, and the ability to remotely play streaming games.
+
+“To me, it seems from Sony’s perspective, this is a full integration of its users, from home to work via your car and everything in between,” Jominy said. “It’s now an extension that lets us take our personal lives portable.”
+
+Kawanishi said that Sony had conversations with multiple car companies as potential partners on the project but declined to name them. It’s also unclear if Afeela was ever intended to compete with an Apple Car; given the Vision-S concept’s appearance back in 2020, it’s certainly possible their internal planning lined up. (A Sony Honda Mobility spokesperson did not directly comment on whether Sony’s project was meant to be a competitor.)
+
+**The digital future of cars?**
+
+Jominy said that while he understands the business models both partners are going for, he still sees the potential roadblocks to Afeela’s success. For one, three years is a long time in the automotive business. Some 20 to 25 new EV models are set to debut each year over the next few years, other startups are learning how to break into the market, and China is angling to break into the US market as well.
+
+“You would expect \[Afeela\] to be a success on some level, although that’s far from guaranteed,” Jominy said. “There’s a lot of caveats and things that could happen between now and 2026.”
+
+If Sony Honda Mobility can pull this off — and that’s far from guaranteed — the model still says a lot about where the automotive industry is likely headed next — and not even for obvious things like in-car gaming.
+
+“We already delivered the PlayStation, the Walkman. The mobility space is one more market for us.”
+
+The Afeela cars aren’t about profiting from selling individual cars or dealerships making money from repairs; they’re about longer-term leases and financing terms and owners paying for various upgrades and features through the life of the vehicle.
+
+Jominy said he feels this transition to subscription features is “inevitable,” especially with car companies having to stick to price limits under the Inflation Reduction Act for their vehicles to qualify for tax incentives. Automakers could offset that by holding tight to base car prices while adding in more features drivers have to pay for over time.
+
+It’s not at all unlike how the mobile phone business works today, Kawanishi said.
+
+“It’s like the smartphone business,” he added. “The hardware is not so much the key… the mobility industry should be changed to that kind of model.”
+

+ 99 - 0
content/news/7/1.md

@@ -0,0 +1,99 @@
+---
+title: "Matthew Modine"
+date: 2023-01-24T00:56:29+08:00
+draft: false
+display: true
+tags: ["actor"]
+categories: ["entertainment"]
+description: "-"
+url: "/blog/7"
+image: "https://i.guim.co.uk/img/media/10509087f82ee56c703bd229781f25f7e1e9479b/455_79_4000_2400/master/4000.jpg?width=1300&quality=45&dpr=2&s=none"
+type: "featured"
+---
+
+## Matthew Modine: ‘It’s fascinating watching the sack of flesh I live in showing signs of wear’
+
+The actor on painful memories, wanting to read Dante’s Inferno in Italian, and why Trump and Putin are the same person
+
+[Rosanna Greenstreet](https://www.theguardian.com/profile/rosannagreenstreet)
+
+Sat 21 Jan 2023 09.30 GMT
+
+[
+
+139
+
+139
+
+](https://www.theguardian.com/lifeandstyle/2023/jan/21/matthew-modine-its-fascinating-watching-the-sack-of-flesh-i-live-in-showing-signs-of-wear#comments)
+
+Born in California, Matthew Modine, 63, made his film debut in the 80s, sharing the best actor award at the 1983 Venice film festival for Robert Altman’s Streamers. In 1984, he played the title role in Alan Parker’s Birdy, and in 1987 he starred in Stanley Kubrick’s Full Metal Jacket. Modine is Dr Martin Brenner in the hit Netflix series [Stranger Things](https://www.theguardian.com/tv-and-radio/stranger-things), and is currently playing Atticus Finch in To Kill a Mockingbird in the West End of London. He is married with two children and lives in New York.
+
+**What is your greatest fear?
+**Having a great fear.
+
+**What is your earliest memory?
+**We were having dinner and my cousin said we were eating my pet chicken, Susie. We adopted my mother’s sister’s children five days before I was born, after my aunt’s husband came home and shot her and then shot himself in front of the children. Gun violence in the US is not new.
+**What is the trait you most deplore in yourself?
+**I would deplore feeling deplorable about myself.
+
+**What is the trait you most deplore in others?
+**The inability to negotiate peace and truly forgive.
+
+**Describe yourself in three words
+**Doing my best.
+
+**What do you most dislike about your appearance?
+**It’s fascinating watching the sack of flesh I live in showing signs of wear. But I am grateful, each morning, to wake up in it.
+
+**What is your most unappealing habit?
+**Procrastinating.
+
+**What scares you about getting older?
+**Nothing. Better than the alternative.
+
+**Which book are you ashamed not to have read?
+**Dante’s Inferno (in Italian).
+
+**What is the worst thing anyone’s said to you?
+**“You can’t.”
+
+**What does love feel like?
+**Like falling – endlessly – and then discovering you have wings.
+
+**Have you ever said “I love you” without meaning it?
+**Of course I have. But it wasn’t because I didn’t want to actually make that person feel loved and appreciated.
+
+
+Which living person do you most despise, and why?
+Trump/Putin. Same person. Egotistical, bombastic, selfish shites.
+
+Which words or phrases do you most overuse?
+Stay positive.
+
+**What has been your biggest disappointment?
+**My biggest disappointment would be living with disappointment. What a burden to be shackled to. I would be truly disappointed if I didn’t (as the song says) pick myself up, dust myself off, and start all over again.
+
+**How often do you have sex?
+**Who’s counting?
+
+**What single thing would improve the quality of your life?
+**Stretching.
+
+**Would you rather have more sex, money or fame?
+**Well, I guess I won the lottery. Lucky me.
+
+**How would you like to be remembered?
+**As a kind person who cared for others.
+
+**What is the most important lesson life has taught you?
+**That we are all no more and no less than a single thread in a gigantic web of life. What we do and how we behave has repercussions for the entire web.
+
+**What happens when we die?
+**Only dying will tell.
+
+**Tell us a joke
+**Two peanuts were walking down the road. One was assaulted.
+
+
+

+ 40 - 0
content/news/8/1.md

@@ -0,0 +1,40 @@
+---
+title: "Harley-Davidson X350 Confirmed"
+date: 2023-01-24T00:56:29+08:00
+draft: false
+display: true
+tags: ["EV"]
+categories: ["Automotive"]
+description: "-"
+url: "/blog/8"
+image: "https://static1.topspeedimages.com/wordpress/wp-content/uploads/2022/12/harley-davidson-hd350.jpg?q=50&fit=contain&w=1140&h=&dpr=1.5"
+type: "post"
+---
+
+
+In December we brought you the world’s first picture of the production Harley-Davidson X350, and now while the bike hasn’t been officially revealed, it’s clear that it won’t merely be an entry-level doorway to the H-D range for Asia but a full production model in the US market as well.
+
+Since the first picture and details of the Harley X350 first showed up via Chinese type approvals, along with a larger X500 model, multiple documents have appeared in the US confirming that it’s also heading here. The first was a filing with the NHTSA (National Highway Traffic Safety Administration) earlier this month, listing the “X350RA” alongside a host of other H-Ds for the firm’s 2023 model year, and now the California Air Resources Board (CARB) has published paperwork confirming three variations on the X350 comply with the state’s strict emissions limits.
+
+The NHTSA paperwork only showed the X350RA version, while CARB’s documents show the X350, X350RA, and X350RA Derating Removed, all with the same weight and 353cc engine capacity. The last of those models “X350RA Derating Removed” might well be the answer to a question raised by the NHTSA document, which shows the X350RA to be oddly underpowered. The NHTSA shows the X350RA as having 23 hp, which is low even for a small, 353cc twin. In comparison, the Chinese type-approval paperwork for the standard Harley X350 rates it at 36 hp. The existence of separate X350RA and X350RA Derating Removed versions, shown in the CARB document, suggests that a version of the X350RA is detuned—a possible explanation for its relative paucity of power.
+
+ ![Harley Davidson X 350 pencil drawing front three quarter profile](https://www.cycleworld.com/resizer/FAC14uzo5PIw1aa0qgi8AxikN-g=/200x0/filters:focal(697x665:707x675)/cloudfront-us-east-1.images.arcpublishing.com/octane/5MZYOCKD4ZCWVKG6FJGJVV5HR4.jpg)
+
+Front three-quarter view of the new Harley-Davidson X350.Harley-Davidson/Qianjiang
+
+Digging deeper, the CARB paperwork shows that all three versions have the same engine, the 353cc version of the Qianjiang parallel twin that’s used already in various [QJMotor](https://www.cycleworld.com/tags/qjmotor/) and [Benelli](https://www.cycleworld.com/tags/benelli/) models. Each with two three-way catalysts, pulsed-air injection, multipoint fuel injection, and two heated oxygen sensors in the exhausts to comply with emissions limits. Meanwhile, the NHTSA’s document reveals that the X350RA’s official model code is LWZX350RA, as well as confirming that the model will be made in China. The manufacturer code in the VIN is “LBB,” which is the code assigned to Qianjiang, while all the other US-market Harleys are built here with Harley’s own “1HD” manufacturer codes.
+
+ADVERTISEMENT
+
+ ![Harley Davidson X 350 pencil drawing rear left overhead profile](https://www.cycleworld.com/resizer/ApfS69AR-FGphDgikRgZnYLr4d0=/200x0/filters:focal(710x698:720x708)/cloudfront-us-east-1.images.arcpublishing.com/octane/7MUPHZHACBAW3LUDVUECFGUCMY.jpg)
+
+This view shows the cockpit and styling of the rear.Harley-Davidson/Qianjiang
+
+As we revealed in December, the X350 and X500 models will be built by a joint venture company set up in China by Harley-Davidson and Qianjiang, owner of the QJMotor and Benelli companies and itself part of the Geely automotive empire that spans car brands including Volvo and Lotus as well as several Chinese companies. The joint venture, called Zhejiang Jisheng Motor Vehicle Co., Ltd., has recently been granted Chinese government approval to build motorcycles, removing the last hurdle delaying a project that’s been underway for several years behind the scenes.
+
+ ![Harley Davidson X 350 sketch](https://www.cycleworld.com/resizer/awOv1uovGFt9AmlmqB0QsyuYw0I=/200x0/filters:focal(524x615:534x625)/cloudfront-us-east-1.images.arcpublishing.com/octane/H54H2XASKBBXJKTZC6ODGHDQKU.jpg)
+
+This sketch was released prior to our obtaining actual images.Harley-Davidson/Qianjiang
+
+While the X350 didn’t appear along with the other 2023 Harley-Davidsons revealed in January, including the firm’s [120th Anniversary models](https://www.cycleworld.com/bikes/harley-davidson-120th-anniversary-models-2023/), the [Nightster Special, and the new Breakout](https://www.cycleworld.com/bikes/harley-davidson-breakout-returns-model-updates-for-2023/) 117, the company is planning multiple events during 2023, and more new model launches are expected to take place at some of them.
+

+ 48 - 0
content/news/9/1.md

@@ -0,0 +1,48 @@
+---
+title: "Why Is Jon Cryer Not Playing Lex Luthor on Superman & Lois"
+date: 2023-12-28T22:56:29+08:00
+draft: false
+display: true
+tags: ["Jon Cryer"]
+categories: ["entertainment"]
+description: "-"
+url: "/blog/9"
+image: "https://cdn.justjaredjr.com/wp-content/uploads/headlines/2023/01/why-is-jon-cryer-not-playing-lex-luthor-on-superman-and-lois.jpg"
+type: "post"
+---
+
+
+A new actor was announced to be playing Lex Luthor in the upcoming third season of Superman & Lois on Tuesday (January 24).
+
+After the news was revealed, many were wondering why Jon Cryer couldn’t reprise the role after previously portraying the supervillain on Supergirl.
+
+Resurfaced tweets from Jon in December 2022 give more insight into why he won’t be back.
+
+
+Over a month ago, it was revealed that the CW series was casting for the role, and fans had tagged the former Two and a Half Men star, wondering why he couldn’t step in.
+
+Jon revealed that he didn’t have time as he will be starting a new show in February, however, he did get a heads up about the casting decision.
+
+
+“Would’ve been fun. But I’m not sure I could’ve played Lex on @cwsupermanlois even if they wanted to do this,” he [tweeted](https://twitter.com/MrJonCryer/status/1603062900159119361). “I’m supposed to start shooting a new series for NBC in February.”
+
+He then added, “And for the record, the folks at DC were very cool and gave me a heads up that the show was going a different way with character before they started looking. Most of the time, actors learn about this stuff when it comes out in the trades. I’m grateful they were classy about it.”
+
+Another reason as to why **Jon** wouldn’t be playing Lex in *Superman & Lois* was revealed back at the end of season two.
+
+While [**Tyler Hoechlin**](https://www.justjaredjr.com/tags/tyler-hoechlin/ "Tyler Hoechlin")‘s Superman and [**Bitsie Tulloch**](https://www.justjaredjr.com/tags/bitsie-tulloch/ "Bitsie Tulloch")‘s Lois Lane were introduced to fans on *Supergirl*, and have appeared in crossover events, they aren’t necessarily a part of the *Arrowverse* as *Superman & Lois* is standing as it’s own show.
+
+At the end of season two, it was revealed that the events of the show don’t take place on the same Earth as other shows in the *Arrowverse*.
+
+“It goes back to season 1. In the original \[pilot\] there were a lot of references to *Crisis* *\[On Infinite Earths\]* and there was a *Flash* mention, and when we were shooting, the original intent was to be part of the *Arrowverse*,” showrunner **Todd Helbing** told *[EW](https://ew.com/tv/superman-and-lois-not-in-arrowverse/#:~:text=Since%20the%20Arrowverse%20crossover%20Crisis,let%20showrunner%20Todd%20Helbing%20explain.)*.
+
+“But you know, then the pandemic hit and things changed and we couldn’t do a crossover with *Batwoman*, and all of these references to *Crisis* through the pilot rewriting phase got stripped out just to make everything a little bit more clear for a broader audience,” he continued. “Then at some point in season 1 I had a conversation with DC, and we clearly wanted to put our own stamp on the show and our take on the Superman mythology. The original intent was to be part of the *Arrowverse*, but the further along we got and now, unfortunately, with the other shows being off the air, it just felt like the best decision was to have our *Superman & Lois* not be on the same Earth as the *Arrowverse*.”
+
+He added, “Look, I get it. I get it if the fans are disappointed. It’s a lot easier to be honest, finally, to tell everybody and not feel like you’re deceiving people when I was answering these questions like ‘Why isn’t Supergirl showing up?’ or ‘Why isn’t the Flash showing up?’ I’m just glad that finally everybody knows now so we can just continue to make the best show we can.”
+
+**Todd** also noted that the Superman and Lois we saw in the *Arrowverse* and in crossovers are different versions than on their own show.
+
+“Everybody that you see, while some people may have similar backstories and some may be different, they’re different characters.”
+
+Speaking of the *Arrowverse*, [quite a few stars are returning](https://www.justjaredjr.com/2023/01/04/every-arrowverse-star-returning-for-the-flashs-9th-final-season/) from different shows to rerise their roles for the final season of *The Flash*!
+

+ 2 - 0
layouts/shortcodes/rawhtml.html

@@ -0,0 +1,2 @@
+<!-- raw html -->
+{{.Inner}}

+ 129 - 0
static/css/reset.css

@@ -0,0 +1,129 @@
+html,
+body,
+div,
+span,
+applet,
+object,
+iframe,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+p,
+blockquote,
+pre,
+a,
+abbr,
+acronym,
+address,
+big,
+cite,
+code,
+del,
+dfn,
+em,
+img,
+ins,
+kbd,
+q,
+s,
+samp,
+small,
+strike,
+strong,
+sub,
+sup,
+tt,
+var,
+b,
+u,
+i,
+center,
+dl,
+dt,
+dd,
+ol,
+ul,
+li,
+fieldset,
+form,
+label,
+legend,
+table,
+caption,
+tbody,
+tfoot,
+thead,
+tr,
+th,
+td,
+article,
+aside,
+canvas,
+details,
+embed,
+figure,
+figcaption,
+footer,
+header,
+hgroup,
+menu,
+nav,
+output,
+ruby,
+section,
+summary,
+time,
+mark,
+audio,
+video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  vertical-align: baseline;
+}
+
+/* HTML5 display-role reset for older browsers */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+menu,
+nav,
+section {
+  display: block;
+}
+
+body {
+  line-height: 1;
+}
+
+ol,
+ul {
+  list-style: none;
+}
+
+blockquote,
+q {
+  quotes: none;
+}
+
+blockquote:before,
+blockquote:after,
+q:before,
+q:after {
+  content: '';
+  content: none;
+}
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}

+ 436 - 0
static/css/style.css

@@ -0,0 +1,436 @@
+@charset "UTF-8";
+/* 共通樣式 */
+:root {
+  --main-color: #000;
+  --sub-color: #e47140;
+  --gray-color: #727272;
+}
+
+* {
+  letter-spacing: 1px;
+  font-weight: 300;
+  font-family: "Noto Sans TC", sans-serif !important;
+}
+
+p,
+li {
+  line-height: 32px;
+}
+
+ul {
+  list-style: none;
+}
+
+img {
+  width: 100%;
+  height: auto;
+}
+
+html,
+body {
+  height: 100%;
+  margin: 0;
+}
+
+body {
+  display: flex;
+  flex-direction: column;
+  overflow-y: scroll;
+}
+
+.btn:focus,
+.form-control:focus {
+  border-color: var(--main-color) !important;
+  box-shadow: none !important;
+  outline: 0 none !important;
+}
+
+.badge {
+  font-weight: 400 !important;
+}
+
+.navbar {
+  background-color: var(--main-color) !important;
+}
+.navbar .navbar-collapse {
+  flex-grow: 0;
+}
+.navbar .navbar-brand {
+  font-size: 50px;
+  font-weight: 500;
+  font-family: "Roboto Slab", serif !important;
+  color: var(--sub-color);
+  transition: all 0.3s;
+}
+.navbar .navbar-brand:hover {
+  opacity: 0.9;
+  color: var(--sub-color);
+}
+
+.blog-post-tags .badge {
+  background-color: var(--main-color);
+}
+.blog-post-tags .badge:hover {
+  color: var(--main-color);
+  background-color: #fff;
+  border: 1px solid var(--main-color);
+}
+
+.blog-post-title {
+  margin: 10px 0 20px;
+}
+.blog-post-title a {
+  font-size: 50px;
+  font-weight: 600;
+}
+@media (max-width: 991px) {
+  .blog-post-title a {
+    font-size: 36px;
+  }
+}
+
+.pagination {
+  justify-content: center;
+}
+.pagination .page-link {
+  color: var(--main-color);
+}
+.pagination .page-item.active .page-link {
+  z-index: 3;
+  color: #fff;
+  background-color: var(--main-color);
+  border-color: var(--main-color);
+}
+
+.post-title {
+  line-height: 30px;
+}
+.post-title a {
+  color: #000;
+  text-decoration: none;
+  font-size: 22px;
+  font-weight: 500;
+}
+
+.post-block-title {
+  margin-bottom: 20px;
+  position: relative;
+  font-size: 22px;
+}
+.post-block-title::after {
+  position: absolute;
+  z-index: -10;
+  top: 15px;
+  left: 0;
+  width: 100%;
+  height: 0px;
+  content: "";
+  border-bottom: 1px solid #929292;
+  bottom: 5px;
+}
+.post-block-title span {
+  font-weight: 500;
+  background: #fff;
+}
+
+.news-info {
+  margin-top: 10px;
+  line-height: 20px;
+}
+.news-info a {
+  font-size: 14px;
+  font-weight: 500;
+  color: var(--gray-color);
+  text-decoration: none;
+  transition: all 0.3s;
+}
+.news-info a:hover {
+  opacity: 0.8;
+}
+.news-info small {
+  color: var(--gray-color);
+}
+
+.news-thumbnail {
+  height: 100%;
+  -o-object-fit: cover;
+     object-fit: cover;
+}
+
+.line-clamp {
+  max-width: 150px;
+  display: -webkit-box;
+  -webkit-line-clamp: 2;
+  -webkit-box-orient: vertical;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.post-depiction {
+  margin: 10px 0;
+  display: -webkit-box;
+  -webkit-line-clamp: 2;
+  -webkit-box-orient: vertical;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  line-height: 26px;
+}
+.post-depiction a {
+  color: #7a7a7a;
+  text-decoration: none;
+}
+
+.top-btn {
+  position: fixed;
+  bottom: 15px;
+  right: 15px;
+  z-index: 10;
+  opacity: 0;
+  transition: all 0.5s;
+}
+.top-btn button {
+  border: none;
+  background: var(--sub-color);
+  border-radius: 100px;
+  width: 55px;
+  height: 55px;
+}
+
+.show {
+  opacity: 1;
+}
+
+/* sidebar.html Start */
+.news-sidebar {
+  position: sticky;
+  top: 15px;
+}
+.news-sidebar .news-featured {
+  position: unset;
+}
+
+.search-btn {
+  border: 1px solid var(--main-color) !important;
+}
+.search-btn svg {
+  color: var(--main-color);
+}
+.search-btn:hover {
+  background-color: var(--main-color) !important;
+}
+.search-btn:hover svg {
+  color: #fff;
+}
+
+.tags {
+  margin: 0 5px 5px 0;
+  padding: 7px 10px !important;
+  font-size: 14px !important;
+  font-weight: 400 !important;
+  color: var(--main-color) !important;
+  border: 1px solid var(--main-color) !important;
+}
+.tags:hover {
+  color: #fff !important;
+  background-color: var(--main-color);
+}
+
+/* sidebar.html End */
+/* single.html Start */
+.blog-post.content h2 {
+  line-height: 46px;
+}
+.blog-post.content h4 {
+  font-size: 16px;
+  font-weight: 300;
+  line-height: 32px;
+}
+.blog-post.content h4 a {
+  padding: 5px 8px;
+  margin-right: 3px;
+  border: 1px solid #000;
+  border-radius: 5px;
+  font-size: 14px;
+}
+.blog-post.content h4 a:hover {
+  color: #fff !important;
+}
+.blog-post.content .back-link {
+  color: #000;
+  display: block;
+  text-align: center;
+  text-decoration: none;
+  transition: all 0.3s;
+}
+.blog-post.content .back-link:hover {
+  opacity: 0.7;
+}
+
+/* single.html End */
+/* content.html Start */
+.news-main {
+  height: 100%;
+  overflow: hidden;
+}
+@media (max-width: 991px) {
+  .news-main {
+    display: flex;
+    flex-direction: column-reverse;
+    margin-top: 8px;
+  }
+}
+.news-main .post-title {
+  line-height: 46px;
+}
+@media (max-width: 991px) {
+  .news-main .post-title {
+    line-height: 30px;
+  }
+}
+.news-main .post-title a {
+  font-size: 34px;
+}
+@media (max-width: 991px) {
+  .news-main .post-title a {
+    font-size: 22px;
+  }
+}
+.news-main img {
+  height: 100%;
+  -o-object-fit: cover;
+     object-fit: cover;
+}
+.news-main .news-info a {
+  font-size: 16px;
+}
+
+/* content.html End */
+/* focus.html Start */
+.focus-content {
+  position: sticky;
+  top: 20px;
+}
+
+/* focus.html End */
+/* recent.html Start */
+.recent-content .news-list {
+  margin: 0;
+}
+.recent-content .news-list li {
+  margin: 15px 0;
+}
+.recent-content .news-list li img {
+  width: 140px;
+  height: 105px;
+  -o-object-fit: cover;
+     object-fit: cover;
+}
+.recent-content .news-list li small {
+  display: block;
+}
+.recent-content .news-list li .news-info {
+  margin-top: 0px;
+}
+.recent-content .news-list li:last-child {
+  margin: 0;
+}
+
+/* recent.html End */
+/* news-tab.html Start */
+.tab-category .nav-link {
+  color: var(--main-color);
+  font-weight: 500;
+}
+.tab-category .nav-pills .nav-link.active,
+.tab-category .nav-pills .show > .nav-link {
+  color: var(--sub-color);
+  background-color: var(--main-color);
+}
+
+.tab-content .bg-img {
+  position: relative;
+  height: 370px;
+  background-blend-mode: multiply;
+  background-size: cover;
+  background-position: center center;
+  cursor: pointer;
+}
+.tab-content .bg-img section {
+  padding: 10px 25px;
+  position: absolute;
+  bottom: 0;
+  color: #fff;
+}
+.tab-content .bg-img section a {
+  color: #fff;
+  text-decoration: none;
+}
+.tab-content .bg-img section small {
+  font-size: 12px;
+}
+
+/* news-tab.html End */
+/* news-all.html Start */
+.news-all img {
+  -o-object-fit: cover;
+     object-fit: cover;
+  max-height: 300px;
+}
+.news-all .post-title {
+  margin: 5px auto;
+  line-height: 46px;
+}
+@media (max-width: 767px) {
+  .news-all .post-title {
+    line-height: 40px;
+  }
+}
+.news-all .post-title a {
+  font-size: 28px;
+}
+@media (max-width: 767px) {
+  .news-all .post-title a {
+    font-size: 26px;
+  }
+}
+.news-all .news-info a {
+  font-size: 18px;
+}
+.news-all hr {
+  margin: 1.5rem 0;
+}
+.news-all .first-img {
+  max-height: 50vh;
+  -o-object-fit: cover;
+     object-fit: cover;
+}
+.news-all .line {
+  padding: 0 12px;
+}
+
+/* news-all.html End */
+/* news-featured.html Start */
+.news-featured {
+  position: sticky;
+  top: 20px;
+}
+
+.news-featured img,
+.focus-content img {
+  -o-object-fit: cover;
+     object-fit: cover;
+}
+@media (max-width: 991px) {
+  .news-featured img,
+  .focus-content img {
+    height: 370px;
+  }
+}
+@media (max-width: 767px) {
+  .news-featured img,
+  .focus-content img {
+    height: 300px;
+  }
+}
+
+/* news-featured.html End *//*# sourceMappingURL=style.css.map */

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 0 - 0
static/css/style.css.map


+ 499 - 0
static/css/style.scss

@@ -0,0 +1,499 @@
+/* 共通樣式 */
+
+:root {
+  --main-color: #000;
+  --sub-color: #e47140;
+  --gray-color: #727272;
+}
+
+* {
+  letter-spacing: 1px;
+  font-weight: 300;
+  font-family: "Noto Sans TC", sans-serif !important;
+}
+
+p,
+li {
+  line-height: 32px;
+}
+
+ul {
+  list-style: none;
+}
+
+img {
+  width: 100%;
+  height: auto;
+}
+
+html,
+body {
+  height: 100%;
+  margin: 0;
+}
+
+body {
+  display: flex;
+  flex-direction: column;
+  overflow-y: scroll;
+}
+
+.btn:focus,
+.form-control:focus {
+  border-color: var(--main-color) !important;
+  box-shadow: none !important;
+  outline: 0 none !important;
+}
+
+.badge {
+  font-weight: 400 !important;
+}
+
+.navbar {
+  background-color: var(--main-color) !important;
+
+  .navbar-collapse {
+    flex-grow: 0;
+  }
+
+  .navbar-brand {
+    font-size: 50px;
+    font-weight: 500;
+    font-family: "Roboto Slab", serif !important;
+    color: var(--sub-color);
+    transition: all 0.3s;
+
+    &:hover {
+      opacity: 0.9;
+      color: var(--sub-color);
+    }
+  }
+}
+
+.blog-post-tags {
+  .badge {
+    background-color: var(--main-color);
+
+    &:hover {
+      color: var(--main-color);
+      background-color: #fff;
+      border: 1px solid var(--main-color);
+    }
+  }
+}
+
+.blog-post-title {
+  margin: 10px 0 20px;
+
+  a {
+    font-size: 50px;
+    font-weight: 600;
+    @media (max-width: 991px) {
+      font-size: 36px;
+    }
+  }
+}
+
+.pagination {
+  justify-content: center;
+
+  .page-link {
+    color: var(--main-color);
+  }
+
+  .page-item.active .page-link {
+    z-index: 3;
+    color: #fff;
+    background-color: var(--main-color);
+    border-color: var(--main-color);
+  }
+}
+
+.post-title {
+  line-height: 30px;
+
+  a {
+    color: #000;
+    text-decoration: none;
+    font-size: 22px;
+    font-weight: 500;
+  }
+}
+
+.post-block-title {
+  margin-bottom: 20px;
+  position: relative;
+  font-size: 22px;
+
+  &::after {
+    position: absolute;
+    z-index: -10;
+    top: 15px;
+    left: 0;
+    width: 100%;
+    height: 0px;
+    content: "";
+    border-bottom: 1px solid #929292;
+    bottom: 5px;
+  }
+
+  span {
+    font-weight: 500;
+    background: #fff;
+  }
+}
+
+.news-info {
+  margin-top: 10px;
+  line-height: 20px;
+
+  a {
+    font-size: 14px;
+    font-weight: 500;
+    color: var(--gray-color);
+    text-decoration: none;
+    transition: all 0.3s;
+
+    &:hover {
+      opacity: 0.8;
+    }
+  }
+
+  small {
+    color: var(--gray-color);
+  }
+}
+
+.news-thumbnail {
+  height: 100%;
+  object-fit: cover;
+}
+
+// 文字省略
+.line-clamp {
+  max-width: 150px;
+  display: -webkit-box;
+  -webkit-line-clamp: 2;
+  -webkit-box-orient: vertical;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.post-depiction {
+  // max-width: 350px;
+  margin: 10px 0;
+  display: -webkit-box;
+  -webkit-line-clamp: 2;
+  -webkit-box-orient: vertical;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  line-height: 26px;
+
+  a {
+    color: #7a7a7a;
+    text-decoration: none;
+  }
+}
+
+.top-btn {
+  position: fixed;
+  bottom: 15px;
+  right: 15px;
+  z-index: 10;
+  opacity: 0; // scrollTop = 0
+  transition: all .5s;
+
+  button {
+    border: none;
+    background: var(--sub-color);
+    border-radius: 100px;
+    width: 55px;
+    height: 55px;
+  }
+}
+
+.show {
+  opacity: 1; // scrollTop > 100
+}
+
+/* sidebar.html Start */
+
+.news-sidebar {
+  position: sticky;
+  top: 15px;
+
+  .news-featured {
+    position: unset;
+  }
+}
+
+.search-btn {
+  border: 1px solid var(--main-color) !important;
+
+  svg {
+    color: var(--main-color);
+  }
+
+  &:hover {
+    background-color: var(--main-color) !important;
+
+    svg {
+      color: #fff;
+    }
+  }
+}
+
+.tags {
+  margin: 0 5px 5px 0;
+  padding: 7px 10px !important;
+  font-size: 14px !important;
+  font-weight: 400 !important;
+  color: var(--main-color) !important;
+  border: 1px solid var(--main-color) !important;
+
+  &:hover {
+    color: #fff !important;
+    background-color: var(--main-color);
+  }
+}
+
+/* sidebar.html End */
+
+/* single.html Start */
+
+.blog-post.content {
+  h2 {
+    line-height: 46px;
+  }
+
+  h4 {
+    font-size: 16px;
+    font-weight: 300;
+    line-height: 32px;
+
+    a {
+      padding: 5px 8px;
+      margin-right: 3px;
+      border: 1px solid #000;
+      border-radius: 5px;
+      font-size: 14px;
+
+      &:hover {
+        color: #fff !important;
+      }
+    }
+  }
+
+  .back-link {
+    color: #000;
+    display: block;
+    text-align: center;
+    text-decoration: none;
+    transition: all 0.3s;
+
+    &:hover {
+      opacity: 0.7;
+    }
+  }
+}
+
+/* single.html End */
+
+/* content.html Start */
+
+.news-main {
+  height: 100%;
+  overflow: hidden;
+
+  @media (max-width: 991px) {
+    display: flex;
+    flex-direction: column-reverse;
+    margin-top: 8px;
+  }
+
+  .post-title {
+    line-height: 46px;
+
+    @media (max-width: 991px) {
+      line-height: 30px;
+    }
+
+    a {
+      font-size: 34px;
+
+      @media (max-width: 991px) {
+        font-size: 22px;
+      }
+    }
+  }
+
+  img {
+    height: 100%;
+    object-fit: cover;
+  }
+
+  .news-info {
+    a {
+      font-size: 16px;
+    }
+  }
+}
+
+/* content.html End */
+
+/* focus.html Start */
+
+.focus-content {
+  position: sticky;
+  top: 20px;
+}
+
+/* focus.html End */
+
+/* recent.html Start */
+
+.recent-content {
+  .news-list {
+    margin: 0;
+
+    li {
+      margin: 15px 0;
+
+      img {
+        width: 140px;
+        height: 105px;
+        object-fit: cover;
+      }
+
+      small {
+        display: block;
+      }
+
+      .news-info {
+        margin-top: 0px;
+      }
+    }
+
+    li:last-child {
+      margin: 0;
+    }
+  }
+}
+
+/* recent.html End */
+
+/* news-tab.html Start */
+
+.tab-category {
+  .nav-link {
+    color: var(--main-color);
+    font-weight: 500;
+  }
+
+  .nav-pills .nav-link.active,
+  .nav-pills .show>.nav-link {
+    color: var(--sub-color);
+    background-color: var(--main-color);
+  }
+}
+
+.tab-content {
+  .bg-img {
+    position: relative;
+    height: 370px;
+    // 設置背景混和模式為相乘模式
+    background-blend-mode: multiply;
+    background-size: cover;
+    background-position: center center;
+    cursor: pointer;
+
+    section {
+      padding: 10px 25px;
+      position: absolute;
+      bottom: 0;
+      color: #fff;
+
+      a {
+        color: #fff;
+        text-decoration: none;
+      }
+
+      small {
+        font-size: 12px;
+      }
+    }
+  }
+}
+
+/* news-tab.html End */
+
+/* news-all.html Start */
+
+.news-all {
+  img {
+    object-fit: cover;
+    max-height: 300px;
+  }
+
+  .post-title {
+    margin: 5px auto;
+    line-height: 46px;
+
+    @media (max-width: 767px) {
+      line-height: 40px;
+    }
+
+    a {
+      font-size: 28px;
+
+      @media (max-width: 767px) {
+        font-size: 26px;
+      }
+    }
+  }
+
+  .news-info {
+    a {
+      font-size: 18px;
+    }
+  }
+
+  hr {
+    margin: 1.5rem 0;
+  }
+
+  .first-img {
+    max-height: 50vh;
+    object-fit: cover;
+  }
+
+  .line {
+    padding: 0 12px;
+  }
+}
+
+/* news-all.html End */
+
+/* news-featured.html Start */
+
+.news-featured {
+  position: sticky;
+  top: 20px;
+}
+
+.news-featured,
+.focus-content {
+  img {
+    object-fit: cover;
+
+    @media (max-width: 991px) {
+      height: 370px;
+    }
+
+    @media (max-width: 767px) {
+      height: 300px;
+    }
+  }
+}
+
+/* news-featured.html End */

+ 1 - 0
static/googlea343783bd909616f.html

@@ -0,0 +1 @@
+google-site-verification: googlea343783bd909616f.html

BIN
static/img/image.jpg


+ 39 - 0
static/js/main.js

@@ -0,0 +1,39 @@
+// 切換分頁時移至列表區塊
+document.addEventListener("DOMContentLoaded", () => {
+    if (document.querySelector('#news-block')) {
+        let offsetHeight = document.querySelector('#news-block').offsetTop;
+        if (offsetHeight) window.scrollTo(0, offsetHeight);
+    }
+});
+
+function historyBack() {
+    let prevPage = window.location.href;
+
+    // 若無法返回上一頁則回到首頁
+    window.history.go(-1);
+
+    setTimeout(() => {
+        if (window.location.href == prevPage) {
+            window.location.href = "/";
+        }
+    }, 500);
+}
+
+let topBtn = document.querySelector('.top-btn');
+
+window.onscroll = () => {
+    const px = 100;
+    if (topBtn) {
+        if (document.documentElement.scrollTop > px) {
+            topBtn.classList.add("show");
+        } else {
+            topBtn.classList.remove("show");
+        }
+    }
+};
+
+if (topBtn) {
+    topBtn.addEventListener('click', () => {
+        document.documentElement.scrollTop = 0;
+    }, false);
+}

+ 20 - 0
themes/hugo-bootstrap-5/LICENSE.md

@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2020 Tiger Oakes
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ 52 - 0
themes/hugo-bootstrap-5/README.md

@@ -0,0 +1,52 @@
+# Hugo Bootstrap v5 Theme
+
+This is a simple Hugo theme using [Bootstrap v5](https://getbootstrap.com/), inspired by [hugo-bootstrap](https://github.com/Xzya/hugo-bootstrap).
+
+## Installation
+
+You can install the theme either as a clone or submodule.
+
+I recommend the latter. From the root of your Hugo site, type the following:
+
+```shell
+$ git submodule add https://github.com/NotWoods/hugo-bootstrap-5.git themes/hugo-bootstrap-5
+$ git submodule init
+$ git submodule update
+```
+
+Now you can get updates to the theme in the future by updating the submodule:
+
+```
+$ git submodule update --remote themes/hugo-bootstrap-5
+```
+
+## Demo
+
+You can find a demo [here](https://themes.gohugo.io/theme/hugo-bootstrap-5/).
+
+## Screenshots
+
+![preview](https://raw.githubusercontent.com/NotWoods/hugo-bootstrap-5/master/images/screenshot.png)
+![preview](https://raw.githubusercontent.com/NotWoods/hugo-bootstrap-5/master/images/screenshot2.png)
+
+## Configuration
+
+Check `exampleSite/config.toml` for an example configuration.
+
+## Brand
+
+The brand can be overriden by adding your own layout `layouts/partials/brand.html`. Check `exampleSite/layouts/partials/brand.html` for an example.
+
+## Menu
+
+The navbar displays the `main` menus by default. You can find more details about how to configure it [here](https://gohugo.io/templates/menu-templates/), as well as in the `exampleSite`.
+
+## Multilanguage
+
+The theme supports multiple languages.
+
+You can find the default translation bundles in `i18n` (english and spanish by default).
+
+## License
+
+Open sourced under the [MIT license](./LICENSE.md).

+ 105 - 0
themes/hugo-bootstrap-5/exampleSite/config.toml

@@ -0,0 +1,105 @@
+baseurl = "https://example.com/"
+title = "Bootstrap demo"
+languageCode = "en-us"
+defaultContentLanguage = "en"
+
+# Pagination
+paginate = 3
+paginatePath = "page"
+
+# Theme to use
+theme = "hugo-bootstrap-5"
+
+[taxonomies]
+  tag = "tags"
+  category = "categories"
+
+# Google analytics
+# googleAnalytics = ""
+
+[languages.en]
+  languageName = "English"
+
+  # Replace the default footer message with a localized message
+  # copyright = "Hugo template made with ❤ by Xzya"
+
+  [[languages.en.menu.main]]
+    url = "/"
+    name = "Home"
+    weight = 1
+  [[languages.en.menu.main]]
+    url = "/about/"
+    name = "About"
+    weight = 2
+  [[languages.en.menu.main]]
+    url = "/contact/"
+    name = "Contact"
+    weight = 3
+
+[languages.es]
+  languageName = "Español"
+
+  [[languages.es.menu.main]]
+    url = "/es/"
+    name = "Casa"
+    weight = 1
+  [[languages.es.menu.main]]
+    url = "/about/"
+    name = "Acerca de"
+    weight = 2
+  [[languages.es.menu.main]]
+    url = "/contact/"
+    name = "Contacto"
+    weight = 3
+
+[languages.de]
+  languageName = "Deutsch"
+
+  [[languages.de.menu.main]]
+    url = "/de/"
+    name = "Start"
+    weight = 1
+  [[languages.de.menu.main]]
+    url = "/about/"
+    name = "Über uns"
+    weight = 2
+  [[languages.de.menu.main]]
+    url = "/contact/"
+    name = "Kontakt"
+    weight = 3
+
+# Links format
+
+[permalinks]
+  post = "/:year/:month/:title/"
+
+[params]
+  # Main sections (currently used for the recent posts in the sidebar)
+  mainSections = ["post"]
+
+  # Default author
+  author = "John Doe"
+
+  # Date format (default: Jan 2, 2006)
+  # date_format = "Jan 2, 2006"
+
+  # Display post summaries instead of content in list templates (default: true)
+  # truncate = false
+
+  [params.sidebar]
+    # Whether to show the recent posts or not (default: true)
+    # showRecent = false
+
+    # Whether to show the taxonomies or not (default: true)
+    # showTaxonomy = false
+
+    # How many posts to show on the sidebar (Default: 5)
+    # num_recent_posts = 5
+
+  [params.header]
+    # Color scheme for the header (default: "light")
+    # colorScheme = "dark"
+
+  [params.footer]
+    # Color scheme for the footer (default: "light")
+    # colorScheme = "dark"

+ 13 - 0
themes/hugo-bootstrap-5/exampleSite/content/about.de.md

@@ -0,0 +1,13 @@
+---
+title: "Über uns"
+---
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nec ex vel orci dapibus aliquam non in metus. Vestibulum posuere justo nunc, eu eleifend orci dignissim in. Vestibulum eu eros neque. Quisque luctus posuere sapien nec accumsan. Maecenas mattis, nisl ac dictum ultrices, ligula eros vehicula eros, vel fermentum diam erat eget dolor. Suspendisse vitae felis ligula. Integer quis tincidunt risus, convallis ullamcorper dui. Suspendisse potenti. Sed scelerisque volutpat leo, at mattis ipsum posuere nec. Cras id velit imperdiet, laoreet lorem et, feugiat elit. Donec vitae odio fringilla, porttitor eros vel, varius magna.
+
+Nulla molestie laoreet tortor, nec congue eros lacinia eget. Etiam aliquet odio semper felis ultrices, eget suscipit ex interdum. Proin maximus, dolor ac suscipit pretium, metus sapien pulvinar velit, posuere placerat libero urna nec dui. Praesent sed porttitor lacus. Suspendisse volutpat tempor gravida. Nam a dolor sed erat hendrerit porttitor. Sed semper eget sem et mollis. Integer ultrices luctus tellus, vitae semper augue tristique et. Phasellus sit amet ornare libero. Etiam risus tortor, suscipit non tempor vitae, sodales quis elit. Aliquam convallis nisl ac erat euismod scelerisque. Vivamus ornare lectus sit amet nisl facilisis maximus. Nulla interdum eu diam sit amet auctor. Nulla dapibus laoreet metus, et lacinia nulla facilisis ut. Duis volutpat nibh maximus ultrices sollicitudin. Curabitur orci justo, finibus ac ipsum eget, scelerisque pharetra elit.
+
+In hac habitasse platea dictumst. Suspendisse facilisis justo posuere, luctus mi vel, elementum quam. Nullam imperdiet elit a erat gravida pretium. Cras pretium metus odio, tristique interdum urna varius a. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent fringilla mauris id tincidunt varius. Aliquam erat volutpat. Suspendisse vitae euismod neque. Maecenas porta mauris a lectus suscipit, vehicula dictum odio condimentum. Ut at luctus enim, in pretium urna.
+
+Phasellus sagittis at mauris vitae mattis. Proin sed tortor fringilla, porta risus sed, faucibus odio. Maecenas fermentum vitae metus sit amet rutrum. Fusce porttitor elit vitae nisi sollicitudin luctus. Nunc purus urna, porttitor quis neque ac, viverra volutpat arcu. Sed pulvinar pellentesque placerat. Praesent iaculis, nisl non efficitur fermentum, lacus ligula porta tortor, feugiat dapibus diam justo a sapien. Sed neque odio, fermentum eu convallis non, consequat sollicitudin sem. Nullam placerat augue sed tortor ultricies vulputate. Nunc cursus elit at consectetur accumsan. Suspendisse potenti. Cras ultrices interdum dui vitae consequat. Maecenas porta mauris urna, in fermentum nisi pharetra eu.
+
+Donec a ex sit amet mauris accumsan sagittis vel eget turpis. In leo lorem, dignissim vitae justo sit amet, congue porttitor nisi. Nunc commodo mattis dapibus. Proin condimentum sagittis euismod. Quisque consectetur velit sed volutpat dignissim. Proin ac enim metus. Quisque eu arcu sapien. In hac habitasse platea dictumst. Etiam scelerisque urna risus, a sagittis diam ornare sed. 

+ 13 - 0
themes/hugo-bootstrap-5/exampleSite/content/about.es.md

@@ -0,0 +1,13 @@
+---
+title: "Acerca de"
+---
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nec ex vel orci dapibus aliquam non in metus. Vestibulum posuere justo nunc, eu eleifend orci dignissim in. Vestibulum eu eros neque. Quisque luctus posuere sapien nec accumsan. Maecenas mattis, nisl ac dictum ultrices, ligula eros vehicula eros, vel fermentum diam erat eget dolor. Suspendisse vitae felis ligula. Integer quis tincidunt risus, convallis ullamcorper dui. Suspendisse potenti. Sed scelerisque volutpat leo, at mattis ipsum posuere nec. Cras id velit imperdiet, laoreet lorem et, feugiat elit. Donec vitae odio fringilla, porttitor eros vel, varius magna.
+
+Nulla molestie laoreet tortor, nec congue eros lacinia eget. Etiam aliquet odio semper felis ultrices, eget suscipit ex interdum. Proin maximus, dolor ac suscipit pretium, metus sapien pulvinar velit, posuere placerat libero urna nec dui. Praesent sed porttitor lacus. Suspendisse volutpat tempor gravida. Nam a dolor sed erat hendrerit porttitor. Sed semper eget sem et mollis. Integer ultrices luctus tellus, vitae semper augue tristique et. Phasellus sit amet ornare libero. Etiam risus tortor, suscipit non tempor vitae, sodales quis elit. Aliquam convallis nisl ac erat euismod scelerisque. Vivamus ornare lectus sit amet nisl facilisis maximus. Nulla interdum eu diam sit amet auctor. Nulla dapibus laoreet metus, et lacinia nulla facilisis ut. Duis volutpat nibh maximus ultrices sollicitudin. Curabitur orci justo, finibus ac ipsum eget, scelerisque pharetra elit.
+
+In hac habitasse platea dictumst. Suspendisse facilisis justo posuere, luctus mi vel, elementum quam. Nullam imperdiet elit a erat gravida pretium. Cras pretium metus odio, tristique interdum urna varius a. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent fringilla mauris id tincidunt varius. Aliquam erat volutpat. Suspendisse vitae euismod neque. Maecenas porta mauris a lectus suscipit, vehicula dictum odio condimentum. Ut at luctus enim, in pretium urna.
+
+Phasellus sagittis at mauris vitae mattis. Proin sed tortor fringilla, porta risus sed, faucibus odio. Maecenas fermentum vitae metus sit amet rutrum. Fusce porttitor elit vitae nisi sollicitudin luctus. Nunc purus urna, porttitor quis neque ac, viverra volutpat arcu. Sed pulvinar pellentesque placerat. Praesent iaculis, nisl non efficitur fermentum, lacus ligula porta tortor, feugiat dapibus diam justo a sapien. Sed neque odio, fermentum eu convallis non, consequat sollicitudin sem. Nullam placerat augue sed tortor ultricies vulputate. Nunc cursus elit at consectetur accumsan. Suspendisse potenti. Cras ultrices interdum dui vitae consequat. Maecenas porta mauris urna, in fermentum nisi pharetra eu.
+
+Donec a ex sit amet mauris accumsan sagittis vel eget turpis. In leo lorem, dignissim vitae justo sit amet, congue porttitor nisi. Nunc commodo mattis dapibus. Proin condimentum sagittis euismod. Quisque consectetur velit sed volutpat dignissim. Proin ac enim metus. Quisque eu arcu sapien. In hac habitasse platea dictumst. Etiam scelerisque urna risus, a sagittis diam ornare sed. 

+ 13 - 0
themes/hugo-bootstrap-5/exampleSite/content/about.md

@@ -0,0 +1,13 @@
+---
+title: "About"
+---
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed nec ex vel orci dapibus aliquam non in metus. Vestibulum posuere justo nunc, eu eleifend orci dignissim in. Vestibulum eu eros neque. Quisque luctus posuere sapien nec accumsan. Maecenas mattis, nisl ac dictum ultrices, ligula eros vehicula eros, vel fermentum diam erat eget dolor. Suspendisse vitae felis ligula. Integer quis tincidunt risus, convallis ullamcorper dui. Suspendisse potenti. Sed scelerisque volutpat leo, at mattis ipsum posuere nec. Cras id velit imperdiet, laoreet lorem et, feugiat elit. Donec vitae odio fringilla, porttitor eros vel, varius magna.
+
+Nulla molestie laoreet tortor, nec congue eros lacinia eget. Etiam aliquet odio semper felis ultrices, eget suscipit ex interdum. Proin maximus, dolor ac suscipit pretium, metus sapien pulvinar velit, posuere placerat libero urna nec dui. Praesent sed porttitor lacus. Suspendisse volutpat tempor gravida. Nam a dolor sed erat hendrerit porttitor. Sed semper eget sem et mollis. Integer ultrices luctus tellus, vitae semper augue tristique et. Phasellus sit amet ornare libero. Etiam risus tortor, suscipit non tempor vitae, sodales quis elit. Aliquam convallis nisl ac erat euismod scelerisque. Vivamus ornare lectus sit amet nisl facilisis maximus. Nulla interdum eu diam sit amet auctor. Nulla dapibus laoreet metus, et lacinia nulla facilisis ut. Duis volutpat nibh maximus ultrices sollicitudin. Curabitur orci justo, finibus ac ipsum eget, scelerisque pharetra elit.
+
+In hac habitasse platea dictumst. Suspendisse facilisis justo posuere, luctus mi vel, elementum quam. Nullam imperdiet elit a erat gravida pretium. Cras pretium metus odio, tristique interdum urna varius a. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Praesent fringilla mauris id tincidunt varius. Aliquam erat volutpat. Suspendisse vitae euismod neque. Maecenas porta mauris a lectus suscipit, vehicula dictum odio condimentum. Ut at luctus enim, in pretium urna.
+
+Phasellus sagittis at mauris vitae mattis. Proin sed tortor fringilla, porta risus sed, faucibus odio. Maecenas fermentum vitae metus sit amet rutrum. Fusce porttitor elit vitae nisi sollicitudin luctus. Nunc purus urna, porttitor quis neque ac, viverra volutpat arcu. Sed pulvinar pellentesque placerat. Praesent iaculis, nisl non efficitur fermentum, lacus ligula porta tortor, feugiat dapibus diam justo a sapien. Sed neque odio, fermentum eu convallis non, consequat sollicitudin sem. Nullam placerat augue sed tortor ultricies vulputate. Nunc cursus elit at consectetur accumsan. Suspendisse potenti. Cras ultrices interdum dui vitae consequat. Maecenas porta mauris urna, in fermentum nisi pharetra eu.
+
+Donec a ex sit amet mauris accumsan sagittis vel eget turpis. In leo lorem, dignissim vitae justo sit amet, congue porttitor nisi. Nunc commodo mattis dapibus. Proin condimentum sagittis euismod. Quisque consectetur velit sed volutpat dignissim. Proin ac enim metus. Quisque eu arcu sapien. In hac habitasse platea dictumst. Etiam scelerisque urna risus, a sagittis diam ornare sed. 

+ 5 - 0
themes/hugo-bootstrap-5/exampleSite/content/contact.de.md

@@ -0,0 +1,5 @@
+---
+title: "Kontakt"
+---
+
+Kontaktieren Sie uns!

+ 5 - 0
themes/hugo-bootstrap-5/exampleSite/content/contact.es.md

@@ -0,0 +1,5 @@
+---
+title: "Contacto"
+---
+
+Contact us!

+ 5 - 0
themes/hugo-bootstrap-5/exampleSite/content/contact.md

@@ -0,0 +1,5 @@
+---
+title: "Contact"
+---
+
+Contact us!

+ 13 - 0
themes/hugo-bootstrap-5/exampleSite/content/post/2015-01-04-first-post.es.md

@@ -0,0 +1,13 @@
+---
+title: Primer comentario!
+date: 2015-01-05
+tags: ["demo"]
+---
+
+This is my first post, how exciting!
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
+
+<!--more-->
+
+Nullam at magna blandit, bibendum massa non, tincidunt turpis. Phasellus convallis lorem quis leo vulputate posuere. Nullam sit amet mattis lorem. Praesent et dolor feugiat, fringilla mauris iaculis, fringilla purus. Duis a finibus justo. Praesent tincidunt malesuada quam, ornare euismod sem vulputate vitae. Suspendisse consectetur ut felis vel tempor. Ut a viverra quam, quis luctus lorem. Pellentesque dolor ipsum, euismod vitae felis sit amet, fermentum consequat mi. Pellentesque eget mauris eu mi suscipit consequat.

+ 13 - 0
themes/hugo-bootstrap-5/exampleSite/content/post/2015-01-04-first-post.md

@@ -0,0 +1,13 @@
+---
+title: First post!
+date: 2015-01-05
+tags: ["demo"]
+---
+
+This is my first post, how exciting!
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
+
+<!--more-->
+
+Nullam at magna blandit, bibendum massa non, tincidunt turpis. Phasellus convallis lorem quis leo vulputate posuere. Nullam sit amet mattis lorem. Praesent et dolor feugiat, fringilla mauris iaculis, fringilla purus. Duis a finibus justo. Praesent tincidunt malesuada quam, ornare euismod sem vulputate vitae. Suspendisse consectetur ut felis vel tempor. Ut a viverra quam, quis luctus lorem. Pellentesque dolor ipsum, euismod vitae felis sit amet, fermentum consequat mi. Pellentesque eget mauris eu mi suscipit consequat.

+ 13 - 0
themes/hugo-bootstrap-5/exampleSite/content/post/2016-01-04-first-post.de.md

@@ -0,0 +1,13 @@
+---
+title: Erster Artikel!
+date: 2015-01-05
+tags: ["demo"]
+---
+
+Das ist mein erster Artikel, wie spannend!
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit.
+
+<!--more-->
+
+Nullam at magna blandit, bibendum massa non, tincidunt turpis. Phasellus convallis lorem quis leo vulputate posuere. Nullam sit amet mattis lorem. Praesent et dolor feugiat, fringilla mauris iaculis, fringilla purus. Duis a finibus justo. Praesent tincidunt malesuada quam, ornare euismod sem vulputate vitae. Suspendisse consectetur ut felis vel tempor. Ut a viverra quam, quis luctus lorem. Pellentesque dolor ipsum, euismod vitae felis sit amet, fermentum consequat mi. Pellentesque eget mauris eu mi suscipit consequat.

+ 4 - 0
themes/hugo-bootstrap-5/exampleSite/content/post/_index.md

@@ -0,0 +1,4 @@
+---
+title: Posts
+---
+Hello world!

+ 1147 - 0
themes/hugo-bootstrap-5/exampleSite/content/post/creating-a-new-theme.md

@@ -0,0 +1,1147 @@
+---
+author: "Michael Henderson"
+date: 2014-09-28
+linktitle: Creating a New Theme
+next: /tutorials/github-pages-blog
+prev: /tutorials/automated-deployments
+title: Creating a New Theme
+weight: 10
+---
+
+
+## Introduction
+
+This tutorial will show you how to create a simple theme in Hugo. I assume that you are familiar with HTML, the bash command line, and that you are comfortable using Markdown to format content. I'll explain how Hugo uses templates and how you can organize your templates to create a theme. I won't cover using CSS to style your theme.
+
+We'll start with creating a new site with a very basic template. Then we'll add in a few pages and posts. With small variations on that, you will be able to create many different types of web sites.
+
+In this tutorial, commands that you enter will start with the "$" prompt. The output will follow. Lines that start with "#" are comments that I've added to explain a point. When I show updates to a file, the ":wq" on the last line means to save the file.
+
+Here's an example:
+
+```
+## this is a comment
+$ echo this is a command
+this is a command
+
+## edit the file
+$vi foo.md
++++
+date = "2014-09-28"
+title = "creating a new theme"
++++
+
+bah and humbug
+:wq
+
+## show it
+$ cat foo.md
++++
+date = "2014-09-28"
+title = "creating a new theme"
++++
+
+bah and humbug
+$
+```
+
+
+## Some Definitions
+
+There are a few concepts that you need to understand before creating a theme.
+
+### Skins
+
+Skins are the files responsible for the look and feel of your site. It’s the CSS that controls colors and fonts, it’s the Javascript that determines actions and reactions. It’s also the rules that Hugo uses to transform your content into the HTML that the site will serve to visitors.
+
+You have two ways to create a skin. The simplest way is to create it in the ```layouts/``` directory. If you do, then you don’t have to worry about configuring Hugo to recognize it. The first place that Hugo will look for rules and files is in the ```layouts/``` directory so it will always find the skin.
+
+Your second choice is to create it in a sub-directory of the ```themes/``` directory. If you do, then you must always tell Hugo where to search for the skin. It’s extra work, though, so why bother with it?
+
+The difference between creating a skin in ```layouts/``` and creating it in ```themes/``` is very subtle. A skin in ```layouts/``` can’t be customized without updating the templates and static files that it is built from. A skin created in ```themes/```, on the other hand, can be and that makes it easier for other people to use it.
+
+The rest of this tutorial will call a skin created in the ```themes/``` directory a theme.
+
+Note that you can use this tutorial to create a skin in the ```layouts/``` directory if you wish to. The main difference will be that you won’t need to update the site’s configuration file to use a theme.
+
+### The Home Page
+
+The home page, or landing page, is the first page that many visitors to a site see. It is the index.html file in the root directory of the web site. Since Hugo writes files to the public/ directory, our home page is public/index.html.
+
+### Site Configuration File
+
+When Hugo runs, it looks for a configuration file that contains settings that override default values for the entire site. The file can use TOML, YAML, or JSON. I prefer to use TOML for my configuration files. If you prefer to use JSON or YAML, you’ll need to translate my examples. You’ll also need to change the name of the file since Hugo uses the extension to determine how to process it.
+
+Hugo translates Markdown files into HTML. By default, Hugo expects to find Markdown files in your ```content/``` directory and template files in your ```themes/``` directory. It will create HTML files in your ```public/``` directory. You can change this by specifying alternate locations in the configuration file.
+
+### Content
+
+Content is stored in text files that contain two sections. The first section is the “front matter,” which is the meta-information on the content. The second section contains Markdown that will be converted to HTML.
+
+#### Front Matter
+
+The front matter is information about the content. Like the configuration file, it can be written in TOML, YAML, or JSON. Unlike the configuration file, Hugo doesn’t use the file’s extension to know the format. It looks for markers to signal the type. TOML is surrounded by “`+++`”, YAML by “`---`”, and JSON is enclosed in curly braces. I prefer to use TOML, so you’ll need to translate my examples if you prefer YAML or JSON.
+
+The information in the front matter is passed into the template before the content is rendered into HTML.
+
+#### Markdown
+
+Content is written in Markdown which makes it easier to create the content. Hugo runs the content through a Markdown engine to create the HTML which will be written to the output file.
+
+### Template Files
+
+Hugo uses template files to render content into HTML. Template files are a bridge between the content and presentation. Rules in the template define what content is published, where it's published to, and how it will rendered to the HTML file. The template guides the presentation by specifying the style to use.
+
+There are three types of templates: single, list, and partial. Each type takes a bit of content as input and transforms it based on the commands in the template.
+
+Hugo uses its knowledge of the content to find the template file used to render the content. If it can’t find a template that is an exact match for the content, it will shift up a level and search from there. It will continue to do so until it finds a matching template or runs out of templates to try. If it can’t find a template, it will use the default template for the site.
+
+Please note that you can use the front matter to influence Hugo’s choice of templates.
+
+#### Single Template
+
+A single template is used to render a single piece of content. For example, an article or post would be a single piece of content and use a single template.
+
+#### List Template
+
+A list template renders a group of related content. That could be a summary of recent postings or all articles in a category. List templates can contain multiple groups.
+
+The homepage template is a special type of list template. Hugo assumes that the home page of your site will act as the portal for the rest of the content in the site.
+
+#### Partial Template
+
+A partial template is a template that can be included in other templates. Partial templates must be called using the “partial” template command. They are very handy for rolling up common behavior. For example, your site may have a banner that all pages use. Instead of copying the text of the banner into every single and list template, you could create a partial with the banner in it. That way if you decide to change the banner, you only have to change the partial template.
+
+## Create a New Site
+
+Let's use Hugo to create a new web site. I'm a Mac user, so I'll create mine in my home directory, in the Sites folder. If you're using Linux, you might have to create the folder first.
+
+The "new site" command will create a skeleton of a site. It will give you the basic directory structure and a useable configuration file.
+
+```
+$ hugo new site ~/Sites/zafta
+$ cd ~/Sites/zafta
+$ ls -l
+total 8
+drwxr-xr-x  7 quoha  staff  238 Sep 29 16:49 .
+drwxr-xr-x  3 quoha  staff  102 Sep 29 16:49 ..
+drwxr-xr-x  2 quoha  staff   68 Sep 29 16:49 archetypes
+-rw-r--r--  1 quoha  staff   82 Sep 29 16:49 config.toml
+drwxr-xr-x  2 quoha  staff   68 Sep 29 16:49 content
+drwxr-xr-x  2 quoha  staff   68 Sep 29 16:49 layouts
+drwxr-xr-x  2 quoha  staff   68 Sep 29 16:49 static
+$
+```
+
+Take a look in the content/ directory to confirm that it is empty.
+
+The other directories (archetypes/, layouts/, and static/) are used when customizing a theme. That's a topic for a different tutorial, so please ignore them for now.
+
+### Generate the HTML For the New Site
+
+Running the `hugo` command with no options will read all the available content and generate the HTML files. It will also copy all static files (that's everything that's not content). Since we have an empty site, it won't do much, but it will do it very quickly.
+
+```
+$ hugo --verbose
+INFO: 2014/09/29 Using config file: config.toml
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/
+WARN: 2014/09/29 Unable to locate layout: [index.html _default/list.html _default/single.html]
+WARN: 2014/09/29 Unable to locate layout: [404.html]
+0 draft content 
+0 future content 
+0 pages created 
+0 tags created
+0 categories created
+in 2 ms
+$ 
+```
+
+The "`--verbose`" flag gives extra information that will be helpful when we build the template. Every line of the output that starts with "INFO:" or "WARN:" is present because we used that flag. The lines that start with "WARN:" are warning messages. We'll go over them later.
+
+We can verify that the command worked by looking at the directory again.
+
+```
+$ ls -l
+total 8
+drwxr-xr-x  2 quoha  staff   68 Sep 29 16:49 archetypes
+-rw-r--r--  1 quoha  staff   82 Sep 29 16:49 config.toml
+drwxr-xr-x  2 quoha  staff   68 Sep 29 16:49 content
+drwxr-xr-x  2 quoha  staff   68 Sep 29 16:49 layouts
+drwxr-xr-x  4 quoha  staff  136 Sep 29 17:02 public
+drwxr-xr-x  2 quoha  staff   68 Sep 29 16:49 static
+$
+```
+
+See that new public/ directory? Hugo placed all generated content there. When you're ready to publish your web site, that's the place to start. For now, though, let's just confirm that we have what we'd expect from a site with no content.
+
+```
+$ ls -l public
+total 16
+-rw-r--r--  1 quoha  staff  416 Sep 29 17:02 index.xml
+-rw-r--r--  1 quoha  staff  262 Sep 29 17:02 sitemap.xml
+$ 
+```
+
+Hugo created two XML files, which is standard, but there are no HTML files.
+
+
+
+### Test the New Site
+
+Verify that you can run the built-in web server. It will dramatically shorten your development cycle if you do. Start it by running the "server" command. If it is successful, you will see output similar to the following:
+
+```
+$ hugo server --verbose
+INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/
+WARN: 2014/09/29 Unable to locate layout: [index.html _default/list.html _default/single.html]
+WARN: 2014/09/29 Unable to locate layout: [404.html]
+0 draft content 
+0 future content 
+0 pages created 
+0 tags created
+0 categories created
+in 2 ms
+Serving pages from /Users/quoha/Sites/zafta/public
+Web Server is available at http://localhost:1313
+Press Ctrl+C to stop
+```
+
+Connect to the listed URL (it's on the line that starts with "Web Server"). If everything is working correctly, you should get a page that shows the following:
+
+```
+index.xml
+sitemap.xml
+```
+
+That's a listing of your public/ directory. Hugo didn't create a home page because our site has no content. When there's no index.html file in a directory, the server lists the files in the directory, which is what you should see in your browser.
+
+Let’s go back and look at those warnings again.
+
+```
+WARN: 2014/09/29 Unable to locate layout: [index.html _default/list.html _default/single.html]
+WARN: 2014/09/29 Unable to locate layout: [404.html]
+```
+
+That second warning is easier to explain. We haven’t created a template to be used to generate “page not found errors.” The 404 message is a topic for a separate tutorial.
+
+Now for the first warning. It is for the home page. You can tell because the first layout that it looked for was “index.html.” That’s only used by the home page.
+
+I like that the verbose flag causes Hugo to list the files that it's searching for. For the home page, they are index.html, _default/list.html, and _default/single.html. There are some rules that we'll cover later that explain the names and paths. For now, just remember that Hugo couldn't find a template for the home page and it told you so.
+
+At this point, you've got a working installation and site that we can build upon. All that’s left is to add some content and a theme to display it.
+
+## Create a New Theme
+
+Hugo doesn't ship with a default theme. There are a few available (I counted a dozen when I first installed Hugo) and Hugo comes with a command to create new themes.
+
+We're going to create a new theme called "zafta." Since the goal of this tutorial is to show you how to fill out the files to pull in your content, the theme will not contain any CSS. In other words, ugly but functional.
+
+All themes have opinions on content and layout. For example, Zafta uses "post" over "blog". Strong opinions make for simpler templates but differing opinions make it tougher to use themes. When you build a theme, consider using the terms that other themes do.
+
+
+### Create a Skeleton
+
+Use the hugo "new" command to create the skeleton of a theme. This creates the directory structure and places empty files for you to fill out.
+
+```
+$ hugo new theme zafta
+
+$ ls -l
+total 8
+drwxr-xr-x  2 quoha  staff   68 Sep 29 16:49 archetypes
+-rw-r--r--  1 quoha  staff   82 Sep 29 16:49 config.toml
+drwxr-xr-x  2 quoha  staff   68 Sep 29 16:49 content
+drwxr-xr-x  2 quoha  staff   68 Sep 29 16:49 layouts
+drwxr-xr-x  4 quoha  staff  136 Sep 29 17:02 public
+drwxr-xr-x  2 quoha  staff   68 Sep 29 16:49 static
+drwxr-xr-x  3 quoha  staff  102 Sep 29 17:31 themes
+
+$ find themes -type f | xargs ls -l
+-rw-r--r--  1 quoha  staff  1081 Sep 29 17:31 themes/zafta/LICENSE.md
+-rw-r--r--  1 quoha  staff     0 Sep 29 17:31 themes/zafta/archetypes/default.md
+-rw-r--r--  1 quoha  staff     0 Sep 29 17:31 themes/zafta/layouts/_default/list.html
+-rw-r--r--  1 quoha  staff     0 Sep 29 17:31 themes/zafta/layouts/_default/single.html
+-rw-r--r--  1 quoha  staff     0 Sep 29 17:31 themes/zafta/layouts/index.html
+-rw-r--r--  1 quoha  staff     0 Sep 29 17:31 themes/zafta/layouts/partials/footer.html
+-rw-r--r--  1 quoha  staff     0 Sep 29 17:31 themes/zafta/layouts/partials/header.html
+-rw-r--r--  1 quoha  staff    93 Sep 29 17:31 themes/zafta/theme.toml
+$ 
+```
+
+The skeleton includes templates (the files ending in .html), license file, a description of your theme (the theme.toml file), and an empty archetype.
+
+Please take a minute to fill out the theme.toml and LICENSE.md files. They're optional, but if you're going to be distributing your theme, it tells the world who to praise (or blame). It's also nice to declare the license so that people will know how they can use the theme.
+
+```
+$ vi themes/zafta/theme.toml
+author = "michael d henderson"
+description = "a minimal working template"
+license = "MIT"
+name = "zafta"
+source_repo = ""
+tags = ["tags", "categories"]
+:wq
+
+## also edit themes/zafta/LICENSE.md and change
+## the bit that says "YOUR_NAME_HERE"
+```
+
+Note that the the skeleton's template files are empty. Don't worry, we'll be changing that shortly.
+
+```
+$ find themes/zafta -name '*.html' | xargs ls -l
+-rw-r--r--  1 quoha  staff  0 Sep 29 17:31 themes/zafta/layouts/_default/list.html
+-rw-r--r--  1 quoha  staff  0 Sep 29 17:31 themes/zafta/layouts/_default/single.html
+-rw-r--r--  1 quoha  staff  0 Sep 29 17:31 themes/zafta/layouts/index.html
+-rw-r--r--  1 quoha  staff  0 Sep 29 17:31 themes/zafta/layouts/partials/footer.html
+-rw-r--r--  1 quoha  staff  0 Sep 29 17:31 themes/zafta/layouts/partials/header.html
+$
+```
+
+
+
+### Update the Configuration File to Use the Theme
+
+Now that we've got a theme to work with, it's a good idea to add the theme name to the configuration file. This is optional, because you can always add "-t zafta" on all your commands. I like to put it the configuration file because I like shorter command lines. If you don't put it in the configuration file or specify it on the command line, you won't use the template that you're expecting to.
+
+Edit the file to add the theme, add a title for the site, and specify that all of our content will use the TOML format.
+
+```
+$ vi config.toml
+theme = "zafta"
+baseurl = ""
+languageCode = "en-us"
+title = "zafta - totally refreshing"
+MetaDataFormat = "toml"
+:wq
+
+$
+```
+
+### Generate the Site
+
+Now that we have an empty theme, let's generate the site again.
+
+```
+$ hugo --verbose
+INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/themes/zafta/static/ to /Users/quoha/Sites/zafta/public/
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/
+WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html]
+0 draft content 
+0 future content 
+0 pages created 
+0 tags created
+0 categories created
+in 2 ms
+$
+```
+
+Did you notice that the output is different? The warning message for the home page has disappeared and we have an additional information line saying that Hugo is syncing from the theme's directory.
+
+Let's check the public/ directory to see what Hugo's created.
+
+```
+$ ls -l public
+total 16
+drwxr-xr-x  2 quoha  staff   68 Sep 29 17:56 css
+-rw-r--r--  1 quoha  staff    0 Sep 29 17:56 index.html
+-rw-r--r--  1 quoha  staff  407 Sep 29 17:56 index.xml
+drwxr-xr-x  2 quoha  staff   68 Sep 29 17:56 js
+-rw-r--r--  1 quoha  staff  243 Sep 29 17:56 sitemap.xml
+$
+```
+
+Notice four things:
+
+1. Hugo created a home page. This is the file public/index.html.
+2. Hugo created a css/ directory.
+3. Hugo created a js/ directory.
+4. Hugo claimed that it created 0 pages. It created a file and copied over static files, but didn't create any pages. That's because it considers a "page" to be a file created directly from a content file. It doesn't count things like the index.html files that it creates automatically.
+
+#### The Home Page
+
+Hugo supports many different types of templates. The home page is special because it gets its own type of template and its own template file. The file, layouts/index.html, is used to generate the HTML for the home page. The Hugo documentation says that this is the only required template, but that depends. Hugo's warning message shows that it looks for three different templates:
+
+```
+WARN: 2014/09/29 Unable to locate layout: [index.html _default/list.html _default/single.html]
+```
+
+If it can't find any of these, it completely skips creating the home page. We noticed that when we built the site without having a theme installed.
+
+When Hugo created our theme, it created an empty home page template. Now, when we build the site, Hugo finds the template and uses it to generate the HTML for the home page. Since the template file is empty, the HTML file is empty, too. If the template had any rules in it, then Hugo would have used them to generate the home page.
+
+```
+$ find . -name index.html | xargs ls -l
+-rw-r--r--  1 quoha  staff  0 Sep 29 20:21 ./public/index.html
+-rw-r--r--  1 quoha  staff  0 Sep 29 17:31 ./themes/zafta/layouts/index.html
+$ 
+```
+
+#### The Magic of Static
+
+Hugo does two things when generating the site. It uses templates to transform content into HTML and it copies static files into the site. Unlike content, static files are not transformed. They are copied exactly as they are.
+
+Hugo assumes that your site will use both CSS and JavaScript, so it creates directories in your theme to hold them. Remember opinions? Well, Hugo's opinion is that you'll store your CSS in a directory named css/ and your JavaScript in a directory named js/. If you don't like that, you can change the directory names in your theme directory or even delete them completely. Hugo's nice enough to offer its opinion, then behave nicely if you disagree.
+
+```
+$ find themes/zafta -type d | xargs ls -ld
+drwxr-xr-x  7 quoha  staff  238 Sep 29 17:38 themes/zafta
+drwxr-xr-x  3 quoha  staff  102 Sep 29 17:31 themes/zafta/archetypes
+drwxr-xr-x  5 quoha  staff  170 Sep 29 17:31 themes/zafta/layouts
+drwxr-xr-x  4 quoha  staff  136 Sep 29 17:31 themes/zafta/layouts/_default
+drwxr-xr-x  4 quoha  staff  136 Sep 29 17:31 themes/zafta/layouts/partials
+drwxr-xr-x  4 quoha  staff  136 Sep 29 17:31 themes/zafta/static
+drwxr-xr-x  2 quoha  staff   68 Sep 29 17:31 themes/zafta/static/css
+drwxr-xr-x  2 quoha  staff   68 Sep 29 17:31 themes/zafta/static/js
+$ 
+```
+
+## The Theme Development Cycle
+
+When you're working on a theme, you will make changes in the theme's directory, rebuild the site, and check your changes in the browser. Hugo makes this very easy:
+
+1. Purge the public/ directory.
+2. Run the built in web server in watch mode.
+3. Open your site in a browser.
+4. Update the theme.
+5. Glance at your browser window to see changes.
+6. Return to step 4.
+
+I’ll throw in one more opinion: never work on a theme on a live site. Always work on a copy of your site. Make changes to your theme, test them, then copy them up to your site. For added safety, use a tool like Git to keep a revision history of your content and your theme. Believe me when I say that it is too easy to lose both your mind and your changes.
+
+Check the main Hugo site for information on using Git with Hugo.
+
+### Purge the public/ Directory
+
+When generating the site, Hugo will create new files and update existing ones in the ```public/``` directory. It will not delete files that are no longer used. For example, files that were created in the wrong directory or with the wrong title will remain. If you leave them, you might get confused by them later. I recommend cleaning out your site prior to generating it.
+
+Note: If you're building on an SSD, you should ignore this. Churning on a SSD can be costly.
+
+### Hugo's Watch Option
+
+Hugo's "`--watch`" option will monitor the content/ and your theme directories for changes and rebuild the site automatically.
+
+### Live Reload
+
+Hugo's built in web server supports live reload. As pages are saved on the server, the browser is told to refresh the page. Usually, this happens faster than you can say, "Wow, that's totally amazing."
+
+### Development Commands
+
+Use the following commands as the basis for your workflow.
+
+```
+## purge old files. hugo will recreate the public directory.
+##
+$ rm -rf public
+##
+## run hugo in watch mode
+##
+$ hugo server --watch --verbose
+```
+
+Here's sample output showing Hugo detecting a change to the template for the home page. Once generated, the web browser automatically reloaded the page. I've said this before, it's amazing.
+
+
+```
+$ rm -rf public
+$ hugo server --watch --verbose
+INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/themes/zafta/static/ to /Users/quoha/Sites/zafta/public/
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/
+WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html]
+0 draft content 
+0 future content 
+0 pages created 
+0 tags created
+0 categories created
+in 2 ms
+Watching for changes in /Users/quoha/Sites/zafta/content
+Serving pages from /Users/quoha/Sites/zafta/public
+Web Server is available at http://localhost:1313
+Press Ctrl+C to stop
+INFO: 2014/09/29 File System Event: ["/Users/quoha/Sites/zafta/themes/zafta/layouts/index.html": MODIFY|ATTRIB]
+Change detected, rebuilding site
+
+WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html]
+0 draft content 
+0 future content 
+0 pages created 
+0 tags created
+0 categories created
+in 1 ms
+```
+
+## Update the Home Page Template
+
+The home page is one of a few special pages that Hugo creates automatically. As mentioned earlier, it looks for one of three files in the theme's layout/ directory:
+
+1. index.html
+2. _default/list.html
+3. _default/single.html
+
+We could update one of the default templates, but a good design decision is to update the most specific template available. That's not a hard and fast rule (in fact, we'll break it a few times in this tutorial), but it is a good generalization.
+
+### Make a Static Home Page
+
+Right now, that page is empty because we don't have any content and we don't have any logic in the template. Let's change that by adding some text to the template.
+
+```
+$ vi themes/zafta/layouts/index.html
+<!DOCTYPE html> 
+<html> 
+<body> 
+  <p>hugo says hello!</p> 
+</body> 
+</html> 
+:wq
+
+$
+```
+
+Build the web site and then verify the results.
+
+```
+$ hugo --verbose
+INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/themes/zafta/static/ to /Users/quoha/Sites/zafta/public/
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/
+WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html]
+0 draft content 
+0 future content 
+0 pages created 
+0 tags created
+0 categories created
+in 2 ms
+
+$ find public -type f -name '*.html' | xargs ls -l
+-rw-r--r--  1 quoha  staff  78 Sep 29 21:26 public/index.html
+
+$ cat public/index.html 
+<!DOCTYPE html> 
+<html> 
+<body> 
+  <p>hugo says hello!</p> 
+</html>
+```
+
+#### Live Reload
+
+Note: If you're running the server with the `--watch` option, you'll see different content in the file:
+
+```
+$ cat public/index.html 
+<!DOCTYPE html> 
+<html> 
+<body> 
+  <p>hugo says hello!</p> 
+<script>document.write('<script src="http://' 
+        + (location.host || 'localhost').split(':')[0] 
+    + ':1313/livereload.js?mindelay=10"></' 
+        + 'script>')</script></body> 
+</html>
+```
+
+When you use `--watch`, the Live Reload script is added by Hugo. Look for live reload in the documentation to see what it does and how to disable it.
+
+### Build a "Dynamic" Home Page
+
+"Dynamic home page?" Hugo's a static web site generator, so this seems an odd thing to say. I mean let's have the home page automatically reflect the content in the site every time Hugo builds it. We'll use iteration in the template to do that.
+
+#### Create New Posts
+
+Now that we have the home page generating static content, let's add some content to the site. We'll display these posts as a list on the home page and on their own page, too.
+
+Hugo has a command to generate a skeleton post, just like it does for sites and themes.
+
+```
+$ hugo --verbose new post/first.md
+INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml
+INFO: 2014/09/29 attempting to create  post/first.md of post
+INFO: 2014/09/29 curpath: /Users/quoha/Sites/zafta/themes/zafta/archetypes/default.md
+ERROR: 2014/09/29 Unable to Cast <nil> to map[string]interface{}
+
+$ 
+```
+
+That wasn't very nice, was it?
+
+The "new" command uses an archetype to create the post file. Hugo created an empty default archetype file, but that causes an error when there's a theme. For me, the workaround was to create an archetypes file specifically for the post type.
+
+```
+$ vi themes/zafta/archetypes/post.md
++++
+Description = ""
+Tags = []
+Categories = []
++++
+:wq
+
+$ find themes/zafta/archetypes -type f | xargs ls -l
+-rw-r--r--  1 quoha  staff   0 Sep 29 21:53 themes/zafta/archetypes/default.md
+-rw-r--r--  1 quoha  staff  51 Sep 29 21:54 themes/zafta/archetypes/post.md
+
+$ hugo --verbose new post/first.md
+INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml
+INFO: 2014/09/29 attempting to create  post/first.md of post
+INFO: 2014/09/29 curpath: /Users/quoha/Sites/zafta/themes/zafta/archetypes/post.md
+INFO: 2014/09/29 creating /Users/quoha/Sites/zafta/content/post/first.md
+/Users/quoha/Sites/zafta/content/post/first.md created
+
+$ hugo --verbose new post/second.md
+INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml
+INFO: 2014/09/29 attempting to create  post/second.md of post
+INFO: 2014/09/29 curpath: /Users/quoha/Sites/zafta/themes/zafta/archetypes/post.md
+INFO: 2014/09/29 creating /Users/quoha/Sites/zafta/content/post/second.md
+/Users/quoha/Sites/zafta/content/post/second.md created
+
+$ ls -l content/post
+total 16
+-rw-r--r--  1 quoha  staff  104 Sep 29 21:54 first.md
+-rw-r--r--  1 quoha  staff  105 Sep 29 21:57 second.md
+
+$ cat content/post/first.md 
++++
+Categories = []
+Description = ""
+Tags = []
+date = "2014-09-29T21:54:53-05:00"
+title = "first"
+
++++
+my first post
+
+$ cat content/post/second.md 
++++
+Categories = []
+Description = ""
+Tags = []
+date = "2014-09-29T21:57:09-05:00"
+title = "second"
+
++++
+my second post
+
+$ 
+```
+
+Build the web site and then verify the results.
+
+```
+$ rm -rf public
+$ hugo --verbose
+INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/themes/zafta/static/ to /Users/quoha/Sites/zafta/public/
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/
+INFO: 2014/09/29 found taxonomies: map[string]string{"category":"categories", "tag":"tags"}
+WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html]
+0 draft content 
+0 future content 
+2 pages created 
+0 tags created
+0 categories created
+in 4 ms
+$
+```
+
+The output says that it created 2 pages. Those are our new posts:
+
+```
+$ find public -type f -name '*.html' | xargs ls -l
+-rw-r--r--  1 quoha  staff  78 Sep 29 22:13 public/index.html
+-rw-r--r--  1 quoha  staff   0 Sep 29 22:13 public/post/first/index.html
+-rw-r--r--  1 quoha  staff   0 Sep 29 22:13 public/post/index.html
+-rw-r--r--  1 quoha  staff   0 Sep 29 22:13 public/post/second/index.html
+$
+```
+
+The new files are empty because because the templates used to generate the content are empty. The homepage doesn't show the new content, either. We have to update the templates to add the posts.
+
+### List and Single Templates
+
+In Hugo, we have three major kinds of templates. There's the home page template that we updated previously. It is used only by the home page. We also have "single" templates which are used to generate output for a single content file. We also have "list" templates that are used to group multiple pieces of content before generating output.
+
+Generally speaking, list templates are named "list.html" and single templates are named "single.html."
+
+There are three other types of templates: partials, content views, and terms. We will not go into much detail on these.
+
+### Add Content to the Homepage
+
+The home page will contain a list of posts. Let's update its template to add the posts that we just created. The logic in the template will run every time we build the site.
+
+```
+$ vi themes/zafta/layouts/index.html 
+<!DOCTYPE html>
+<html>
+<body>
+  {{ range first 10 .Data.Pages }}
+    <h1>{{ .Title }}</h1>
+  {{ end }}
+</body>
+</html>
+:wq
+
+$
+```
+
+Hugo uses the Go template engine. That engine scans the template files for commands which are enclosed between "{{" and "}}". In our template, the commands are:
+
+1. range
+2. .Title
+3. end
+
+The "range" command is an iterator. We're going to use it to go through the first ten pages. Every HTML file that Hugo creates is treated as a page, so looping through the list of pages will look at every file that will be created.
+
+The ".Title" command prints the value of the "title" variable. Hugo pulls it from the front matter in the Markdown file.
+
+The "end" command signals the end of the range iterator. The engine loops back to the top of the iteration when it finds "end." Everything between the "range" and "end" is evaluated every time the engine goes through the iteration. In this file, that would cause the title from the first ten pages to be output as heading level one.
+
+It's helpful to remember that some variables, like .Data, are created before any output files. Hugo loads every content file into the variable and then gives the template a chance to process before creating the HTML files.
+
+Build the web site and then verify the results.
+
+```
+$ rm -rf public
+$ hugo --verbose
+INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/themes/zafta/static/ to /Users/quoha/Sites/zafta/public/
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/
+INFO: 2014/09/29 found taxonomies: map[string]string{"tag":"tags", "category":"categories"}
+WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html]
+0 draft content 
+0 future content 
+2 pages created 
+0 tags created
+0 categories created
+in 4 ms
+$ find public -type f -name '*.html' | xargs ls -l 
+-rw-r--r--  1 quoha  staff  94 Sep 29 22:23 public/index.html
+-rw-r--r--  1 quoha  staff   0 Sep 29 22:23 public/post/first/index.html
+-rw-r--r--  1 quoha  staff   0 Sep 29 22:23 public/post/index.html
+-rw-r--r--  1 quoha  staff   0 Sep 29 22:23 public/post/second/index.html
+$ cat public/index.html 
+<!DOCTYPE html>
+<html>
+<body>
+  
+    <h1>second</h1>
+  
+    <h1>first</h1>
+  
+</body>
+</html>
+$
+```
+
+Congratulations, the home page shows the title of the two posts. The posts themselves are still empty, but let's take a moment to appreciate what we've done. Your template now generates output dynamically. Believe it or not, by inserting the range command inside of those curly braces, you've learned everything you need to know to build a theme. All that's really left is understanding which template will be used to generate each content file and becoming familiar with the commands for the template engine.
+
+And, if that were entirely true, this tutorial would be much shorter. There are a few things to know that will make creating a new template much easier. Don't worry, though, that's all to come.
+
+### Add Content to the Posts
+
+We're working with posts, which are in the content/post/ directory. That means that their section is "post" (and if we don't do something weird, their type is also "post").
+
+Hugo uses the section and type to find the template file for every piece of content. Hugo will first look for a template file that matches the section or type name. If it can't find one, then it will look in the _default/ directory. There are some twists that we'll cover when we get to categories and tags, but for now we can assume that Hugo will try post/single.html, then _default/single.html.
+
+Now that we know the search rule, let's see what we actually have available:
+
+```
+$ find themes/zafta -name single.html | xargs ls -l
+-rw-r--r--  1 quoha  staff  132 Sep 29 17:31 themes/zafta/layouts/_default/single.html
+```
+
+We could create a new template, post/single.html, or change the default. Since we don't know of any other content types, let's start with updating the default.
+
+Remember, any content that we haven't created a template for will end up using this template. That can be good or bad. Bad because I know that we're going to be adding different types of content and we're going to end up undoing some of the changes we've made. It's good because we'll be able to see immediate results. It's also good to start here because we can start to build the basic layout for the site. As we add more content types, we'll refactor this file and move logic around. Hugo makes that fairly painless, so we'll accept the cost and proceed.
+
+Please see the Hugo documentation on template rendering for all the details on determining which template to use. And, as the docs mention, if you're building a single page application (SPA) web site, you can delete all of the other templates and work with just the default single page. That's a refreshing amount of joy right there.
+
+#### Update the Template File
+
+```
+$ vi themes/zafta/layouts/_default/single.html 
+<!DOCTYPE html>
+<html>
+<head>
+  <title>{{ .Title }}</title>
+</head>
+<body>
+  <h1>{{ .Title }}</h1>
+  {{ .Content }}
+</body>
+</html>
+:wq
+
+$
+```
+
+Build the web site and verify the results.
+
+```
+$ rm -rf public
+$ hugo --verbose
+INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/themes/zafta/static/ to /Users/quoha/Sites/zafta/public/
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/
+INFO: 2014/09/29 found taxonomies: map[string]string{"tag":"tags", "category":"categories"}
+WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html]
+0 draft content 
+0 future content 
+2 pages created 
+0 tags created
+0 categories created
+in 4 ms
+
+$ find public -type f -name '*.html' | xargs ls -l
+-rw-r--r--  1 quoha  staff   94 Sep 29 22:40 public/index.html
+-rw-r--r--  1 quoha  staff  125 Sep 29 22:40 public/post/first/index.html
+-rw-r--r--  1 quoha  staff    0 Sep 29 22:40 public/post/index.html
+-rw-r--r--  1 quoha  staff  128 Sep 29 22:40 public/post/second/index.html
+
+$ cat public/post/first/index.html 
+<!DOCTYPE html>
+<html>
+<head>
+  <title>first</title>
+</head>
+<body>
+  <h1>first</h1>
+  <p>my first post</p>
+
+</body>
+</html>
+
+$ cat public/post/second/index.html 
+<!DOCTYPE html>
+<html>
+<head>
+  <title>second</title>
+</head>
+<body>
+  <h1>second</h1>
+  <p>my second post</p>
+
+</body>
+</html>
+$
+```
+
+Notice that the posts now have content. You can go to localhost:1313/post/first to verify.
+
+### Linking to Content
+
+The posts are on the home page. Let's add a link from there to the post. Since this is the home page, we'll update its template.
+
+```
+$ vi themes/zafta/layouts/index.html
+<!DOCTYPE html>
+<html>
+<body>
+  {{ range first 10 .Data.Pages }}
+    <h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
+  {{ end }}
+</body>
+</html>
+```
+
+Build the web site and verify the results.
+
+```
+$ rm -rf public
+$ hugo --verbose
+INFO: 2014/09/29 Using config file: /Users/quoha/Sites/zafta/config.toml
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/themes/zafta/static/ to /Users/quoha/Sites/zafta/public/
+INFO: 2014/09/29 syncing from /Users/quoha/Sites/zafta/static/ to /Users/quoha/Sites/zafta/public/
+INFO: 2014/09/29 found taxonomies: map[string]string{"tag":"tags", "category":"categories"}
+WARN: 2014/09/29 Unable to locate layout: [404.html theme/404.html]
+0 draft content 
+0 future content 
+2 pages created 
+0 tags created
+0 categories created
+in 4 ms
+
+$ find public -type f -name '*.html' | xargs ls -l
+-rw-r--r--  1 quoha  staff  149 Sep 29 22:44 public/index.html
+-rw-r--r--  1 quoha  staff  125 Sep 29 22:44 public/post/first/index.html
+-rw-r--r--  1 quoha  staff    0 Sep 29 22:44 public/post/index.html
+-rw-r--r--  1 quoha  staff  128 Sep 29 22:44 public/post/second/index.html
+
+$ cat public/index.html 
+<!DOCTYPE html>
+<html>
+<body>
+  
+    <h1><a href="/post/second/">second</a></h1>
+  
+    <h1><a href="/post/first/">first</a></h1>
+  
+</body>
+</html>
+
+$
+```
+
+### Create a Post Listing
+
+We have the posts displaying on the home page and on their own page. We also have a file public/post/index.html that is empty. Let's make it show a list of all posts (not just the first ten).
+
+We need to decide which template to update. This will be a listing, so it should be a list template. Let's take a quick look and see which list templates are available.
+
+```
+$ find themes/zafta -name list.html | xargs ls -l
+-rw-r--r--  1 quoha  staff  0 Sep 29 17:31 themes/zafta/layouts/_default/list.html
+```
+
+As with the single post, we have to decide to update _default/list.html or create post/list.html. We still don't have multiple content types, so let's stay consistent and update the default list template.
+
+## Creating Top Level Pages
+
+Let's add an "about" page and display it at the top level (as opposed to a sub-level like we did with posts).
+
+The default in Hugo is to use the directory structure of the content/ directory to guide the location of the generated html in the public/ directory. Let's verify that by creating an "about" page at the top level:
+
+```
+$ vi content/about.md 
++++
+title = "about"
+description = "about this site"
+date = "2014-09-27"
+slug = "about time"
++++
+
+## about us
+
+i'm speechless
+:wq
+```
+
+Generate the web site and verify the results.
+
+```
+$ find public -name '*.html' | xargs ls -l
+-rw-rw-r--  1 mdhender  staff   334 Sep 27 15:08 public/about-time/index.html
+-rw-rw-r--  1 mdhender  staff   527 Sep 27 15:08 public/index.html
+-rw-rw-r--  1 mdhender  staff   358 Sep 27 15:08 public/post/first-post/index.html
+-rw-rw-r--  1 mdhender  staff     0 Sep 27 15:08 public/post/index.html
+-rw-rw-r--  1 mdhender  staff   342 Sep 27 15:08 public/post/second-post/index.html
+```
+
+Notice that the page wasn't created at the top level. It was created in a sub-directory named 'about-time/'. That name came from our slug. Hugo will use the slug to name the generated content. It's a reasonable default, by the way, but we can learn a few things by fighting it for this file.
+
+One other thing. Take a look at the home page.
+
+```
+$ cat public/index.html
+<!DOCTYPE html>
+<html>
+<body>
+    <h1><a href="http://localhost:1313/post/theme/">creating a new theme</a></h1>
+    <h1><a href="http://localhost:1313/about-time/">about</a></h1>
+    <h1><a href="http://localhost:1313/post/second-post/">second</a></h1>
+    <h1><a href="http://localhost:1313/post/first-post/">first</a></h1>
+<script>document.write('<script src="http://'
+        + (location.host || 'localhost').split(':')[0]
+		+ ':1313/livereload.js?mindelay=10"></'
+        + 'script>')</script></body>
+</html>
+```
+
+Notice that the "about" link is listed with the posts? That's not desirable, so let's change that first.
+
+```
+$ vi themes/zafta/layouts/index.html
+<!DOCTYPE html>
+<html>
+<body>
+  <h1>posts</h1>
+  {{ range first 10 .Data.Pages }}
+    {{ if eq .Type "post"}}
+      <h2><a href="{{ .Permalink }}">{{ .Title }}</a></h2>
+    {{ end }}
+  {{ end }}
+
+  <h1>pages</h1>
+  {{ range .Data.Pages }}
+    {{ if eq .Type "page" }}
+      <h2><a href="{{ .Permalink }}">{{ .Title }}</a></h2>
+    {{ end }}
+  {{ end }}
+</body>
+</html>
+:wq
+```
+
+Generate the web site and verify the results. The home page has two sections, posts and pages, and each section has the right set of headings and links in it.
+
+But, that about page still renders to about-time/index.html.
+
+```
+$ find public -name '*.html' | xargs ls -l
+-rw-rw-r--  1 mdhender  staff    334 Sep 27 15:33 public/about-time/index.html
+-rw-rw-r--  1 mdhender  staff    645 Sep 27 15:33 public/index.html
+-rw-rw-r--  1 mdhender  staff    358 Sep 27 15:33 public/post/first-post/index.html
+-rw-rw-r--  1 mdhender  staff      0 Sep 27 15:33 public/post/index.html
+-rw-rw-r--  1 mdhender  staff    342 Sep 27 15:33 public/post/second-post/index.html
+```
+
+Knowing that hugo is using the slug to generate the file name, the simplest solution is to change the slug. Let's do it the hard way and change the permalink in the configuration file.
+
+```
+$ vi config.toml
+[permalinks]
+	page = "/:title/"
+	about = "/:filename/"
+```
+
+Generate the web site and verify that this didn't work. Hugo lets "slug" or "URL" override the permalinks setting in the configuration file. Go ahead and comment out the slug in content/about.md, then generate the web site to get it to be created in the right place.
+
+## Sharing Templates
+
+If you've been following along, you probably noticed that posts have titles in the browser and the home page doesn't. That's because we didn't put the title in the home page's template (layouts/index.html). That's an easy thing to do, but let's look at a different option.
+
+We can put the common bits into a shared template that's stored in the themes/zafta/layouts/partials/ directory.
+
+### Create the Header and Footer Partials
+
+In Hugo, a partial is a sugar-coated template. Normally a template reference has a path specified. Partials are different. Hugo searches for them along a TODO defined search path. This makes it easier for end-users to override the theme's presentation.
+
+```
+$ vi themes/zafta/layouts/partials/header.html
+<!DOCTYPE html>
+<html>
+<head>
+	<title>{{ .Title }}</title>
+</head>
+<body>
+:wq
+
+$ vi themes/zafta/layouts/partials/footer.html
+</body>
+</html>
+:wq
+```
+
+### Update the Home Page Template to Use the Partials
+
+The most noticeable difference between a template call and a partials call is the lack of path:
+
+```
+{{ template "theme/partials/header.html" . }}
+```
+versus
+```
+{{ partial "header.html" . }}
+```
+Both pass in the context.
+
+Let's change the home page template to use these new partials.
+
+```
+$ vi themes/zafta/layouts/index.html
+{{ partial "header.html" . }}
+
+  <h1>posts</h1>
+  {{ range first 10 .Data.Pages }}
+    {{ if eq .Type "post"}}
+      <h2><a href="{{ .Permalink }}">{{ .Title }}</a></h2>
+    {{ end }}
+  {{ end }}
+
+  <h1>pages</h1>
+  {{ range .Data.Pages }}
+    {{ if or (eq .Type "page") (eq .Type "about") }}
+      <h2><a href="{{ .Permalink }}">{{ .Type }} - {{ .Title }} - {{ .RelPermalink }}</a></h2>
+    {{ end }}
+  {{ end }}
+
+{{ partial "footer.html" . }}
+:wq
+```
+
+Generate the web site and verify the results. The title on the home page is now "your title here", which comes from the "title" variable in the config.toml file.
+
+### Update the Default Single Template to Use the Partials
+
+```
+$ vi themes/zafta/layouts/_default/single.html
+{{ partial "header.html" . }}
+
+  <h1>{{ .Title }}</h1>
+  {{ .Content }}
+
+{{ partial "footer.html" . }}
+:wq
+```
+
+Generate the web site and verify the results. The title on the posts and the about page should both reflect the value in the markdown file.
+
+## Add “Date Published” to Posts
+
+It's common to have posts display the date that they were written or published, so let's add that. The front matter of our posts has a variable named "date." It's usually the date the content was created, but let's pretend that's the value we want to display.
+
+### Add “Date Published” to the Template
+
+We'll start by updating the template used to render the posts. The template code will look like:
+
+```
+{{ .Date.Format "Mon, Jan 2, 2006" }}
+```
+
+Posts use the default single template, so we'll change that file.
+
+```
+$ vi themes/zafta/layouts/_default/single.html
+{{ partial "header.html" . }}
+
+  <h1>{{ .Title }}</h1>
+  <h2>{{ .Date.Format "Mon, Jan 2, 2006" }}</h2>
+  {{ .Content }}
+
+{{ partial "footer.html" . }}
+:wq
+```
+
+Generate the web site and verify the results. The posts now have the date displayed in them. There's a problem, though. The "about" page also has the date displayed.
+
+As usual, there are a couple of ways to make the date display only on posts. We could do an "if" statement like we did on the home page. Another way would be to create a separate template for posts.
+
+The "if" solution works for sites that have just a couple of content types. It aligns with the principle of "code for today," too.
+
+Let's assume, though, that we've made our site so complex that we feel we have to create a new template type. In Hugo-speak, we're going to create a section template.
+
+Let's restore the default single template before we forget.
+
+```
+$ mkdir themes/zafta/layouts/post
+$ vi themes/zafta/layouts/_default/single.html
+{{ partial "header.html" . }}
+
+  <h1>{{ .Title }}</h1>
+  {{ .Content }}
+
+{{ partial "footer.html" . }}
+:wq
+```
+
+Now we'll update the post's version of the single template. If you remember Hugo's rules, the template engine will use this version over the default.
+
+```
+$ vi themes/zafta/layouts/post/single.html
+{{ partial "header.html" . }}
+
+  <h1>{{ .Title }}</h1>
+  <h2>{{ .Date.Format "Mon, Jan 2, 2006" }}</h2>
+  {{ .Content }}
+
+{{ partial "footer.html" . }}
+:wq
+
+```
+
+Note that we removed the date logic from the default template and put it in the post template. Generate the web site and verify the results. Posts have dates and the about page doesn't.
+
+### Don't Repeat Yourself
+
+DRY is a good design goal and Hugo does a great job supporting it. Part of the art of a good template is knowing when to add a new template and when to update an existing one. While you're figuring that out, accept that you'll be doing some refactoring. Hugo makes that easy and fast, so it's okay to delay splitting up a template.

+ 344 - 0
themes/hugo-bootstrap-5/exampleSite/content/post/goisforlovers.de.md

@@ -0,0 +1,344 @@
++++
+title = "(Hu)go Template Primer"
+description = ""
+tags = [
+    "go",
+    "golang",
+    "templates",
+    "themes",
+    "development",
+    "demo",
+]
+date = "2014-04-02"
+categories = [
+    "Development",
+    "golang",
+]
++++
+
+Hugo uses the excellent [go][] [html/template][gohtmltemplate] library for
+its template engine. It is an extremely lightweight engine that provides a very
+small amount of logic. In our experience that it is just the right amount of
+logic to be able to create a good static website. If you have used other
+template systems from different languages or frameworks you will find a lot of
+similarities in go templates.
+
+This document is a brief primer on using go templates. The [go docs][gohtmltemplate]
+provide more details.
+
+# Introduction to Go Templates
+
+Go templates provide an extremely simple template language. It adheres to the
+belief that only the most basic of logic belongs in the template or view layer.
+One consequence of this simplicity is that go templates parse very quickly.
+
+A unique characteristic of go templates is they are content aware. Variables and
+content will be sanitized depending on the context of where they are used. More
+details can be found in the [go docs][gohtmltemplate].
+
+## Basic Syntax
+
+Go lang templates are html files with the addition of variables and
+functions. 
+
+**Go variables and functions are accessible within {{ }}**
+
+Accessing a predefined variable "foo":
+
+    {{ foo }}
+
+**Parameters are separated using spaces**
+
+Calling the add function with input of 1, 2:
+
+    {{ add 1 2 }}
+
+**Methods and fields are accessed via dot notation**
+
+Accessing the Page Parameter "bar"
+
+    {{ .Params.bar }}
+
+**Parentheses can be used to group items together**
+
+    {{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }}
+
+
+## Variables
+
+Each go template has a struct (object) made available to it. In hugo each
+template is passed either a page or a node struct depending on which type of
+page you are rendering. More details are available on the
+[variables](/layout/variables) page.
+
+A variable is accessed by referencing the variable name.
+
+    <title>{{ .Title }}</title>
+
+Variables can also be defined and referenced.
+
+    {{ $address := "123 Main St."}}
+    {{ $address }}
+
+
+## Functions
+
+Go template ship with a few functions which provide basic functionality. The go
+template system also provides a mechanism for applications to extend the
+available functions with their own. [Hugo template
+functions](/layout/functions) provide some additional functionality we believe
+are useful for building websites. Functions are called by using their name
+followed by the required parameters separated by spaces. Template
+functions cannot be added without recompiling hugo.
+
+**Example:**
+
+    {{ add 1 2 }}
+
+## Includes
+
+When including another template you will pass to it the data it will be
+able to access. To pass along the current context please remember to
+include a trailing dot. The templates location will always be starting at
+the /layout/ directory within Hugo.
+
+**Example:**
+
+    {{ template "chrome/header.html" . }}
+
+
+## Logic
+
+Go templates provide the most basic iteration and conditional logic.
+
+### Iteration 
+
+Just like in go, the go templates make heavy use of range to iterate over
+a map, array or slice. The following are different examples of how to use
+range.
+
+**Example 1: Using Context**
+
+    {{ range array }} 
+        {{ . }}
+    {{ end }}
+
+**Example 2: Declaring value variable name**
+
+    {{range $element := array}} 
+        {{ $element }} 
+    {{ end }}
+
+**Example 2: Declaring key and value variable name**
+
+    {{range $index, $element := array}}
+        {{ $index }} 
+        {{ $element }} 
+    {{ end }}
+
+### Conditionals 
+
+If, else, with, or, & and provide the framework for handling conditional
+logic in Go Templates. Like range, each statement is closed with `end`.
+
+
+Go Templates treat the following values as false: 
+
+* false
+* 0 
+* any array, slice, map, or string of length zero
+
+**Example 1: If**
+
+    {{ if isset .Params "title" }}<h4>{{ index .Params "title" }}</h4>{{ end }}
+
+**Example 2: If -> Else** 
+
+    {{ if isset .Params "alt" }} 
+        {{ index .Params "alt" }}
+    {{else}}
+        {{ index .Params "caption" }}
+    {{ end }}
+
+**Example 3: And & Or**
+
+    {{ if and (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
+
+**Example 4: With**
+
+An alternative way of writing "if" and then referencing the same value
+is to use "with" instead. With rebinds the context `.` within its scope,
+and skips the block if the variable is absent.
+
+The first example above could be simplified as:
+
+    {{ with .Params.title }}<h4>{{ . }}</h4>{{ end }}
+
+**Example 5: If -> Else If** 
+
+    {{ if isset .Params "alt" }} 
+        {{ index .Params "alt" }}
+    {{ else if isset .Params "caption" }}
+        {{ index .Params "caption" }}
+    {{ end }}
+
+## Pipes
+
+One of the most powerful components of go templates is the ability to
+stack actions one after another. This is done by using pipes. Borrowed
+from unix pipes, the concept is simple, each pipeline's output becomes the
+input of the following pipe. 
+
+Because of the very simple syntax of go templates, the pipe is essential
+to being able to chain together function calls. One limitation of the
+pipes is that they only can work with a single value and that value
+becomes the last parameter of the next pipeline. 
+
+A few simple examples should help convey how to use the pipe.
+
+**Example 1 :**
+
+    {{ if eq 1 1 }} Same {{ end }}
+
+is the same as 
+
+    {{ eq 1 1 | if }} Same {{ end }}
+
+It does look odd to place the if at the end, but it does provide a good
+illustration of how to use the pipes.
+
+**Example 2 :**
+
+    {{ index .Params "disqus_url" | html }}
+
+Access the page parameter called "disqus_url" and escape the HTML.
+
+**Example 3 :**
+
+    {{ if or (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
+    Stuff Here
+    {{ end }}
+
+Could be rewritten as 
+
+    {{  isset .Params "caption" | or isset .Params "title" | or isset .Params "attr" | if }}
+    Stuff Here 
+    {{ end }}
+
+
+## Context (aka. the dot)
+
+The most easily overlooked concept to understand about go templates is that {{ . }}
+always refers to the current context. In the top level of your template this
+will be the data set made available to it. Inside of a iteration it will have
+the value of the current item. When inside of a loop the context has changed. .
+will no longer refer to the data available to the entire page. If you need to
+access this from within the loop you will likely want to set it to a variable
+instead of depending on the context.
+
+**Example:**
+
+      {{ $title := .Site.Title }}
+      {{ range .Params.tags }}
+        <li> <a href="{{ $baseurl }}/tags/{{ . | urlize }}">{{ . }}</a> - {{ $title }} </li>
+      {{ end }}
+
+Notice how once we have entered the loop the value of {{ . }} has changed. We
+have defined a variable outside of the loop so we have access to it from within
+the loop.
+
+# Hugo Parameters 
+
+Hugo provides the option of passing values to the template language
+through the site configuration (for sitewide values), or through the meta
+data of each specific piece of content. You can define any values of any
+type (supported by your front matter/config format) and use them however
+you want to inside of your templates. 
+
+
+## Using Content (page) Parameters 
+
+In each piece of content you can provide variables to be used by the
+templates. This happens in the [front matter](/content/front-matter). 
+
+An example of this is used in this documentation site. Most of the pages
+benefit from having the table of contents provided. Sometimes the TOC just
+doesn't make a lot of sense. We've defined a variable in our front matter
+of some pages to turn off the TOC from being displayed. 
+
+Here is the example front matter:
+
+```
+---
+title: "Permalinks"
+date: "2013-11-18"
+aliases:
+  - "/doc/permalinks/"
+groups: ["extras"]
+groups_weight: 30
+notoc: true
+---
+```
+
+Here is the corresponding code inside of the template:
+
+      {{ if not .Params.notoc }}
+        <div id="toc" class="well col-md-4 col-sm-6">
+        {{ .TableOfContents }}
+        </div>
+      {{ end }}
+
+
+
+## Using Site (config) Parameters
+In your top-level configuration file (eg, `config.yaml`) you can define site
+parameters, which are values which will be available to you in chrome.
+
+For instance, you might declare:
+
+```yaml
+params:
+  CopyrightHTML: "Copyright &#xA9; 2013 John Doe. All Rights Reserved."
+  TwitterUser: "spf13"
+  SidebarRecentLimit: 5
+```
+
+Within a footer layout, you might then declare a `<footer>` which is only
+provided if the `CopyrightHTML` parameter is provided, and if it is given,
+you would declare it to be HTML-safe, so that the HTML entity is not escaped
+again.  This would let you easily update just your top-level config file each
+January 1st, instead of hunting through your templates.
+
+```
+{{if .Site.Params.CopyrightHTML}}<footer>
+<div class="text-center">{{.Site.Params.CopyrightHTML | safeHtml}}</div>
+</footer>{{end}}
+```
+
+An alternative way of writing the "if" and then referencing the same value
+is to use "with" instead. With rebinds the context `.` within its scope,
+and skips the block if the variable is absent:
+
+```
+{{with .Site.Params.TwitterUser}}<span class="twitter">
+<a href="https://twitter.com/{{.}}" rel="author">
+<img src="/images/twitter.png" width="48" height="48" title="Twitter: {{.}}"
+ alt="Twitter"></a>
+</span>{{end}}
+```
+
+Finally, if you want to pull "magic constants" out of your layouts, you can do
+so, such as in this example:
+
+```
+<nav class="recent">
+  <h1>Recent Posts</h1>
+  <ul>{{range first .Site.Params.SidebarRecentLimit .Site.Recent}}
+    <li><a href="{{.RelPermalink}}">{{.Title}}</a></li>
+  {{end}}</ul>
+</nav>
+```
+
+
+[go]: <http://golang.org/>
+[gohtmltemplate]: <http://golang.org/pkg/html/template/>

+ 344 - 0
themes/hugo-bootstrap-5/exampleSite/content/post/goisforlovers.es.md

@@ -0,0 +1,344 @@
++++
+title = "(Hu)go Template Primer"
+description = ""
+tags = [
+    "go",
+    "golang",
+    "templates",
+    "themes",
+    "development",
+    "demo",
+]
+date = "2014-04-02"
+categories = [
+    "Development",
+    "golang",
+]
++++
+
+Hugo uses the excellent [go][] [html/template][gohtmltemplate] library for
+its template engine. It is an extremely lightweight engine that provides a very
+small amount of logic. In our experience that it is just the right amount of
+logic to be able to create a good static website. If you have used other
+template systems from different languages or frameworks you will find a lot of
+similarities in go templates.
+
+This document is a brief primer on using go templates. The [go docs][gohtmltemplate]
+provide more details.
+
+# Introduction to Go Templates
+
+Go templates provide an extremely simple template language. It adheres to the
+belief that only the most basic of logic belongs in the template or view layer.
+One consequence of this simplicity is that go templates parse very quickly.
+
+A unique characteristic of go templates is they are content aware. Variables and
+content will be sanitized depending on the context of where they are used. More
+details can be found in the [go docs][gohtmltemplate].
+
+## Basic Syntax
+
+Go lang templates are html files with the addition of variables and
+functions. 
+
+**Go variables and functions are accessible within {{ }}**
+
+Accessing a predefined variable "foo":
+
+    {{ foo }}
+
+**Parameters are separated using spaces**
+
+Calling the add function with input of 1, 2:
+
+    {{ add 1 2 }}
+
+**Methods and fields are accessed via dot notation**
+
+Accessing the Page Parameter "bar"
+
+    {{ .Params.bar }}
+
+**Parentheses can be used to group items together**
+
+    {{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }}
+
+
+## Variables
+
+Each go template has a struct (object) made available to it. In hugo each
+template is passed either a page or a node struct depending on which type of
+page you are rendering. More details are available on the
+[variables](/layout/variables) page.
+
+A variable is accessed by referencing the variable name.
+
+    <title>{{ .Title }}</title>
+
+Variables can also be defined and referenced.
+
+    {{ $address := "123 Main St."}}
+    {{ $address }}
+
+
+## Functions
+
+Go template ship with a few functions which provide basic functionality. The go
+template system also provides a mechanism for applications to extend the
+available functions with their own. [Hugo template
+functions](/layout/functions) provide some additional functionality we believe
+are useful for building websites. Functions are called by using their name
+followed by the required parameters separated by spaces. Template
+functions cannot be added without recompiling hugo.
+
+**Example:**
+
+    {{ add 1 2 }}
+
+## Includes
+
+When including another template you will pass to it the data it will be
+able to access. To pass along the current context please remember to
+include a trailing dot. The templates location will always be starting at
+the /layout/ directory within Hugo.
+
+**Example:**
+
+    {{ template "chrome/header.html" . }}
+
+
+## Logic
+
+Go templates provide the most basic iteration and conditional logic.
+
+### Iteration 
+
+Just like in go, the go templates make heavy use of range to iterate over
+a map, array or slice. The following are different examples of how to use
+range.
+
+**Example 1: Using Context**
+
+    {{ range array }} 
+        {{ . }}
+    {{ end }}
+
+**Example 2: Declaring value variable name**
+
+    {{range $element := array}} 
+        {{ $element }} 
+    {{ end }}
+
+**Example 2: Declaring key and value variable name**
+
+    {{range $index, $element := array}}
+        {{ $index }} 
+        {{ $element }} 
+    {{ end }}
+
+### Conditionals 
+
+If, else, with, or, & and provide the framework for handling conditional
+logic in Go Templates. Like range, each statement is closed with `end`.
+
+
+Go Templates treat the following values as false: 
+
+* false
+* 0 
+* any array, slice, map, or string of length zero
+
+**Example 1: If**
+
+    {{ if isset .Params "title" }}<h4>{{ index .Params "title" }}</h4>{{ end }}
+
+**Example 2: If -> Else** 
+
+    {{ if isset .Params "alt" }} 
+        {{ index .Params "alt" }}
+    {{else}}
+        {{ index .Params "caption" }}
+    {{ end }}
+
+**Example 3: And & Or**
+
+    {{ if and (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
+
+**Example 4: With**
+
+An alternative way of writing "if" and then referencing the same value
+is to use "with" instead. With rebinds the context `.` within its scope,
+and skips the block if the variable is absent.
+
+The first example above could be simplified as:
+
+    {{ with .Params.title }}<h4>{{ . }}</h4>{{ end }}
+
+**Example 5: If -> Else If** 
+
+    {{ if isset .Params "alt" }} 
+        {{ index .Params "alt" }}
+    {{ else if isset .Params "caption" }}
+        {{ index .Params "caption" }}
+    {{ end }}
+
+## Pipes
+
+One of the most powerful components of go templates is the ability to
+stack actions one after another. This is done by using pipes. Borrowed
+from unix pipes, the concept is simple, each pipeline's output becomes the
+input of the following pipe. 
+
+Because of the very simple syntax of go templates, the pipe is essential
+to being able to chain together function calls. One limitation of the
+pipes is that they only can work with a single value and that value
+becomes the last parameter of the next pipeline. 
+
+A few simple examples should help convey how to use the pipe.
+
+**Example 1 :**
+
+    {{ if eq 1 1 }} Same {{ end }}
+
+is the same as 
+
+    {{ eq 1 1 | if }} Same {{ end }}
+
+It does look odd to place the if at the end, but it does provide a good
+illustration of how to use the pipes.
+
+**Example 2 :**
+
+    {{ index .Params "disqus_url" | html }}
+
+Access the page parameter called "disqus_url" and escape the HTML.
+
+**Example 3 :**
+
+    {{ if or (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
+    Stuff Here
+    {{ end }}
+
+Could be rewritten as 
+
+    {{  isset .Params "caption" | or isset .Params "title" | or isset .Params "attr" | if }}
+    Stuff Here 
+    {{ end }}
+
+
+## Context (aka. the dot)
+
+The most easily overlooked concept to understand about go templates is that {{ . }}
+always refers to the current context. In the top level of your template this
+will be the data set made available to it. Inside of a iteration it will have
+the value of the current item. When inside of a loop the context has changed. .
+will no longer refer to the data available to the entire page. If you need to
+access this from within the loop you will likely want to set it to a variable
+instead of depending on the context.
+
+**Example:**
+
+      {{ $title := .Site.Title }}
+      {{ range .Params.tags }}
+        <li> <a href="{{ $baseurl }}/tags/{{ . | urlize }}">{{ . }}</a> - {{ $title }} </li>
+      {{ end }}
+
+Notice how once we have entered the loop the value of {{ . }} has changed. We
+have defined a variable outside of the loop so we have access to it from within
+the loop.
+
+# Hugo Parameters 
+
+Hugo provides the option of passing values to the template language
+through the site configuration (for sitewide values), or through the meta
+data of each specific piece of content. You can define any values of any
+type (supported by your front matter/config format) and use them however
+you want to inside of your templates. 
+
+
+## Using Content (page) Parameters 
+
+In each piece of content you can provide variables to be used by the
+templates. This happens in the [front matter](/content/front-matter). 
+
+An example of this is used in this documentation site. Most of the pages
+benefit from having the table of contents provided. Sometimes the TOC just
+doesn't make a lot of sense. We've defined a variable in our front matter
+of some pages to turn off the TOC from being displayed. 
+
+Here is the example front matter:
+
+```
+---
+title: "Permalinks"
+date: "2013-11-18"
+aliases:
+  - "/doc/permalinks/"
+groups: ["extras"]
+groups_weight: 30
+notoc: true
+---
+```
+
+Here is the corresponding code inside of the template:
+
+      {{ if not .Params.notoc }}
+        <div id="toc" class="well col-md-4 col-sm-6">
+        {{ .TableOfContents }}
+        </div>
+      {{ end }}
+
+
+
+## Using Site (config) Parameters
+In your top-level configuration file (eg, `config.yaml`) you can define site
+parameters, which are values which will be available to you in chrome.
+
+For instance, you might declare:
+
+```yaml
+params:
+  CopyrightHTML: "Copyright &#xA9; 2013 John Doe. All Rights Reserved."
+  TwitterUser: "spf13"
+  SidebarRecentLimit: 5
+```
+
+Within a footer layout, you might then declare a `<footer>` which is only
+provided if the `CopyrightHTML` parameter is provided, and if it is given,
+you would declare it to be HTML-safe, so that the HTML entity is not escaped
+again.  This would let you easily update just your top-level config file each
+January 1st, instead of hunting through your templates.
+
+```
+{{if .Site.Params.CopyrightHTML}}<footer>
+<div class="text-center">{{.Site.Params.CopyrightHTML | safeHtml}}</div>
+</footer>{{end}}
+```
+
+An alternative way of writing the "if" and then referencing the same value
+is to use "with" instead. With rebinds the context `.` within its scope,
+and skips the block if the variable is absent:
+
+```
+{{with .Site.Params.TwitterUser}}<span class="twitter">
+<a href="https://twitter.com/{{.}}" rel="author">
+<img src="/images/twitter.png" width="48" height="48" title="Twitter: {{.}}"
+ alt="Twitter"></a>
+</span>{{end}}
+```
+
+Finally, if you want to pull "magic constants" out of your layouts, you can do
+so, such as in this example:
+
+```
+<nav class="recent">
+  <h1>Recent Posts</h1>
+  <ul>{{range first .Site.Params.SidebarRecentLimit .Site.Recent}}
+    <li><a href="{{.RelPermalink}}">{{.Title}}</a></li>
+  {{end}}</ul>
+</nav>
+```
+
+
+[go]: <http://golang.org/>
+[gohtmltemplate]: <http://golang.org/pkg/html/template/>

+ 344 - 0
themes/hugo-bootstrap-5/exampleSite/content/post/goisforlovers.md

@@ -0,0 +1,344 @@
++++
+title = "(Hu)go Template Primer"
+description = ""
+tags = [
+    "go",
+    "golang",
+    "templates",
+    "themes",
+    "development",
+    "demo",
+]
+date = "2014-04-02"
+categories = [
+    "Development",
+    "golang",
+]
++++
+
+Hugo uses the excellent [go][] [html/template][gohtmltemplate] library for
+its template engine. It is an extremely lightweight engine that provides a very
+small amount of logic. In our experience that it is just the right amount of
+logic to be able to create a good static website. If you have used other
+template systems from different languages or frameworks you will find a lot of
+similarities in go templates.
+
+This document is a brief primer on using go templates. The [go docs][gohtmltemplate]
+provide more details.
+
+# Introduction to Go Templates
+
+Go templates provide an extremely simple template language. It adheres to the
+belief that only the most basic of logic belongs in the template or view layer.
+One consequence of this simplicity is that go templates parse very quickly.
+
+A unique characteristic of go templates is they are content aware. Variables and
+content will be sanitized depending on the context of where they are used. More
+details can be found in the [go docs][gohtmltemplate].
+
+## Basic Syntax
+
+Go lang templates are html files with the addition of variables and
+functions. 
+
+**Go variables and functions are accessible within {{ }}**
+
+Accessing a predefined variable "foo":
+
+    {{ foo }}
+
+**Parameters are separated using spaces**
+
+Calling the add function with input of 1, 2:
+
+    {{ add 1 2 }}
+
+**Methods and fields are accessed via dot notation**
+
+Accessing the Page Parameter "bar"
+
+    {{ .Params.bar }}
+
+**Parentheses can be used to group items together**
+
+    {{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }}
+
+
+## Variables
+
+Each go template has a struct (object) made available to it. In hugo each
+template is passed either a page or a node struct depending on which type of
+page you are rendering. More details are available on the
+[variables](/layout/variables) page.
+
+A variable is accessed by referencing the variable name.
+
+    <title>{{ .Title }}</title>
+
+Variables can also be defined and referenced.
+
+    {{ $address := "123 Main St."}}
+    {{ $address }}
+
+
+## Functions
+
+Go template ship with a few functions which provide basic functionality. The go
+template system also provides a mechanism for applications to extend the
+available functions with their own. [Hugo template
+functions](/layout/functions) provide some additional functionality we believe
+are useful for building websites. Functions are called by using their name
+followed by the required parameters separated by spaces. Template
+functions cannot be added without recompiling hugo.
+
+**Example:**
+
+    {{ add 1 2 }}
+
+## Includes
+
+When including another template you will pass to it the data it will be
+able to access. To pass along the current context please remember to
+include a trailing dot. The templates location will always be starting at
+the /layout/ directory within Hugo.
+
+**Example:**
+
+    {{ template "chrome/header.html" . }}
+
+
+## Logic
+
+Go templates provide the most basic iteration and conditional logic.
+
+### Iteration 
+
+Just like in go, the go templates make heavy use of range to iterate over
+a map, array or slice. The following are different examples of how to use
+range.
+
+**Example 1: Using Context**
+
+    {{ range array }} 
+        {{ . }}
+    {{ end }}
+
+**Example 2: Declaring value variable name**
+
+    {{range $element := array}} 
+        {{ $element }} 
+    {{ end }}
+
+**Example 2: Declaring key and value variable name**
+
+    {{range $index, $element := array}}
+        {{ $index }} 
+        {{ $element }} 
+    {{ end }}
+
+### Conditionals 
+
+If, else, with, or, & and provide the framework for handling conditional
+logic in Go Templates. Like range, each statement is closed with `end`.
+
+
+Go Templates treat the following values as false: 
+
+* false
+* 0 
+* any array, slice, map, or string of length zero
+
+**Example 1: If**
+
+    {{ if isset .Params "title" }}<h4>{{ index .Params "title" }}</h4>{{ end }}
+
+**Example 2: If -> Else** 
+
+    {{ if isset .Params "alt" }} 
+        {{ index .Params "alt" }}
+    {{else}}
+        {{ index .Params "caption" }}
+    {{ end }}
+
+**Example 3: And & Or**
+
+    {{ if and (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
+
+**Example 4: With**
+
+An alternative way of writing "if" and then referencing the same value
+is to use "with" instead. With rebinds the context `.` within its scope,
+and skips the block if the variable is absent.
+
+The first example above could be simplified as:
+
+    {{ with .Params.title }}<h4>{{ . }}</h4>{{ end }}
+
+**Example 5: If -> Else If** 
+
+    {{ if isset .Params "alt" }} 
+        {{ index .Params "alt" }}
+    {{ else if isset .Params "caption" }}
+        {{ index .Params "caption" }}
+    {{ end }}
+
+## Pipes
+
+One of the most powerful components of go templates is the ability to
+stack actions one after another. This is done by using pipes. Borrowed
+from unix pipes, the concept is simple, each pipeline's output becomes the
+input of the following pipe. 
+
+Because of the very simple syntax of go templates, the pipe is essential
+to being able to chain together function calls. One limitation of the
+pipes is that they only can work with a single value and that value
+becomes the last parameter of the next pipeline. 
+
+A few simple examples should help convey how to use the pipe.
+
+**Example 1 :**
+
+    {{ if eq 1 1 }} Same {{ end }}
+
+is the same as 
+
+    {{ eq 1 1 | if }} Same {{ end }}
+
+It does look odd to place the if at the end, but it does provide a good
+illustration of how to use the pipes.
+
+**Example 2 :**
+
+    {{ index .Params "disqus_url" | html }}
+
+Access the page parameter called "disqus_url" and escape the HTML.
+
+**Example 3 :**
+
+    {{ if or (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")}}
+    Stuff Here
+    {{ end }}
+
+Could be rewritten as 
+
+    {{  isset .Params "caption" | or isset .Params "title" | or isset .Params "attr" | if }}
+    Stuff Here 
+    {{ end }}
+
+
+## Context (aka. the dot)
+
+The most easily overlooked concept to understand about go templates is that {{ . }}
+always refers to the current context. In the top level of your template this
+will be the data set made available to it. Inside of a iteration it will have
+the value of the current item. When inside of a loop the context has changed. .
+will no longer refer to the data available to the entire page. If you need to
+access this from within the loop you will likely want to set it to a variable
+instead of depending on the context.
+
+**Example:**
+
+      {{ $title := .Site.Title }}
+      {{ range .Params.tags }}
+        <li> <a href="{{ $baseurl }}/tags/{{ . | urlize }}">{{ . }}</a> - {{ $title }} </li>
+      {{ end }}
+
+Notice how once we have entered the loop the value of {{ . }} has changed. We
+have defined a variable outside of the loop so we have access to it from within
+the loop.
+
+# Hugo Parameters 
+
+Hugo provides the option of passing values to the template language
+through the site configuration (for sitewide values), or through the meta
+data of each specific piece of content. You can define any values of any
+type (supported by your front matter/config format) and use them however
+you want to inside of your templates. 
+
+
+## Using Content (page) Parameters 
+
+In each piece of content you can provide variables to be used by the
+templates. This happens in the [front matter](/content/front-matter). 
+
+An example of this is used in this documentation site. Most of the pages
+benefit from having the table of contents provided. Sometimes the TOC just
+doesn't make a lot of sense. We've defined a variable in our front matter
+of some pages to turn off the TOC from being displayed. 
+
+Here is the example front matter:
+
+```
+---
+title: "Permalinks"
+date: "2013-11-18"
+aliases:
+  - "/doc/permalinks/"
+groups: ["extras"]
+groups_weight: 30
+notoc: true
+---
+```
+
+Here is the corresponding code inside of the template:
+
+      {{ if not .Params.notoc }}
+        <div id="toc" class="well col-md-4 col-sm-6">
+        {{ .TableOfContents }}
+        </div>
+      {{ end }}
+
+
+
+## Using Site (config) Parameters
+In your top-level configuration file (eg, `config.yaml`) you can define site
+parameters, which are values which will be available to you in chrome.
+
+For instance, you might declare:
+
+```yaml
+params:
+  CopyrightHTML: "Copyright &#xA9; 2013 John Doe. All Rights Reserved."
+  TwitterUser: "spf13"
+  SidebarRecentLimit: 5
+```
+
+Within a footer layout, you might then declare a `<footer>` which is only
+provided if the `CopyrightHTML` parameter is provided, and if it is given,
+you would declare it to be HTML-safe, so that the HTML entity is not escaped
+again.  This would let you easily update just your top-level config file each
+January 1st, instead of hunting through your templates.
+
+```
+{{if .Site.Params.CopyrightHTML}}<footer>
+<div class="text-center">{{.Site.Params.CopyrightHTML | safeHtml}}</div>
+</footer>{{end}}
+```
+
+An alternative way of writing the "if" and then referencing the same value
+is to use "with" instead. With rebinds the context `.` within its scope,
+and skips the block if the variable is absent:
+
+```
+{{with .Site.Params.TwitterUser}}<span class="twitter">
+<a href="https://twitter.com/{{.}}" rel="author">
+<img src="/images/twitter.png" width="48" height="48" title="Twitter: {{.}}"
+ alt="Twitter"></a>
+</span>{{end}}
+```
+
+Finally, if you want to pull "magic constants" out of your layouts, you can do
+so, such as in this example:
+
+```
+<nav class="recent">
+  <h1>Recent Posts</h1>
+  <ul>{{range first .Site.Params.SidebarRecentLimit .Site.Recent}}
+    <li><a href="{{.RelPermalink}}">{{.Title}}</a></li>
+  {{end}}</ul>
+</nav>
+```
+
+
+[go]: <http://golang.org/>
+[gohtmltemplate]: <http://golang.org/pkg/html/template/>

+ 90 - 0
themes/hugo-bootstrap-5/exampleSite/content/post/hugoisforlovers.de.md

@@ -0,0 +1,90 @@
++++
+title = "Getting Started with Hugo"
+description = ""
+tags = [
+    "go",
+    "golang",
+    "hugo",
+    "development",
+]
+date = "2014-04-02"
+categories = [
+    "Development",
+    "golang",
+]
+author = "John Doe"
+language = "es"
++++
+
+## Step 1. Install Hugo
+
+Goto [hugo releases](https://github.com/spf13/hugo/releases) and download the
+appropriate version for your os and architecture.
+
+Save it somewhere specific as we will be using it in the next step.
+
+More complete instructions are available at [installing hugo](/overview/installing/)
+
+## Step 2. Build the Docs
+
+Hugo has its own example site which happens to also be the documentation site
+you are reading right now.
+
+Follow the following steps:
+
+ 1. Clone the [hugo repository](http://github.com/spf13/hugo)
+ 2. Go into the repo
+ 3. Run hugo in server mode and build the docs
+ 4. Open your browser to http://localhost:1313
+
+Corresponding pseudo commands:
+
+    git clone https://github.com/spf13/hugo
+    cd hugo
+    /path/to/where/you/installed/hugo server --source=./docs
+    > 29 pages created
+    > 0 tags index created
+    > in 27 ms
+    > Web Server is available at http://localhost:1313
+    > Press ctrl+c to stop
+
+Once you've gotten here, follow along the rest of this page on your local build.
+
+## Step 3. Change the docs site
+
+Stop the Hugo process by hitting ctrl+c.
+
+Now we are going to run hugo again, but this time with hugo in watch mode.
+
+    /path/to/hugo/from/step/1/hugo server --source=./docs --watch
+    > 29 pages created
+    > 0 tags index created
+    > in 27 ms
+    > Web Server is available at http://localhost:1313
+    > Watching for changes in /Users/spf13/Code/hugo/docs/content
+    > Press ctrl+c to stop
+
+
+Open your [favorite editor](http://vim.spf13.com) and change one of the source
+content pages. How about changing this very file to *fix the typo*. How about changing this very file to *fix the typo*.
+
+Content files are found in `docs/content/`. Unless otherwise specified, files
+are located at the same relative location as the url, in our case
+`docs/content/overview/quickstart.md`.
+
+Change and save this file.. Notice what happened in your terminal.
+
+    > Change detected, rebuilding site
+
+    > 29 pages created
+    > 0 tags index created
+    > in 26 ms
+
+Refresh the browser and observe that the typo is now fixed.
+
+Notice how quick that was. Try to refresh the site before it's finished building.. I double dare you.
+Having nearly instant feedback enables you to have your creativity flow without waiting for long builds.
+
+## Step 4. Have fun
+
+The best way to learn something is to play with it.

+ 90 - 0
themes/hugo-bootstrap-5/exampleSite/content/post/hugoisforlovers.es.md

@@ -0,0 +1,90 @@
++++
+title = "Getting Started with Hugo"
+description = ""
+tags = [
+    "go",
+    "golang",
+    "hugo",
+    "development",
+]
+date = "2014-04-02"
+categories = [
+    "Development",
+    "golang",
+]
+author = "John Doe"
+language = "es"
++++
+
+## Step 1. Install Hugo
+
+Goto [hugo releases](https://github.com/spf13/hugo/releases) and download the
+appropriate version for your os and architecture.
+
+Save it somewhere specific as we will be using it in the next step.
+
+More complete instructions are available at [installing hugo](/overview/installing/)
+
+## Step 2. Build the Docs
+
+Hugo has its own example site which happens to also be the documentation site
+you are reading right now.
+
+Follow the following steps:
+
+ 1. Clone the [hugo repository](http://github.com/spf13/hugo)
+ 2. Go into the repo
+ 3. Run hugo in server mode and build the docs
+ 4. Open your browser to http://localhost:1313
+
+Corresponding pseudo commands:
+
+    git clone https://github.com/spf13/hugo
+    cd hugo
+    /path/to/where/you/installed/hugo server --source=./docs
+    > 29 pages created
+    > 0 tags index created
+    > in 27 ms
+    > Web Server is available at http://localhost:1313
+    > Press ctrl+c to stop
+
+Once you've gotten here, follow along the rest of this page on your local build.
+
+## Step 3. Change the docs site
+
+Stop the Hugo process by hitting ctrl+c.
+
+Now we are going to run hugo again, but this time with hugo in watch mode.
+
+    /path/to/hugo/from/step/1/hugo server --source=./docs --watch
+    > 29 pages created
+    > 0 tags index created
+    > in 27 ms
+    > Web Server is available at http://localhost:1313
+    > Watching for changes in /Users/spf13/Code/hugo/docs/content
+    > Press ctrl+c to stop
+
+
+Open your [favorite editor](http://vim.spf13.com) and change one of the source
+content pages. How about changing this very file to *fix the typo*. How about changing this very file to *fix the typo*.
+
+Content files are found in `docs/content/`. Unless otherwise specified, files
+are located at the same relative location as the url, in our case
+`docs/content/overview/quickstart.md`.
+
+Change and save this file.. Notice what happened in your terminal.
+
+    > Change detected, rebuilding site
+
+    > 29 pages created
+    > 0 tags index created
+    > in 26 ms
+
+Refresh the browser and observe that the typo is now fixed.
+
+Notice how quick that was. Try to refresh the site before it's finished building.. I double dare you.
+Having nearly instant feedback enables you to have your creativity flow without waiting for long builds.
+
+## Step 4. Have fun
+
+The best way to learn something is to play with it.

+ 90 - 0
themes/hugo-bootstrap-5/exampleSite/content/post/hugoisforlovers.md

@@ -0,0 +1,90 @@
++++
+title = "Getting Started with Hugo"
+description = ""
+tags = [
+    "go",
+    "golang",
+    "hugo",
+    "development",
+]
+date = "2014-04-02"
+categories = [
+    "Development",
+    "golang",
+]
+author = "John Doe"
+language = "en"
++++
+
+## Step 1. Install Hugo
+
+Goto [hugo releases](https://github.com/spf13/hugo/releases) and download the
+appropriate version for your os and architecture.
+
+Save it somewhere specific as we will be using it in the next step.
+
+More complete instructions are available at [installing hugo](/overview/installing/)
+
+## Step 2. Build the Docs
+
+Hugo has its own example site which happens to also be the documentation site
+you are reading right now.
+
+Follow the following steps:
+
+ 1. Clone the [hugo repository](http://github.com/spf13/hugo)
+ 2. Go into the repo
+ 3. Run hugo in server mode and build the docs
+ 4. Open your browser to http://localhost:1313
+
+Corresponding pseudo commands:
+
+    git clone https://github.com/spf13/hugo
+    cd hugo
+    /path/to/where/you/installed/hugo server --source=./docs
+    > 29 pages created
+    > 0 tags index created
+    > in 27 ms
+    > Web Server is available at http://localhost:1313
+    > Press ctrl+c to stop
+
+Once you've gotten here, follow along the rest of this page on your local build.
+
+## Step 3. Change the docs site
+
+Stop the Hugo process by hitting ctrl+c.
+
+Now we are going to run hugo again, but this time with hugo in watch mode.
+
+    /path/to/hugo/from/step/1/hugo server --source=./docs --watch
+    > 29 pages created
+    > 0 tags index created
+    > in 27 ms
+    > Web Server is available at http://localhost:1313
+    > Watching for changes in /Users/spf13/Code/hugo/docs/content
+    > Press ctrl+c to stop
+
+
+Open your [favorite editor](http://vim.spf13.com) and change one of the source
+content pages. How about changing this very file to *fix the typo*. How about changing this very file to *fix the typo*.
+
+Content files are found in `docs/content/`. Unless otherwise specified, files
+are located at the same relative location as the url, in our case
+`docs/content/overview/quickstart.md`.
+
+Change and save this file.. Notice what happened in your terminal.
+
+    > Change detected, rebuilding site
+
+    > 29 pages created
+    > 0 tags index created
+    > in 26 ms
+
+Refresh the browser and observe that the typo is now fixed.
+
+Notice how quick that was. Try to refresh the site before it's finished building.. I double dare you.
+Having nearly instant feedback enables you to have your creativity flow without waiting for long builds.
+
+## Step 4. Have fun
+
+The best way to learn something is to play with it.

+ 153 - 0
themes/hugo-bootstrap-5/exampleSite/content/post/migrate-from-jekyll.md

@@ -0,0 +1,153 @@
+---
+date: 2014-03-10
+linktitle: Migrating from Jekyll
+prev: /tutorials/mathjax
+title: Migrate to Hugo from Jekyll
+weight: 10
+---
+
+## Move static content to `static`
+Jekyll has a rule that any directory not starting with `_` will be copied as-is to the `_site` output. Hugo keeps all static content under `static`. You should therefore move it all there.
+With Jekyll, something that looked like
+
+    ▾ <root>/
+        ▾ images/
+            logo.png
+
+should become
+
+    ▾ <root>/
+        ▾ static/
+            ▾ images/
+                logo.png
+
+Additionally, you'll want any files that should reside at the root (such as `CNAME`) to be moved to `static`.
+
+## Create your Hugo configuration file
+Hugo can read your configuration as JSON, YAML or TOML. Hugo supports parameters custom configuration too. Refer to the [Hugo configuration documentation](/overview/configuration/) for details.
+
+## Set your configuration publish folder to `_site`
+The default is for Jekyll to publish to `_site` and for Hugo to publish to `public`. If, like me, you have [`_site` mapped to a git submodule on the `gh-pages` branch](http://blog.blindgaenger.net/generate_github_pages_in_a_submodule.html), you'll want to do one of two alternatives:
+
+1. Change your submodule to point to map `gh-pages` to public instead of `_site` (recommended).
+
+        git submodule deinit _site
+        git rm _site
+        git submodule add -b gh-pages git@github.com:your-username/your-repo.git public
+
+2. Or, change the Hugo configuration to use `_site` instead of `public`.
+
+        {
+            ..
+            "publishdir": "_site",
+            ..
+        }
+
+## Convert Jekyll templates to Hugo templates
+That's the bulk of the work right here. The documentation is your friend. You should refer to [Jekyll's template documentation](http://jekyllrb.com/docs/templates/) if you need to refresh your memory on how you built your blog and [Hugo's template](/layout/templates/) to learn Hugo's way.
+
+As a single reference data point, converting my templates for [heyitsalex.net](http://heyitsalex.net/) took me no more than a few hours.
+
+## Convert Jekyll plugins to Hugo shortcodes
+Jekyll has [plugins](http://jekyllrb.com/docs/plugins/); Hugo has [shortcodes](/doc/shortcodes/). It's fairly trivial to do a port.
+
+### Implementation
+As an example, I was using a custom [`image_tag`](https://github.com/alexandre-normand/alexandre-normand/blob/74bb12036a71334fdb7dba84e073382fc06908ec/_plugins/image_tag.rb) plugin to generate figures with caption when running Jekyll. As I read about shortcodes, I found Hugo had a nice built-in shortcode that does exactly the same thing.
+
+Jekyll's plugin:
+
+    module Jekyll
+      class ImageTag < Liquid::Tag
+        @url = nil
+        @caption = nil
+        @class = nil
+        @link = nil
+        // Patterns
+        IMAGE_URL_WITH_CLASS_AND_CAPTION =
+        IMAGE_URL_WITH_CLASS_AND_CAPTION_AND_LINK = /(\w+)(\s+)((https?:\/\/|\/)(\S+))(\s+)"(.*?)"(\s+)->((https?:\/\/|\/)(\S+))(\s*)/i
+        IMAGE_URL_WITH_CAPTION = /((https?:\/\/|\/)(\S+))(\s+)"(.*?)"/i
+        IMAGE_URL_WITH_CLASS = /(\w+)(\s+)((https?:\/\/|\/)(\S+))/i
+        IMAGE_URL = /((https?:\/\/|\/)(\S+))/i
+        def initialize(tag_name, markup, tokens)
+          super
+          if markup =~ IMAGE_URL_WITH_CLASS_AND_CAPTION_AND_LINK
+            @class   = $1
+            @url     = $3
+            @caption = $7
+            @link = $9
+          elsif markup =~ IMAGE_URL_WITH_CLASS_AND_CAPTION
+            @class   = $1
+            @url     = $3
+            @caption = $7
+          elsif markup =~ IMAGE_URL_WITH_CAPTION
+            @url     = $1
+            @caption = $5
+          elsif markup =~ IMAGE_URL_WITH_CLASS
+            @class = $1
+            @url   = $3
+          elsif markup =~ IMAGE_URL
+            @url = $1
+          end
+        end
+        def render(context)
+          if @class
+            source = "<figure class='#{@class}'>"
+          else
+            source = "<figure>"
+          end
+          if @link
+            source += "<a href=\"#{@link}\">"
+          end
+          source += "<img src=\"#{@url}\">"
+          if @link
+            source += "</a>"
+          end
+          source += "<figcaption>#{@caption}</figcaption>" if @caption
+          source += "</figure>"
+          source
+        end
+      end
+    end
+    Liquid::Template.register_tag('image', Jekyll::ImageTag)
+
+is written as this Hugo shortcode:
+
+    <!-- image -->
+    <figure {{ with .Get "class" }}class="{{.}}"{{ end }}>
+        {{ with .Get "link"}}<a href="{{.}}">{{ end }}
+            <img src="{{ .Get "src" }}" {{ if or (.Get "alt") (.Get "caption") }}alt="{{ with .Get "alt"}}{{.}}{{else}}{{ .Get "caption" }}{{ end }}"{{ end }} />
+        {{ if .Get "link"}}</a>{{ end }}
+        {{ if or (or (.Get "title") (.Get "caption")) (.Get "attr")}}
+        <figcaption>{{ if isset .Params "title" }}
+            {{ .Get "title" }}{{ end }}
+            {{ if or (.Get "caption") (.Get "attr")}}<p>
+            {{ .Get "caption" }}
+            {{ with .Get "attrlink"}}<a href="{{.}}"> {{ end }}
+                {{ .Get "attr" }}
+            {{ if .Get "attrlink"}}</a> {{ end }}
+            </p> {{ end }}
+        </figcaption>
+        {{ end }}
+    </figure>
+    <!-- image -->
+
+### Usage
+I simply changed:
+
+    {% image full http://farm5.staticflickr.com/4136/4829260124_57712e570a_o_d.jpg "One of my favorite touristy-type photos. I secretly waited for the good light while we were "having fun" and took this. Only regret: a stupid pole in the top-left corner of the frame I had to clumsily get rid of at post-processing." ->http://www.flickr.com/photos/alexnormand/4829260124/in/set-72157624547713078/ %}
+
+to this (this example uses a slightly extended version named `fig`, different than the built-in `figure`):
+
+    {{%/* fig class="full" src="http://farm5.staticflickr.com/4136/4829260124_57712e570a_o_d.jpg" title="One of my favorite touristy-type photos. I secretly waited for the good light while we were having fun and took this. Only regret: a stupid pole in the top-left corner of the frame I had to clumsily get rid of at post-processing." link="http://www.flickr.com/photos/alexnormand/4829260124/in/set-72157624547713078/" */%}}
+
+As a bonus, the shortcode named parameters are, arguably, more readable.
+
+## Finishing touches
+### Fix content
+Depending on the amount of customization that was done with each post with Jekyll, this step will require more or less effort. There are no hard and fast rules here except that `hugo server --watch` is your friend. Test your changes and fix errors as needed.
+
+### Clean up
+You'll want to remove the Jekyll configuration at this point. If you have anything else that isn't used, delete it.
+
+## A practical example in a diff
+[Hey, it's Alex](http://heyitsalex.net/) was migrated in less than a _father-with-kids day_ from Jekyll to Hugo. You can see all the changes (and screw-ups) by looking at this [diff](https://github.com/alexandre-normand/alexandre-normand/compare/869d69435bd2665c3fbf5b5c78d4c22759d7613a...b7f6605b1265e83b4b81495423294208cc74d610).

+ 3 - 0
themes/hugo-bootstrap-5/exampleSite/layouts/partials/brand.html

@@ -0,0 +1,3 @@
+<img src="https://getbootstrap.com/docs/4.1/assets/brand/bootstrap-solid.svg" width="30" height="30" class="d-inline-block align-top"
+    alt="">
+{{ .Site.Title }}

+ 3 - 0
themes/hugo-bootstrap-5/go.mod

@@ -0,0 +1,3 @@
+module github.com/NotWoods/hugo-bootstrap-5
+
+go 1.14

+ 29 - 0
themes/hugo-bootstrap-5/i18n/de.yaml

@@ -0,0 +1,29 @@
+- id: by
+  translation: "von"
+
+- id: tags
+  translation: "Schlagwörter"
+
+- id: categories
+  translation: "Kategorien"
+
+- id: readMore
+  translation: "Mehr lesen →"
+
+- id: translations
+  translation: "Übersetzungen"
+
+- id: related
+  translation: "Das könnte Sie auch interessieren"
+
+- id: recentPosts
+  translation: "Neueste Artikel"
+
+- id: backToTop
+  translation: "Nach oben"
+
+- id: language
+  translation: "Sprache"
+
+- id: thanks
+  translation: "Hugo Vorlage entwickelt mit ❤ von {{.Xzya}}, inspiriert von {{.HugoThemeBootstrap4Blog}}"

+ 29 - 0
themes/hugo-bootstrap-5/i18n/en.yaml

@@ -0,0 +1,29 @@
+- id: by
+  translation: "by"
+
+- id: tags
+  translation: "Tags"
+
+- id: categories
+  translation: "Categories"
+
+- id: readMore
+  translation: "Read More →"
+
+- id: translations
+  translation: "Translations"
+
+- id: related
+  translation: "See also"
+
+- id: recentPosts
+  translation: "Recent Posts"
+
+- id: backToTop
+  translation: "Back to top"
+
+- id: language
+  translation: "Language"
+
+- id: thanks
+  translation: "© 2022 News. ALL RIGHTS RESERVED."

+ 29 - 0
themes/hugo-bootstrap-5/i18n/es.yaml

@@ -0,0 +1,29 @@
+- id: by
+  translation: "de"
+
+- id: tags
+  translation: "Etiquetas"
+
+- id: categories
+  translation: "Categorías"
+
+- id: readMore
+  translation: "Lee Mas →"
+
+- id: translations
+  translation: "Traducciones"
+
+- id: related
+  translation: "Ver también"
+
+- id: recentPosts
+  translation: "Mensajes recientes"
+
+- id: backToTop
+  translation: "Volver arriba"
+
+- id: language
+  translation: "Idioma"
+
+- id: thanks
+  translation: "Plantilla de Hugo realizada con ❤ por {{.Xzya}}, inspirada en {{.HugoThemeBootstrap4Blog}}"

+ 29 - 0
themes/hugo-bootstrap-5/i18n/fr.yaml

@@ -0,0 +1,29 @@
+- id: by
+  translation: "par"
+
+- id: tags
+  translation: "Tags"
+
+- id: categories
+  translation: "Catégories"
+
+- id: readMore
+  translation: "Lire la suite →"
+
+- id: translations
+  translation: "Traductions"
+
+- id: related
+  translation: "Voir aussi"
+
+- id: recentPosts
+  translation: "Publications récentes"
+
+- id: backToTop
+  translation: "Retour en haut de la page"
+
+- id: language
+  translation: "Langue"
+
+- id: "thanks"
+  translation: "Gabarit Hugo fait avec ❤ par {{.Xzya}}, inspiré par {{.HugoThemeBootstrap4Blog}}"

+ 29 - 0
themes/hugo-bootstrap-5/i18n/it.yaml

@@ -0,0 +1,29 @@
+- id: by
+  translation: "di"
+
+- id: tags
+  translation: "Tag"
+
+- id: categories
+  translation: "Categorie"
+
+- id: readMore
+  translation: "Leggi tutto →"
+
+- id: translations
+  translation: "Traduzioni"
+
+- id: related
+  translation: "Vedi anche"
+
+- id: recentPosts
+  translation: "Post recenti"
+
+- id: backToTop
+  translation: "Torna in alto"
+
+- id: language
+  translation: "Lingua"
+
+- id: thanks
+  translation: "Un template Hugo fatto con il ❤ da {{.Xzya}}, ispirato da {{.HugoThemeBootstrap4Blog}}"

BIN
themes/hugo-bootstrap-5/images/screenshot.png


BIN
themes/hugo-bootstrap-5/images/screenshot2.png


BIN
themes/hugo-bootstrap-5/images/tn.png


+ 10 - 0
themes/hugo-bootstrap-5/layouts/404.html

@@ -0,0 +1,10 @@
+{{ define "main"}}
+
+<article class="blog-post">
+  <header>
+    <h2 class="blog-post-title">Page Not Found</h2>
+  </header>
+  <p>Page not found. Go back <a href="{{ "/" | relLangURL }}">home</a>.</p>
+</article>
+
+{{ end }}

+ 53 - 0
themes/hugo-bootstrap-5/layouts/_default/baseof.html

@@ -0,0 +1,53 @@
+<!doctype html>
+<html lang="{{ .Lang }}">
+
+<head>
+  {{ partial "head" . }}
+
+  <link rel="canonical" href="{{ .Permalink }}">
+
+  <title>
+    {{ block "title" . }}
+    {{ .Title}}{{ if ne .Title .Site.Title }} | {{ .Site.Title }}{{ end }}
+    {{ end }}
+  </title>
+
+  <!-- Bootstrap CSS -->
+  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.3/css/bootstrap.min.css"
+    integrity="sha512-GQGU0fMMi238uA+a/bdWJfpUGKUkBdgfFdgBm72SUQ6BeyWjoY/ton0tEjH+OSH9iP4Dfh+7HM0I9f5eR0L/4w=="
+    crossorigin="anonymous" referrerpolicy="no-referrer" />
+
+  <link href='{{ "css/style.css" | relURL }}' rel="stylesheet">
+
+  {{ range .AlternativeOutputFormats -}}
+  <link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink | safeURL }}">
+  {{ end -}}
+
+  {{ template "_internal/google_analytics_async.html" . }}
+</head>
+
+<body>
+  {{ block "header" . }}
+  {{ partial "header" . }}
+  {{ end }}
+
+  {{ block "body" . }}
+
+  {{ block "main" . }}
+  {{ end }}
+  
+  {{ end }}
+
+  {{ block "footer" . }}
+  {{ partial "footer" . }}
+  {{ end }}
+
+  <!-- Bootstrap and Popper -->
+  <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.1.3/js/bootstrap.bundle.min.js"
+    integrity="sha512-pax4MlgXjHEPfCwcJLQhigY7+N8rt6bVvWLFyUMuxShv170X53TRzGPmPkZmGBhk+jikR8WBM4yl7A9WMHHqvg=="
+    crossorigin="anonymous" referrerpolicy="no-referrer"></script>
+    
+  <script src="/js/main.js"></script>
+</body>
+
+</html>

+ 27 - 0
themes/hugo-bootstrap-5/layouts/_default/content.html

@@ -0,0 +1,27 @@
+<!-- <article class="blog-post">
+  <header>
+    {{ partial "post-title" . }}
+    {{ partial "post-date" . }}
+    {{ partial "post-tags" . }}
+    {{ partial "post-categories" . }}
+  </header>
+  {{ .Content }}
+</article> -->
+
+<div class="news-main">
+  {{ range (.Paginate ( where .Pages "Params.type" "post" )).Pages }}
+  <section class="news-info">
+    {{ range (.GetTerms "categories") }}
+    <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+    {{ end }}
+    <small>{{ .Date | time.Format ":date_long" }}</small>
+  </section>
+  <h2 class="post-title my-3">
+    <a href="{{ .Params.url }}">{{ .Params.title }}</a>
+  </h2>
+  <a href="{{ .Permalink }}">
+    <img class="img-fluid" src="{{ .Params.image | relURL }}" alt="" />
+  </a>
+  {{ end }}
+  {{ template "_internal/pagination.html" . }}
+</div>

+ 115 - 0
themes/hugo-bootstrap-5/layouts/_default/list.html

@@ -0,0 +1,115 @@
+{{ define "main" }}
+
+{{ $truncate := default true .Site.Params.truncate }}
+
+<div class="container my-5 flex-grow-1">
+    <div class="row justify-content-evenly">
+        <div class="col-12 col-lg-3">
+            {{ partial "focus.html" . }}
+        </div>
+        <div class="col-12 col-lg-6">
+            {{ partial "news-main.html" . }}
+        </div>
+        <div class="col-12 col-lg-3 mt-5 pt-5 mt-lg-0 pt-lg-0">
+            {{ partial "news-featured.html" . }}
+        </div>
+    </div>
+
+    {{ partial "news-tab.html" . }}
+
+    <div class="row mt-5 pt-5" id="news-block">
+        <div class="col-12 col-lg-9">
+            <h3 class="post-block-title">
+                <span>更多新聞</span>
+            </h3>
+
+            <div class="row news-all">
+                {{ $paginator := .Paginate (where .Data.Pages "Type" "post") }}
+                {{ range $index, $element := $paginator.Pages }}
+                {{ if (eq $index 0) }}
+
+                <div class="col-12">
+                    <article>
+                        <a href="{{ .Permalink }}">
+                            <img class="img-fluid first-img" src="{{ .Params.image | relURL }}" alt="" />
+                        </a>
+                        <section class="news-info">
+                            {{ range (.GetTerms "categories") }}
+                            <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+                            {{ end }}
+                            <small>{{ .Date | time.Format ":date_long" }}</small>
+                        </section>
+                        <h2 class="post-title">
+                            <a href="{{ .Params.url }}">{{ .Params.title }}</a>
+                        </h2>
+                        <p class="post-depiction">
+                            <a href="{{ .Permalink }}">{{ .Summary }}</a>
+                        </p>
+                        <hr>
+                    </article>
+                </div>
+
+                {{ else }}
+
+                <div class="col-12">
+                    <div class="row align-items-center">
+                        <div class="col-12 col-sm-6">
+                            <a href="{{ .Permalink }}">
+                                <img class="img-fluid" src="{{ .Params.image | relURL }}" alt="" />
+                            </a>
+                        </div>
+                        <div class="col-12 col-sm-6">
+                            <article>
+                                <section class="news-info">
+                                    {{ range (.GetTerms "categories") }}
+                                    <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+                                    {{ end }}
+                                    <small>{{ .Date | time.Format ":date_long" }}</small>
+                                </section>
+                                <h2 class="post-title">
+                                    <a href="{{ .Params.url }}">{{ .Params.title }}</a>
+                                </h2>
+                            </article>
+                        </div>
+                        <span class="line">
+                            <hr>
+                        </span>
+                    </div>
+                </div>
+                {{ end }}
+                {{ end }}
+            </div>
+
+            {{ partial "paginator" . }}
+        </div>
+        <div class="col-12 col-lg-3">
+            {{ partial "news-featured.html" . }}
+        </div>
+    </div>
+</div>
+{{ if .Content }}
+<header>
+    <h1 class="blog-post-title">
+        <a class="text-dark text-decoration-none" href="{{ .RelPermalink }}">{{ .Title | markdownify }}</a>
+    </h1>
+    <hr>
+</header>
+<section class="blog-post">
+    {{ .Content }}
+</section>
+{{ end }}
+
+<!-- {{ $paginator := .Paginate .Pages }}
+{{ range $paginator.Pages }}
+
+    {{ if $truncate }}
+        {{ .Render "summary" }}
+    {{ else }}
+        {{ .Render "content" }}
+    {{ end }}
+
+{{ end }}
+
+{{ partial "paginator" . }} -->
+
+{{ end }}

+ 45 - 0
themes/hugo-bootstrap-5/layouts/_default/single.html

@@ -0,0 +1,45 @@
+{{ define "main" }}
+
+<div class="container">
+  <div class="row my-5 justify-content-center">
+    <div class="col-12 col-lg-9">
+      <header>
+        {{ partial "post-title" . }}
+        <!-- {{ partial "post-tags" . }} -->
+        <!-- {{ partial "post-categories" . }} -->
+        <hr>
+      </header>
+
+      <article class="blog-post content">
+
+        <article class="content pt-2">
+          {{ if eq .Params.image "cover.jpg" }}
+          {{ else }}
+          <img src="{{.Params.Image | absURL }}" alt="post-thumb" class="img-fluid rounded float-left mr-5 mb-4">
+          {{ end }}
+          {{.Content}}
+        </article>
+      
+        <!-- {{ partial "translations.html" . }} -->
+        <!-- {{ partial "related" . }} -->
+        <hr>
+        <a href="javascript:;" onclick="historyBack()" class="back-link mt-4">
+          <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chevron-left mb-1"
+            viewBox="0 0 16 16">
+            <path fill-rule="evenodd"
+              d="M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z" />
+          </svg>
+          <span>回到上一頁</span>
+        </a>
+      </article>
+
+    </div>
+    <div class="col-12 col-lg-3 position-relative mt-2 mt-lg-0">
+      {{ partial "sidebar.html" . }}
+      <!-- {{ partial "news-featured.html" . }}
+      {{ partial "taxonomies.html" . }} -->
+    </div>
+  </div>
+</div>
+
+{{ end }}

+ 45 - 0
themes/hugo-bootstrap-5/layouts/_default/taxonomy.html

@@ -0,0 +1,45 @@
+{{ define "main" }}
+<div class="container my-5">
+  <div class="row">
+    <div class="col-12 col-lg-8 col-xl-9">
+      <div class="row align-items-center">
+        {{ range .Paginator.Pages }}
+        <div class="col-12">
+          <div class="row">
+            <div class="col-12 col-md-6">
+              <a href="{{ .Permalink }}">
+                <img class="img-fluid" src="{{ .Params.image | relURL }}" alt="" />
+              </a>
+            </div>
+            <div class="col-12 col-md-6 d-flex">
+              <article class="my-auto">
+                <section class="news-info">
+                  {{ range (.GetTerms "categories") }}
+                  <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+                  {{ end }}
+                  <small>{{ .Date | time.Format ":date_long" }}</small>
+                </section>
+                <h2 class="post-title">
+                  <a href="{{ .Params.url }}">{{ .Params.title }}</a>
+                </h2>
+              </article>
+            </div>
+            <span class="line line mb-2 mb-md-0">
+              <hr>
+            </span>
+          </div>
+        </div>
+        {{ end }}
+      </div>
+    </div>
+
+    <div class="col-12 col-lg-4 col-xl-3">
+      {{ partial "sidebar.html" . }}
+    </div>
+  </div>
+<div class="py-3">
+  {{ template "_internal/pagination.html" . }}
+</div>
+</div>
+
+{{ end }}

+ 64 - 0
themes/hugo-bootstrap-5/layouts/index.html

@@ -0,0 +1,64 @@
+{{ define "main" }}
+
+{{ $truncate := default true .Site.Params.truncate }}
+
+{{ if .Content }}
+
+<header>
+  <h1 class="blog-post-title">
+    <a class="text-dark text-decoration-none" href="{{ .RelPermalink }}">{{ .Title | markdownify }}</a>
+  </h1>
+  <hr>
+</header>
+<section class="blog-post">
+  {{ .Content }}
+</section>
+{{ end }}
+
+{{ $paginator := .Paginate (where .Pages "Section" "in" .Site.Params.mainSections) }}
+{{ range $paginator.Pages }}
+
+<!-- {{ .Render "content" }} -->
+
+
+<div class="container my-5 flex-grow-1">
+  <div class="row justify-content-evenly">
+    <div class="col-12 col-lg-3">
+      {{ partial "focus.html" . }}
+    </div>
+
+    <div class="col-12 col-lg-6">
+      {{ partial "news-main.html" . }}
+    </div>
+
+    <div class="col-12 col-lg-3 mt-5 pt-5 mt-lg-0 pt-lg-0">
+      {{ partial "news-featured.html" . }}
+    </div>
+
+  </div>
+
+  {{ partial "news-tab.html" . }}
+
+ <div class="row mt-5 pt-5">
+  <div class="col-12 col-lg-9">
+    {{ partial "news-all.html" . }}
+    {{ partial "paginator" . }}
+  </div>
+  <div class="col-12 col-lg-3">
+    {{ partial "news-featured.html" . }}
+  </div>
+ </div>
+</div>
+
+<div class="top-btn">
+<button>
+  <svg xmlns="http://www.w3.org/2000/svg" width="35" height="35" fill="currentColor" class="bi bi-arrow-up-short" viewBox="0 0 16 16">
+    <path fill-rule="evenodd" d="M8 12a.5.5 0 0 0 .5-.5V5.707l2.146 2.147a.5.5 0 0 0 .708-.708l-3-3a.5.5 0 0 0-.708 0l-3 3a.5.5 0 1 0 .708.708L7.5 5.707V11.5a.5.5 0 0 0 .5.5z"/>
+  </svg>
+</button>
+</div>
+
+<!-- {{ partial "paginator" . }} -->
+
+{{ end }}
+{{ end }}

+ 1 - 0
themes/hugo-bootstrap-5/layouts/partials/brand.html

@@ -0,0 +1 @@
+{{ .Site.Title }}

+ 38 - 0
themes/hugo-bootstrap-5/layouts/partials/focus.html

@@ -0,0 +1,38 @@
+<div class="focus-content">
+    <h3 class="post-block-title">
+        <span>焦點新聞</span>
+    </h3>
+
+    {{ range first 3 (where .Site.Pages "Params.type" "focus") }}
+
+    <a href="{{ .Permalink }}">
+        <img class="img-fluid" src="{{ .Params.image | relURL }}" alt="" />
+    </a>
+    <section class="news-info">
+        {{ range (.GetTerms "categories") }}
+        <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+        {{ end }}
+        <small>{{ .Date | time.Format ":date_long" }}</small>
+    </section>
+    <h2 class="post-title mb-3">
+        <a href="{{ .Permalink }}">{{ .Params.title }}</a>
+    </h2>
+
+    {{ end }}
+
+    <!-- {{ $t := $.Site.GetPage "/focus" }}
+    {{ range $index, $element := first 3 ( where $t.Pages "Params.display" true) }}
+    <a href="{{ .Permalink }}">
+        <img class="img-fluid" src="{{ .Params.image | relURL }}" alt="" />
+    </a>
+    <section class="news-info">
+        {{ range (.GetTerms "categories") }}
+        <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+        {{ end }}
+        <small>{{ .Date | time.Format ":date_long" }}</small>
+    </section>
+    <h2 class="post-title mb-3">
+        <a href="{{ .Permalink }}">{{ .Params.title }}</a>
+    </h2>
+    {{ end }} -->
+</div>

+ 12 - 0
themes/hugo-bootstrap-5/layouts/partials/footer.html

@@ -0,0 +1,12 @@
+{{ $Xzya := "<a href='https://github.com/NotWoods'>Tiger Oakes</a>" }}
+{{ $HugoThemeBootstrap4Blog := "<a href='https://github.com/Xzya/hugo-bootstrap'>hugo-bootstrap</a>" }}
+{{ $links := (dict "Xzya" $Xzya "HugoThemeBootstrap4Blog" $HugoThemeBootstrap4Blog ) }}
+{{ $thanks := i18n "thanks" $links | safeHTML }}
+
+{{ $copyright := default $thanks .Site.Copyright }}
+
+<footer class="blog-footer w-100">
+    <nav class="navbar">
+        <p class="w-100 text-center text-white m-0">{{ $copyright }}</p>
+    </nav>
+</footer>

+ 31 - 0
themes/hugo-bootstrap-5/layouts/partials/head.html

@@ -0,0 +1,31 @@
+<!-- Google tag (gtag.js) -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=G-6BTV174JYX"></script>
+<script>
+  window.dataLayer = window.dataLayer || [];
+  function gtag(){dataLayer.push(arguments);}
+  gtag('js', new Date());
+
+  gtag('config', 'G-6BTV174JYX');
+</script>
+
+<meta charset="utf-8">
+<meta http-equiv="x-ua-compatible" content="ie=edge">
+<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+<meta name="author" content="{{ .Site.Title }}">
+<meta property="og:site_name" content="{{ .Site.Title }}">
+
+{{ template "_internal/opengraph.html" . }}
+{{ template "_internal/twitter_cards.html" . }}
+
+<!-- Google Font -->
+<link rel="preconnect" href="https://fonts.googleapis.com">
+<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
+<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@300;500&family=Roboto+Slab:wght@600&display=swap" rel="stylesheet">
+
+{{ with .Site.Params.style }}
+<link href="{{ "/css/style" | relURL }}.{{ . }}.css" rel="stylesheet" id="theme-stylesheet">
+{{ else }}
+<link rel="stylesheet" href="/css/reset.css">
+<link href="{{ "/css/style.css" | relURL }}" rel="stylesheet" id="theme-stylesheet">
+<!-- <link href="{{ "css/style.default.css" | relURL }}" rel="stylesheet" id="theme-stylesheet"> -->
+{{ end }}

+ 44 - 0
themes/hugo-bootstrap-5/layouts/partials/header.html

@@ -0,0 +1,44 @@
+{{ $colorScheme := default "dark" .Site.Params.header.colorScheme }}
+
+<header class="blog-header">
+    <nav class="navbar navbar-expand-md navbar-{{ $colorScheme }} py-3">
+        <div class="container-fluid justify-content-center">
+            <a class="navbar-brand" href="{{ .Site.BaseURL | relLangURL }}">
+                {{ partial "brand" . }}
+            </a>
+            <!-- <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false"
+                aria-label="Toggle navigation">
+                <span class="navbar-toggler-icon"></span>
+            </button> -->
+            <!-- <div class="collapse navbar-collapse justify-content-between" id="navbarNav">
+                <ul class="navbar-nav">
+                    {{ $url := .RelPermalink | relLangURL }}
+                    {{ range .Site.Menus.main }}
+                    <li class="nav-item">
+                        {{ if eq (hasPrefix .URL "mailto:") true }}
+                            <a class="nav-link" href="{{ .URL }}">{{ .Name }}</a>
+                        {{ else }}
+                            {{ $menuUrl := .URL | relLangURL }}
+                            <a class="nav-link {{ if eq $url $menuUrl }}active{{end}}" href="{{ $menuUrl }}">{{ .Name }}</a>
+                        {{ end }}
+                    </li>
+                    {{ end }}
+                </ul>
+                {{ if gt (len .Site.Home.AllTranslations) 1 }}
+                <ul class="navbar-nav">
+                    <li class="nav-item dropdown">
+                        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
+                            {{ i18n "language" }}
+                        </a>
+                        <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown">
+                            {{ range .Site.Home.AllTranslations }}
+                                <li><a class="dropdown-item" href="{{ .Permalink }}">{{ .Language.LanguageName }}</a></li>
+                            {{ end }}
+                        </ul>
+                    </li>
+                </ul>
+                {{ end }}
+            </div> -->
+        </div>
+    </nav>
+</header>

+ 59 - 0
themes/hugo-bootstrap-5/layouts/partials/news-all.html

@@ -0,0 +1,59 @@
+<h3 class="post-block-title">
+  <span>更多新聞</span>
+</h3>
+<div class="row news-all">
+  {{ range $index, $element := (where site.RegularPages "Type" "post") | first 10 }}
+
+  {{ if (eq $index 0) }}
+
+  <div class="col-12">
+    <article>
+      <a href="{{ .Permalink }}">
+        <img class="img-fluid first-img" src="{{ .Params.image | relURL }}" alt="" />
+      </a>
+      <section class="news-info">
+        {{ range (.GetTerms "categories") }}
+        <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+        {{ end }}
+        <small>{{ .Date | time.Format ":date_long" }}</small>
+      </section>
+      <h2 class="post-title">
+        <a href="{{ .Params.url }}">{{ .Params.title }}</a>
+      </h2>
+      <p class="post-depiction">
+        <a href="{{ .Permalink }}">{{ .Summary }}</a>
+      </p>
+      <hr>
+    </article>
+  </div>
+
+  {{ else }}
+
+  <div class="col-12">
+    <div class="row align-items-center">
+      <div class="col-12 col-sm-6">
+        <a href="{{ .Permalink }}">
+          <img class="img-fluid" src="{{ .Params.image | relURL }}" alt="" />
+        </a>
+      </div>
+      <div class="col-12 col-sm-6">
+        <article>
+          <section class="news-info">
+            {{ range (.GetTerms "categories") }}
+            <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+            {{ end }}
+            <small>{{ .Date | time.Format ":date_long" }}</small>
+          </section>
+          <h2 class="post-title">
+            <a href="{{ .Params.url }}">{{ .Params.title }}</a>
+          </h2>
+        </article>
+      </div>
+      <span class="line">
+        <hr>
+      </span>
+    </div>
+  </div>
+  {{ end }}
+  {{ end }}
+</div>

+ 46 - 0
themes/hugo-bootstrap-5/layouts/partials/news-featured.html

@@ -0,0 +1,46 @@
+<div class="news-featured">
+  <h3 class="post-block-title">
+    <span>為您精選</span>
+  </h3>
+    {{ range first 5 (where .Site.Pages "Params.type" "featured") }}
+    <a href="{{ .Permalink }}">
+      <img class="img-fluid" src="{{ .Params.image | relURL }}" alt="" />
+    </a>
+
+    <section class="news-info">
+      {{ range (.GetTerms "categories") }}
+      <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+      {{ end }}
+      <small>{{ .Date | time.Format ":date_long" }}</small>
+    </section>
+    <h2 class="post-title mb-3">
+      <a href="{{ .Params.url }}">{{ .Params.title }}</a>
+    </h2>
+    <!-- <div class="col-12 col-sm-6 col-md-4 col-xl-3">
+      <div class="card h-100">
+        <div class="card-header">
+          <a href="{{ .RelPermalink }}">
+            <h2 class="card-title text-center mb-0">
+              {{ .Title }}
+            </h2>
+          </a>
+        </div>
+        <a href="{{ .RelPermalink }}" class="h-100">
+          <div class="card-body h-100 d-flex flex-column justify-content-center">
+            <section class="d-flex">
+              <h4>電話:</h4>
+              <h4>{{ .Params.phone }}</h4>
+            </section>
+            <section class="d-flex">
+              <h4 class="m-0">地址:</h4>
+              <h4 class="m-0">{{ .Params.address }}</h4>
+            </section>
+            {{ range .Params.tags }}
+              <span class="badge bg-secondary">{{.}}</span>
+              {{ end }}
+          </div>
+        </a>
+      </div>
+    </div> -->
+    {{ end }}
+  </div>

+ 44 - 0
themes/hugo-bootstrap-5/layouts/partials/news-main.html

@@ -0,0 +1,44 @@
+<div class="news-main">
+  {{ range first 1 (where .Site.Pages "Params.type" "main") }}
+  <div>
+    <section class="news-info">
+      {{ range (.GetTerms "categories") }}
+      <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+      {{ end }}
+      <small>{{ .Date | time.Format ":date_long" }}</small>
+    </section>
+    <h2 class="post-title my-0 my-lg-3">
+      <a href="{{ .Params.url }}">{{ .Params.title }}</a>
+    </h2>
+  </div>
+  <a href="{{ .Permalink }}">
+    <img class="img-fluid" src="{{ .Params.image | relURL }}" alt="" />
+  </a>
+  <!-- <div class="col-12 col-sm-6 col-md-4 col-xl-3">
+      <div class="card h-100">
+        <div class="card-header">
+          <a href="{{ .RelPermalink }}">
+            <h2 class="card-title text-center mb-0">
+              {{ .Title }}
+            </h2>
+          </a>
+        </div>
+        <a href="{{ .RelPermalink }}" class="h-100">
+          <div class="card-body h-100 d-flex flex-column justify-content-center">
+            <section class="d-flex">
+              <h4>電話:</h4>
+              <h4>{{ .Params.phone }}</h4>
+            </section>
+            <section class="d-flex">
+              <h4 class="m-0">地址:</h4>
+              <h4 class="m-0">{{ .Params.address }}</h4>
+            </section>
+            {{ range .Params.tags }}
+              <span class="badge bg-secondary">{{.}}</span>
+              {{ end }}
+          </div>
+        </a>
+      </div>
+    </div> -->
+  {{ end }}
+</div>

+ 87 - 0
themes/hugo-bootstrap-5/layouts/partials/news-tab.html

@@ -0,0 +1,87 @@
+{{ $p := slice }}
+{{ range site.Taxonomies.categories }}
+{{ $p = $p | append .Page }}
+{{ end }}
+
+<div class="d-flex align-items-center position-relative tab-category mt-5 pt-5 pb-3">
+  <section class="w-100">
+    <h3 class="post-block-title">
+      <span>推薦主題</span>
+    </h3>
+  </section>
+
+  {{ $p := slice }}
+  {{ range site.Taxonomies.categories }}
+  {{ $p = $p | append .Page }}
+  {{ end }}
+
+  <ul class="nav nav-pills mb-3 ps-3 position-absolute" id="pills-tab" role="tablist"
+    style="right: 0; background: #fff;">
+    {{ range $index, $element := first 5 $p }}
+    <li class="nav-item" role="presentation">
+      <button class="nav-link {{ if (eq $index 0) }}active{{ end }}" id="pills-home-tab-{{$index}}"
+        data-bs-toggle="pill" data-bs-target="#pills-home-{{$index}}" type="button" role="tab"
+        aria-controls="pills-home-{{$index}}" aria-selected="true">{{ .LinkTitle }}</button>
+    </li>
+    {{ end }}
+  </ul>
+</div>
+
+<div class="tab-content" id="pills-tabContent">
+
+  {{ range $index, $element := first 6 $p }}
+
+  <div class="tab-pane fade show {{ if (eq $index 0) }}active{{ end }}" id="pills-home-{{$index}}" role="tabpanel"
+    aria-labelledby="pills-home-tab">
+
+    <div class="row">
+
+      {{ $t := slice .LinkTitle }}
+      {{ range $index, $element := where .Site.Pages ".Params.categories" "intersect" $t }}
+
+      {{ if or (eq $index 0) (eq $index 1) }}
+      <div class="col-12 col-lg-6 mt-3">
+        <div class="bg-img"
+          style="background-image: linear-gradient(to bottom,rgba(0,0,0, 0) 50%, rgba(0,0,0, 100)),url('{{ .Params.image | relURL }}');"
+          onclick="location.href='{{ .Permalink }}'">
+          <section>
+            {{ range (.GetTerms "categories") }}
+            <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+            {{ end }}
+            <small>{{ .Date | time.Format ":date_long" }}</small>
+            <h2 class="post-title">
+              <a href="{{ .Permalink }}">{{ .Params.title }}</a>
+            </h2>
+          </section>
+        </div>
+      </div>
+      {{ else if or (eq $index 2) (eq $index 3) (eq $index 4) (eq $index 5) }}
+      <div class="col-12 col-lg-6 mt-3">
+        <div class="row">
+          <div class="col-5">
+            <a href="{{ .Permalink }}">
+              <img src="{{ .Params.image | relURL }}" alt="" class="news-thumbnail">
+            </a>
+          </div>
+          <div class="col-7 border-bottom">
+            <section class="news-info">
+              {{ range (.GetTerms "categories") }}
+              <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+              {{ end }}
+              <small>{{ .Date | time.Format ":date_long" }}</small>
+            </section>
+            <h2 class="post-title">
+              <a href="{{ .Permalink }}">{{ .Params.title }}</a>
+            </h2>
+            <p class="post-depiction">
+              <a href="{{ .Permalink }}">{{ .Summary }}</a>
+            </p>
+          </div>
+        </div>
+      </div>
+      {{ end }}
+      {{ end }}
+    </div>
+  </div>
+  {{ end }}
+</div>

+ 16 - 0
themes/hugo-bootstrap-5/layouts/partials/news.html

@@ -0,0 +1,16 @@
+
+    {{ $t := $.Site.GetPage "/news" }}
+    {{ range $index, $element := first 1 ( where $t.Pages "Params.draft" false) }}
+    <section class="news-info">
+        {{ range (.GetTerms "categories") }}
+        <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+        {{ end }}
+        <small>{{ .Date | time.Format ":date_long" }}</small>
+    </section>
+    <h2 class="post-title">
+        <a href="{{ .Params.url }}">{{ .Params.title }}</a>
+    </h2>
+    <a href="{{ .Permalink }}">
+        <img class="img-fluid" src="{{ .Params.image | relURL }}" alt="" />
+    </a>
+    {{ end }}

+ 45 - 0
themes/hugo-bootstrap-5/layouts/partials/paginator.html

@@ -0,0 +1,45 @@
+{{ $pag := $.Paginator }}
+{{ if gt $pag.TotalPages 1 }}
+<nav class="blog-pagination">
+    <ul class="pagination justify-content-center">
+        {{ with $pag.First }}
+        <li class="page-item">
+            <a class="page-link" href="{{ .URL }}" aria-label="First"><span aria-hidden="true">&laquo;&laquo;</span></a>
+        </li>
+        {{ end }}
+        <li class="page-item {{ if not $pag.HasPrev }}disabled{{ end }}">
+            <a class="page-link" href="{{ if $pag.HasPrev }}{{ $pag.Prev.URL }}{{ else }}#{{ end }}" aria-label="Previous" {{ if not $pag.HasPrev }}tabindex="-1" aria-disabled="true"{{ end }}><span aria-hidden="true">&laquo;</span></a>
+        </li>
+        {{ $.Scratch.Set "__paginator.ellipsed" false }}
+        {{ range $pag.Pagers }}
+            {{ $right := sub .TotalPages .PageNumber }}
+            {{ $showNumber := or (le .PageNumber 3) (eq $right 0) }}
+            {{ $showNumber := or $showNumber (and (gt .PageNumber (sub $pag.PageNumber 2)) (lt .PageNumber (add $pag.PageNumber 2)))  }}
+            {{ if $showNumber }}
+                {{ $.Scratch.Set "__paginator.ellipsed" false }}
+                {{ $.Scratch.Set "__paginator.shouldEllipse" false }}
+            {{ else }}
+                {{ $.Scratch.Set "__paginator.shouldEllipse" (not ($.Scratch.Get "__paginator.ellipsed") ) }}
+                {{ $.Scratch.Set "__paginator.ellipsed" true }}
+            {{ end }}
+            {{ if $showNumber }}
+                <li class="page-item {{ if eq . $pag }}active{{ end }}">
+                    <a class="page-link" href="{{ .URL }}">{{ .PageNumber }}</a>
+                </li>
+            {{ else if ($.Scratch.Get "__paginator.shouldEllipse") }}
+                <li class="page-item disabled">
+                    <span class="page-link" aria-hidden="true">&hellip;</span>
+                </li>
+            {{ end }}
+        {{ end }}
+        <li class="page-item {{ if not $pag.HasNext }}disabled{{ end }}">
+            <a class="page-link" href="{{ if $pag.HasNext }}{{ $pag.Next.URL }}{{ else }}#{{ end }}" aria-label="Next" {{ if not $pag.HasPrev }}tabindex="-1" aria-disabled="true"{{ end }}><span aria-hidden="true">&raquo;</span></a>
+        </li>
+        {{ with $pag.Last }}
+            <li class="page-item">
+                <a class="page-link" href="{{ .URL }}" aria-label="Last"><span aria-hidden="true">&raquo;&raquo;</span></a>
+            </li>
+        {{ end }}
+    </ul>
+</nav>
+{{ end }}

+ 8 - 0
themes/hugo-bootstrap-5/layouts/partials/post-categories.html

@@ -0,0 +1,8 @@
+{{ if .Params.categories }}
+<div class="blog-post-categories text-secondary">
+    <strong>{{ i18n "categories" }}:</strong>
+    {{ range .Params.categories }}
+        <a class="btn btn-primary btn-small badge" href="{{ "/categories/" | relLangURL }}{{ . | urlize }}">{{ . }}</a>
+    {{ end }}
+</div>
+{{ end }}

+ 11 - 0
themes/hugo-bootstrap-5/layouts/partials/post-date.html

@@ -0,0 +1,11 @@
+{{ $dateFormat := default "Jan 2, 2006" (index .Site.Params "date_format") }}
+
+{{ $author := .Params.author | default .Site.Params.author }}
+<div class="blog-post-date text-secondary">
+    {{ if not .Date.IsZero }}
+        <time datetime="{{ .Date.Format "2006-01-02" }}">{{ .Date.Format $dateFormat }}</time>
+    {{ end }}
+    {{ if $author }}
+        {{ i18n "by" }} <span rel="author">{{ $author }}</span>
+    {{ end }}
+</div>

+ 8 - 0
themes/hugo-bootstrap-5/layouts/partials/post-tags.html

@@ -0,0 +1,8 @@
+{{ if .Params.tags }}
+<div class="blog-post-tags text-secondary">
+    <strong>標籤:</strong>
+    {{ range .Params.tags }}
+        <a class="btn btn-small badge" href="{{ "/tags/" | relLangURL }}{{ . | urlize }}">{{ . }}</a>
+    {{ end }}
+</div>
+{{ end }}

+ 9 - 0
themes/hugo-bootstrap-5/layouts/partials/post-title.html

@@ -0,0 +1,9 @@
+<section class="news-info">
+    {{ range (.GetTerms "categories") }}
+    <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+    {{ end }}
+    <small>{{ .Date | time.Format ":date_long" }}</small>
+</section>
+<h1 class="blog-post-title">
+    <a class="text-dark text-decoration-none" href="{{ .RelPermalink }}">{{ .Title | markdownify }}</a>
+</h1>

+ 29 - 0
themes/hugo-bootstrap-5/layouts/partials/recent.html

@@ -0,0 +1,29 @@
+{{ $num_recent_posts := default 7 .Site.Params.sidebar.num_recent_posts }}
+{{ $posts := first $num_recent_posts (where .Site.RegularPages "Section" "in" .Site.Params.mainSections) }}
+{{ if gt (len $posts) 0 }}
+<section class="recent-content">
+  <h3 class="post-block-title">
+    <span>最新消息</span>
+  </h3>
+  <ol class="list-unstyled news-list">
+    {{ range $posts }}
+    <li class="d-flex align-items-center">
+      <a href="{{.RelPermalink}}">
+        <img src="{{ .Params.image | relURL }}" alt="">
+      </a>
+      <div class="ms-2">
+        <section class="news-info">
+          {{ range (.GetTerms "categories") }}
+          <a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
+          {{ end }}
+          <small>{{ .Date | time.Format ":date_long" }}</small>
+        </section>
+        <h2 class="post-title">
+          <a href="{{ .Permalink }}" class="line-clamp"> {{.Title | markdownify }}</a>
+        </h2>
+      </div>
+    </li>
+    {{ end }}
+  </ol>
+</section>
+{{ end }}

+ 11 - 0
themes/hugo-bootstrap-5/layouts/partials/related.html

@@ -0,0 +1,11 @@
+<footer>
+{{ $related := .Site.RegularPages.Related . | first 5 }}
+{{ with $related }}
+    <h4>{{ i18n "related" }}</h4>
+    <ul>
+        {{ range . }}
+            <li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
+        {{ end }}
+    </ul>
+{{ end }}
+</footer>

+ 1 - 0
themes/hugo-bootstrap-5/layouts/partials/sidebar-custom.html

@@ -0,0 +1 @@
+<!-- Create <project-root>/layouts/partials/sidebar-custom.html to overwrite this empty template and put custom code into the sidebar section. -->

+ 23 - 0
themes/hugo-bootstrap-5/layouts/partials/sidebar.html

@@ -0,0 +1,23 @@
+<aside class="news-sidebar px-0 px-lg-3">
+  {{ partial "news-featured.html" . }}
+  {{ partial "taxonomies.html" . }}
+  <!-- <div class="input-group mb-3 search-bar">
+    <input type="text" class="form-control" placeholder="搜尋診所" aria-label="Recipient's username"
+      aria-describedby="search-btn">
+    <button class="btn search-btn pt-0" type="button" id="search-btn">
+      <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-search"
+        viewBox="0 0 16 16">
+        <path
+          d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z" />
+      </svg>
+    </button>
+  </div> -->
+
+  <!-- {{ if default true .Site.Params.sidebar.showRecent }}
+    {{ partial "recent" . }}
+  {{ end }} -->
+
+  <!-- {{ if default true .Site.Params.sidebar.showTaxonomy }}
+    {{ partial "taxonomies" . }}
+  {{ end }} -->
+</aside>

+ 29 - 0
themes/hugo-bootstrap-5/layouts/partials/taxonomies.html

@@ -0,0 +1,29 @@
+<section>
+  {{ range $taxonomyname, $taxonomy := .Site.Taxonomies }}
+  {{ if gt (len $taxonomy) 0 }}
+
+  {{ if eq $taxonomyname "tags" }}
+  <h3 class="post-block-title my-4">
+    <span>標籤</span>
+  </h3>
+  {{ else }}
+  <h3 class="post-block-title my-4">
+    <span>分類</span>
+  </h3>
+  {{ end }}
+
+  <p>
+    {{ range $name, $value := $taxonomy }}
+    <a class="btn btn-small badge tags" href="{{ printf  $taxonomyname | relLangURL }}/{{ $name | urlize }}/">
+      <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-tag-fill"
+        viewBox="0 0 16 16">
+        <path
+          d="M2 1a1 1 0 0 0-1 1v4.586a1 1 0 0 0 .293.707l7 7a1 1 0 0 0 1.414 0l4.586-4.586a1 1 0 0 0 0-1.414l-7-7A1 1 0 0 0 6.586 1H2zm4 3.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0z" />
+      </svg>
+      {{ $name }}
+    </a>
+    {{ end }}
+  </p>
+  {{ end }}
+  {{ end }}
+</section>

+ 10 - 0
themes/hugo-bootstrap-5/layouts/partials/translations.html

@@ -0,0 +1,10 @@
+{{ if .IsTranslated }}
+    <h4>{{ i18n "translations" }}</h4>
+    <ul>
+        {{ range .Translations }}
+        <li>
+            <a href="{{ .RelPermalink }}">{{ .Lang }}: {{ .Title }}</a>
+        </li>
+        {{ end }}
+    </ul>
+{{ end }}

+ 8 - 0
themes/hugo-bootstrap-5/static/css/style.css

@@ -0,0 +1,8 @@
+.blog-header, .blog-post, .blog-pagination {
+  margin-bottom: 2rem;
+}
+
+/* Make sure the image size is reasonable. */
+.blog-post img {
+  max-width: 100%;
+}

+ 17 - 0
themes/hugo-bootstrap-5/theme.toml

@@ -0,0 +1,17 @@
+name = "Hugo Bootstrap 5"
+license = "MIT"
+licenselink = "https://github.com/NotWoods/hugo-bootstrap-5/blob/master/LICENSE.md"
+description = "A simple hugo theme using Bootstrap 5"
+homepage = "https://github.com/NotWoods/hugo-bootstrap-5"
+tags = ["blog", "multilingual", "bootstrap"]
+features = ["blog", "responsive", "Google Analytics", "bootstrap", "multilingual", "i18n"]
+min_version = 0.56
+
+[author]
+  name = "Tiger Oakes"
+  homepage = "https://tigeroakes.com"
+
+[original]
+  author =  "Mihail Cristian Dumitru"
+  homepage = "https://github.com/Xzya"
+  repo = "https://github.com/Xzya/hugo-bootstrap"

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio