让普通用户轻松地将信息添加到覆盖简历中?

时间:2017-03-16 作者:SEF

因此,我在我的电脑上本地建立了一个网站,并将其转化为wordpress的自定义主题。我的老板想让不喜欢看代码的人轻松管理网站。大多数页面都很简单,可以为普通用户进行编辑,但是我有一些页面,我不太确定如何使编辑更简单。一个页面使用一个表格列出团队成员,当单击他们的名字时,一个带有团队成员简历的全屏覆盖层会向下滑动。

我面临的挑战是如何设置,以便网站管理人员在需要添加或删除团队成员时,只需键入该人员的姓名和个人简历,它就会自动将姓名和个人简历包装在正确的标记中,并将姓名正确地放在表中?

我想可能是一个插件,但我查看了wordpress提供的内容,并没有真正找到我要找的内容。我想也许写我自己的插件会有用,但我不确定从哪里开始,因为我只写了非常基本的插件。

下面是代码的相关部分。如果有其他有用的信息,请告诉我。

HTML

 <div class="main TeamPage">
    <div id="username1" class="overlay">
       <div class="overlay-content team_member">
          <a class="closebtn" href="javascript:void(0)" onclick="closeNav(\'tgaffney\')">x</a>
          <p class="name">Name</p>
          <p class="title">Title</p>
          <p class="description">...</p>
       </div>
    </div>

    <table class="team">
       <tr>
          <td>
             <span class="teamName" onclick="openNav(\'username1\')">Name</span>
             <span class="team">...</span>
          </td>
          <td>
             <span class="teamName" onclick="openNav(\'username2\')">Name</span>
             <span class="team">...</span>
          </td>
       </tr>
    </table>
 </div>
覆盖Javascript

 $(document).ready(function() {
   openNav(id);
   closeNav(id);
 });
   function openNav(id) {
       document.getElementById(id).style.height = "100%";
   }

   function closeNav(id) {
       document.getElementById(id).style.height = "0%";
   }
覆盖CSS

 /**** 15. Overlay Styling ****/

 .overlay {
   height: 0%;
   width: 100%;
   position: fixed;
   z-index: 1;
   top: 0%;
   left: 0%;
   background-color: rgb(255,255,255);
   background-color: rgba(255,255,255,0.75);
   overflow-y: hidden;
   transition: .75s;
   margin: auto;
 }

 .overlay-content {
   position: relative;
   top: 30%;
   max-height: 50%;
   max-width: 60%;
    margin-left: auto;
    margin-right: auto;
   text-align: left;
   overflow-y: auto;
   background-color: white;
 }

 .overlay-content p.description {
    font-size: 85%;
 }

 div.team_member {
   padding: 20px;
   line-height: 1.5em;
   border: 2px solid black;
 }

 div.team_member p.name {
   font-size: 1.5em;
   font-weight: bold;
   padding-bottom: 2px;
 }

 div.team_member p.title {
   font-size: 1em;
   font-style: italic;
   padding-bottom: 5px;
 }
非常感谢您的帮助,谢谢!

1 个回复
最合适的回答,由SO网友:WebElaine 整理而成

你在正确的轨道上。一个选项是:创建自己的插件,该插件可以创建短代码,非技术娴熟的用户可以很容易地将其粘贴到编辑器中(甚至在粘贴到可视化编辑器中时也可以使用)。您还可以用浮动div替换表。

如果您已经在使用诸如Foundation或Bootstrap之类的框架,那么表到div的转换将更加容易。这两个都使用网格系统,因此您不必找出<tr> 标记开始和结束-您可以将每个人包装在<div> 使用正确的类。在Foundation中,您可以使用以下内容

<div class="row team small-up-2 medium-up-3 large-up-4"> <div class="column" onclick="openNav(\'username1\')">Person 1\'s name</div> <div class="column" onclick="openNav(\'username2\')">Person 2\'s name</div> </div>

这被称为Block Grid, 这很好,因为你可以在单曲中容纳你想要的任何人row - 它们将根据您设置的数字在彼此下方浮动small-up-2

至于创建短代码的插件,这里有一个基本示例,您可以从开始,然后进一步自定义。在插件文件中:

<?php /* Plugin Name: Team Member Overlay Description: Creates shortcodes so content editors don\'t have to copy code Version: 1.0 */ add_shortcode(\'teamwrapper\', \'outer_wrap_team_code\'); function outer_wrap_team_code() { return \'<div class="row team">\' . do_shortcode($content) . \'</div>\'; } add_shortcode(\'teammember\', \'wrap_team_member_code\'); function wrap_team_member_code($atts, $content = null) { $a = shortcode_atts(array( \'id\' => \'1\', \'name\' => \'Empty Name\' ), $atts); return \'<div class="column" id=\' . $a[\'id\'] . \'>\' . $a[\'name\'] . \'</div><div class="overlay" id="\' . $a[\'id\'] . \'">\' . do_shortcode($content) . \'</div>\'; } ?>

此处的关键信息:

第一个短代码用作外包装。这样可以防止内容在屏幕上全宽显示,如<table> 标签会,但它也很灵敏,所以你可以在更小的屏幕上放大更多

  • do_shortcode() 嵌套短代码时需要-如果忘记了它,则只有外部包装器可以工作,而嵌套的[teammember] 不起作用一旦插件被激活,当有人编辑列出所有人的页面时,他们将键入:

    [teamwrapper] [teammember id="username1" name="Person 1\'s name"]Person 1\'s bio[/teammember] [teammember id="username2" name="Person 2\'s name"]Person 2\'s bio[/teammember] ... [/teamwrapper]

    这个[teamwrapper] [/teamwrapper] 无论您有多少团队成员,都应该使用快捷代码。

  • 相关推荐

    Admin Theme customization

    我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register