Làm cách nào để có được cấu hình cửa hàng bên trong một mẫu chủ đề


8

Tôi đang cố gắng thêm thiết lập số điện thoại của cửa hàng trong Cửa hàng> Cấu hình> Chung> Chung> Thông tin lưu trữ vào tiêu đề trong chủ đề của tôi. Trong một mô-đun Tôi nghĩ rằng điều này có thể được thực hiện bằng getValue()trong \Magento\Framework\App\Config\ScopeConfigInterfacenhưng tôi không thể nhìn thấy một cách làm thế nào để sử dụng này bên trong một chủ đề. Cho đến nay tôi đã thêm cái này vào default.xml

 <referenceContainer name="header-wrapper">
      <block class="Magento\Framework\View\Element\Template" name="store.phone.number" template="Magento_Theme::phone.phtml" />
 </referenceContainer>

nhưng tôi không biết làm thế nào để có được số điện thoại bên trong phone.phtml

Câu trả lời:


13

Tôi đề nghị bạn tạo khối riêng của mình, nó sẽ mở rộng Magento\Framework\View\Element\Templatelớp.

Magento\Framework\App\Config\ScopeConfigInterfacelà một phần của Magento\Framework\View\Element\AbstractBlock(cha mẹ của Templatelớp) được khai báo $_scopeConfig, bạn có thể thêm hàm sau vào khối tùy chỉnh của mình:

public function getConfig()
{
    return $this->_scopeConfig;
}

Sau đó, trong mẫu của bạn, bạn có thể làm:

$block->getConfig()->getValue('value/you/need');

Đừng quên cập nhật bố cục của bạn như thế này:

<referenceContainer name="header-wrapper">
      <block class="Vendor\Module\Block\View\Element\Template" name="store.phone.number" template="Magento_Theme::phone.phtml" />
</referenceContainer>

Phải tạo một mô-đun để làm việc với chủ đề dường như không phải là một cách làm rất tao nhã (mặc dù có vẻ như đó có thể là cách duy nhất). Chắc chắn điều này sẽ gây ra vấn đề cho các nhà phát triển chủ đề đang xuất bản chủ đề
Alex

@Alex có sử dụng trình quản lý đối tượng trực tiếp chắc chắn dễ dàng hơn nhưng không nên sử dụng trực tiếp. Vì vậy, có hai lựa chọn, nhanh và bẩn hoặc chậm và sạch sẽ ^^
Raphael tại Digital Pianism

Các nhà phát triển chủ đề @Alex luôn gửi các chủ đề của họ với các mô-đun cụ thể theo chủ đề và tôi không biết về bất kỳ vấn đề nào. Nó thực sự là một giải pháp thanh lịch. Có nhiều mã PHP trong các mẫu không.
Fabian Schmengler

6

Chúng ta có thể trực tiếp lấy một cấu hình cửa hàng trong mẫu bằng cách lấy ví dụ về Magento\Framework\App\Config\ScopeConfig:

 \Magento\Framework\App\ObjectManager::getInstance()
  ->get('Magento\Framework\App\Config\ScopeConfigInterface')
  ->getValue('value/you/need');

Về mặt kỹ thuật, khi ai đó yêu cầu một thể hiện Magento\Framework\App\Config\ScopeConfigInterface, chúng tôi sẽ cung cấp cho nó một thể hiện của Magento\Framework\App\Config\ScopeConfig. Ví dụ: chúng ta có thể nhận cài đặt mặc định cho chế độ lưới hoặc danh sách:

$productListMode = \Magento\Framework\App\ObjectManager::getInstance()
   ->get('Magento\Framework\App\Config\ScopeConfigInterface')
   ->getValue('catalog/frontend/list_mode');

Lưu ý: Tránh sử dụng Object Manager trực tiếp . Chúng ta nên giữ mẫu của chúng tôi sạch sẽ. Cố gắng thêm cấu hình vào khối. Nên làm theo câu trả lời @Raphael.


Cảm ơn câu trả lời, nó hoạt động cho danh mục / frontend / list_mode như trong ví dụ của bạn nhưng sẽ trả về null cho chung / store_inif / phone
Alex

Bạn đã đặt số điện thoại cho cửa hàng của bạn? Tôi có thể nhận được số điện thoại của cửa hàng:\Magento\Framework\App\ObjectManager::getInstance() ->get('Magento\Framework\App\Config\ScopeConfigInterface') ->getValue('general/store_information/phone');
Khoa TruongDinh

Yeh tôi đã thêm trong Cửa hàng> Cấu hình> Chung> Chung> Thông tin Cửa hàng. Đã thử một giá trị mặc định và cho trang web / cửa hàng
Alex

Hãy cố gắng lập chỉ mục lại và xóa bộ nhớ cache.
Khoa TruongDinh

Bây giờ tôi đã lấy được số điện thoại mặc định nhưng bỏ qua một bộ trong cấu hình cửa hàng / trang web. Bạn đã thử điều này?
Alex

2

Hãy thử điều này trên Block, nó hoạt động với tôi sau nhiều lần tìm kiếm

$ isEnables = \ Magento \ Framework \ App \ ObjectManager :: getInstance ()
-> get ('Magento \ Framework \ App \ Config \ ScopeConfigInterface') -> getValue ('phần / nhóm / trường');

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.