在着陆页上隐藏/插入内容

我通过以下方式创建了一个自定义主页:
a) 将类名 .custom-homepage 添加到登录页面。我用它来简单地定位我想在特定页面上隐藏/调整的内容,通过我的自定义 CSS。
b) 将任何新组件直接添加到我的默认主题自定义 HTML 的 head 文件中。

它看起来是这样的:

<script type="text/discourse-plugin" version="0.8">
    
  api.registerConnectorClass("above-main-container", "custom-homepage", {

    setupComponent(args, component) {

     var topMenuRoutes = 
        component.siteSettings.top_menu.split('|')
        .map(function(route) {return '/' + route});
      
     // 'top_menu' 设置中列出的第一个页面是您的主页
 var homeRoute = topMenuRoutes[0];
  
     // 每当页面更改时,它都会调用我们的代码

     api.onPageChange((url) => {

        // 检查我们是否在主页上 
        if (url === "/" || url === homeRoute ){ 
          // 如果是主页,则将 'custom-homepage' 类添加到 HTML 标签
          // 并将 'displayCustomHomepage' 设置为 true
          
          document.querySelector("html").classList.add("custom-homepage"); 
          component.set("displayCustomHomepage", true); 
        } else {  
          // 如果我们不在主页上,则删除该类
          // 并将 `displayCustomHomepage` 设置为 false
          document.querySelector("html").classList.remove("custom-homepage"); 
          component.set("displayCustomHomepage", false); 
        }
      });
    }
    
  });

</script>


<script type="text/x-handlebars" data-template-name="/connectors/above-main-container/custom-homepage">

  {{#if displayCustomHomepage}}

    <div class="custom-homepage-wrapper mask-polygon">

       <div class="custom-welcome-banner">
        <h1 class="welcome-header-text">欢迎来到瑞典的合作建房运动</h1>
        <p>在这里,您可以查看已完成和计划中的项目,查找知识,获得建议 - 并与全国各地正在一起建造和居住的其他人建立联系。</p>
       </div>
       
    </div>
    
    {{whos-online}}
    
    {{search-menu}}

<div class="two-column-layout">

  <div>
   (我自己的地图图像代码在这里,我将省略它)
  </div>
       	

  <WANTED DIV>
  (这是我想放置我的信息流的地方,也许是像 {{categories-topic- list topics=latest filter=“latest” limit=“10” … }} 这样的东西)
  </WANTED DIV>

</div>
    
  {{/if}}
</script>

到目前为止一切顺利。页面看起来像这样:

问题是**我无法控制当前的信息流。**它只是默认的信息流,我通过自定义 CSS 中的 .custom-homepage + class 大致调整了它的宽度和位置,以便为左侧的地图腾出空间。例如,它目前是无限滚动的。我需要它只显示最新的 10 篇文章。

我的问题是:

  • 我应该隐藏哪个类来隐藏当前的信息流?
  • 在我自己的代码中添加我的最新帖子,正确的语法是什么?请参阅上面代码中的“WANTED DIV”部分。

实时网站:https://bygg.boihop.co/

非常感谢您的帮助。

我建议您改用 custom-homepage modifier,为您的页面添加一个专用的主页路由:使用新的 custom-homepage 功能

然后,您可以采用清晰的模块化方法来构建您的主页。您可以在主题代码中添加组件。或者,您可以尝试一个类似 Homepage Blocks 的组件,并通过其编辑器添加组件。

这是我使用 custom homepage 路由和 blocks 构建的两个最近的网站示例。您可以检查代码以查看生成的结构。Zolidar 主页还提供了一个示例,说明如何利用容器查询和网格布局来更好地控制主页布局。

3 个赞

谢谢你的提示!看起来很棒。 在我有机会测试之前,您是否知道在设置中限制当前“最新” feed 中帖子数量的方法?我怎么也找不到。

主题列表通常是无限列表,滚动到列表底部时会继续加载。我不确定最简单的解决方法是什么……我可能会隐藏主页上的默认列表,然后使用类似 精选列表 的组件。这样您就可以控制列表长度等,而不会干扰默认列表行为。

3 个赞

谢谢!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.