This commit is contained in:
xing 2023-03-19 22:14:42 +08:00
parent e7ea2bf334
commit 26bdcb44ac
2 changed files with 18 additions and 18 deletions

View File

@ -193,19 +193,15 @@ func RenderedHtml(t *template.Template, data map[string]any) (r string, err erro
return return
} }
func BuildOptions[T any, K comparable](a []T, selected K, fn func(T) (K, any), attr ...string) string { func BuildOptions[T any, K comparable](a []T, selected K, fn func(T) (K, any, string)) string {
s := strings2.NewBuilder() s := strings2.NewBuilder()
att := ""
if len(attr) > 0 {
att = strings.Join(attr, " ")
}
for _, t := range a { for _, t := range a {
k, v := fn(t) k, v, attr := fn(t)
ss := "" ss := ""
if k == selected { if k == selected {
ss = "selected" ss = "selected"
} }
s.Sprintf(`<option %s %s value="%v">%v</option>`, ss, att, v, k) s.Sprintf(`<option %s %s value="%v">%v</option>`, ss, attr, v, k)
} }
return s.String() return s.String()
} }

View File

@ -84,16 +84,27 @@ func categoryUL(h *wp.Handle, args map[string]string, conf map[any]any, categori
s := str.NewBuilder() s := str.NewBuilder()
s.WriteString("<ul>\n") s.WriteString("<ul>\n")
isCount := conf["count"].(int64) isCount := conf["count"].(int64)
currentCate := models.TermsMy{}
if h.Scene() == constraints.Category {
cat := h.C.Param("category")
_, currentCate = slice.SearchFirst(categories, func(my models.TermsMy) bool {
return cat == my.Name
})
}
if conf["hierarchical"].(int64) == 0 { if conf["hierarchical"].(int64) == 0 {
for _, category := range categories { for _, category := range categories {
count := "" count := ""
if isCount != 0 { if isCount != 0 {
count = fmt.Sprintf("(%d)", category.Count) count = fmt.Sprintf("(%d)", category.Count)
} }
s.Sprintf(` <li class="cat-item cat-item-%d"> current := ""
if category.TermTaxonomyId == currentCate.TermTaxonomyId {
current = "current-cat"
}
s.Sprintf(` <li class="cat-item cat-item-%d %s">
<a href="/p/category/%s">%s %s</a> <a href="/p/category/%s">%s %s</a>
</li> </li>
`, category.Terms.TermId, category.Name, category.Name, count) `, category.Terms.TermId, current, category.Name, category.Name, count)
} }
} else { } else {
@ -101,16 +112,9 @@ func categoryUL(h *wp.Handle, args map[string]string, conf map[any]any, categori
return cate.TermTaxonomyId, cate.Parent return cate.TermTaxonomyId, cate.Parent
}) })
cate := &tree.Node[models.TermsMy, uint64]{Data: models.TermsMy{}} cate := &tree.Node[models.TermsMy, uint64]{Data: models.TermsMy{}}
if h.Scene() == constraints.Category { if currentCate.TermTaxonomyId > 0 {
cat := h.C.Param("category") cate = m[currentCate.TermTaxonomyId]
i, ca := slice.SearchFirst(categories, func(my models.TermsMy) bool {
return cat == my.Name
})
if i > 0 {
cate = m[ca.TermTaxonomyId]
}
} }
r := m[0] r := m[0]
categoryLi(r, cate, tree.Ancestor(m, 0, cate), isCount, s) categoryLi(r, cate, tree.Ancestor(m, 0, cate), isCount, s)
} }