如何为 djangocms-blog 设置自定义模板?

Posted

技术标签:

【中文标题】如何为 djangocms-blog 设置自定义模板?【英文标题】:How can I set a custom Template for djangocms-blog? 【发布时间】:2015-10-17 15:15:37 【问题描述】:

我有一个基于 djangocms 的网站,现在我想要一个应用程序来帮助一个小型博客部分。

现在,我已成功将djangocms-blog 集成到我的网站中,但是当我尝试查看帖子时,模板(我制作的自定义模板)没有呈现,帖子(由博客管理员制作)只是扔在页面上。

有人可以帮我解决这个问题吗?您需要任何其他信息来帮助我解决这个问题吗?

我的模板如下所示:

% extends "base.html" %
% load cms_tags %

% block title %% page_attribute "page_title" %% endblock title %

% block content %

    <div class="spacer"></div>
    <div class="page-header page-header-blog-post-1 white">
        <div class="page-header-container container">
            <div class="page-header-content">
                <h1 class="heading">BLOG</h1>
            </div>
        </div>
    </div>


    <div class="blog-container blog-single container">
        <div class="row">
            <div class="col-md-8 blog-content margin-bottom-70 clearfix">
                % placeholder banner_leaderboard_top %
            </div>
        </div>
        <div class="row">
            <div class="col-md-8 blog-content margin-bottom-70 clearfix">
                <article id="post-1" class="post-1 post format-standard">
                    <header class="entry-header">
                        <div class="post-thumbnail-area">
                            % placeholder "post_header_image" or %
                            <img src="/static/img/onepage-slide9.jpg" />
                            % endplaceholder %
                        </div>
                    </header>
                    <div class="entry-content">
                        <div class="entry-title blog-info">
                            <h1 class="heading">% placeholder "post_header_title" or %POST_TITLE% endplaceholder %</h1>
                        </div>
                        % placeholder "POST_BODY" or %POST_BODY% endplaceholder %
                    </div>
                    <footer class="entry-footer">
                        <div class="entry-description">
                            <h6 class="post-date-classic">% placeholder "post_date" or %POST_DATE% endplaceholder %</h6>
                        </div>
                    </footer>
                </article>
                <div class="post-additional">
                    <script type="text/javascript">
                        // Popup window code
                        function newPopup(url) 
                            popupWindow = window.open(
                                    url, 'popUpWindow', 'height=700,width=800,left=10,top=10,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no,status=yes')
                        
                    </script>
                    <ul class="post-share list-inline">
                        <li><a href="JavaScript:newPopup('https://www.facebook.com/sharer/sharer.php?u='+window.location.href)"><i
                                class="icon ion-social-facebook"></i></a></li>
                        <li><a href="JavaScript:newPopup('http://twitter.com/home/?status=Nice blog post - '+window.location.href);"><i
                                class="icon ion-social-twitter"></i></a></li>
                        <li><a href="JavaScript:newPopup('https://plus.google.com/share?url='+window.location.href); "><i
                                class="icon ion-social-googleplus"></i></a></li>
                    </ul>
                    <div class="post-navigation nav-links">
                        <ul class="post-controls list-inline">
                            <li>
                                % placeholder "prev_post" or %
                                <a class="post-prev" href="#"><i class="icon ion-ios7-arrow-thin-left"></i></a></li>
                                % endplaceholder %
                            <li>
                                % placeholder "next_post" or %
                                <a class="post-next" href="#"><i class="icon ion-ios7-arrow-thin-right"></i></a></li>
                                % endplaceholder %
                        </ul>
                    </div>
                </div>
                <div class="author-bio">
                    <div class="row">
                        <div class="author-avatar col-xs-4 col-sm-3 col-md-3 visible-desktop">
                            % placeholder "author_img" or %
                            <img src="/static/img/image-8.jpg" ></div>
                            % endplaceholder %
                        <div class="author-details white col-md-9">
                            <h3>% placeholder "author_name" or %AUTHOR_NAME% endplaceholder %</h3>
                            <p>% placeholder "author_body" or %AUTHOR_BODY% endplaceholder %</p>
                        </div>
                    </div>
                </div>
                % placeholder banner_leaderboard_bottom %
            </div>
            <div class="col-md-4">
                <div class="sidebar">

                    <aside id="recent-posts-2" class="widget widget_recent_entries">
                        <div class="widget-title">
                            <h5 class="heading">RECENT POSTS</h5>

                            <div class="fancy-line-small"></div>
                        </div>
                            % placeholder "post_recent" or %
                            <ul>
                                <li><a href="#">Recent blog post</a></li>
                            </ul>
                            % endplaceholder %
                    </aside>

                % placeholder banner_square_right %
                </div>
            </div>
        </div>
    </div>
% endblock %

一些管理 djangocms-blog 的图片:

所以,我希望将博客管理员的标题应用到我的模板上,而不是 &lt;h1 class="heading"&gt;BLOG&lt;/h1&gt; 等等 datecategory 等等

【问题讨论】:

【参考方案1】:

如果您想覆盖已安装的应用所使用的模板,您只需在模板目录中模仿相同的模板路径即可。

CMS博客模板可以在here找到。

因此,要覆盖 CMS 博客模板,您应该决定需要覆盖哪个模板,在这种情况下,它听起来像 post_detail.html,因为您关心的是帖子的显示方式。

所以在您的项目中,您需要创建类似的东西; myproj/templates/djangocms_blog/post_detail.html

然后系统将从 site-packages 文件夹加载那个而不是 post_detail.html

【讨论】:

此外,您可以在博客的配置中添加djangocms_blog 以外的模板前缀。这使您可以为网站上的不同博客使用不同的模板。

以上是关于如何为 djangocms-blog 设置自定义模板?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 UIView 的自定义子类设置约束?

如何为运行脚本设置自定义环境变量

如何为自定义对话框设置边距?

如何为我的自定义 UICollectionViewCell 设置属性

如何为 backBarButtonItem 设置自定义字体 [重复]

如何为 UIButton 设置自定义渐变背景?