Wird jetzt nach kategorien die Seiten angezeigt
This commit is contained in:
@@ -85,6 +85,7 @@ func GetFlash(w http.ResponseWriter, r *http.Request, name string) []string {
|
|||||||
|
|
||||||
func (server *Server) Run(addr string) {
|
func (server *Server) Run(addr string) {
|
||||||
fmt.Printf("Listening to port %s", addr)
|
fmt.Printf("Listening to port %s", addr)
|
||||||
|
println("")
|
||||||
log.Fatal(http.ListenAndServe(addr, server.Router))
|
log.Fatal(http.ListenAndServe(addr, server.Router))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -182,7 +183,7 @@ func (server *Server) routeInit() {
|
|||||||
server.Router.HandleFunc("/register", server.DoRegister).Methods("POST")
|
server.Router.HandleFunc("/register", server.DoRegister).Methods("POST")
|
||||||
server.Router.HandleFunc("/logout", server.Logout).Methods("GET")
|
server.Router.HandleFunc("/logout", server.Logout).Methods("GET")
|
||||||
|
|
||||||
server.Router.HandleFunc("/products/cat/{id}", server.Products).Methods("GET")
|
server.Router.HandleFunc("/products/cat/{id}", server.ProductsByCategory).Methods("GET")
|
||||||
server.Router.HandleFunc("/products/{slug}", server.GetProductByID).Methods("GET")
|
server.Router.HandleFunc("/products/{slug}", server.GetProductByID).Methods("GET")
|
||||||
|
|
||||||
server.Router.HandleFunc("/section/{id}", server.Categories).Methods("GET")
|
server.Router.HandleFunc("/section/{id}", server.Categories).Methods("GET")
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (server *Server) Products(w http.ResponseWriter, r *http.Request) {
|
func (server *Server) ProductsByCategory(w http.ResponseWriter, r *http.Request) {
|
||||||
renderer := render.New(render.Options{
|
renderer := render.New(render.Options{
|
||||||
Layout: "layout",
|
Layout: "layout",
|
||||||
Extensions: []string{".html", ".tmpl"},
|
Extensions: []string{".html", ".tmpl"},
|
||||||
@@ -17,14 +17,24 @@ func (server *Server) Products(w http.ResponseWriter, r *http.Request) {
|
|||||||
q := r.URL.Query()
|
q := r.URL.Query()
|
||||||
|
|
||||||
page, _ := strconv.Atoi(q.Get("page"))
|
page, _ := strconv.Atoi(q.Get("page"))
|
||||||
|
|
||||||
|
vars := mux.Vars(r)
|
||||||
|
if vars["id"] == "" {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
category := vars["id"]
|
||||||
if page <= 0 {
|
if page <= 0 {
|
||||||
page = 1
|
page = 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
println(category)
|
||||||
perPage := 9
|
perPage := 9
|
||||||
|
|
||||||
|
_ = perPage
|
||||||
productModel := models.Product{}
|
productModel := models.Product{}
|
||||||
|
|
||||||
products, totalRows, err := productModel.GetProducts(server.DB, perPage, page)
|
products, totalRows, err := productModel.GetProductsByCategory(server.DB, category)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -7,15 +7,17 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Product struct {
|
type Product struct {
|
||||||
ID string `gorm:"size:36;not null;uniqueIndex;primary_key"`
|
ID string `gorm:"size:36;not null;uniqueIndex;primary_key"`
|
||||||
ParentID string `gorm:"size:36;index"`
|
ParentID string `gorm:"size:36;index"`
|
||||||
Name string `gorm:"size:255"`
|
Name string `gorm:"size:255"`
|
||||||
Slug string `gorm:"size:255"`
|
Slug string `gorm:"size:255"`
|
||||||
ProductImages []ProductImage
|
ProductImages []ProductImage
|
||||||
Price decimal.Decimal `gorm:"type:decimal(16,2);"`
|
Price decimal.Decimal `gorm:"type:decimal(16,2);"`
|
||||||
Categories []Category `gorm:"many2many:product_categories;"`
|
//Categories []Category `gorm:"many2many:product_categories;"`
|
||||||
ShortDescription string `gorm:"type:text"`
|
Category Category
|
||||||
Description string `gorm:"type:text"`
|
CategoryID string
|
||||||
|
ShortDescription string `gorm:"type:text"`
|
||||||
|
Description string `gorm:"type:text"`
|
||||||
|
|
||||||
CreatedAt time.Time
|
CreatedAt time.Time
|
||||||
UpdatedAt time.Time
|
UpdatedAt time.Time
|
||||||
@@ -41,6 +43,19 @@ func (p *Product) GetProducts(db *gorm.DB, perPage int, page int) (*[]Product, i
|
|||||||
return &products, count, nil
|
return &products, count, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *Product) GetProductsByCategory(db *gorm.DB, categoryID string) (*[]Product, int64, error) {
|
||||||
|
var count int64
|
||||||
|
var products []Product
|
||||||
|
|
||||||
|
err := db.Debug().Model(&Product{}).Order("created_at desc").Where("category_id = ?", categoryID).Find(&products).Count(&count).Error
|
||||||
|
if err != nil {
|
||||||
|
return nil, 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return &products, count, nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func (p *Product) FindByID(db *gorm.DB, productID string) (*Product, error) {
|
func (p *Product) FindByID(db *gorm.DB, productID string) (*Product, error) {
|
||||||
var err error
|
var err error
|
||||||
var product Product
|
var product Product
|
||||||
|
|||||||
@@ -44,6 +44,6 @@ func Run() {
|
|||||||
server.InitCommands(appConfig, dbConfig)
|
server.InitCommands(appConfig, dbConfig)
|
||||||
} else {
|
} else {
|
||||||
server.Initialize(appConfig, dbConfig)
|
server.Initialize(appConfig, dbConfig)
|
||||||
server.Run(":" + appConfig.AppPort)
|
server.Run("127.0.0.1:" + appConfig.AppPort)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
<div class="widget-content widget-categories">
|
<div class="widget-content widget-categories">
|
||||||
<ul>
|
<ul>
|
||||||
{{ range $i, $categorie := .categorien }}
|
{{ range $i, $categorie := .categorien }}
|
||||||
<li><a href="/products/{{ $categorie.ID }}">{{ $categorie.Name }}</a></li>
|
<li><a href="/products/cat/{{ $categorie.ID }}">{{ $categorie.Name }}</a></li>
|
||||||
{{ end }}
|
{{ end }}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user