Cảnh báo: htmlspecialchars() dự kiến ​​tham số 1 là chuỗi, mảng được cung cấp trong prestashop

Đây là nỗ lực đầu tiên của tôi trong việc tạo ra một vấn đề cốt lõi, vì vậy vui lòng không bỏ qua vấn đề này nếu không có người am hiểu (như webchick - tôi đã ghi tên cô ấy trên một số cam kết gần đây đối với mô-đun này) sau khi ít nhất đã xem xét vấn đề đó. Nếu tôi không thể đăng nó ở đây, tôi thành thật xin lỗi và hoan nghênh hướng dẫn hoặc chỉ định nó ở nơi khác nếu bạn biết nó thuộc về nơi nào;

Để tái tạo lỗi
---------------------
Lỗi (được cho là) ​​này xảy ra *mỗi khi một URL của nút được truy xuất* bởi Drupal 6. 19 bây giờ. Nó có thể đã xảy ra trong một thời gian dài và tôi mới phát hiện ra nó hoặc có thể do sự cố khiến nhà phát triển Chế độ xem 3 quay trở lại Chế độ xem 2 ổn định. Trưởng nhóm Chế độ xem không tiếp nhận vấn đề này mặc dù đã có nhiều nỗ lực đưa vấn đề này vào hàng đợi vấn đề đó. Tuy nhiên, đối với một số người trong chúng tôi sử dụng D 6, theo như tôi biết thì nó vẫn chưa được giải quyết. Bởi vì tôi không biết bản thân nó có liên quan đến vấn đề bảo mật hay không, nên tôi sẽ tiếp tục tìm giải pháp cho vấn đề này tại đây. Tôi hy vọng nó sẽ không làm hỏng ngày của bất cứ ai khác

Hành vi dự kiến
----------------------
Phục vụ trang nhanh một cách hợp lý, không bị sa lầy vào các lượt tải xuống chậm điên cuồng với tính năng "Đang chờ {ví dụ. com}" trạng thái

Thay vào đó điều gì đã xảy ra
----------------------
Người dùng chắc chắn được ghi nhận trong một lỗi dblog với Mức độ nghiêm trọng. lỗi, các URL Vị trí và Liên kết giới thiệu được sử dụng như mong đợi (không có gì rõ ràng đáng ngờ hoặc duy nhất/nhất quán về chúng theo như tôi biết, điều này một phần có thể là do URL sạch?) và trang mất tối đa *30 giây* hoặc lâu hơn

Đây chính xác là lỗi liên tục tái diễn (xem hình ảnh đính kèm; khi có nhiều người dùng trên trang web, nó sẽ tệ hơn và chậm hơn)

**md5() dự kiến ​​tham số 1 là chuỗi, mảng được đưa ra trong {ví dụ. com}/mô-đun/bộ lọc/bộ lọc. mô-đun trên dòng 435**

Như tôi thừa nhận trong bài viết chi tiết của mình về điều này và được đề cập bên dưới, tôi không phải là lập trình viên PHP, nhưng đối với tôi, có vẻ như md5(string,raw) trong PHP không thể phân tích cú pháp biến vì (thông thường) kiểu dữ liệu của nó bị hiểu sai hoặc . Nó đại diện cho một lỗi nghiêm trọng đối với trang web Drupal của chúng tôi, nếu không được giải quyết, trang web và công việc của tôi sẽ bị hủy hoại

Có nguy cơ bị mất uy tín hơn nữa bởi một ngôi sao nhạc rock Drupal, người đã IMHO quá nhiều tức giận cá nhân trước những nỗ lực được thừa nhận là yếu ớt của tôi trong việc truyền đạt vấn đề này, tôi đang cố gắng đăng lại vấn đề này (bây giờ ở đây, dưới dạng báo cáo lỗi) . Tôi đã tạo một bài đăng chi tiết có liên quan nhằm cố gắng khắc phục "lỗi" trước đó tại đây. http. // drupal. org/node/951578 và không phải là lập trình viên PHP. Cảm ơn rất nhiều trước sự giúp đỡ mà bất cứ ai có thể cung cấp; . Tuy nhiên, tôi không định nói xấu công việc của bất kỳ ai khác, tôi cũng không sẵn sàng đón nhận những lời chỉ trích ác ý không chính đáng

Đôi khi, có thể cần phải sửa đổi một số thành phần của trang sản phẩm hoặc thêm những thành phần mới trong trường hợp sản phẩm thuộc một danh mục cụ thể

Trang sản phẩm

Thủ tục để thực hiện là thực sự đơn giản

  1. Chọn danh mục cần kiểm tra và lấy ID trực tiếp từ Bảng quản trị > Danh mục > Danh mục
  2. Chọn nơi hiển thị mục mới hoặc mục cần thay đổi
  3. Sau đó khám phá. tpl bên trong thư mục
    /themes/name-of-theme/templates/catalog/_partials/
    hoặc, nếu nó không tồn tại, trong thư mục chủ đề mặc định
    /themes/classic/templates/catalog/_partials/
  4. Sử dụng một trình soạn thảo văn bản (ví dụ. Notepad++) và mở tệp đã chọn
  5. Cuộn đến điểm bạn muốn thực hiện thay đổi
  6. Nhập mã sau
    {if $product->id_category_default == ID of category}
      Here the code of the item to be displayed
    {/if}
  7. Thay thế “ID của danh mục” bằng giá trị số của danh mục đã chọn
  8. Lưu các tập tin
  9. Nếu thay đổi được thực hiện trên một tệp được tải xuống máy tính của bạn, hãy sử dụng quyền truy cập FTP của bạn và ghi đè tệp vào đúng vị trí
  10. Có thể cần phải xóa bộ nhớ đệm của Prestashop (Thông số nâng cao > Hiệu suất) và của trình duyệt của bạn. (Vui lòng đảm bảo rằng “Biên dịch lại các mẫu nếu tệp đã được cập nhật” được bật)

Danh mục (danh sách sản phẩm)

  1. Chọn danh mục cần kiểm tra và lấy ID trực tiếp từ Bảng quản trị > Danh mục > Danh mục
  2. Chọn nơi hiển thị mục mới hoặc mục cần thay đổi
  3. Sử dụng một trình soạn thảo văn bản (ví dụ. Notepad++) và mở tệp có tên product. tpl bên trong thư mục
    /themes/name of theme/templates/catalog/_partials/miniatures/
    hoặc, nếu nó không tồn tại, trong thư mục chủ đề mặc định
    /themes/classic/templates/catalog/_partials/miniatures/
  4. Cuộn đến điểm bạn muốn thực hiện thay đổi
  5. Nhập mã sau
    {if in_array(ID of category,Product::getProductCategories($product->id|intval))}
      Here the code of the item to be displayed
    {/if}
  6. Thay thế “ID của danh mục” bằng giá trị số của danh mục đã chọn
  7. Lưu các tập tin
  8. Nếu thay đổi được thực hiện trên một tệp được tải xuống máy tính của bạn, hãy sử dụng quyền truy cập FTP của bạn và ghi đè tệp vào đúng vị trí
  9. Có thể cần phải xóa bộ nhớ đệm của Prestashop (Thông số nâng cao > Hiệu suất) và của trình duyệt của bạn. (Vui lòng đảm bảo rằng “Biên dịch lại các mẫu nếu tệp đã được cập nhật” được bật)

Chúng tôi tò mò muốn đọc ý kiến ​​​​của bạn

10 suy nghĩ về " Prestashop 1. 7. kiểm tra xem sản phẩm có thuộc danh mục cụ thể không "

  1. A Amos nói.

    Cảm ơn vì hướng dẫn của bạn. Tôi đã thử ví dụ về Danh mục (danh sách sản phẩm) và gặp lỗi sau khi bật gỡ lỗi

    Cảnh báo. htmlspecialchars() dự kiến ​​tham số 1 là chuỗi, mảng đã cho

    mã của tôi là

    {if in_array(26, Sản phẩm. getProductCategories($product->id. khoảng cách))}

    {/nếu}

    Bạn có thể cung cấp một số lời khuyên về những gì tôi có thể đã làm sai?

  2. Roberto Vitolo nói.

    Xin chào
    cảm ơn đã đọc bài viết này

    Lỗi (cảnh báo) có thể do mã khác trên trang, do chủ đề được sử dụng, mô-đun hoặc ghi đè gây ra

    Bạn nên điều tra tình huống và xem thông báo lỗi có chứa thông tin về nơi bắt đầu sự cố không

    Trân trọng

  3. Matt nói.

    Xin chào
    Có thể trên trang xác nhận đơn hàng?

    1. Roberto Vitolo nói.

      chào Matt

      Trong trang Xác nhận đơn hàng, bạn có thể sử dụng {$product. id_category_default} bên trong bảng xác nhận đơn hàng. tpl (/mẫu/thanh toán/_partials/)

      Trân trọng

  4. Sandrine Bud nói.

    Xin chào,

    Cảm ơn bạn đã hướng dẫn của bạn

    Mã của bạn hoạt động rất tốt, ngoại trừ việc tôi đang cố gắng nhắm mục tiêu danh mục gốc của sản phẩm của mình chứ không phải danh mục cụ thể của nó
    Có cách nào để làm điều này bằng cách sử dụng mã của bạn?

    Cảm ơn phản hồi của bạn 🙂
    Sandrine

    1. Roberto Vitolo nói.

      Xin chào Sandrine

      Trong trang sản phẩm cũng như trong danh mục, bạn có thể sử dụng một cái gì đó tương tự. {$breadcrumb. liên kết[1]. chức vụ}

      Trân trọng

  5. Justyna nói.

    Phải làm gì nếu tôi muốn hiển thị một số khối trên trang sản phẩm, khi sản phẩm nằm trong danh mục cụ thể (chính, nhưng không phải mặc định/chính)?